summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJan Niklas Hasse <jhasse@bixense.com>2019-05-10 15:03:20 (GMT)
committerJan Niklas Hasse <jhasse@bixense.com>2019-08-28 08:01:32 (GMT)
commit691b821c9046eafa73f12335a8c3150fd9db1595 (patch)
tree54920735f3f0a44f0be6a1a8985f89e854f5fe47 /CMakeLists.txt
parentec6e7c7a77c8010d42ae0b27b83a097a5875fc4e (diff)
downloadNinja-691b821c9046eafa73f12335a8c3150fd9db1595.zip
Ninja-691b821c9046eafa73f12335a8c3150fd9db1595.tar.gz
Ninja-691b821c9046eafa73f12335a8c3150fd9db1595.tar.bz2
CMake: Support building without re2c
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt24
1 files changed, 15 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d313342..004d059 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,15 +7,21 @@ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -fdiagnostics-color")
endif()
-# the depfile parser and ninja lexers are generated using re2c.
-function(re2c IN OUT)
- add_custom_command(DEPENDS ${IN} OUTPUT ${OUT}
- COMMAND re2c -b -i --no-generation-date -o ${OUT} ${IN}
- )
-endfunction()
-re2c(${CMAKE_SOURCE_DIR}/src/depfile_parser.in.cc ${CMAKE_BINARY_DIR}/depfile_parser.cc)
-re2c(${CMAKE_SOURCE_DIR}/src/lexer.in.cc ${CMAKE_BINARY_DIR}/lexer.cc)
-add_library(libninja-re2c OBJECT ${CMAKE_BINARY_DIR}/depfile_parser.cc ${CMAKE_BINARY_DIR}/lexer.cc)
+find_program(RE2C re2c)
+if(RE2C)
+ # the depfile parser and ninja lexers are generated using re2c.
+ function(re2c IN OUT)
+ add_custom_command(DEPENDS ${IN} OUTPUT ${OUT}
+ COMMAND ${RE2C} -b -i --no-generation-date -o ${OUT} ${IN}
+ )
+ endfunction()
+ re2c(${CMAKE_SOURCE_DIR}/src/depfile_parser.in.cc ${CMAKE_BINARY_DIR}/depfile_parser.cc)
+ re2c(${CMAKE_SOURCE_DIR}/src/lexer.in.cc ${CMAKE_BINARY_DIR}/lexer.cc)
+ add_library(libninja-re2c OBJECT ${CMAKE_BINARY_DIR}/depfile_parser.cc ${CMAKE_BINARY_DIR}/lexer.cc)
+else()
+ message(WARNING "re2c was not found; changes to src/*.in.cc will not affect your build.")
+ add_library(libninja-re2c OBJECT src/depfile_parser.cc src/lexer.cc)
+endif()
target_include_directories(libninja-re2c PRIVATE src)
# Core source files all build into ninja library.