summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcebtenzzre <cebtenzzre@gmail.com>2023-10-02 09:16:50 -0400
committerGitHub <noreply@github.com>2023-10-02 16:16:50 +0300
commit9476b012260a2fb6c67976582d64484ce7406ed9 (patch)
tree9150877d3eed6897b0e1360f5d2d1d98fd01bd9e
parenta03ce38455544121c5c00cf845def1443acd6ac8 (diff)
cmake : make CUDA flags more similar to the Makefile (#3420)
* cmake : fix misuse of cxx_flags * cmake : make CUDA flags more similar to the Makefile * cmake : fix MSVC build
-rw-r--r--CMakeLists.txt35
1 files changed, 24 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17d70542..221fc07a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -343,8 +343,9 @@ if (LLAMA_MPI)
set(GGML_SOURCES_MPI ggml-mpi.c ggml-mpi.h)
add_compile_definitions(GGML_USE_MPI)
add_compile_definitions(${MPI_C_COMPILE_DEFINITIONS})
- set(cxx_flags ${cxx_flags} -Wno-cast-qual)
- set(c_flags ${c_flags} -Wno-cast-qual)
+ if (NOT MSVC)
+ add_compile_options(-Wno-cast-qual)
+ endif()
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_C_LIBRARIES})
set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${MPI_C_INCLUDE_DIRS})
# Even if you're only using the C header, C++ programs may bring in MPI
@@ -418,10 +419,11 @@ if (LLAMA_ALL_WARNINGS)
set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int
-Werror=implicit-function-declaration)
set(cxx_flags -Wmissing-declarations -Wmissing-noreturn)
+ set(host_cxx_flags "")
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
set(warning_flags ${warning_flags} -Wunreachable-code-break -Wunreachable-code-return)
- set(cxx_flags ${cxx_flags} -Wmissing-prototypes -Wextra-semi)
+ set(host_cxx_flags ${host_cxx_flags} -Wmissing-prototypes -Wextra-semi)
if (
(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.8.0) OR
@@ -431,27 +433,38 @@ if (LLAMA_ALL_WARNINGS)
endif()
elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU")
set(c_flags ${c_flags} -Wdouble-promotion)
- set(cxx_flags ${cxx_flags} -Wno-array-bounds)
+ set(host_cxx_flags ${host_cxx_flags} -Wno-array-bounds)
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.1.0)
- set(cxx_flags ${cxx_flags} -Wno-format-truncation)
+ set(host_cxx_flags ${host_cxx_flags} -Wno-format-truncation)
endif()
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1.0)
- set(cxx_flags ${cxx_flags} -Wextra-semi)
+ set(host_cxx_flags ${host_cxx_flags} -Wextra-semi)
endif()
endif()
else()
# todo : msvc
endif()
- add_compile_options(
- ${warning_flags}
- "$<$<COMPILE_LANGUAGE:C>:${c_flags}>"
- "$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags}>"
- )
+ set(c_flags ${c_flags} ${warning_flags})
+ set(cxx_flags ${cxx_flags} ${warning_flags})
+ add_compile_options("$<$<COMPILE_LANGUAGE:C>:${c_flags}>"
+ "$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags} ${host_cxx_flags}>")
+
+endif()
+if (NOT MSVC)
+ set(cuda_flags -Wno-pedantic)
+endif()
+set(cuda_flags ${cxx_flags} -use_fast_math ${cuda_flags})
+
+list(JOIN host_cxx_flags " " cuda_host_flags) # pass host compiler flags as a single argument
+if (NOT cuda_host_flags STREQUAL "")
+ set(cuda_flags ${cuda_flags} -Xcompiler ${cuda_host_flags})
endif()
+add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:${cuda_flags}>")
+
if (WIN32)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)