add support for building Android version
This commit is contained in:
123
CMakeLists.txt
Normal file
123
CMakeLists.txt
Normal file
@@ -0,0 +1,123 @@
|
||||
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"
|
||||
)
|
||||
Reference in New Issue
Block a user