compiler version detection

This commit is contained in:
Cebtenzzre 2023-09-19 13:49:50 -04:00
parent 05adde4f1b
commit a6b74764c7
2 changed files with 64 additions and 42 deletions

View file

@ -412,42 +412,38 @@ endif()
if (LLAMA_ALL_WARNINGS) if (LLAMA_ALL_WARNINGS)
if (NOT MSVC) if (NOT MSVC)
set(warning_flags set(warning_flags -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function)
-Wall set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int
-Wextra -Werror=implicit-function-declaration)
-Wpedantic set(cxx_flags -Wmissing-declarations -Wmissing-noreturn)
-Wcast-qual
-Wno-unused-function if (CMAKE_C_COMPILER_ID MATCHES "Clang")
)
if (CMAKE_C_COMPILER_ID MATCHES "Clang") # clang only
set(warning_flags ${warning_flags} -Wunreachable-code-break -Wunreachable-code-return) set(warning_flags ${warning_flags} -Wunreachable-code-break -Wunreachable-code-return)
endif() set(cxx_flags ${cxx_flags} -Wmissing-prototypes -Wextra-semi)
set(c_flags
${warning_flags} if (
-Wdouble-promotion (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.8.0) OR
-Wshadow (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 7.3.0)
-Wstrict-prototypes )
-Wpointer-arith set(c_flags ${c_flags} -Wdouble-promotion)
-Wmissing-prototypes endif()
-Werror=implicit-int elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU")
-Werror=implicit-function-declaration set(c_flags ${c_flags} -Wdouble-promotion)
) set(cxx_flags ${cxx_flags} -Wno-array-bounds)
set(cxx_flags
${warning_flags} if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.1.0)
-Wmissing-declarations set(cxx_flags ${cxx_flags} -Wno-format-truncation)
-Wmissing-noreturn endif()
-Wextra-semi if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1.0)
) set(cxx_flags ${cxx_flags} -Wextra-semi)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") # clang++ only endif()
set(cxx_flags ${cxx_flags} -Wmissing-prototypes)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # g++ only
set(cxx_flags ${cxx_flags} -Wno-format-truncation -Wno-array-bounds)
endif() endif()
else() else()
# todo : msvc # todo : msvc
endif() endif()
add_compile_options( add_compile_options(
${warning_flags}
"$<$<COMPILE_LANGUAGE:C>:${c_flags}>" "$<$<COMPILE_LANGUAGE:C>:${c_flags}>"
"$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags}>" "$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags}>"
) )

View file

@ -19,6 +19,20 @@ ifndef UNAME_M
UNAME_M := $(shell uname -m) UNAME_M := $(shell uname -m)
endif endif
ifeq '' '$(findstring clang,$(shell $(CC) --version))'
CC_IS_GCC=1
CC_VER := $(shell $(CC) -dumpfullversion -dumpversion | awk -F. '{ printf("%02d%02d%02d", $$1, $$2, $$3) }')
else
CC_IS_CLANG=1
ifeq '' '$(findstring Apple LLVM,$(shell $(CC) --version))'
CC_IS_LLVM_CLANG=1
else
CC_IS_APPLE_CLANG=1
endif
CC_VER := $(shell $(CC) --version | sed -n 's/^.* version \([0-9.]*\) .*$$/\1/p' \
| awk -F. '{ printf("%02d%02d%02d", $$1, $$2, $$3) }')
endif
# Mac OS + Arm can report x86_64 # Mac OS + Arm can report x86_64
# ref: https://github.com/ggerganov/whisper.cpp/issues/66#issuecomment-1282546789 # ref: https://github.com/ggerganov/whisper.cpp/issues/66#issuecomment-1282546789
ifeq ($(UNAME_S),Darwin) ifeq ($(UNAME_S),Darwin)
@ -87,9 +101,6 @@ CC := riscv64-unknown-linux-gnu-gcc
CXX := riscv64-unknown-linux-gnu-g++ CXX := riscv64-unknown-linux-gnu-g++
endif endif
CCV := $(shell $(CC) --version | head -n 1)
CXXV := $(shell $(CXX) --version | head -n 1)
# #
# Compile flags # Compile flags
# #
@ -174,21 +185,36 @@ endif # LLAMA_DISABLE_LOGS
# warnings # warnings
WARN_FLAGS = -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function WARN_FLAGS = -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function
MK_CFLAGS += $(WARN_FLAGS) -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes \ MK_CFLAGS += $(WARN_FLAGS) -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int \
-Werror=implicit-int -Werror=implicit-function-declaration -Werror=implicit-function-declaration
MK_CXXFLAGS += $(WARN_FLAGS) -Wmissing-declarations -Wmissing-noreturn -Wextra-semi MK_CXXFLAGS += $(WARN_FLAGS) -Wmissing-declarations -Wmissing-noreturn
# TODO(cebtenzzre): remove this once PR #2632 gets merged # TODO(cebtenzzre): remove this once PR #2632 gets merged
TTFS_CXXFLAGS = $(CXXFLAGS) -Wno-missing-declarations TTFS_CXXFLAGS = $(CXXFLAGS) -Wno-missing-declarations
ifneq '' '$(findstring clang,$(shell $(CC) --version))' ifeq ($(CC_IS_CLANG), 1)
# clang only # clang options
MK_CFLAGS += -Wunreachable-code-break -Wunreachable-code-return MK_CFLAGS += -Wunreachable-code-break -Wunreachable-code-return
MK_HOST_CXXFLAGS += -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes MK_HOST_CXXFLAGS += -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi
TTFS_CXXFLAGS += -Wno-missing-prototypes TTFS_CXXFLAGS += -Wno-missing-prototypes
ifneq '' '$(and $(CC_IS_LLVM_CLANG),$(filter 1,$(shell expr $(CC_VER) \>= 030800)))'
MK_CFLAGS += -Wdouble-promotion
endif
ifneq '' '$(and $(CC_IS_APPLE_CLANG),$(filter 1,$(shell expr $(CC_VER) \>= 070300)))'
MK_CFLAGS += -Wdouble-promotion
endif
else else
# gcc only # gcc options
MK_HOST_CXXFLAGS += -Wno-format-truncation -Wno-array-bounds MK_CFLAGS += -Wdouble-promotion
MK_HOST_CXXFLAGS += -Wno-array-bounds
ifeq ($(shell expr $(CC_VER) \>= 070100), 1)
MK_HOST_CXXFLAGS += -Wno-format-truncation
endif
ifeq ($(shell expr $(CC_VER) \>= 080100), 1)
MK_HOST_CXXFLAGS += -Wextra-semi
endif
endif endif
# OS specific # OS specific
@ -472,8 +498,8 @@ $(info I CFLAGS: $(CFLAGS))
$(info I CXXFLAGS: $(CXXFLAGS)) $(info I CXXFLAGS: $(CXXFLAGS))
$(info I NVCCFLAGS: $(NVCCFLAGS)) $(info I NVCCFLAGS: $(NVCCFLAGS))
$(info I LDFLAGS: $(LDFLAGS)) $(info I LDFLAGS: $(LDFLAGS))
$(info I CC: $(CCV)) $(info I CC: $(shell $(CC) --version | head -n 1))
$(info I CXX: $(CXXV)) $(info I CXX: $(shell $(CXX) --version | head -n 1))
$(info ) $(info )
# #