Skip to content

Commit d93600a

Browse files
jfsmigfvennetier
authored andcommitted
cmake: Manage building with clang-9
1 parent 3e5bbb0 commit d93600a

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

CMakeLists.txt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,44 +32,59 @@ endif ()
3232
set(CMAKE_C_FLAGS "-g -Wall -Wextra -Wunused -pipe -std=gnu99")
3333
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
3434

35-
if (CMAKE_COMPILER_IS_GNUCC)
35+
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
3636
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-variadic-macros")
3737
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsequence-point")
3838
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wredundant-decls")
3939
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow")
40-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtrampolines")
4140

4241
# gcc >= 4.2
4342
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcomment")
4443
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmain")
4544
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wparentheses")
4645
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wfloat-equal")
47-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunsafe-loop-optimizations")
48-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-parameter")
49-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-variable")
5046

5147
# gcc >= 4.6
5248
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes")
5349
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers")
5450
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Winline")
5551
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion")
5652
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wswitch-enum")
53+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused")
54+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-const-variable")
55+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-parameter")
56+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-variable")
57+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-macros")
58+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-value")
59+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-function")
60+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-result")
61+
62+
if (CMAKE_COMPILER_IS_GNUCC)
63+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtrampolines")
64+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunsafe-loop-optimizations")
65+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-parameter")
66+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-variable")
67+
endif()
5768
else()
5869
message("The default compiler set in CC is not supported.")
59-
message("You need to use gcc with a version >= 4.2. ")
70+
message("You need to use gcc (with a version >= 4.2) or Clang (version >= 9)")
6071
message("You can set your default compiler either by updating your CC variable environment:")
6172
message("export CC=/path/to/gcc")
73+
message("export CC=/path/to/clang-9")
6274
message("Or by adding a flag when calling CMake: ")
6375
message("-D CMAKE_C_COMPILER=gcc")
76+
message("-D CMAKE_C_COMPILER=clang-9")
6477
message( FATAL_ERROR "CMake will exit.")
6578
endif()
79+
80+
6681
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SAN_CFLAGS}")
6782

6883
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
6984
MESSAGE("DEBUG symbols enabled")
7085
endif()
7186

72-
set(CMAKE_C_FLAGS_DEBUG "-O0 -fno-inline")
87+
set(CMAKE_C_FLAGS_DEBUG "-Og -fno-inline")
7388
set(CMAKE_C_FLAGS_RELEASE "-O2")
7489
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2")
7590
set(CMAKE_C_FLAGS_MINSIZEREL "-Os")

0 commit comments

Comments
 (0)