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

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)