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