Skip to content

Commit

Permalink
First draft of CMake support
Browse files Browse the repository at this point in the history
  • Loading branch information
vincent-noel committed Feb 21, 2025
1 parent 5cf676a commit ff4e3cc
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
cmake_minimum_required(VERSION 3.5.0)
project(MaBoSS VERSION 0.1.0 LANGUAGES CXX)


if(NOT MAXNODES)
set(MAXNODES 64)
endif()

if(MAXNODES EQUAL 64)
set(MABOSS_NAME MaBoSS)
set(MABOSS_LIBNAME libMaBoSS)
set(POPMABOSS_NAME PopMaBoSS)
else()
set(MABOSS_NAME MaBoSS_${MAXNODES}n)
set(MABOSS_LIBNAME libMaBoSS_${MAXNODES}n)
set(POPMABOSS_NAME PopMaBoSS_${MAXNODES}n)
endif()

add_executable(${MABOSS_NAME} engine/src/MaBoSS.cc)
add_executable(${POPMABOSS_NAME} engine/src/PopMaBoSS.cc)
add_definitions(-DMAXNODES=${MAXNODES})

find_package(FLEX REQUIRED)
IF(FLEX_FOUND)
ADD_CUSTOM_COMMAND(
SOURCE ${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.l
COMMAND ${FLEX_EXECUTABLE}
ARGS --outfile=${CMAKE_SOURCE_DIR}/engine/src/lex.CTBNDL.cc
${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.l
COMMENT "Generating Boolean Network Lexer"
OUTPUT ${CMAKE_SOURCE_DIR}/engine/src/lex.CTBNDL.cc
)

ADD_CUSTOM_COMMAND(
SOURCE ${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.l
COMMAND ${FLEX_EXECUTABLE}
ARGS --outfile=${CMAKE_SOURCE_DIR}/engine/src/lex.RC.cc
${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.l
COMMENT "Generating Config Lexer"
OUTPUT ${CMAKE_SOURCE_DIR}/engine/src/lex.RC.cc
)
ENDIF(FLEX_FOUND)

find_package(BISON REQUIRED)
set(BISON_ctbndl_parser_OUTPUTS ${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.cc)
set(BISON_rc_parser_OUTPUTS ${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.cc)
if(BISON_FOUND)
ADD_CUSTOM_COMMAND(
SOURCE ${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.y
COMMAND ${BISON_EXECUTABLE}
ARGS -v ${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.y
--output=${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.cc
DEPENDS ${CMAKE_SOURCE_DIR}/engine/src/lex.CTBNDL.cc
COMMENT "Generating BooleanGrammar parser.cpp"
OUTPUT ${CMAKE_SOURCE_DIR}/engine/src/BooleanGrammar.cc
)

ADD_CUSTOM_COMMAND(
SOURCE ${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.y
COMMAND ${BISON_EXECUTABLE}
ARGS -v ${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.y
--output=${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.cc
DEPENDS ${CMAKE_SOURCE_DIR}/engine/src/lex.RC.cc
COMMENT "Generating Runconfig parser.cpp"
OUTPUT ${CMAKE_SOURCE_DIR}/engine/src/RunConfigGrammar.cc
)
ENDIF(BISON_FOUND)
file(GLOB_RECURSE src_files "engine/src/*.cc")
list(REMOVE_ITEM src_files "PopMaBoSS.cc MaBoSS.cc Server.cc Client.cc BooleanGrammar.cc RunConfig.cc")
add_library(${MABOSS_LIBNAME} STATIC ${src_files} ${BISON_ctbndl_parser_OUTPUTS} ${BISON_rc_parser_OUTPUTS})
target_compile_definitions(${MABOSS_LIBNAME} PUBLIC MAXNODES=${MAXNODES})
target_link_libraries(${MABOSS_NAME} ${MABOSS_LIBNAME})
target_link_libraries(${POPMABOSS_NAME} ${MABOSS_LIBNAME})

0 comments on commit ff4e3cc

Please sign in to comment.