Loading CMakeLists.txt +12 −5 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ set(CMAKE_C_STANDARD 99) if(UNIX) set(TARGET_PLATFORM "" CACHE STRING "i686 / x86_64") set(CLANG "" CACHE STRING "1=msan / 2=asan / 3=usan") set(GCOV OFF CACHE BOOL "enable GCOV") set(MSAN_TRACK_ORIGINS OFF CACHE BOOL "enable origin tracking for Clang MSAN") set(COVERAGE OFF CACHE BOOL "enable coverage instrumentation") set(STRIP OFF CACHE BOOL "enable STRIP") if(NOT CMAKE_BUILD_TYPE) Loading @@ -62,13 +63,19 @@ if(UNIX) # to be uncommented in CI # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") # set C compiler find_program(cc NAMES clang-18 clang REQUIRED) set(CMAKE_C_COMPILER "${cc}" CACHE STRING "") # CLANG if(CLANG) find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED) set(CMAKE_C_COMPILER "${clangBin}" CACHE STRING "") if("${CLANG}" MATCHES "1" OR "${CLANG}" MATCHES "msan") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory") if(MSAN_TRACK_ORIGINS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-track-origins") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize-memory-track-origins") endif() elseif("${CLANG}" MATCHES "2" OR "${CLANG}" MATCHES "asan") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") Loading @@ -89,8 +96,8 @@ if(UNIX) message(FATAL_ERROR "Unknown CLANG setting: ${CLANG}") endif() endif() # GCOV if(GCOV) # COVERAGE if(COVERAGE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") endif() Loading Makefile +24 −12 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ LIB_LC3PLUS ?= liblc3plus.a LIB_LIBUTIL ?= libivasutil.a # Default tool settings CC ?= gcc CC ?= cc RM ?= rm -f AR ?= ar Loading Loading @@ -65,32 +65,43 @@ endif CFLAGS += -std=c99 -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long \ -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ -Werror-implicit-function-declaration \ -Wno-implicit-fallthrough -ffp-contract=off -Wno-implicit-fallthrough -ffp-contract=off \ -Winit-self -Wunused-but-set-variable # to be uncommented in CI # CFLAGS += -Werror CFLAGS += -Winit-self CFLAGS += -Wunused-but-set-variable # libs to link LDLIBS += -lm # Clang sanitizer compiler options CCCLANG = clang ifeq "$(CLANG)" "0" CC = $(CCCLANG) # check if clang is available on system and use it if it is there CLANG_EXISTS := $(shell which clang) ifneq "$(CLANG_EXISTS)" "" CC = clang else $(warning clang compiler not found - falling back to cc) endif # Clang sanitizer compiler options ifeq "$(CLANG)" "1" CC = $(CCCLANG) CC = clang CFLAGS += -fsanitize=memory LDFLAGS += -fsanitize=memory # can be set in call to make, e.g. "make CLANG=1 MSAN_TRACK_ORIGINS=1" ifeq "$(MSAN_TRACK_ORIGINS)" "1" CFLAGS += -fsanitize-memory-track-origins LDFLAGS += -fsanitize-memory-track-origins endif endif ifeq "$(CLANG)" "2" CC = $(CCCLANG) CC = clang CFLAGS += -fsanitize=address LDFLAGS += -fsanitize=address endif ifeq "$(CLANG)" "3" CC = $(CCCLANG) CC = clang # NOTE: keep in sync with list in CMakeLists.txt usan_checks = undefined,float-divide-by-zero,implicit-conversion,local-bounds CFLAGS += -fsanitize=$(usan_checks) Loading @@ -114,7 +125,8 @@ CFLAGS += -g3 LDFLAGS += -g3 endif ifeq "$(GCOV)" "1" ifeq "$(COVERAGE)" "1" CC = gcc CFLAGS += -fprofile-arcs -ftest-coverage -fprofile-update=atomic LDFLAGS += -fprofile-arcs -ftest-coverage -fprofile-update=atomic endif Loading Loading
CMakeLists.txt +12 −5 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ set(CMAKE_C_STANDARD 99) if(UNIX) set(TARGET_PLATFORM "" CACHE STRING "i686 / x86_64") set(CLANG "" CACHE STRING "1=msan / 2=asan / 3=usan") set(GCOV OFF CACHE BOOL "enable GCOV") set(MSAN_TRACK_ORIGINS OFF CACHE BOOL "enable origin tracking for Clang MSAN") set(COVERAGE OFF CACHE BOOL "enable coverage instrumentation") set(STRIP OFF CACHE BOOL "enable STRIP") if(NOT CMAKE_BUILD_TYPE) Loading @@ -62,13 +63,19 @@ if(UNIX) # to be uncommented in CI # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") # set C compiler find_program(cc NAMES clang-18 clang REQUIRED) set(CMAKE_C_COMPILER "${cc}" CACHE STRING "") # CLANG if(CLANG) find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED) set(CMAKE_C_COMPILER "${clangBin}" CACHE STRING "") if("${CLANG}" MATCHES "1" OR "${CLANG}" MATCHES "msan") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory") if(MSAN_TRACK_ORIGINS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-track-origins") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize-memory-track-origins") endif() elseif("${CLANG}" MATCHES "2" OR "${CLANG}" MATCHES "asan") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") Loading @@ -89,8 +96,8 @@ if(UNIX) message(FATAL_ERROR "Unknown CLANG setting: ${CLANG}") endif() endif() # GCOV if(GCOV) # COVERAGE if(COVERAGE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") endif() Loading
Makefile +24 −12 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ LIB_LC3PLUS ?= liblc3plus.a LIB_LIBUTIL ?= libivasutil.a # Default tool settings CC ?= gcc CC ?= cc RM ?= rm -f AR ?= ar Loading Loading @@ -65,32 +65,43 @@ endif CFLAGS += -std=c99 -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long \ -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ -Werror-implicit-function-declaration \ -Wno-implicit-fallthrough -ffp-contract=off -Wno-implicit-fallthrough -ffp-contract=off \ -Winit-self -Wunused-but-set-variable # to be uncommented in CI # CFLAGS += -Werror CFLAGS += -Winit-self CFLAGS += -Wunused-but-set-variable # libs to link LDLIBS += -lm # Clang sanitizer compiler options CCCLANG = clang ifeq "$(CLANG)" "0" CC = $(CCCLANG) # check if clang is available on system and use it if it is there CLANG_EXISTS := $(shell which clang) ifneq "$(CLANG_EXISTS)" "" CC = clang else $(warning clang compiler not found - falling back to cc) endif # Clang sanitizer compiler options ifeq "$(CLANG)" "1" CC = $(CCCLANG) CC = clang CFLAGS += -fsanitize=memory LDFLAGS += -fsanitize=memory # can be set in call to make, e.g. "make CLANG=1 MSAN_TRACK_ORIGINS=1" ifeq "$(MSAN_TRACK_ORIGINS)" "1" CFLAGS += -fsanitize-memory-track-origins LDFLAGS += -fsanitize-memory-track-origins endif endif ifeq "$(CLANG)" "2" CC = $(CCCLANG) CC = clang CFLAGS += -fsanitize=address LDFLAGS += -fsanitize=address endif ifeq "$(CLANG)" "3" CC = $(CCCLANG) CC = clang # NOTE: keep in sync with list in CMakeLists.txt usan_checks = undefined,float-divide-by-zero,implicit-conversion,local-bounds CFLAGS += -fsanitize=$(usan_checks) Loading @@ -114,7 +125,8 @@ CFLAGS += -g3 LDFLAGS += -g3 endif ifeq "$(GCOV)" "1" ifeq "$(COVERAGE)" "1" CC = gcc CFLAGS += -fprofile-arcs -ftest-coverage -fprofile-update=atomic LDFLAGS += -fprofile-arcs -ftest-coverage -fprofile-update=atomic endif Loading