75 lines
2.4 KiB
CMake
75 lines
2.4 KiB
CMake
|
cmake_minimum_required(VERSION 3.22)
|
||
|
|
||
|
## Utilitys of Palladium Library
|
||
|
|
||
|
### RULES ###
|
||
|
|
||
|
# Force C++ 20
|
||
|
set(CMAKE_CXX_STANDARD 20)
|
||
|
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||
|
|
||
|
# Enable Compile Command Export
|
||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||
|
|
||
|
option(PD_INCLUDE_DIR "")
|
||
|
|
||
|
### Helper Function to Build Librarys without have always
|
||
|
### These includes and definition defines
|
||
|
function(pd_add_lib TARGET_NAME)
|
||
|
set(opts "BUILD_SHARED")
|
||
|
set(one_val_args "")
|
||
|
set(multi_val_args SRC_FILES DEPENDS)
|
||
|
cmake_parse_arguments(ARG "${opts}" "${one_val_args}" "${multi_val_args}" ${ARGN})
|
||
|
|
||
|
string(REPLACE "-" "_" FLAG_NAME_T ${TARGET_NAME})
|
||
|
string(TOUPPER ${FLAG_NAME_T} FLAG_NAME_F)
|
||
|
|
||
|
if(ARG_BUILD_SHARED)
|
||
|
add_library(${TARGET_NAME} SHARED ${ARG_SRC_FILES})
|
||
|
target_compile_definitions(${TARGET_NAME} PUBLIC -D${FLAG_NAME_F}_BUILD_SHARED=1)
|
||
|
message("Building SHARED library: ${FLAG_NAME_F}_BUILD_SHARED=1")
|
||
|
else()
|
||
|
add_library(${TARGET_NAME} STATIC ${ARG_SRC_FILES})
|
||
|
target_compile_definitions(${TARGET_NAME} PUBLIC -D${FLAG_NAME_F}_BUILD_SHARED=0)
|
||
|
message("Building STATIC library: ${FLAG_NAME_F}_BUILD_SHARED=0")
|
||
|
endif()
|
||
|
target_include_directories(${TARGET_NAME} PUBLIC
|
||
|
${PD_INCLUDE_DIR}
|
||
|
${DEVKITPRO}/portlibs/3ds/include
|
||
|
)
|
||
|
target_compile_definitions(${TARGET_NAME} PUBLIC
|
||
|
-D_GNU_SOURCE=1
|
||
|
-DPALLADIUM_VERSION="${PROJECT_VERSION}"
|
||
|
-DPALLADIUM_GIT_COMMIT="${GIT_SHORT_HASH}"
|
||
|
-DPALLADIUM_GIT_BRANCH="${GIT_BRANCH}"
|
||
|
-DBUILD_CTR=1
|
||
|
)
|
||
|
### For the libs that depend on another
|
||
|
if(ARG_DEPENDS)
|
||
|
target_link_libraries(${TARGET_NAME} PUBLIC ${ARG_DEPENDS})
|
||
|
endif()
|
||
|
install(TARGETS ${TARGET_NAME})
|
||
|
endfunction()
|
||
|
|
||
|
### GIT HELPER ###
|
||
|
|
||
|
function(pd_git_get_hash ret)
|
||
|
execute_process(
|
||
|
COMMAND git rev-parse --short HEAD
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
OUTPUT_VARIABLE _ret
|
||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
)
|
||
|
set(${ret} "${_ret}" PARENT_SCOPE)
|
||
|
endfunction()
|
||
|
|
||
|
function(pd_git_get_branch ret)
|
||
|
execute_process(
|
||
|
COMMAND git rev-parse --abbrev-ref HEAD
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
OUTPUT_VARIABLE _ret
|
||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
)
|
||
|
set(${ret} "${_ret}" PARENT_SCOPE)
|
||
|
endfunction()
|