summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 2445f0859adbea530f1745a363f3fa6b654acf61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
cmake_minimum_required(VERSION 3.16)
project(dng
        VERSION 0.2.0)
set(CMAKE_CXX_STANDARD 20)
if (WIN32)
    set(CMAKE_CXX_FLAGS -static)
endif ()
if (APPLE)
    set(CMAKE_CXX_FLAGS -std=c++11) # why? Because apparently we can't modernize
endif ()
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION})
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ON)

# Setup Lua Libraries
# To determine which files look at the lua/makefile to see how the targets are built
set(LUA_SRC ${PROJECT_SOURCE_DIR}/thirdparty/lua)
add_library(lua STATIC
        ${LUA_SRC}/lapi.c
        ${LUA_SRC}/lcode.c
        ${LUA_SRC}/lctype.c
        ${LUA_SRC}/ldebug.c
        ${LUA_SRC}/ldo.c
        ${LUA_SRC}/ldump.c
        ${LUA_SRC}/lfunc.c
        ${LUA_SRC}/lgc.c
        ${LUA_SRC}/llex.c
        ${LUA_SRC}/lmem.c
        ${LUA_SRC}/lobject.c
        ${LUA_SRC}/lopcodes.c
        ${LUA_SRC}/lparser.c
        ${LUA_SRC}/lstate.c
        ${LUA_SRC}/lstring.c
        ${LUA_SRC}/ltable.c
        ${LUA_SRC}/ltm.c
        ${LUA_SRC}/lundump.c
        ${LUA_SRC}/lvm.c
        ${LUA_SRC}/lzio.c
        ${LUA_SRC}/ltests.c)
add_library(lauxlib STATIC ${LUA_SRC}/lauxlib.c)
add_library(lualib STATIC
        ${LUA_SRC}/lbaselib.c
        ${LUA_SRC}/lcorolib.c
        ${LUA_SRC}/ldblib.c
        ${LUA_SRC}/linit.c
        ${LUA_SRC}/liolib.c
        ${LUA_SRC}/lmathlib.c
        ${LUA_SRC}/loadlib.c
        ${LUA_SRC}/loslib.c
        ${LUA_SRC}/lstrlib.c
        ${LUA_SRC}/ltablib.c
        ${LUA_SRC}/lutf8lib.c)
if (UNIX)
    target_compile_definitions(lualib PRIVATE -DLUA_USE_POSIX=1) # to properly use mkstemp
endif ()
target_include_directories(lua PUBLIC lua)
target_include_directories(lauxlib PUBLIC lua)
target_include_directories(lualib PUBLIC lua)
target_link_libraries(lauxlib lua)
set(LUA_LIBRARIES lua lualib lauxlib)
include_directories(${PROJECT_SOURCE_DIR}/thirdparty/lua)

# setup boost and other MacOS Libs
set(MACOS_LIBS "")
if (APPLE)
    set(DNG_BOOST_DIR ${CMAKE_SOURCE_DIR}/thirdparty/boost)
    set(BOOST_ROOT ${DNG_BOOST_DIR}/tools/cmake/include/)
    add_subdirectory(${DNG_BOOST_DIR} EXCLUDE_FROM_ALL)
    set(MACOS_LIBS ${MACOS_LIBS} Boost::filesystem Boost::optional)
endif ()

# System specific includes
if (UNIX AND NOT APPLE)
    set(RES_LIB src/resources/Resources.cpp src/resources/Resources.h src/resources/linux/LinuxResources.cpp src/resources/linux/LinuxResources.h)
elseif (WIN32)
    set(RES_LIB src/resources/Resources.cpp src/resources/Resources.h src/resources/windows/WindowsResources.cpp src/resources/windows/WindowsResources.h)
elseif (APPLE)
    set(RES_LIB src/resources/Resources.cpp src/resources/Resources.h src/resources/macos/MacResources.cpp src/resources/macos/MacResources.h)
endif ()

add_executable(${PROJECT_NAME} src/main.cpp src/Level.cpp src/Level.h src/CApi.h src/Scene.h src/LuaApi.h src/MessageBox.h ${RES_LIB})

# configure and link SFML
set(BUILD_SHARED_LIBS FALSE)
set(SFML_LIBRARIES sfml-system sfml-window sfml-graphics)
if (WIN32)
    set(SFML_STATIC TRUE)
    set(SFML_USE_STATIC_STD_LIBS TRUE)
endif ()
set(SFML_USE_SYSTEM_DEPS ON)
add_subdirectory(${PROJECT_SOURCE_DIR}/thirdparty/SFML EXCLUDE_FROM_ALL)

target_link_libraries(${PROJECT_NAME} PUBLIC ${SFML_LIBRARIES} ${LUA_LIBRARIES} ${MACOS_LIBS})

# Install Directives
if (UNIX)
    set(SFML_INSTALL_PKGCONFIG_FILES FALSE)
endif ()

install(TARGETS ${PROJECT_NAME} DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/maps DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dnglib DESTINATION .)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE DESTINATION .)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/thirdparty-licenses.txt DESTINATION .)


# Package Directives
if (WIN32)
    set(CPACK_GEN ZIP)
else ()
    set(CPACK_GEN TGZ)
endif ()

set(CPACK_GENERATOR ${CPACK_GEN})
set(CPACK_SOURCE_GENERATOR ${CPACK_GEN})
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
include(CPack)