Merge branch 'release_candidate' into release
[CRYENGINE.git] / Tools / CMake / CRYENGINE-CLANG.cmake
bloba029b0e8215a54cd123eba8e9c5634f37207b911
1 set(CLANG_COMMON_FLAGS
2         -Werror
3         -Wall
5         -fvisibility-inlines-hidden
6         -fvisibility=hidden
7         -fPIC
9         -D_HAS_C9X
11         -fdata-sections
12         -ffunction-sections
13         -fno-omit-frame-pointer
14         -fno-strict-aliasing
15         -funwind-tables
16         -gfull
17         -ffast-math
18         -fno-rtti
20         # clang 3.8 -> 5.0 upgrade
21         -Wno-unknown-warning-option      # Allows multiple versions of clang to be used
22         -Wno-delete-non-virtual-dtor     # Needed to provide virtual dispatch to allow strings to be modified on CryCommon types
25 if(ANDROID)
26   set(CLANG_COMMON_FLAGS ${CLANG_COMMON_FLAGS}
27         -Wno-deprecated
28         -Wno-nonportable-include-path           # This will be caught be submissions tests.
29     -fno-exceptions
30     -fms-extensions
31         -D_MSC_EXTENSIONS=1
32   )
33 else()
34   set(CLANG_COMMON_FLAGS ${CLANG_COMMON_FLAGS} 
35     -msse2
36     -Wunknown-attributes
37     -fno-exceptions
38   )
39 endif()
41 if(ORBIS)
42         set(CLANG_CPP_COMMON_FLAGS
43                 # needed to support C++17 for PS4 due to missing implementations, might be obsolete with later PS4 SDKs
44                 -fno-aligned-allocation
45         )
46 endif()
48 string(REPLACE ";" " " CLANG_COMMON_FLAGS     "${CLANG_COMMON_FLAGS}")
49 string(REPLACE ";" " " CLANG_CPP_COMMON_FLAGS "${CLANG_CPP_COMMON_FLAGS}")
51 set(CMAKE_CXX_FLAGS         "${CLANG_COMMON_FLAGS} ${CLANG_CPP_COMMON_FLAGS}" CACHE STRING "C++ Common Flags" FORCE)
52 set(CMAKE_CXX_FLAGS_DEBUG   "-g -O0 -D_DEBUG -DDEBUG"  CACHE STRING "C++ Debug Flags"   FORCE)
53 set(CMAKE_CXX_FLAGS_PROFILE "-O3 -D_PROFILE -DNDEBUG"  CACHE STRING "C++ Profile Flags" FORCE)
54 set(CMAKE_CXX_FLAGS_RELEASE "-O3 -D_RELEASE -DNDEBUG"  CACHE STRING "C++ Release Flags" FORCE)
55 set(CMAKE_CXX_STANDARD_LIBRARIES ""                    CACHE STRING "Libraries linked by defalut with all C++ applications." FORCE)
57 set(CMAKE_C_FLAGS         "${CLANG_COMMON_FLAGS}"      CACHE STRING "C Common Flags"  FORCE)
58 set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG}"   CACHE STRING "C Debug Flags"   FORCE)
59 set(CMAKE_C_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_PROFILE}" CACHE STRING "C Profile Flags" FORCE)
60 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "C Release Flags" FORCE)
62 message(STATUS "CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}" )
63 message(STATUS "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" )
65 set(CMAKE_SHARED_LINKER_FLAGS_PROFILE ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} CACHE STRING "Linker Library Profile Flags" FORCE)
66 set(CMAKE_EXE_LINKER_FLAGS_PROFILE ${CMAKE_EXE_LINKER_FLAGS_DEBUG} CACHE STRING "Linker Executable Profile Flags" FORCE)
68 function (wrap_whole_archive project target source)
69         set(${target} "-Wl,--whole-archive;${${source}};-Wl,--no-whole-archive" PARENT_SCOPE)
70 endfunction()