ParaViewCompilerPlatformFlags.cmake
Go to the documentation of this file.
1 set(PARAVIEW_REQUIRED_C_FLAGS)
2 set(PARAVIEW_REQUIRED_CXX_FLAGS)
3 
4 # A GCC compiler.
5 if(CMAKE_COMPILER_IS_GNUCXX)
6  if(CYGWIN)
7  string(APPEND PARAVIEW_REQUIRED_CXX_FLAGS " -mwin32")
8  string(APPEND PARAVIEW_REQUIRED_C_FLAGS " -mwin32")
9  link_libraries(-lgdi32)
10  endif()
11  if(MINGW)
12  string(APPEND PARAVIEW_REQUIRED_CXX_FLAGS " -mthreads")
13  string(APPEND PARAVIEW_REQUIRED_C_FLAGS " -mthreads")
14  string(APPEND PARAVIEW_REQUIRED_EXE_LINKER_FLAGS " -mthreads")
15  string(APPEND PARAVIEW_REQUIRED_SHARED_LINKER_FLAGS " -mthreads")
16  string(APPEND PARAVIEW_REQUIRED_MODULE_LINKER_FLAGS " -mthreads")
17  endif()
18 else()
19  if(CMAKE_ANSI_CFLAGS)
20  string(APPEND PARAVIEW_REQUIRED_C_FLAGS " ${CMAKE_ANSI_CFLAGS}")
21  endif()
22 endif()
23 
24 # figure out whether the compiler might be the Intel compiler
25 set(_MAY_BE_INTEL_COMPILER FALSE)
26 if(UNIX)
27  if(CMAKE_CXX_COMPILER_ID)
28  if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
29  set(_MAY_BE_INTEL_COMPILER TRUE)
30  endif()
31  else()
32  if(NOT CMAKE_COMPILER_IS_GNUCXX)
33  set(_MAY_BE_INTEL_COMPILER TRUE)
34  endif()
35  endif()
36 endif()
37 
38 #if so, test whether -i_dynamic is needed
39 if(_MAY_BE_INTEL_COMPILER)
40  include(${CMAKE_CURRENT_LIST_DIR}/ParaViewTestNO_ICC_IDYNAMIC_NEEDED.cmake)
41  testno_icc_idynamic_needed(NO_ICC_IDYNAMIC_NEEDED ${CMAKE_CURRENT_LIST_DIR})
42  if(NO_ICC_IDYNAMIC_NEEDED)
43  set(PARAVIEW_REQUIRED_CXX_FLAGS "${PARAVIEW_REQUIRED_CXX_FLAGS}")
44  else()
45  set(PARAVIEW_REQUIRED_CXX_FLAGS "${PARAVIEW_REQUIRED_CXX_FLAGS} -i_dynamic")
46  endif()
47 endif()
48 
49 if(MSVC)
50 # Use the highest warning level for visual c++ compiler.
51  set(CMAKE_CXX_WARNING_LEVEL 4)
52  if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
53  STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
54  else()
55  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
56  endif()
57 endif()
58 
59 # Disable deprecation warnings for standard C and STL functions in VS2015+
60 # and later
61 if(MSVC)
62  add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS)
63  add_definitions(-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
64 endif()
65 
66 # Enable /MP flag for Visual Studio
67 if(MSVC)
68  set(CMAKE_CXX_MP_FLAG OFF CACHE BOOL "Build with /MP flag enabled")
69  set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
70  set(CMAKE_CXX_MP_NUM_PROCESSORS ${PROCESSOR_COUNT} CACHE STRING "The maximum number of processes for the /MP flag")
71  if (CMAKE_CXX_MP_FLAG)
72  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP${CMAKE_CXX_MP_NUM_PROCESSORS}")
73  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP${CMAKE_CXX_MP_NUM_PROCESSORS}")
74  endif ()
75 endif()
76 
77 # Enable /bigobj for MSVC to allow larger symbol tables
78 if(MSVC)
79  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
80  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj")
81 endif()
82 
83 # Use /utf-8 so that MSVC uses utf-8 in source files and object files
84 if(MSVC)
85  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
86  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
87 endif()
88 
89 #-----------------------------------------------------------------------------
90 # Add compiler flags ParaView needs to work on this platform. This must be
91 # done after the call to CMAKE_EXPORT_BUILD_SETTINGS, but before any
92 # try-compiles are done.
93 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PARAVIEW_REQUIRED_C_FLAGS}")
94 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PARAVIEW_REQUIRED_CXX_FLAGS}")
95 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PARAVIEW_REQUIRED_EXE_LINKER_FLAGS}")
96 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PARAVIEW_REQUIRED_SHARED_LINKER_FLAGS}")
97 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PARAVIEW_REQUIRED_MODULE_LINKER_FLAGS}")
string
enabled