11cmake_minimum_required (VERSION 3.15)
2- cmake_policy (SET CMP0091 NEW)
32project (ninja)
43
4+ # --- optional link-time optimization
55if (CMAKE_BUILD_TYPE MATCHES "Release" )
6- cmake_policy (SET CMP0069 NEW)
76 include (CheckIPOSupported)
87 check_ipo_supported(RESULT lto_supported OUTPUT error)
98
@@ -15,13 +14,23 @@ if(CMAKE_BUILD_TYPE MATCHES "Release")
1514 endif ()
1615endif ()
1716
17+ # --- compiler flags
1818if (MSVC )
1919 set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
20- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /GR- /Zc:__cplusplus" )
20+ string ( APPEND CMAKE_CXX_FLAGS " /W4 /GR- /Zc:__cplusplus" )
2121else ()
22- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -fdiagnostics-color" )
22+ include (CheckCXXCompilerFlag)
23+ check_cxx_compiler_flag(-Wno-deprecated flag_no_deprecated)
24+ if (flag_no_deprecated)
25+ string (APPEND CMAKE_CXX_FLAGS " -Wno-deprecated" )
26+ endif ()
27+ check_cxx_compiler_flag(-fdiagnostics-color flag_color_diag)
28+ if (flag_color_diag)
29+ string (APPEND CMAKE_CXX_FLAGS " -fdiagnostics-color" )
30+ endif ()
2331endif ()
2432
33+ # --- optional re2c
2534find_program (RE2C re2c)
2635if (RE2C)
2736 # the depfile parser and ninja lexers are generated using re2c.
@@ -30,9 +39,9 @@ if(RE2C)
3039 COMMAND ${RE2C} -b -i --no -generation-date -o ${OUT} ${IN}
3140 )
3241 endfunction ()
33- re2c(${CMAKE_SOURCE_DIR } /src/depfile_parser.in.cc ${CMAKE_BINARY_DIR } /depfile_parser.cc)
34- re2c(${CMAKE_SOURCE_DIR } /src/lexer.in.cc ${CMAKE_BINARY_DIR } /lexer.cc)
35- add_library (libninja-re2c OBJECT ${CMAKE_BINARY_DIR } /depfile_parser.cc ${CMAKE_BINARY_DIR } /lexer.cc)
42+ re2c(${PROJECT_SOURCE_DIR } /src/depfile_parser.in.cc ${PROJECT_BINARY_DIR } /depfile_parser.cc)
43+ re2c(${PROJECT_SOURCE_DIR } /src/lexer.in.cc ${PROJECT_BINARY_DIR } /lexer.cc)
44+ add_library (libninja-re2c OBJECT ${PROJECT_BINARY_DIR } /depfile_parser.cc ${PROJECT_BINARY_DIR } /lexer.cc)
3645else ()
3746 message (WARNING "re2c was not found; changes to src/*.in.cc will not affect your build." )
3847 add_library (libninja-re2c OBJECT src/depfile_parser.cc src/lexer.cc)
@@ -127,3 +136,5 @@ endforeach()
127136
128137enable_testing ()
129138add_test (NinjaTest ninja_test)
139+
140+ install (TARGETS ninja DESTINATION bin)
0 commit comments