Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
cmake_minimum_required(VERSION 3.20)

project(
davegnukem
LANGUAGES CXX
VERSION 1.0.3)

set(CMAKE_CXX_STANDARD 14)

include(GNUInstallDirs)
include(FetchContent)

# default to same version for data repo
set(DATA_TAG
${PROJECT_VERSION}
CACHE STRING "default")

FetchContent_Declare(
data
GIT_REPOSITORY https://github.com/davidjoffe/gnukem_data
GIT_TAG ${DATA_TAG})

# default to same version for datasrc repo
set(DATASRC_TAG
${PROJECT_VERSION}
CACHE STRING "default")

FetchContent_Declare(
datasrc
GIT_REPOSITORY https://github.com/davidjoffe/gnukem_datasrc
GIT_TAG ${DATASRC_TAG})

FetchContent_MakeAvailable(data datasrc)

add_subdirectory(src)

install(FILES debian/appstream/com.djoffe.davegnukem.metainfo.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
install(FILES debian/desktop/davegnukem.desktop
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(DIRECTORY debian/icons DESTINATION ${CMAKE_INSTALL_DATADIR})
install(FILES HISTORY.txt README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})

install(DIRECTORY locale DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME})

install(
DIRECTORY ${data_SOURCE_DIR}/
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
PATTERN .git EXCLUDE
PATTERN .gitignore EXCLUDE
PATTERN README.md EXCLUDE PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ
WORLD_READ)
install(FILES ${data_SOURCE_DIR}/README.md
DESTINATION ${CMAKE_INSTALL_DOCDIR}-data)

install(
DIRECTORY ${datasrc_SOURCE_DIR}/
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
PATTERN .git EXCLUDE
PATTERN .gitignore EXCLUDE
PATTERN README.md EXCLUDE
PATTERN "*.psd" EXCLUDE)
install(FILES ${datasrc_SOURCE_DIR}/README.md
DESTINATION ${CMAKE_INSTALL_DOCDIR}-datasrc)

file(READ debian/davegnukem.6 TEXT)
string(REPLACE "VERSION" "${PROJECT_VERSION}" TEXT "${TEXT}")
file(
GENERATE
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/davegnukem.6
CONTENT "${TEXT}")
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS main.cpp)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/davegnukem.6
DESTINATION ${CMAKE_INSTALL_MANDIR}/man6)
24 changes: 24 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
file(GLOB_RECURSE HEADERS "*.h")
file(GLOB SOURCES "*.cpp")
file(GLOB SOURCES_LOC "localization/*.cpp")
file(GLOB SOURCES_SDL "sdl/*.cpp")

if(WIN32)
file(GLOB SOURCES_WIN "win32/*.cpp")
list(APPEND SOURCES ${SOURCES_WIN})
endif()

find_package(SDL2 REQUIRED)
find_package(SDL2_ttf REQUIRED)
find_package(SDL2_image REQUIRED)
find_package(SDL2_mixer REQUIRED)

add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE
${HEADERS} ${SOURCES} ${SOURCES_LOC} ${SOURCES_SDL})
target_compile_definitions(
${PROJECT_NAME}
PRIVATE DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}")
target_link_libraries(
${PROJECT_NAME} PRIVATE SDL2::SDL2 SDL2_ttf::SDL2_ttf SDL2_image::SDL2_image
SDL2_mixer::SDL2_mixer)
install(TARGETS ${PROJECT_NAME})