You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.6 KiB
43 lines
1.6 KiB
cmake_minimum_required(VERSION 2.8.5) |
|
|
|
set(EXENAME makemap) |
|
|
|
find_package(FLEX REQUIRED) |
|
find_package(BISON REQUIRED) |
|
|
|
find_library(dl dl) |
|
find_library(pthread pthread) |
|
|
|
if(NOT dl) |
|
message(FATAL_ERROR "libdl not found!") |
|
endif() |
|
|
|
if(NOT pthread) |
|
message(FATAL_ERROR "libpthread not found!") |
|
endif() |
|
|
|
file(GLOB srcs *.cpp) |
|
BISON_TARGET(GParser parser/grammatical.y ${CMAKE_CURRENT_BINARY_DIR}/grammatical.cpp) |
|
FLEX_TARGET(LScanner parser/lexical.l ${CMAKE_CURRENT_BINARY_DIR}/lexical.cpp COMPILE_FLAGS "--header-file=${CMAKE_CURRENT_BINARY_DIR}/lexical.h") |
|
set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES lexical.h) |
|
|
|
set(MODULES_SOURCES "") |
|
set(MODULES_LIBS "") |
|
|
|
foreach(moddir ${STATIC_MODULES}) |
|
include(${moddir}/ModuleSetup.cmake OPTIONAL) |
|
file(GLOB modsrcs ${moddir}/*.cpp) |
|
set(MODULES_SOURCES ${MODULES_SOURCES} ${modsrcs} ${MODULE_ADDITIONAL_SOURCES}) |
|
set(MODULES_LIBS ${MODULES_LIBS} ${MODULE_ADDITIONAL_LIBRARIES}) |
|
include_directories(${MODULE_ADDITIONAL_INCLUDES}) |
|
endforeach() |
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
|
add_executable(${EXENAME} ${srcs} ${FLEX_LScanner_OUTPUTS} ${BISON_GParser_OUTPUTS} ${MODULES_SOURCES}) |
|
|
|
# Workaround. BISON_TARGET makes header with extension .hpp, but we use extension .h |
|
set_source_files_properties(init.cpp PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/grammatical.h) |
|
add_custom_command(OUTPUT grammatical.h COMMAND cp grammatical.hpp grammatical.h DEPENDS grammatical.hpp WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
|
|
|
target_link_libraries(${EXENAME} ${linker_options} ${dl} ${pthread} ${MODULES_LIBS}) |
|
set_target_properties(${EXENAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|