57 lines
2.2 KiB
CMake
57 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 2.8.12)
|
|
|
|
project("libtatumparse")
|
|
|
|
#Flex and Bison are used to generate the parser
|
|
find_package(BISON REQUIRED 3.0)
|
|
find_package(FLEX REQUIRED)
|
|
|
|
file(GLOB_RECURSE LIB_SOURCES */tatumparse*.cpp)
|
|
file(GLOB_RECURSE LIB_HEADERS tatumparse.hpp tatumparse/*.hpp)
|
|
|
|
#Include directories
|
|
set(LIB_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
#Find the flex and bison input files
|
|
file(GLOB LEXER_SOURCES */tatumparse.l)
|
|
file(GLOB PARSER_SOURCES */tatumparse.y)
|
|
|
|
#Make the flex and bison targets
|
|
flex_target(TatumLexer ${LEXER_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/tatumparse_lexer.gen.cpp
|
|
COMPILE_FLAGS --header-file=${CMAKE_CURRENT_BINARY_DIR}/tatumparse_lexer.gen.h)
|
|
bison_target(TatumParser ${PARSER_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/tatumparse_parser.gen.cpp)
|
|
add_flex_bison_dependency(TatumLexer TatumParser)
|
|
#Apply suppression flags to the relevant files, must come after flex/bision
|
|
#targets for output vars to be defined
|
|
set_source_files_properties(${FLEX_vpr_timing_graph_lexer_OUTPUTS}
|
|
${BISON_vpr_timing_graph_parser_OUTPUTS}
|
|
PROPERTIES COMPILE_FLAGS "${FLEX_BISON_WARN_SUPPRESS_FLAGS}")
|
|
|
|
|
|
#Treat .c as CXX
|
|
set_source_files_properties(${LIB_SOURCES} ${FLEX_TatumLexer_OUTPUTS} ${BISON_TatumParser_OUTPUT_SOURCE} PROPERTIES LANGUAGE CXX)
|
|
|
|
#Suppress attribute warnings from bison header
|
|
include(CheckCXXCompilerFlag)
|
|
CHECK_CXX_COMPILER_FLAG("-Wno-attributes" COMPILER_SUPPORTS_-Wno-attributes)
|
|
if(COMPILER_SUPPORTS_-Wno-attributes)
|
|
add_compile_options("-Wno-attributes")
|
|
endif()
|
|
|
|
#Suppress warnings in Flex/Bison generated files
|
|
if(FLEX_BISON_WARN_SUPPRESS_FLAGS)
|
|
add_compile_options(${FLEX_BISON_WARN_SUPPRESS_FLAGS})
|
|
endif()
|
|
|
|
#Create the library
|
|
add_library(libtatumparse STATIC
|
|
${LIB_HEADERS}
|
|
${LIB_SOURCES}
|
|
${FLEX_TatumLexer_OUTPUTS}
|
|
${BISON_TatumParser_OUTPUT_SOURCE})
|
|
|
|
#Need binary dir for flex/bison generated headers
|
|
target_include_directories(libtatumparse PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
|
target_include_directories(libtatumparse PUBLIC ${LIB_INCLUDE_DIRS})
|
|
set_target_properties(libtatumparse PROPERTIES PREFIX "") #Avoid extra 'lib' prefix
|