isle-portable/CONFIG_vita/ScePaf/CMakeLists.txt
2025-07-02 12:22:20 +02:00

91 lines
2.8 KiB
CMake

cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR)
project(ScePaf)
FetchContent_Declare(
ScePaf_RE
GIT_REPOSITORY "https://github.com/GrapheneCt/ScePaf-RE"
GIT_TAG "b76d6ae00516b107d37e7e8a1a16211e3b729a07"
UPDATE_DISCONNECTED TRUE
EXCLUDE_FROM_ALL
PATCH_COMMAND patch -p2 < ${CMAKE_CURRENT_LIST_DIR}/ScePaf.patch
)
FetchContent_MakeAvailable(ScePaf_RE)
set(SCEPAF_LIBRARIES
ScePafCommon
ScePafThread
ScePafAutoTestTty
ScePafMisc
ScePafLowlayer
ScePafWidget
ScePafStdc
ScePafGraphics
ScePafResource
ScePafToplevel
SceAppSettings
SceCommonGuiDialog
ScePafWebMapView
SceWebUIPlugin
)
file(MAKE_DIRECTORY ${scepaf_re_BINARY_DIR}/include)
add_custom_command(
OUTPUT ${scepaf_re_BINARY_DIR}/include/paf.h
COMMAND cp -r ${scepaf_re_SOURCE_DIR}/include/ ${scepaf_re_BINARY_DIR}
COMMAND cp ${CMAKE_CURRENT_LIST_DIR}/include/map ${scepaf_re_BINARY_DIR}/include/paf/std/map
COMMAND cp ${CMAKE_CURRENT_LIST_DIR}/include/math.h ${scepaf_re_BINARY_DIR}/include/paf/math/math.h
)
foreach(library ${SCEPAF_LIBRARIES})
set(emd ${scepaf_re_SOURCE_DIR}/lib/${library}.emd)
set(yml ${scepaf_re_BINARY_DIR}/${library}.yml)
set(libdir ${scepaf_re_BINARY_DIR}/lib/${library})
set(libbuilddir ${scepaf_re_BINARY_DIR}/libbuild/${library})
set(stub ${libdir}/lib${library}_stub.a)
file(MAKE_DIRECTORY ${libbuilddir})
add_custom_command(
OUTPUT "${yml}"
DEPENDS "${emd}"
COMMAND python3 ${CMAKE_CURRENT_LIST_DIR}/emd2yml.py "${yml}" "${emd}"
COMMENT emd2yml ${library}
)
add_custom_command(
OUTPUT "${stub}"
DEPENDS "${yml}"
COMMAND vita-libs-gen-2 --yml="${yml}" --output="${libbuilddir}" --cmake=true
COMMAND cmake "${libbuilddir}" -B "${libbuilddir}/cmake"
COMMAND cmake --build "${libbuilddir}/cmake"
COMMAND cp "${libbuilddir}/cmake/lib${library}_stub.a" "${stub}"
COMMENT vita-libs-gen ${library}
)
list(APPEND SCEPAF_STUBS ${stub})
endforeach()
add_custom_target(
ScePaf_stubs
DEPENDS ${SCEPAF_STUBS}
)
add_custom_target(
paf_includes
DEPENDS ${scepaf_re_BINARY_DIR}/include/paf.h
)
foreach(library ${SCEPAF_LIBRARIES})
set(stub "${scepaf_re_BINARY_DIR}/lib/${library}/lib${library}_stub.a")
add_library(${library}_stub STATIC IMPORTED GLOBAL)
target_include_directories(${library}_stub INTERFACE
${scepaf_re_BINARY_DIR}/include
)
target_link_directories(${library}_stub INTERFACE
"${scepaf_re_BINARY_DIR}/lib/${library}"
)
set_target_properties(${library}_stub PROPERTIES
IMPORTED_LOCATION ${stub}
)
target_compile_options(${library}_stub INTERFACE -include ${CMAKE_CURRENT_LIST_DIR}/include/declspec.h)
add_dependencies(${library}_stub paf_includes)
endforeach()