-
Notifications
You must be signed in to change notification settings - Fork 4
/
CompilerOptions.cmake
76 lines (50 loc) · 1.75 KB
/
CompilerOptions.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
if(UNIX)
add_definitions(-fPIC)
endif()
if(WIN32)
# add_definitions( -DSPC_LIB_EXPORTS )
add_definitions(-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE)
endif()
option(SPC_BUILD_WITH_CLANG "Build spc library using clang isntead of gcc." OFF)
if(SPC_BUILD_WITH_CLANG)
# try to find clang executable!
find_program(CLANG_CPP_EXECUTABLE
NAMES clang++-3.7 clang++-3.6 clang++
PATHS ENV)
find_program(CLANG_EXECUTABLE
NAMES clang-3.7 clang-3.6 clang
PATHS ENV)
message("CLANG_CPP ${CLANG_CPP_EXECUTABLE}")
message("CLANG ${CLANG_EXECUTABLE}")
if(CLANG_CPP_EXECUTABLE)
message("clang C++ and C compilers found : ${CLANG_CPP_EXECUTABLE}")
set(CMAKE_C_COMPILER ${CLANG_EXECUTABLE})
set(CMAKE_CXX_COMPILER ${CLANG_CPP_EXECUTABLE})
else()
message("In else")
message(FATAL_ERROR "Can't found program: clang and clang++")
endif()
message(WARNING "Using Clang as compiler! This may not work properly")
add_definitions(-DLIBCXX_CXX_ABI=libstdc++)
endif()
########################### COMPILER FLAGS ##################################
if (MINGW)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ")
elseif (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /bigobj" )
elseif (UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing " )
endif()
# we need c++11
if(MINGW)
add_definitions(-std=gnu++11)
else()
add_definitions(-std=c++11)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
add_definitions("-DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG")
endif()
option(SPC_BUILD_WITH_GPROF "Build with -pg flags for profiling." OFF)
if (SPC_BUILD_WITH_GPROF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg" )
endif()