From 53d434fd24266540910975e862aae3d898462cab Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 29 Jan 2023 06:12:40 +0100
Subject: [PATCH] cmake: add CPack support for creating binary archives
---
.github/workflows/android.yml | 12 ++-
.github/workflows/emscripten.yml | 14 ++-
.github/workflows/haiku.yml | 35 ++++--
.github/workflows/main.yml | 24 +++--
.github/workflows/msvc.yml | 27 +++--
.github/workflows/n3ds.yml | 17 ++-
.github/workflows/ps2.yml | 10 +-
.github/workflows/psp.yml | 14 ++-
.github/workflows/riscos.yml | 8 ++
.github/workflows/vita.yml | 18 +++-
.github/workflows/vmactions.yml | 9 +-
CMakeLists.txt | 171 +++++++++++++++++-------------
cmake/CPackProjectConfig.cmake.in | 36 +++++++
cmake/sdlplatform.cmake | 131 ++++++++++++++---------
14 files changed, 352 insertions(+), 174 deletions(-)
create mode 100644 cmake/CPackProjectConfig.cmake.in
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index c737325cd744..56eec67dcce0 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -16,7 +16,7 @@ jobs:
matrix:
platform:
- { name: Android.mk }
- - { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64" }
+ - { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64", artifact: "SDL-android-arm64" }
steps:
- uses: actions/checkout@v3
@@ -57,6 +57,10 @@ jobs:
cmake --install build --config Release
echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV
( cd prefix; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ if: ${{ matrix.platform.name == 'CMake' }}
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
if: ${{ matrix.platform.name == 'CMake' }}
run: |
@@ -73,3 +77,9 @@ jobs:
export CC="${{ steps.setup_ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=${{ matrix.platform.arch }}-none-linux-androideabi${{ matrix.platform.android_platform }}"
export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig
cmake/test/test_pkgconfig.sh
+ - uses: actions/upload-artifact@v3
+ if: ${{ matrix.platform.name == 'CMake' }}
+ with:
+ if-no-files-found: error
+ name: ${{ matrix.platform.artifact }}
+ path: build/dist/SDL3*
diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml
index b1aaaf20dc3f..ba94be10cead 100644
--- a/.github/workflows/emscripten.yml
+++ b/.github/workflows/emscripten.yml
@@ -18,7 +18,7 @@ jobs:
run: |
sudo apt-get -y update
sudo apt-get install -y ninja-build
- - name: Configure CMake
+ - name: Configure (CMake)
run: |
emcmake cmake -S . -B build \
-Wdeprecated -Wdev -Werror \
@@ -28,7 +28,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=prefix \
-GNinja
- - name: Build
+ - name: Build (CMake)
run: cmake --build build/ --verbose
- name: Run build-time tests
run: |
@@ -36,10 +36,13 @@ jobs:
export SDL_TESTS_QUICK=1
# FIXME: enable Emscripten build time tests
# ctest -VV --test-dir build/
- - name: Install
+ - name: Install (CMake)
run: |
echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV
cmake --install build/
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
emcmake cmake -S cmake/test -B cmake_config_build \
@@ -48,3 +51,8 @@ jobs:
-DTEST_SHARED=FALSE \
-DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }}
cmake --build cmake_config_build --verbose
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-emscripten
+ path: build/dist/SDL3*
diff --git a/.github/workflows/haiku.yml b/.github/workflows/haiku.yml
index f0ea30709abb..b84d2fbeee4e 100644
--- a/.github/workflows/haiku.yml
+++ b/.github/workflows/haiku.yml
@@ -18,23 +18,25 @@ jobs:
run: |
container-init & timeout 600 vmshell exit 0
- name: Setup Haiku dependencies
- run: vmshell pkgman install -y cmd:cmake cmd:gcc cmd:ld cmd:ninja cmd:pkg_config haiku_devel devel:libgl devel:libglu
+ run: |
+ vmshell pkgman install -y cmd:cmake cmd:gcc cmd:ld cmd:ninja cmd:pkg_config haiku_devel devel:libgl devel:libglu
- uses: actions/checkout@v3
- name: Copy project to VM
run: |
vmshell mkdir ./src/
tar -cf - ./ | vmshell tar -xf - -C ./src/
- name: Configure (CMake)
- run: vmshell cmake -S src -B build -GNinja \
- -Wdeprecated -Wdev -Werror \
- -DSDL_TESTS=ON \
- -DSDL_WERROR=ON \
- -DSDL_INSTALL_TESTS=ON \
- -DSDL_VENDOR_INFO=Github_Workflow \
- -DCMAKE_INSTALL_PREFIX=cmake_prefix \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
- -DSDL_TESTS_TIMEOUT_MULTIPLIER=10
+ run: |
+ vmshell cmake -S src -B build -GNinja \
+ -Wdeprecated -Wdev -Werror \
+ -DSDL_TESTS=ON \
+ -DSDL_WERROR=ON \
+ -DSDL_INSTALL_TESTS=ON \
+ -DSDL_VENDOR_INFO=Github_Workflow \
+ -DCMAKE_INSTALL_PREFIX=cmake_prefix \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
+ -DSDL_TESTS_TIMEOUT_MULTIPLIER=10
- name: Build (CMake)
run: |
vmshell cmake --build ./build/ --config Release --verbose --parallel
@@ -44,6 +46,9 @@ jobs:
- name: Install (CMake)
run: |
vmshell cmake --install ./build/ --config Release
+ - name: Package (CPack)
+ run: |
+ vmshell cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
vmshell cmake -S ./src/cmake/test -B cmake_config_build -G Ninja \
@@ -53,3 +58,11 @@ jobs:
- name: Verify sdl3.pc
run: |
vmshell CC=c++ PKG_CONFIG_PATH=\$PWD/cmake_prefix/lib/pkgconfig src/cmake/test/test_pkgconfig.sh
+ - name: Copy package from VM
+ run: |
+ vmshell tar -cf - build/dist/ | tar -xf - -C ./
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-haiku
+ path: build/dist/SDL3*
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 56e889306079..0d30beea8f94 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -19,15 +19,15 @@ jobs:
fail-fast: false
matrix:
platform:
- - { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, artifact: 'mingw32'}
- - { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64, artifact: 'mingw64' }
- - { name: Windows (clang32), os: windows-latest, shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, artifact: 'clang32' }
- - { name: Windows (clang64), os: windows-latest, shell: 'msys2 {0}', msystem: clang64, msys-env: mingw-w64-clang-x86_64, artifact: 'clang64' }
- - { name: Windows (ucrt64), os: windows-latest, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64, artifact: 'ucrt64' }
- - { name: Ubuntu 20.04, os: ubuntu-20.04, shell: sh, artifact: 'ubuntu20.04' }
- - { name: Ubuntu 22.04, os: ubuntu-22.04, shell: sh, artifact: 'ubuntu22.04' }
- - { name: MacOS (Framework), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DSDL_FRAMEWORK=ON', skip_test_pkgconfig: true, artifact: 'macos-framework' }
- - { name: MacOS (GNU prefix), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64"', artifact: 'macos-gnu' }
+ - { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, artifact: 'SDL-mingw32' }
+ - { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64, artifact: 'SDL-mingw64' }
+ - { name: Windows (clang32), os: windows-latest, shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, artifact: 'SDL-msys2-clang32' }
+ - { name: Windows (clang64), os: windows-latest, shell: 'msys2 {0}', msystem: clang64, msys-env: mingw-w64-clang-x86_64, artifact: 'SDL-msys2-clang64' }
+ - { name: Windows (ucrt64), os: windows-latest, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64, artifact: 'SDL-msys2-ucrt64' }
+ - { name: Ubuntu 20.04, os: ubuntu-20.04, shell: sh, artifact: 'SDL-ubuntu20.04' }
+ - { name: Ubuntu 22.04, os: ubuntu-22.04, shell: sh, artifact: 'SDL-ubuntu22.04' }
+ - { name: MacOS (Framework), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DSDL_FRAMEWORK=ON', skip_test_pkgconfig: true, artifact: 'SDL-macos-framework' }
+ - { name: MacOS (GNU prefix), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64"', artifact: 'SDL-macos-gnu' }
steps:
- name: Set up MSYS2
@@ -95,6 +95,9 @@ jobs:
set -eu
cmake --install build/ --config Release
( cd cmake_prefix; find . ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
cmake -S cmake/test -B cmake_config_build -G Ninja \
@@ -110,5 +113,6 @@ jobs:
cmake/test/test_pkgconfig.sh
- uses: actions/upload-artifact@v3
with:
+ if-no-files-found: error
name: ${{ matrix.platform.artifact }}
- path: cmake_prefix/
+ path: build/dist/SDL3*
diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml
index f7cefa0cc912..067e682312b7 100644
--- a/.github/workflows/msvc.yml
+++ b/.github/workflows/msvc.yml
@@ -15,16 +15,16 @@ jobs:
fail-fast: false
matrix:
platform:
- - { name: Windows (x64), flags: -A x64, project: VisualC/SDL.sln, projectflags: '/p:Platform=x64' }
- - { name: Windows (x86), flags: -A Win32, project: VisualC/SDL.sln, projectflags: '/p:Platform=Win32' }
- - { name: Windows static VCRT (x64), flags: -A x64 -DSDL_FORCE_STATIC_VCRT=ON }
- - { name: Windows static VCRT (x86), flags: -A Win32 -DSDL_FORCE_STATIC_VCRT=ON }
- - { name: Windows (clang-cl x64), flags: -T ClangCL -A x64 }
- - { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32 }
- - { name: Windows (ARM), flags: -A ARM }
- - { name: Windows (ARM64), flags: -A ARM64 }
+ - { name: Windows (x64), flags: -A x64, project: VisualC/SDL.sln, projectflags: '/p:Platform=x64', artifact: 'SDL-VC-x64' }
+ - { name: Windows (x86), flags: -A Win32, project: VisualC/SDL.sln, projectflags: '/p:Platform=Win32', artifact: 'SDL-VC-x86' }
+ - { name: Windows static VCRT (x64), flags: -A x64 -DSDL_FORCE_STATIC_VCRT=ON, artifact: 'SDL-VC-static-VCRT-x64' }
+ - { name: Windows static VCRT (x86), flags: -A Win32 -DSDL_FORCE_STATIC_VCRT=ON, artifact: 'SDL-VC-static-VCRT-x86' }
+ - { name: Windows (clang-cl x64), flags: -T ClangCL -A x64, artifact: 'SDL-clang-cl-x64' }
+ - { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32, artifact: 'SDL-clang-cl-x86' }
+ - { name: Windows (ARM), flags: -A ARM, artifact: 'SDL-VC-arm32' }
+ - { name: Windows (ARM64), flags: -A ARM64, artifact: 'SDL-VC-arm64' }
- { name: UWP (x64), flags: -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0" -DSDL_TESTS=OFF, nowerror: true,
- project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0' }
+ project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0', artifact: 'SDL-VC-UWP' }
steps:
- uses: actions/checkout@v3
@@ -50,6 +50,7 @@ jobs:
-DSDL_INSTALL_TESTS=ON `
-DSDL_VENDOR_INFO="Github Workflow" `
-DSDL_DISABLE_INSTALL=OFF `
+ -DSDL_DISABLE_INSTALL_CPACK=OFF `
${{ matrix.platform.flags }} `
-DCMAKE_INSTALL_PREFIX=prefix
- name: Build (CMake)
@@ -63,6 +64,9 @@ jobs:
run: |
echo "SDL3_DIR=$Env:GITHUB_WORKSPACE/prefix" >> $Env:GITHUB_ENV
cmake --install build/
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target PACKAGE
- name: Verify CMake configuration files
if: ${{ !contains(matrix.platform.name, 'UWP') }} # FIXME: cmake/test/CMakeLists.txt should support UWP
run: |
@@ -77,3 +81,8 @@ jobs:
- name: Build msbuild
if: ${{ matrix.platform.project != '' }}
run: msbuild ${{ matrix.platform.project }} /m /p:BuildInParallel=true /p:Configuration=Release ${{ matrix.platform.projectflags }}
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: ${{ matrix.platform.artifact }}
+ path: build/dist/SDL3*
diff --git a/.github/workflows/n3ds.yml b/.github/workflows/n3ds.yml
index 2438a617a0bc..42d6dd40c53a 100644
--- a/.github/workflows/n3ds.yml
+++ b/.github/workflows/n3ds.yml
@@ -17,7 +17,7 @@ jobs:
run: |
apt update
apt install ninja-build
- - name: Configure CMake
+ - name: Configure (CMake)
run: |
cmake -S . -B build -G Ninja \
-Wdeprecated -Wdev -Werror \
@@ -28,13 +28,17 @@ jobs:
-DSDL_VENDOR_INFO="Github Workflow" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=prefix
- - name: Build
- run: cmake --build build --verbose
- - name: Install CMake
+ - name: Build (CMake)
+ run: |
+ cmake --build build --verbose
+ - name: Install (CMake)
run: |
echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV
cmake --install build/
( cd prefix; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
cmake -S cmake/test -B cmake_config_build -G Ninja \
@@ -54,3 +58,8 @@ jobs:
run: |
export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig
cmake/test/test_pkgconfig.sh
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-n3ds
+ path: build/dist/SDL3*
diff --git a/.github/workflows/ps2.yml b/.github/workflows/ps2.yml
index c4de83c05e25..d95444ef12aa 100644
--- a/.github/workflows/ps2.yml
+++ b/.github/workflows/ps2.yml
@@ -34,7 +34,7 @@ jobs:
-DSDL_TESTS=ON \
-DCMAKE_INSTALL_PREFIX=cmake_prefix \
-DCMAKE_BUILD_TYPE=Release
- - name: Build
+ - name: Build (CMake)
run: cmake --build build --config Release --verbose --parallel
- name: Install (CMake)
run: |
@@ -42,6 +42,9 @@ jobs:
cmake --install build/ --config Release
echo "SDL3_DIR=$(pwd)/cmake_prefix" >> $GITHUB_ENV
( cd cmake_prefix; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
@@ -70,3 +73,8 @@ jobs:
name: tests-${{ steps.slug.outputs.sha8 }}
path: |
build/test
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-ps2
+ path: build/dist/SDL3*
diff --git a/.github/workflows/psp.yml b/.github/workflows/psp.yml
index 6c022af7b14e..44d12366e853 100644
--- a/.github/workflows/psp.yml
+++ b/.github/workflows/psp.yml
@@ -16,7 +16,7 @@ jobs:
run: |
apk update
apk add cmake gmp mpc1 mpfr4 make pkgconf
- - name: Configure CMake
+ - name: Configure (CMake)
run: |
cmake -S . -B build \
-Wdeprecated -Wdev -Werror \
@@ -26,13 +26,16 @@ jobs:
-DSDL_INSTALL_TESTS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=prefix
- - name: Build
+ - name: Build (CMake)
run: cmake --build build --config Release --verbose
- - name: Install
+ - name: Install (CMake)
run: |
echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV
cmake --install build --config Release
( cd prefix; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
cmake -S cmake/test -B cmake_config_build \
@@ -47,3 +50,8 @@ jobs:
export LDFLAGS="-L$PSPDEV/lib -L$PSPDEV/psp/lib -L$PSPDEV/psp/sdk/lib"
export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig
cmake/test/test_pkgconfig.sh
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-psp
+ path: build/dist/SDL3*
diff --git a/.github/workflows/riscos.yml b/.github/workflows/riscos.yml
index e3f716b0964c..9d7b08af8c01 100644
--- a/.github/workflows/riscos.yml
+++ b/.github/workflows/riscos.yml
@@ -44,6 +44,9 @@ jobs:
echo "SDL3_DIR=${{ github.workspace }}/prefix_cmake" >> $GITHUB_ENV
cmake --install build/
( cd ${{ github.workspace }}/prefix_cmake; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
cmake -S cmake/test -B cmake_config_build -G Ninja \
@@ -52,3 +55,8 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
${{ matrix.platform.test_args }}
cmake --build cmake_config_build --verbose
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-riscos
+ path: build/dist/SDL3*
diff --git a/.github/workflows/vita.yml b/.github/workflows/vita.yml
index c9ab2b9700d1..d27681b72050 100644
--- a/.github/workflows/vita.yml
+++ b/.github/workflows/vita.yml
@@ -20,8 +20,8 @@ jobs:
fail-fast: false
matrix:
platform:
- - { name: GLES (pib), os: windows-latest, pib: true }
- - { name: GLES (PVR_PSP2 + gl4es4vita), os: windows-latest, pvr: true }
+ - { name: Vita (GLES w/ pib), os: windows-latest, pib: true, artifact: SDL-vita-pib }
+ - { name: Vita (GLES w/ PVR_PSP2 + gles4vita), os: windows-latest, pvr: true, artifact: SDL-vita-pvr }
steps:
- uses: actions/checkout@v3
@@ -65,7 +65,7 @@ jobs:
wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/vitasdk_stubs.zip -P/tmp
unzip /tmp/vitasdk_stubs.zip -d${VITASDK}/arm-vita-eabi/lib
- - name: Configure CMake
+ - name: Configure (CMake)
run: |
cmake -S . -B build -G Ninja \
-Wdeprecated -Wdev -Werror \
@@ -77,13 +77,16 @@ jobs:
-DSDL_INSTALL_TESTS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=prefix
- - name: Build
+ - name: Build (CMake)
run: cmake --build build --verbose
- - name: Install CMake
+ - name: Install (CMake)
run: |
echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV
cmake --install build/
( cd prefix; find ) | LC_ALL=C sort -u
+ - name: Package (CPack)
+ run: |
+ cmake --build build/ --config Release --target package
- name: Verify CMake configuration files
run: |
cmake -S cmake/test -B cmake_config_build -G Ninja \
@@ -97,3 +100,8 @@ jobs:
export CC=arm-vita-eabi-gcc
export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig
cmake/test/test_pkgconfig.sh
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: ${{ matrix.platform.artifact }}
+ path: build/dist/SDL3*
diff --git a/.github/workflows/vmactions.yml b/.github/workflows/vmactions.yml
index 612920923a24..adcf4196768a 100644
--- a/.github/workflows/vmactions.yml
+++ b/.github/workflows/vmactions.yml
@@ -50,6 +50,13 @@ jobs:
run: |
cmake -S . -B build -GNinja \
-Wdeprecated -Wdev -Werror \
+ -DCMAKE_BUILD_TYPE=Release \
-DSDL_CHECK_REQUIRED_INCLUDES="/usr/local/include" \
-DSDL_CHECK_REQUIRED_LINK_OPTIONS="-L/usr/local/lib"
- cmake --build build --verbose -- -j`sysctl -n hw.ncpu`
+ cmake --build build/ --config Release --verbose -- -j`sysctl -n hw.ncpu`
+ cmake --build build/ --config Release --target package
+ - uses: actions/upload-artifact@v3
+ with:
+ if-no-files-found: error
+ name: SDL-freebsd
+ path: build/dist/SDL3*
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 99b8f7b283cb..54cef156d441 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,6 +104,8 @@ set(SDL_DYLIB_COMPAT_VERSION "${SDL_DYLIB_COMPAT_VERSION_MAJOR}.${SDL_DYLIB_COMP
#message("SDL_SO_VERSION=${SDL_SO_VERSION} SDL_DYLIB_CURRENT_VERSION=${SDL_DYLIB_CURRENT_VERSION} SDL_DYLIB_COMPAT_VERSION=${SDL_DYLIB_COMPAT_VERSION}")
+set(SDL_FRAMEWORK_VERSION "A")
+
SDL_DetectCPUArchitecture()
# Check for 64 or 32 bit
@@ -357,6 +359,7 @@ endforeach()
# Allow some projects to be built conditionally.
set_option(SDL_DISABLE_INSTALL "Disable installation of SDL3" ${SDL3_SUBPROJECT})
+cmake_dependent_option(SDL_DISABLE_INSTALL_CPACK "Create binary SDL3 archive using CPack" ${SDL3_SUBPROJECT} "NOT SDL_DISABLE_INSTALL" OFF)
set_option(SDL_DISABLE_UNINSTALL "Disable uninstallation of SDL3" OFF)
option_string(SDL_ASSERTIONS "Enable internal sanity checks (auto/disabled/release/enabled/paranoid)" "auto")
@@ -3149,7 +3152,7 @@ if(SDL_SHARED)
if(SDL_FRAMEWORK)
set_target_properties(SDL3 PROPERTIES
PUBLIC_HEADER "${SDL3_INCLUDE_FILES}"
- FRAMEWORK_VERSION "A"
+ FRAMEWORK_VERSION "${SDL_FRAMEWORK_VERSION}"
MACOSX_FRAMEWORK_IDENTIFIER "org.libsdl.SDL3"
RESOURCE "${SDL_FRAMEWORK_RESOURCES}"
)
@@ -3217,7 +3220,7 @@ if(SDL_STATIC)
)
if(SDL_FRAMEWORK)
set_target_properties(SDL3-static PROPERTIES
- FRAMEWORK_VERSION "A"
+ FRAMEWORK_VERSION "${SDL_FRAMEWORK_VERSION}"
MACOSX_FRAMEWORK_IDENTIFIER "org.libsdl.SDL3-static"
RESOURCE "${SDL_FRAMEWORK_RESOURCES}"
)
@@ -3263,7 +3266,7 @@ if(SDL_TEST)
)
if(SDL_FRAMEWORK)
set_target_properties(SDL3_test PROPERTIES
- FRAMEWORK_VERSION "A"
+ FRAMEWORK_VERSION "${SDL_FRAMEWORK_VERSION}"
MACOSX_FRAMEWORK_IDENTIFIER "org.libsdl.SDL3_test"
RESOURCE "${SDL_FRAMEWORK_RESOURCES}"
)
@@ -3297,50 +3300,46 @@ if(NOT SDL_DISABLE_INSTALL)
if(WINDOWS AND NOT MINGW)
set(SDL_INSTALL_CMAKEDIR "${SDL_INSTALL_CMAKEDIR_ROOT}")
- set(LICENSES_PREFIX "licenses/SDL3")
- set(RESOURCES_PREFIX ".")
- set(PUBLIC_HEADER_PREFIX "${CMAKE_INSTALL_INCLUDEDIR}/SDL3")
+ set(SDL_INSTALL_LICENSEDIR "licenses/SDL3")
+ set(SDL_INSTALL_HEADERSDIR "${CMAKE_INSTALL_INCLUDEDIR}/SDL3")
elseif(SDL_FRAMEWORK)
- set(SDL_INSTALL_CMAKEDIR "SDL3.framework/Resources/CMake")
- set(LICENSES_PREFIX "Resources")
- set(RESOURCES_PREFIX "Resources")
- set(PUBLIC_HEADER_PREFIX "Headers")
+ set(SDL_INSTALL_CMAKEDIR "SDL3.framework/Versions/${SDL_FRAMEWORK_VERSION}/Resources/CMake")
+ set(SDL_INSTALL_LICENSEDIR "Resources")
+ set(SDL_INSTALL_HEADERSDIR "Headers")
else()
set(SDL_INSTALL_CMAKEDIR "${SDL_INSTALL_CMAKEDIR_ROOT}/SDL3")
- set(LICENSES_PREFIX "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}")
- set(RESOURCES_PREFIX ".")
- set(PUBLIC_HEADER_PREFIX "${CMAKE_INSTALL_INCLUDEDIR}/SDL3")
+ set(SDL_INSTALL_LICENSEDIR "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}")
+ set(SDL_INSTALL_HEADERSDIR "${CMAKE_INSTALL_INCLUDEDIR}/SDL3")
endif()
- ##### Installation targets #####
-
- install(TARGETS SDL3_Headers EXPORT SDL3headersTargets)
-
- if(SDL_SHARED)
- install(TARGETS SDL3 EXPORT SDL3Targets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- FRAMEWORK DESTINATION "."
- PUBLIC_HEADER DESTINATION "${PUBLIC_HEADER_PREFIX}"
- RESOURCE DESTINATION "${RESOURCES_PREFIX}"
- )
- endif()
+ if(SDL_FRAMEWORK)
+ set(SDL_SDL_INSTALL_RESOURCEDIR "SDL3.framework/Resources")
+ set(SDL_SDL_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_RESOURCEDIR}/CMake")
+ set(SDL_SDL_INSTALL_REAL_RESOURCEDIR "SDL3.framework/Versions/${SDL_FRAMEWORK_VERSION}/Resources")
+ set(SDL_SDL_INSTALL_REAL_CMAKEDIR "${SDL_SDL_INSTALL_REAL_RESOURCEDIR}/CMake")
+
+ # - Install other SDL3*Config.cmake files in SDL3*.framework/Resources/CMake
+ # - The *_RELATIVE_CMAKEDIR variables are the symlinked folders visible from outside
+ set(SDL_SDLstatic_INSTALL_RESOURCEDIR "SDL3-static.framework/Resources")
+ set(SDL_SDLstatic_INSTALL_CMAKEDIR "${SDL_SDLstatic_INSTALL_RESOURCEDIR}/CMake")
+ set(SDL_SDLstatic_INSTALL_CMAKEFILENAME "SDL3-staticConfig.cmake")
+
+ set(SDL_SDLtest_INSTALL_RESOURCEDIR "SDL3_test.framework/Resources")
+ set(SDL_SDLtest_INSTALL_CMAKEDIR "${SDL_SDLtest_INSTALL_RESOURCEDIR}/CMake")
+ set(SDL_SDLtest_INSTALL_CMAKEFILENAME "SDL3_testConfig.cmake")
+ else()
+ set(SDL_SDL_INSTALL_RESOURCEDIR ".")
+ set(SDL_SDL_INSTALL_CMAKEDIR ${SDL_INSTALL_CMAKEDIR})
+ set(SDL_SDL_INSTALL_REAL_CMAKEDIR ${SDL_INSTALL_CMAKEDIR})
- if(SDL_STATIC)
- install(TARGETS SDL3-static EXPORT SDL3staticTargets
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- FRAMEWORK DESTINATION "."
- RESOURCE DESTINATION "${RESOURCES_PREFIX}"
- )
- endif()
+ # Install SDL3*Targets.cmake files in lib/cmake/SDL3
+ set(SDL_SDLstatic_INSTALL_RESOURCEDIR ".")
+ set(SDL_SDLstatic_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}")
+ set(SDL_SDLstatic_INSTALL_CMAKEFILENAME "SDL3staticTargets.cmake")
- if(SDL_TEST)
- install(TARGETS SDL3_test EXPORT SDL3testTargets
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- FRAMEWORK DESTINATION "."
- RESOURCE DESTINATION "${RESOURCES_PREFIX}"
- )
+ set(SDL_SDLtest_INSTALL_RESOURCEDIR ".")
+ set(SDL_SDLtest_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}")
+ set(SDL_SDLtest_INSTALL_CMAKEFILENAME "SDL3_testTargets.cmake")
endif()
##### sdl3.pc #####
@@ -3382,37 +3381,48 @@ if(NOT SDL_DISABLE_INSTALL)
install(FILES ${SDL3_BINARY_DIR}/sdl3.pc DESTINATION "${SDL_PKGCONFIG_INSTALLDIR}")
endif()
+ ##### Installation targets #####()
+
+ install(TARGETS SDL3_Headers EXPORT SDL3headersTargets)
+
+ if(SDL_SHARED)
+ install(TARGETS SDL3 EXPORT SDL3Targets
+ PUBLIC_HEADER DESTINATION "${SDL_INSTALL_HEADERSDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ FRAMEWORK DESTINATION "."
+ RESOURCE DESTINATION "${SDL_SDL_INSTALL_RESOURCEDIR}"
+ )
+ endif()
+
+ if(SDL_STATIC)
+ install(TARGETS SDL3-static EXPORT SDL3staticTargets
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ FRAMEWORK DESTINATION "."
+ RESOURCE DESTINATION "${SDL_SDLstatic_INSTALL_RESOURCEDIR}"
+ )
+ endif()
+
+ if(SDL_TEST)
+ install(TARGETS SDL3_test EXPORT SDL3testTargets
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ FRAMEWORK DESTINATION "."
+ RESOURCE DESTINATION "${SDL_SDLtest_INSTALL_RESOURCEDIR}"
+ )
+ endif()
+
##### CMake Export files #####
include(CMakePackageConfigHelpers)
configure_package_config_file(cmake/SDL3Config.cmake.in SDL3Config.cmake
PATH_VARS CMAKE_INSTALL_PREFIX
- INSTALL_DESTINATION "${SDL_INSTALL_CMAKEDIR}"
+ INSTALL_DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}"
)
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/SDL3ConfigVersion.cmake"
COMPATIBILITY AnyNewerVersion
)
- if(SDL_FRAMEWORK)
- set(SDL_SDL_INSTALL_CMAKEDIR "SDL3.framework/Resources/CMake")
-
- # Install SDL3*Config.cmake files in SDL3*.framework/Resources/CMake
- set(SDL_SDLstatic_INSTALL_CMAKEDIR "SDL3-static.framework/Resources/CMake")
- set(SDL_SDLstatic_INSTALL_CMAKEFILE "SDL3-staticConfig.cmake")
-
- set(SDL_SDLtest_INSTALL_CMAKEDIR "SDL3_test.framework/Resources/CMake")
- set(SDL_SDLtest_INSTALL_CMAKEFILE "SDL3_testConfig.cmake")
- else()
- set(SDL_SDL_INSTALL_CMAKEDIR ${SDL_INSTALL_CMAKEDIR})
-
- # Install SDL3*Targets.cmake files in lib/cmake/SDL3
- set(SDL_SDLstatic_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}")
- set(SDL_SDLstatic_INSTALL_CMAKEFILE "SDL3staticTargets.cmake")
-
- set(SDL_SDLtest_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}")
- set(SDL_SDLtest_INSTALL_CMAKEFILE "SDL3_testTargets.cmake")
- endif()
-
install(EXPORT SDL3headersTargets
FILE "SDL3headersTargets.cmake"
NAMESPACE SDL3::
@@ -3429,7 +3439,7 @@ if(NOT SDL_DISABLE_INSTALL)
if(SDL_STATIC)
install(EXPORT SDL3staticTargets
- FILE "${SDL_SDLstatic_INSTALL_CMAKEFILE}"
+ FILE "${SDL_SDLstatic_INSTALL_CMAKEFILENAME}"
NAMESPACE SDL3::
DESTINATION "${SDL_SDLstatic_INSTALL_CMAKEDIR}"
)
@@ -3437,35 +3447,46 @@ if(NOT SDL_DISABLE_INSTALL)
if(SDL_TEST)
install(EXPORT SDL3testTargets
- FILE "${SDL_SDLtest_INSTALL_CMAKEFILE}"
+ FILE "${SDL_SDLtest_INSTALL_CMAKEFILENAME}"
NAMESPACE SDL3::
DESTINATION "${SDL_SDLtest_INSTALL_CMAKEDIR}"
)
endif()
- install(
- FILES
+ install(FILES
${CMAKE_CURRENT_BINARY_DIR}/SDL3Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/SDL3ConfigVersion.cmake
${SDL3_SOURCE_DIR}/cmake/sdlfind.cmake
- DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}"
- COMPONENT Devel
+ DESTINATION "${SDL_SDL_INSTALL_REAL_CMAKEDIR}"
)
if(NOT SDL_FRAMEWORK)
- install(
- FILES
- ${SDL3_INCLUDE_FILES}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SDL3
+ install(FILES ${SDL3_INCLUDE_FILES}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL3"
)
if(SDL_TEST)
- install(
- FILES ${SDL3_TEST_INCLUDE_FILES}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SDL3
+ install(FILES ${SDL3_TEST_INCLUDE_FILES}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL3"
)
endif()
- install(FILES "LICENSE.txt" DESTINATION "${LICENSES_PREFIX}")
+ install(FILES "LICENSE.txt" DESTINATION "${SDL_INSTALL_LICENSEDIR}")
+ endif()
+
+ if(NOT SDL_DISABLE_INSTALL_CPACK)
+ if(SDL_FRAMEWORK)
+ set(CPACK_GENERATOR "DragNDrop")
+ elseif(MSVC)
+ set(C
(Patch may be truncated, please check the link at the top of this post.)