mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-18 05:11:15 +00:00
91 lines
2.8 KiB
CMake
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()
|