2019-08-19 21:28:04 +02:00
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
|
|
|
|
|
|
|
|
INCLUDE(CheckFunctionExists)
|
|
|
|
|
|
|
|
FIND_PACKAGE(PkgConfig)
|
|
|
|
FIND_PACKAGE(BISON)
|
|
|
|
FIND_PACKAGE(FLEX)
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(CMOCKA REQUIRED cmocka)
|
|
|
|
|
|
|
|
ENABLE_TESTING()
|
|
|
|
|
|
|
|
SET(VERSION "0.4")
|
|
|
|
SET(TARGET "dice")
|
|
|
|
|
|
|
|
SET(SOURCES
|
|
|
|
"lib/diceexpr.c"
|
|
|
|
"lib/dice.c"
|
|
|
|
)
|
|
|
|
|
|
|
|
SET(HEADERS
|
|
|
|
"lib/dice.h"
|
|
|
|
)
|
|
|
|
|
2019-08-19 21:33:32 +02:00
|
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
)
|
2019-08-19 21:28:04 +02:00
|
|
|
|
|
|
|
# Yacc/BISON/Flex stuff
|
|
|
|
BISON_TARGET(DICE_PARSER
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/lib/dice_parse.y"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/dice_parse.c"
|
|
|
|
COMPILE_FLAGS "-d"
|
|
|
|
)
|
|
|
|
FLEX_TARGET(DICE_LEXER
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/lib/dice_lexer.l"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/dice_lexer.c"
|
|
|
|
COMPILE_FLAGS "-P dp"
|
|
|
|
)
|
|
|
|
|
|
|
|
ADD_DEFINITIONS("-Wall")
|
|
|
|
|
|
|
|
CHECK_FUNCTION_EXISTS("arc4random_uniform" HAVE_ARC4RANDOM_UNIFORM)
|
|
|
|
IF (HAVE_ARC4RANDOM_UNIFORM)
|
|
|
|
ADD_DEFINITIONS("-DHAVE_ARC4RANDOM_UNIFORM")
|
|
|
|
ELSE()
|
|
|
|
PKG_CHECK_MODULES(BSD REQUIRED libbsd)
|
|
|
|
INCLUDE_DIRECTORIES(${BSD_INCLUDE_DIRS})
|
|
|
|
# used in pkg-config IN file
|
|
|
|
SET(REQUIRES "libbsd")
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
# pkg-config file
|
|
|
|
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libdice.pc.in"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/libdice.pc"
|
|
|
|
)
|
|
|
|
|
|
|
|
ADD_LIBRARY(${TARGET} SHARED
|
|
|
|
${SOURCES} ${HEADERS}
|
|
|
|
${BISON_DICE_PARSER_OUTPUTS}
|
|
|
|
${FLEX_DICE_LEXER_OUTPUTS}
|
|
|
|
)
|
|
|
|
|
|
|
|
IF (NOT HAVE_ARC4RANDOM_UNIFORM)
|
|
|
|
TARGET_LINK_LIBRARIES(${TARGET} ${BSD_LIBRARIES} m)
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
INSTALL(TARGETS ${TARGET} DESTINATION lib)
|
|
|
|
INSTALL(FILES ${HEADERS} DESTINATION include)
|
|
|
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdice.pc
|
|
|
|
DESTINATION share/pkgconfig)
|
|
|
|
|
|
|
|
ADD_SUBDIRECTORY(tests)
|