server/src/CMakeLists.txt

332 lines
7.6 KiB
Text
Raw Normal View History

cmake_minimum_required(VERSION 2.8)
2012-06-04 03:55:52 +02:00
project (server C)
include_directories (${CMAKE_CURRENT_SOURCE_DIR})
2014-03-06 16:15:43 +01:00
include_directories (${CJSON_INCLUDE_DIR})
include_directories (${CRYPTO_INCLUDE_DIR})
include_directories (${CLIBS_INCLUDE_DIR})
include_directories (${STORAGE_INCLUDE_DIR})
2015-07-12 03:08:29 +02:00
include_directories (${TOLUA_INCLUDE_DIR})
2018-02-04 14:59:01 +01:00
include_directories (${LUA_INCLUDE_DIR})
2012-06-04 03:55:52 +02:00
include_directories (${INIPARSER_INCLUDE_DIR})
2016-09-10 18:44:08 +02:00
IF(DEFINED ERESSEA_VERSION)
set_source_files_properties(kernel/version.c PROPERTIES
COMPILE_DEFINITIONS ERESSEA_VERSION="${ERESSEA_VERSION}")
2016-09-10 18:44:08 +02:00
ENDIF()
IF(DEFINED ERESSEA_BUILDNO)
set_source_files_properties(kernel/version.c PROPERTIES
COMPILE_DEFINITIONS ERESSEA_BUILDNO="${ERESSEA_BUILDNO}")
ENDIF()
2016-11-18 13:24:50 +01:00
IF (CMAKE_COMPILER_IS_GNUCC)
2018-10-29 20:12:54 +01:00
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wvla")
2016-11-18 13:24:50 +01:00
ENDIF()
IF (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
# SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion -Wno-sign-conversion")
2018-10-29 20:12:54 +01:00
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsign-compare -Wall -Werror -Wno-unknown-pragmas -Wstrict-prototypes -Wpointer-arith -Wno-char-subscripts -Wno-long-long")
2017-11-19 16:19:16 +01:00
# SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89")
ELSEIF(MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /WX /MP /D_CRT_SECURE_NO_WARNINGS /D_USE_MATH_DEFINES")
2014-08-29 07:47:47 +02:00
set(CMAKE_EXE_LINKER_FLAGS_DEBUG
"${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrt.lib")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib")
ELSE()
MESSAGE(STATUS "unknown compiler ${CMAKE_C_COMPILER_ID}")
ENDIF()
IF(CMAKE_COMPILER_IS_CLANG)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtautological-compare -Weverything")
MESSAGE(STATUS "compiler is clang: ${CMAKE_C_COMPILER_ID}")
ELSEIF(CMAKE_COMPILER_IS_GCC)
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
IF (GCC_VERSION VERSION_GREATER 4.9)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wfloat-conversion")
ENDIF()
ENDIF(CMAKE_COMPILER_IS_CLANG)
2014-08-29 07:47:47 +02:00
add_subdirectory(util)
add_subdirectory(kernel)
add_subdirectory(items)
add_subdirectory(attributes)
add_subdirectory(spells)
add_subdirectory(triggers)
add_subdirectory(modules)
add_subdirectory(races)
MACRO(ADD_LUA_MODULE MODULE_NAME FILES)
ADD_LIBRARY (${MODULE_NAME} SHARED ${FILES})
SET_TARGET_PROPERTIES(${MODULE_NAME}
PROPERTIES
PREFIX ""
)
ENDMACRO(ADD_LUA_MODULE)
MACRO(TOLUA_BINDING PKGFILE FILES)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${PKGFILE}.c
DEPENDS ${FILES} ${PKGFILE}
COMMAND ${TOLUA_EXECUTABLE}
ARGS -o ${CMAKE_CURRENT_SOURCE_DIR}/${PKGFILE}.c ${PKGFILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
ENDMACRO(TOLUA_BINDING)
IF(NOT MSVC)
TOLUA_BINDING(log.pkg util/log.h)
TOLUA_BINDING(locale.pkg bind_locale.h)
TOLUA_BINDING(config.pkg bind_config.h)
TOLUA_BINDING(process.pkg bind_process.h)
TOLUA_BINDING(game.pkg bind_eressea.h config.h)
TOLUA_BINDING(eressea.pkg bind_eressea.h)
TOLUA_BINDING(settings.pkg kenel/config.h)
ENDIF()
set (PARSER_SRC
${DB_SRC}
${UTIL_SRC}
)
set (ERESSEA_SRC
vortex.c
2018-09-25 18:02:00 +02:00
academy.c
alchemy.c
2018-07-05 20:06:32 +02:00
automate.c
battle.c
chaos.c
contact.c
2016-09-17 22:57:22 +02:00
creport.c
2018-09-25 18:02:00 +02:00
direction.c
donations.c
economy.c
2018-09-25 18:02:00 +02:00
eressea.c
exparse.c
2018-09-25 18:07:02 +02:00
gamedb.c
give.c
2018-09-25 18:02:00 +02:00
guard.c
items.c
2018-09-25 18:02:00 +02:00
json.c
jsonconf.c
laws.c
2018-09-25 18:02:00 +02:00
lighthouse.c
magic.c
market.c
2018-09-25 18:02:00 +02:00
monsters.c
morale.c
2018-09-25 18:02:00 +02:00
move.c
names.c
2017-10-07 18:03:22 +02:00
orderfile.c
2018-09-25 18:02:00 +02:00
piracy.c
prefix.c
randenc.c
renumber.c
2018-09-25 18:02:00 +02:00
report.c
reports.c
skill.c
spells.c
spy.c
2018-09-25 18:02:00 +02:00
steal.c
study.c
summary.c
travelthru.c
2018-09-25 18:02:00 +02:00
teleport.c
upkeep.c
volcano.c
wormhole.c
${SPELLS_SRC}
${RACES_SRC}
${ITEMS_SRC}
${MODULES_SRC}
${TRIGGERS_SRC}
${ATTRIBUTES_SRC}
${KERNEL_SRC}
2018-09-27 19:52:54 +02:00
)
set(CHECK_SRC
checker.c
)
set(SERVER_SRC
bind_building.c
bind_config.c
bind_eressea.c
bind_faction.c
2018-09-25 18:02:00 +02:00
bind_locale.c
bind_message.c
bind_monsters.c
2018-09-25 18:02:00 +02:00
bind_order.c
bind_process.c
bind_region.c
bind_ship.c
bind_storage.c
2018-09-25 18:02:00 +02:00
bind_tolua.c
bind_unit.c
2018-09-25 18:02:00 +02:00
bindings.c
console.c
helpers.c
main.c
2018-09-27 19:52:54 +02:00
)
if (CURSES_FOUND)
set (SERVER_SRC ${SERVER_SRC}
2018-09-25 18:02:00 +02:00
bind_gmtool.c
gmtool.c
listbox.c
)
endif(CURSES_FOUND)
2018-09-23 19:03:28 +02:00
find_program(IWYU_PATH NAMES include-what-you-use iwyu)
if(NOT IWYU_PATH)
message(STATUS "Could not find the program include-what-you-use")
endif()
add_library(version STATIC ${VERSION_SRC})
add_library(parser ${PARSER_SRC})
target_link_libraries(parser
${CLIBS_LIBRARIES}
${CRYPTO_LIBRARIES}
)
add_executable(checker ${CHECK_SRC})
target_link_libraries(checker parser)
add_library(game ${ERESSEA_SRC})
target_link_libraries(game parser version)
add_executable(eressea ${SERVER_SRC})
2018-09-23 19:03:28 +02:00
if (IWYU_PATH)
set_property(TARGET eressea PROPERTY C_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})
endif(IWYU_PATH)
target_link_libraries(eressea
game
${TOLUA_LIBRARIES}
${LUA_LIBRARIES}
${STORAGE_LIBRARIES}
2014-03-06 16:15:43 +01:00
${CJSON_LIBRARIES}
${INIPARSER_LIBRARIES}
)
set(TESTS_SRC
2017-12-29 13:37:17 +01:00
academy.test.c
2017-05-07 13:35:59 +02:00
alchemy.test.c
automate.test.c
battle.test.c
contact.test.c
2016-09-17 22:57:22 +02:00
creport.test.c
direction.test.c
2017-05-07 13:35:59 +02:00
donations.test.c
economy.test.c
2017-05-07 13:35:59 +02:00
give.test.c
guard.test.c
json.test.c
jsonconf.test.c
laws.test.c
2016-09-17 12:34:02 +02:00
lighthouse.test.c
magic.test.c
market.test.c
2015-11-17 02:07:46 +01:00
monsters.test.c
move.test.c
2017-05-07 13:35:59 +02:00
names.test.c
orderfile.test.c
2015-10-12 11:54:59 +02:00
piracy.test.c
prefix.test.c
2016-11-16 20:03:34 +01:00
renumber.test.c
2017-05-07 13:35:59 +02:00
report.test.c
2018-09-25 18:02:00 +02:00
reports.test.c
skill.test.c
2015-05-06 17:36:20 +02:00
spells.test.c
2015-01-18 17:40:54 +01:00
spy.test.c
study.test.c
2018-09-25 18:02:00 +02:00
summary.test.c
test_eressea.c
tests.c
2017-05-07 13:35:59 +02:00
tests.test.c
travelthru.test.c
2015-05-06 17:36:20 +02:00
upkeep.test.c
2017-05-07 13:35:59 +02:00
volcano.test.c
vortex.test.c
wormhole.test.c
spells/flyingship.test.c
2015-07-07 20:23:24 +02:00
spells/magicresistance.test.c
triggers/shock.test.c
${ATTRIBUTES_TESTS}
${UTIL_TESTS}
${KERNEL_TESTS}
${ITEMS_TESTS}
)
add_executable(test_eressea ${TESTS_SRC})
target_link_libraries(test_eressea
game
cutest
${LUA_LIBRARIES}
${CLIBS_LIBRARIES}
${STORAGE_LIBRARIES}
2014-03-06 16:15:43 +01:00
${CJSON_LIBRARIES}
${INIPARSER_LIBRARIES}
)
add_test(server test_eressea)
2014-08-07 13:23:11 +02:00
#add_test(NAME E3
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/game-e3
# COMMAND $<TARGET_FILE:eressea> runtests.lua )
#add_test(NAME E2
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/game-e2
# COMMAND $<TARGET_FILE:eressea> runtests.lua )
install(TARGETS eressea DESTINATION "bin")
2018-03-11 16:52:07 +01:00
if (HAVE_EXECINFO_H AND HAVE_SIGNAL_H)
add_definitions(-DHAVE_BACKTRACE)
endif ()
2017-12-31 21:33:31 +01:00
if (HAVE_LIBBSD)
add_definitions(-DHAVE_LIBBSD)
endif (HAVE_LIBBSD)
if (HAVE_STRLCAT)
2017-12-12 09:19:35 +01:00
add_definitions(-DHAVE_BSDSTRING)
2017-12-31 21:33:31 +01:00
endif (HAVE_STRLCAT)
2017-12-12 09:19:35 +01:00
if (HAVE_STRDUP)
add_definitions(-DHAVE_STRDUP)
endif(HAVE_STRDUP)
2017-12-31 21:33:31 +01:00
if (HAVE_LIBBSD)
2018-09-30 16:16:32 +02:00
target_link_libraries(parser bsd)
2017-12-31 21:33:31 +01:00
endif (HAVE_LIBBSD)
2018-01-28 18:26:54 +01:00
if (SQLITE3_FOUND)
include_directories (${SQLITE3_INCLUDE_DIR})
target_link_libraries(eressea ${SQLITE3_LIBRARIES})
target_link_libraries(test_eressea ${SQLITE3_LIBRARIES})
add_definitions(-DUSE_SQLITE)
2018-01-28 18:26:54 +01:00
elseif (DB_FOUND)
include_directories (${DB_INCLUDE_DIR})
target_link_libraries(eressea ${DB_LIBRARIES})
target_link_libraries(test_eressea ${DB_LIBRARIES})
add_definitions(-DUSE_DB)
endif(SQLITE3_FOUND)
if (READLINE_FOUND)
include_directories (${READLINE_INCLUDE_DIR})
target_link_libraries(eressea ${READLINE_LIBRARY})
add_definitions(-DUSE_READLINE)
endif (READLINE_FOUND)
if (CURSES_FOUND)
include_directories (${CURSES_INCLUDE_DIR})
target_link_libraries(eressea ${CURSES_LIBRARIES})
add_definitions(-DUSE_CURSES)
endif(CURSES_FOUND)
2018-04-24 21:50:49 +02:00
if (EXPAT_FOUND)
include_directories (${EXPAT_INCLUDE_DIRS})
target_link_libraries(eressea ${EXPAT_LIBRARIES})
target_link_libraries(test_eressea ${EXPAT_LIBRARIES})
endif (EXPAT_FOUND)