summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiko Asakura2020-11-01 17:23:11 -0500
committerReiko Asakura2020-11-01 17:23:11 -0500
commit836489244c5271435c02213f33817f98f3181a96 (patch)
tree221c9c8a5acabd3fa82277bc3f68e79a022646e7
parentAdd SceLibMonoBridge functions (diff)
downloadvds-libraries-836489244c5271435c02213f33817f98f3181a96.tar.gz
Update build script
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt95
-rw-r--r--cmake/InstallStubs.cmake31
-rw-r--r--patches/egl-registry.patch40
3 files changed, 119 insertions, 47 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0decbc0..8f5cf79 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,55 +1,56 @@
-cmake_minimum_required(VERSION 3.13)
-
-set(ARCH "arm-dolce-eabi" CACHE STRING "Target architecture")
-set(CMAKE_INSTALL_PREFIX "$ENV{DOLCESDK}/" CACHE PATH "Install prefix")
-
-if(DEFINED ENV{DOLCESDK})
- set(_LIBS_GEN "$ENV{DOLCESDK}/bin/dolce-libs-gen")
-else()
- set(_LIBS_GEN "dolce-libs-gen")
-endif()
-set(LIBS_GEN "${_LIBS_GEN}" CACHE STRING "libs-gen command")
-
-include(ProcessorCount)
-ProcessorCount(_NPROC)
-if(_NPROC EQUAL 0)
- set(_NPROC 1)
-endif()
-set(NPROC "${_NPROC}" CACHE STRING "Number of processors")
-
-project(dolcesdk-target-headers LANGUAGES NONE)
-
-set(STUBS_DIR stubs)
-set(DB_FILE "${CMAKE_SOURCE_DIR}/db.yml")
-set(DB_365_FILE "${CMAKE_SOURCE_DIR}/db_365.yml")
-
-add_custom_command(OUTPUT "${STUBS_DIR}"
- DEPENDS "${DB_FILE}" "${DB_365_FILE}"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${STUBS_DIR}"
- COMMAND "${LIBS_GEN}" "${DB_FILE}" "${STUBS_DIR}/cex-3600"
- COMMAND "${LIBS_GEN}" "${DB_365_FILE}" "${STUBS_DIR}/cex-3650"
-)
+#
+# Copyright (C) 2021 Reiko Asakura. All Rights Reserved.
+#
+# Vita Development Suite Libraries
+#
-add_custom_target(prepare-stubs
- DEPENDS "${STUBS_DIR}"
- COMMENT "Preparing stubs"
-)
+cmake_minimum_required(VERSION 3.19)
-add_custom_target(build-stubs
- COMMAND make -C "${STUBS_DIR}/cex-3600" -j "${NPROC}"
- COMMAND make -C "${STUBS_DIR}/cex-3650" -j "${NPROC}"
- COMMENT "Building stubs with ${NPROC} jobs"
-)
+set(CMAKE_TOOLCHAIN_FILE $ENV{SCE_PSP2_SDK_DIR}/host_tools/build/cmake/psp2-snc-toolchain.cmake)
-add_dependencies(build-stubs prepare-stubs)
+project(vdsuite-libraries LANGUAGES NONE)
+
+include(ExternalProject)
+include(VitaDevelopmentSuite)
+
+# Install stub archives
add_custom_target(install-stubs
- COMMAND make -C "${STUBS_DIR}/cex-3600" install
- COMMAND make -C "${STUBS_DIR}/cex-3650" install
- COMMENT "Install stubs"
+ COMMAND ${CMAKE_COMMAND}
+ -D NIDS_DIR=${CMAKE_CURRENT_SOURCE_DIR}/nids
+ -D VDSUITE_LIBGEN=${VDSUITE_LIBGEN}
+ -D CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/InstallStubs.cmake
)
-add_dependencies(install-stubs build-stubs)
+# Install headers
-install(DIRECTORY include/ DESTINATION "${ARCH}/include")
-install(FILES db.yml db_365.yml DESTINATION share)
+install(DIRECTORY
+ include/
+ DESTINATION include/vdsuite
+)
+
+# Build and install GLES headers
+
+ExternalProject_Add(opengl-registry
+ URL https://github.com/KhronosGroup/OpenGL-Registry/archive/2afca877b25ec2c7f19ddcba21a8627b9fa8e026.tar.gz
+ URL_HASH SHA256=d7447748ac3a10c9c6324e2ee980b3b0d6f75f8665d0d4055b1afd1aa3f5b67d
+ EXCLUDE_FROM_ALL TRUE
+ INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/api/GLES2 <INSTALL_DIR>/include/vdsuite/user/GLES2
+)
+
+ExternalProject_Add(egl-registry
+ URL https://github.com/KhronosGroup/EGL-Registry/archive/d42c684f61828e3ce18533f1c6893b79980e6acc.tar.gz
+ URL_HASH SHA256=02ce918b4c9c65b5af1924330a17f3c7fbccfd87869a5c87b25d7c7c593a3d8b
+ EXCLUDE_FROM_ALL TRUE
+ INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
+ PATCH_COMMAND patch --forward --strip=1 --input=${CMAKE_CURRENT_SOURCE_DIR}/patches/egl-registry.patch
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ${CMAKE_COMMAND} -E chdir <SOURCE_DIR>/api python3 genheaders.py -registry egl.xml EGL/egl.h
+ COMMAND ${CMAKE_COMMAND} -E chdir <SOURCE_DIR>/api python3 genheaders.py -registry egl.xml EGL/eglext.h
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/api/EGL <INSTALL_DIR>/include/vdsuite/user/EGL
+ COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/api/KHR <INSTALL_DIR>/include/vdsuite/user/KHR
+)
diff --git a/cmake/InstallStubs.cmake b/cmake/InstallStubs.cmake
new file mode 100644
index 0000000..48ce248
--- /dev/null
+++ b/cmake/InstallStubs.cmake
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2021 Reiko Asakura. All Rights Reserved.
+#
+# Vita Development Suite Libraries
+#
+
+file(GLOB NIDS_360 "${NIDS_DIR}/360/*.yml")
+file(GLOB NIDS_365 "${NIDS_DIR}/365/*.yml")
+file(GLOB NIDS_OTHER "${NIDS_DIR}/*.yml")
+
+foreach(NID ${NIDS_360})
+ message(STATUS "Generating stubs from ${NID}")
+ execute_process(
+ COMMAND ${VDSUITE_LIBGEN} ${NID} ${CMAKE_INSTALL_PREFIX}/lib/vdsuite
+ )
+endforeach()
+
+foreach(NID ${NIDS_365})
+ message(STATUS "Generating stubs from ${NID}")
+ execute_process(
+ COMMAND ${VDSUITE_LIBGEN} --merge --export-suffix _365 ${NID} ${CMAKE_INSTALL_PREFIX}/lib/vdsuite
+ COMMAND ${VDSUITE_LIBGEN} ${NID} ${CMAKE_INSTALL_PREFIX}/lib/vdsuite/365
+ )
+endforeach()
+
+foreach(NID ${NIDS_OTHER})
+ message(STATUS "Generating stubs from ${NID}")
+ execute_process(
+ COMMAND ${VDSUITE_LIBGEN} ${NID} ${CMAKE_INSTALL_PREFIX}/lib/vdsuite
+ )
+endforeach()
diff --git a/patches/egl-registry.patch b/patches/egl-registry.patch
new file mode 100644
index 0000000..8fbc6d1
--- /dev/null
+++ b/patches/egl-registry.patch
@@ -0,0 +1,40 @@
+--- a/api/EGL/eglplatform.h
++++ b/api/EGL/eglplatform.h
+@@ -139,6 +139,12 @@ typedef void *EGLNativeDisplayType;
+ typedef khronos_uintptr_t EGLNativePixmapType;
+ typedef khronos_uintptr_t EGLNativeWindowType;
+
++#elif defined(__psp2__)
++
++typedef void *EGLNativeDisplayType;
++typedef void *EGLNativePixmapType;
++typedef int EGLNativeWindowType;
++
+ #else
+ #error "Platform not recognized"
+ #endif
+--- a/api/genheaders.py
++++ b/api/genheaders.py
+@@ -410,8 +410,8 @@ buildList = [
+ filename = 'EGL/egl.h',
+ apiname = 'egl',
+ profile = None,
+- versions = allVersions,
+- emitversions = allVersions,
++ versions = '1\.[0-4]',
++ emitversions = '1\.[0-4]',
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+@@ -429,9 +429,9 @@ buildList = [
+ filename = 'EGL/eglext.h',
+ apiname = 'egl',
+ profile = None,
+- versions = allVersions,
++ versions = '1\.[0-4]',
+ emitversions = None,
+- defaultExtensions = 'egl', # Default extensions for EGL
++ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + eglPlatformStrings + eglextVersionStrings,