60b5872d256170da7af9b4d4a96fd079e5646923
[occt.git] / adm / cmake / occt_defs_flags.cmake
1
2 if (MSVC)
3   add_definitions(/fp:precise)
4 endif()
5
6 # set compiler short name and choose SSE2 option for appropriate MSVC compilers
7 # ONLY for 32-bit
8 if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
9   if (MSVC80 OR MSVC90 OR MSVC10)
10     add_definitions(/arch:SSE2)
11   endif()
12 endif()
13
14 add_definitions (-DCSFDB)
15 if (WIN32)
16   add_definitions (-wd4996)
17 elseif (APPLE)
18   add_definitions (-fexceptions -fPIC -DOCC_CONVERT_SIGNALS)
19 else()
20   add_definitions (-fexceptions -fPIC -DOCC_CONVERT_SIGNALS)
21 endif()
22
23 # enable structured exceptions for MSVC
24 string (REGEX MATCH "EHsc" ISFLAG "${CMAKE_CXX_FLAGS}")
25 if (ISFLAG)
26   string (REGEX REPLACE "EHsc" "EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
27 elseif (WIN32)
28   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -EHa")
29 endif()
30
31 # remove _WINDOWS flag if it exists
32 string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_CXX_FLAGS}")
33 if (IS_WINDOWSFLAG)
34   message (STATUS "/D_WINDOWS has been removed from CMAKE_CXX_FLAGS")
35   string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
36 endif()
37
38 # remove WIN32 flag if it exists
39 string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_CXX_FLAGS}")
40 if (IS_WIN32FLAG)
41   message (STATUS "/DWIN32 has been removed from CMAKE_CXX_FLAGS")
42   string (REGEX REPLACE "/DWIN32" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
43 endif()
44
45 # remove _WINDOWS flag if it exists
46 string (REGEX MATCH "/D_WINDOWS" IS_WINDOWSFLAG "${CMAKE_C_FLAGS}")
47 if (IS_WINDOWSFLAG)
48   message (STATUS "/D_WINDOWS has been removed from CMAKE_C_FLAGS")
49   string (REGEX REPLACE "/D_WINDOWS" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
50 endif()
51
52 # remove WIN32 flag if it exists
53 string (REGEX MATCH "/DWIN32" IS_WIN32FLAG "${CMAKE_C_FLAGS}")
54 if (IS_WIN32FLAG)
55   message (STATUS "/DWIN32 has been removed from CMAKE_C_FLAGS")
56   string (REGEX REPLACE "/DWIN32" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
57 endif()
58
59 # remove DEBUG flag if it exists
60 string (REGEX MATCH "-DDEBUG" IS_DEBUG_CXX "${CMAKE_CXX_FLAGS_DEBUG}")
61 if (IS_DEBUG_CXX)
62   message (STATUS "-DDEBUG has been removed from CMAKE_CXX_FLAGS_DEBUG")
63   string (REGEX REPLACE "-DDEBUG" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
64 endif()
65
66 string (REGEX MATCH "-DDEBUG" IS_DEBUG_C "${CMAKE_C_FLAGS_DEBUG}")
67 if (IS_DEBUG_C)
68   message (STATUS "-DDEBUG has been removed from CMAKE_C_FLAGS_DEBUG")
69   string (REGEX REPLACE "-DDEBUG" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
70 endif()
71 # enable parallel compilation on MSVC 9 and above
72 if (MSVC AND NOT MSVC70 AND NOT MSVC80)
73   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -MP")
74 endif()
75
76 # generate a single response file which enlist all of the object files
77 SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
78 SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
79 # increase compiler warnings level (-W4 for MSVC, -Wall for GCC)
80 if (MSVC)
81   if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
82     string (REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
83   else()
84     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
85   endif()
86 elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
87   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
88 endif()
89
90 if (DEFINED CMAKE_COMPILER_IS_GNUCXX OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang")
91   set (CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")
92 endif()
93
94 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
95 set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")