124 lines
3.6 KiB
CMake
124 lines
3.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(Rousku LANGUAGES CXX)
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
|
|
set(TARGET_PLATFORM_ANDROID TRUE)
|
|
else()
|
|
set(TARGET_PLATFORM_LINUX TRUE)
|
|
endif()
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# Include compile flags
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g")
|
|
|
|
if(TARGET_PLATFORM_ANDROID)
|
|
# These will find .aar packages in android build environment.
|
|
# SDL3 needs to be build by yourself as we are not using Android Activity, so not using .aar.
|
|
#find_package(SDL3 CONFIG REQUIRED)
|
|
find_package(SDL3_image CONFIG REQUIRED)
|
|
find_package(SDL3_ttf CONFIG REQUIRED)
|
|
|
|
# These are needed for SDL3 when not using .aar.
|
|
include_directories(/SDL/include)
|
|
add_library(SDL3 STATIC IMPORTED)
|
|
set_target_properties(SDL3 PROPERTIES IMPORTED_LOCATION /SDL/build-android/libSDL3.so)
|
|
|
|
#include_directories(${SDL3_INCLUDE_DIRS})
|
|
#link_libraries(${SDL3_LIBRARIES})
|
|
else()
|
|
# Get SDL3 and friends using pkg-config
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(SDL3 REQUIRED sdl3 sdl3-ttf sdl3-image)
|
|
endif()
|
|
|
|
# Define sources
|
|
set(NEW_DIALOG_OBJECTS
|
|
Dialog
|
|
Item
|
|
Button
|
|
Checkbox
|
|
DropDownList
|
|
Scrollbar
|
|
Listbox
|
|
Frame
|
|
DlgDropDownList
|
|
DlgMainMenu
|
|
)
|
|
|
|
list(TRANSFORM NEW_DIALOG_OBJECTS PREPEND "NewDialogs/")
|
|
|
|
set(SOURCES
|
|
main.cpp
|
|
Animal.cpp
|
|
Sound.cpp
|
|
)
|
|
|
|
foreach(src ${NEW_DIALOG_OBJECTS})
|
|
list(APPEND SOURCES "${src}.cpp")
|
|
endforeach()
|
|
|
|
# Generate embed_data.h
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/embed_data.h
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Generating embed_data.h..."
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMAND /bin/sh -c "> ${CMAKE_CURRENT_BINARY_DIR}/embed_data.h && \
|
|
find ${CMAKE_SOURCE_DIR}/skin -name '*.png' -o -name '*.wav' -o -name '*.tsk' | \
|
|
while read file; do \
|
|
xxd -i \"\$file\" >> ${CMAKE_CURRENT_BINARY_DIR}/embed_data.h; \
|
|
done"
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/skin
|
|
VERBATIM
|
|
)
|
|
|
|
# Generate menu_png.h
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/menu_png.h
|
|
COMMAND xxd -i ${CMAKE_SOURCE_DIR}/menu.png > ${CMAKE_CURRENT_BINARY_DIR}/menu_png.h
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/menu.png
|
|
VERBATIM
|
|
)
|
|
|
|
# Add custom headers to build
|
|
add_custom_target(generate_headers
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/embed_data.h ${CMAKE_CURRENT_BINARY_DIR}/menu_png.h
|
|
)
|
|
|
|
if(TARGET_PLATFORM_ANDROID)
|
|
# Add executable
|
|
add_library(main SHARED ${SOURCES})
|
|
|
|
# Include generated headers
|
|
add_dependencies(main generate_headers)
|
|
target_include_directories(main PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
# These are got from .aar package. SDL3 is build by ourselves so not including it.
|
|
#target_link_libraries(main PRIVATE SDL3::SDL3)
|
|
target_link_libraries(main PRIVATE SDL3 SDL3_image::SDL3_image SDL3_ttf::SDL3_ttf android log OpenSLES EGL GLESv2)
|
|
|
|
# Install instructions
|
|
install(TARGETS main DESTINATION bin)
|
|
else()
|
|
# Add executable
|
|
add_executable(Rousku ${SOURCES})
|
|
|
|
# Include generated headers
|
|
add_dependencies(Rousku generate_headers)
|
|
target_include_directories(Rousku PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
# Link libraries
|
|
target_link_libraries(Rousku ${SDL3_LIBRARIES})
|
|
|
|
# Install instructions
|
|
install(TARGETS Rousku DESTINATION bin)
|
|
endif()
|
|
|
|
install(FILES skin/Tavallinen/paikka/1.png DESTINATION share/icons RENAME rousku.png)
|
|
|
|
# Custom clean
|
|
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/embed_data.h;${CMAKE_CURRENT_BINARY_DIR}/menu_png.h"
|
|
)
|