mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-06 11:28:15 +00:00
Compare commits
42 Commits
SDL2
...
release-2.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
adf31f6ec0 | ||
![]() |
20c2fa18fe | ||
![]() |
4f94da5c53 | ||
![]() |
c816300615 | ||
![]() |
ce67788629 | ||
![]() |
05b03032f1 | ||
![]() |
c49d02cd13 | ||
![]() |
e312fbb37d | ||
![]() |
3c72e2de4d | ||
![]() |
8e31fc4130 | ||
![]() |
75834df37c | ||
![]() |
f070c83a60 | ||
![]() |
d992d4f23e | ||
![]() |
81975cc2d0 | ||
![]() |
278c78e34c | ||
![]() |
2462262e0c | ||
![]() |
162f8e6ee7 | ||
![]() |
d0f8e63ed6 | ||
![]() |
690e2f21f2 | ||
![]() |
52176e25e1 | ||
![]() |
40698ee33c | ||
![]() |
6b5610752b | ||
![]() |
2d86b4ef76 | ||
![]() |
f17058b562 | ||
![]() |
2879f2aeba | ||
![]() |
45c7d838d4 | ||
![]() |
79373c5a5c | ||
![]() |
f4080637c4 | ||
![]() |
92057e683e | ||
![]() |
5edd6846db | ||
![]() |
859cb13ef8 | ||
![]() |
b97d2ed6c5 | ||
![]() |
c76a31341c | ||
![]() |
00731eb011 | ||
![]() |
bf70a37606 | ||
![]() |
da1bddd27c | ||
![]() |
9925ee52d7 | ||
![]() |
66620bd108 | ||
![]() |
72823dd0cd | ||
![]() |
479e972e56 | ||
![]() |
3bf150e900 | ||
![]() |
a8dd7a10fa |
@@ -16,8 +16,8 @@ AllowShortFunctionsOnASingleLine: All
|
|||||||
AllowShortIfStatementsOnASingleLine: Never
|
AllowShortIfStatementsOnASingleLine: Never
|
||||||
AllowShortLoopsOnASingleLine: false
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
|
||||||
AlwaysBreakAfterDefinitionReturnType: None
|
AlwaysBreakAfterDefinitionReturnType: All
|
||||||
AlwaysBreakAfterReturnType: None
|
AlwaysBreakAfterReturnType: AllDefinitions
|
||||||
AlwaysBreakBeforeMultilineStrings: false
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
AlwaysBreakTemplateDeclarations: MultiLine
|
AlwaysBreakTemplateDeclarations: MultiLine
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ BraceWrapping:
|
|||||||
AfterUnion: true
|
AfterUnion: true
|
||||||
AfterExternBlock: false
|
AfterExternBlock: false
|
||||||
BeforeElse: false
|
BeforeElse: false
|
||||||
BeforeWhile: false
|
BeforeWhile: true
|
||||||
IndentBraces: false
|
IndentBraces: false
|
||||||
SplitEmptyFunction: true
|
SplitEmptyFunction: true
|
||||||
SplitEmptyRecord: true
|
SplitEmptyRecord: true
|
||||||
@@ -62,8 +62,7 @@ IndentGotoLabels: true
|
|||||||
IndentPPDirectives: None
|
IndentPPDirectives: None
|
||||||
IndentExternBlock: NoIndent
|
IndentExternBlock: NoIndent
|
||||||
|
|
||||||
PointerAlignment: Right
|
SpaceAfterCStyleCast: true
|
||||||
SpaceAfterCStyleCast: false
|
|
||||||
SpacesInCStyleCastParentheses: false
|
SpacesInCStyleCastParentheses: false
|
||||||
SpacesInConditionalStatement: false
|
SpacesInConditionalStatement: false
|
||||||
SpacesInContainerLiterals: true
|
SpacesInContainerLiterals: true
|
||||||
|
@@ -7,8 +7,6 @@ root = true
|
|||||||
[*.{c,cg,cpp,gradle,h,java,m,metal,pl,py,S,sh,txt}]
|
[*.{c,cg,cpp,gradle,h,java,m,metal,pl,py,S,sh,txt}]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
indent_style = space
|
indent_style = space
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.{html,js,json,m4,yml,yaml,vcxproj,vcxproj.filters}]
|
[*.{html,js,json,m4,yml,yaml,vcxproj,vcxproj.filters}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
82
.github/actions/setup-gdk-desktop/action.yml
vendored
82
.github/actions/setup-gdk-desktop/action.yml
vendored
@@ -1,82 +0,0 @@
|
|||||||
name: 'Setup GDK (Game Development Kit) for Windows Desktop'
|
|
||||||
description: 'Download GDK and install into MSBuild'
|
|
||||||
inputs:
|
|
||||||
# Keep edition and ref in sync!
|
|
||||||
edition:
|
|
||||||
description: 'GDK edition'
|
|
||||||
default: '240601' # YYMMUU (Year Month Update)
|
|
||||||
ref:
|
|
||||||
description: 'Git reference'
|
|
||||||
default: 'June_2024_Update_1'
|
|
||||||
folder:
|
|
||||||
description: 'Folder where to create Directory.Build.props'
|
|
||||||
required: true
|
|
||||||
default: '${{ github.workspace }}'
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- uses: actions/setup-python@main
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- name: 'Calculate variables'
|
|
||||||
id: calc
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$vs_folder=@(vswhere -latest -property installationPath)
|
|
||||||
echo "vs-folder=${vs_folder}" >> $Env:GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo "gdk-path=${{ runner.temp }}\GDK-${{ inputs.edition }}" >> $Env:GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo "cache-key=gdk-${{ inputs.ref }}-${{ inputs.edition }}" >> $Env:GITHUB_OUTPUT
|
|
||||||
- name: 'Restore cached GDK'
|
|
||||||
id: cache-restore
|
|
||||||
uses: actions/cache/restore@v4
|
|
||||||
with:
|
|
||||||
path: '${{ steps.calc.outputs.gdk-path }}'
|
|
||||||
key: ${{ steps.calc.outputs.cache-key }}
|
|
||||||
- name: 'Download GDK'
|
|
||||||
if: ${{ !steps.cache-restore.outputs.cache-hit }}
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
python build-scripts/setup-gdk-desktop.py `
|
|
||||||
--download `
|
|
||||||
--temp-folder "${{ runner.temp }}" `
|
|
||||||
--gdk-path="${{ steps.calc.outputs.gdk-path }}" `
|
|
||||||
--ref-edition "${{ inputs.ref }},${{ inputs.edition }}" `
|
|
||||||
--vs-folder="${{ steps.calc.outputs.vs-folder }}" `
|
|
||||||
--no-user-props
|
|
||||||
- name: 'Extract GDK'
|
|
||||||
if: ${{ !steps.cache-restore.outputs.cache-hit }}
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
python build-scripts/setup-gdk-desktop.py `
|
|
||||||
--extract `
|
|
||||||
--ref-edition "${{ inputs.ref }},${{ inputs.edition }}" `
|
|
||||||
--temp-folder "${{ runner.temp }}" `
|
|
||||||
--gdk-path="${{ steps.calc.outputs.gdk-path }}" `
|
|
||||||
--vs-folder="${{ steps.calc.outputs.vs-folder }}" `
|
|
||||||
--no-user-props
|
|
||||||
- name: 'Cache GDK'
|
|
||||||
if: ${{ !steps.cache-restore.outputs.cache-hit }}
|
|
||||||
uses: actions/cache/save@v4
|
|
||||||
with:
|
|
||||||
path: '${{ steps.calc.outputs.gdk-path }}'
|
|
||||||
key: ${{ steps.calc.outputs.cache-key }}
|
|
||||||
- name: 'Copy MSBuild files into GDK'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
python build-scripts/setup-gdk-desktop.py `
|
|
||||||
--ref-edition "${{ inputs.ref }},${{ inputs.edition }}" `
|
|
||||||
--gdk-path="${{ steps.calc.outputs.gdk-path }}" `
|
|
||||||
--vs-folder="${{ steps.calc.outputs.vs-folder }}" `
|
|
||||||
--copy-msbuild `
|
|
||||||
--no-user-props
|
|
||||||
- name: 'Write user props'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
python build-scripts/setup-gdk-desktop.py `
|
|
||||||
--ref-edition "${{ inputs.ref }},${{ inputs.edition }}" `
|
|
||||||
--temp-folder "${{ runner.temp }}" `
|
|
||||||
--vs-folder="${{ steps.calc.outputs.vs-folder }}" `
|
|
||||||
--gdk-path="${{ steps.calc.outputs.gdk-path }}" `
|
|
||||||
"--props-folder=${{ inputs.folder }}"
|
|
62
.github/actions/setup-ninja/action.yml
vendored
62
.github/actions/setup-ninja/action.yml
vendored
@@ -1,62 +0,0 @@
|
|||||||
name: 'Setup ninja'
|
|
||||||
description: 'Download ninja and add it to the PATH environment variable'
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: 'Ninja version'
|
|
||||||
default: '1.12.1'
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- name: 'Calculate variables'
|
|
||||||
id: calc
|
|
||||||
shell: sh
|
|
||||||
run: |
|
|
||||||
case "${{ runner.os }}-${{ runner.arch }}" in
|
|
||||||
"Linux-X86" | "Linux-X64")
|
|
||||||
archive="ninja-linux.zip"
|
|
||||||
;;
|
|
||||||
"Linux-ARM64")
|
|
||||||
archive="ninja-linux-aarch64.zip"
|
|
||||||
;;
|
|
||||||
"macOS-X86" | "macOS-X64" | "macOS-ARM64")
|
|
||||||
archive="ninja-mac.zip"
|
|
||||||
;;
|
|
||||||
"Windows-X86" | "Windows-X64")
|
|
||||||
archive="ninja-win.zip"
|
|
||||||
;;
|
|
||||||
"Windows-ARM64")
|
|
||||||
archive="ninja-winarm64.zip"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported ${{ runner.os }}-${{ runner.arch }}"
|
|
||||||
exit 1;
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo "archive=${archive}" >> ${GITHUB_OUTPUT}
|
|
||||||
echo "cache-key=${archive}-${{ inputs.version }}-${{ runner.os }}-${{ runner.arch }}" >> ${GITHUB_OUTPUT}
|
|
||||||
- name: 'Restore cached ${{ steps.calc.outputs.archive }}'
|
|
||||||
id: cache-restore
|
|
||||||
uses: actions/cache/restore@v4
|
|
||||||
with:
|
|
||||||
path: '${{ runner.temp }}/${{ steps.calc.outputs.archive }}'
|
|
||||||
key: ${{ steps.calc.outputs.cache-key }}
|
|
||||||
- name: 'Download ninja ${{ inputs.version }} for ${{ runner.os }} (${{ runner.arch }})'
|
|
||||||
if: ${{ !steps.cache-restore.outputs.cache-hit }}
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
Invoke-WebRequest "https://github.com/ninja-build/ninja/releases/download/v${{ inputs.version }}/${{ steps.calc.outputs.archive }}" -OutFile "${{ runner.temp }}/${{ steps.calc.outputs.archive }}"
|
|
||||||
- name: 'Cache ${{ steps.calc.outputs.archive }}'
|
|
||||||
if: ${{ !steps.cache-restore.outputs.cache-hit }}
|
|
||||||
uses: actions/cache/save@v4
|
|
||||||
with:
|
|
||||||
path: '${{ runner.temp }}/${{ steps.calc.outputs.archive }}'
|
|
||||||
key: ${{ steps.calc.outputs.cache-key }}
|
|
||||||
- name: 'Extract libusb'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
7z "-o${{ runner.temp }}/ninja-${{ inputs.version }}-${{ runner.arch }}" x "${{ runner.temp }}/${{ steps.calc.outputs.archive }}"
|
|
||||||
- name: 'Set output variables'
|
|
||||||
id: final
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
echo "${{ runner.temp }}/ninja-${{ inputs.version }}-${{ runner.arch }}" >> $env:GITHUB_PATH
|
|
93
.github/actions/setup-vita-gles/action.yml
vendored
93
.github/actions/setup-vita-gles/action.yml
vendored
@@ -1,93 +0,0 @@
|
|||||||
name: 'Setup GLES for PlayStation Vita'
|
|
||||||
description: 'Download GLES for VITA (PVR or PIB), and copy it into the vita sdk'
|
|
||||||
inputs:
|
|
||||||
pib-version:
|
|
||||||
description: 'PIB version'
|
|
||||||
default: '1.1.4'
|
|
||||||
pvr-version:
|
|
||||||
description: 'PVR_PSP2 version'
|
|
||||||
default: '3.9'
|
|
||||||
type:
|
|
||||||
description: '"pib" or "pvr"'
|
|
||||||
default: ''
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- name: 'Calculate variables'
|
|
||||||
id: calc
|
|
||||||
shell: sh
|
|
||||||
run: |
|
|
||||||
if test "x${VITASDK}" = "x"; then
|
|
||||||
echo "VITASDK must be defined"
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
case "x${{ inputs.type }}" in
|
|
||||||
"xpvr")
|
|
||||||
echo "cache-key=SDL-vita-gles-pvr-${{ inputs.pvr-version}}" >> ${GITHUB_OUTPUT}
|
|
||||||
;;
|
|
||||||
"xpib")
|
|
||||||
echo "cache-key=SDL-vita-gles-pib-${{ inputs.pib-version}}" >> ${GITHUB_OUTPUT}
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Invalid type. Must be 'pib' or 'pvr'."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
- uses: actions/cache/restore@v4
|
|
||||||
id: restore-cache
|
|
||||||
with:
|
|
||||||
path: /vita/dependencies
|
|
||||||
key: '${{ steps.calc.outputs.cache-key }}'
|
|
||||||
- name: 'Download PVR_PSP2 (GLES)'
|
|
||||||
if: ${{ !steps.restore-cache.outputs.cache-hit && inputs.type == 'pvr' }}
|
|
||||||
shell: sh
|
|
||||||
run: |
|
|
||||||
pvr_psp2_version=${{ inputs.pvr-version }}
|
|
||||||
|
|
||||||
mkdir -p /vita/dependencies/include
|
|
||||||
mkdir -p /vita/dependencies/lib
|
|
||||||
|
|
||||||
# Configure PVR_PSP2 headers
|
|
||||||
wget https://github.com/GrapheneCt/PVR_PSP2/archive/refs/tags/v$pvr_psp2_version.zip -P/tmp
|
|
||||||
unzip /tmp/v$pvr_psp2_version.zip -d/tmp
|
|
||||||
cp -r /tmp/PVR_PSP2-$pvr_psp2_version/include/* /vita/dependencies/include
|
|
||||||
rm /tmp/v$pvr_psp2_version.zip
|
|
||||||
|
|
||||||
# include guard of PVR_PSP2's khrplatform.h does not match the usual one
|
|
||||||
sed -i -e s/__drvkhrplatform_h_/__khrplatform_h_/ /vita/dependencies/include/KHR/khrplatform.h
|
|
||||||
|
|
||||||
# Configure PVR_PSP2 stub libraries
|
|
||||||
wget https://github.com/GrapheneCt/PVR_PSP2/releases/download/v$pvr_psp2_version/vitasdk_stubs.zip -P/tmp
|
|
||||||
unzip /tmp/vitasdk_stubs.zip -d/tmp/pvr_psp2_stubs
|
|
||||||
find /tmp/pvr_psp2_stubs -type f -name "*.a" -exec cp {} /vita/dependencies/lib \;
|
|
||||||
rm /tmp/vitasdk_stubs.zip
|
|
||||||
rm -rf /tmp/pvr_psp2_stubs
|
|
||||||
|
|
||||||
- name: 'Download gl4es4vita (OpenGL)'
|
|
||||||
if: ${{ !steps.restore-cache.outputs.cache-hit && inputs.type == 'pib' }}
|
|
||||||
shell: sh
|
|
||||||
run: |
|
|
||||||
gl4es4vita_version=${{ inputs.pib-version }}
|
|
||||||
|
|
||||||
mkdir -p /vita/dependencies/include
|
|
||||||
mkdir -p /vita/dependencies/lib
|
|
||||||
|
|
||||||
# Configure gl4es4vita headers
|
|
||||||
wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/include.zip -P/tmp
|
|
||||||
unzip -o /tmp/include.zip -d/vita/dependencies/include
|
|
||||||
rm /tmp/include.zip
|
|
||||||
|
|
||||||
# Configure gl4es4vita stub libraries
|
|
||||||
wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/vitasdk_stubs.zip -P/tmp
|
|
||||||
unzip /tmp/vitasdk_stubs.zip -d/vita/dependencies/lib
|
|
||||||
|
|
||||||
- uses: actions/cache/save@v4
|
|
||||||
if: ${{ !steps.restore-cache.outputs.cache-hit }}
|
|
||||||
with:
|
|
||||||
path: /vita/dependencies
|
|
||||||
key: '${{ steps.calc.outputs.cache-key }}'
|
|
||||||
|
|
||||||
- name: Copy PVR_PSP2 (GLES) or gl4es4vita (OpenGL) to vita toolchain dir
|
|
||||||
shell: sh
|
|
||||||
run: |
|
|
||||||
cp -rv /vita/dependencies/* ${VITASDK}/arm-vita-eabi
|
|
16
.github/cmake/CMakeLists.txt
vendored
16
.github/cmake/CMakeLists.txt
vendored
@@ -1,16 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 3.0...3.5)
|
|
||||||
project(ci_utils C CXX)
|
|
||||||
|
|
||||||
set(txt "CC=${CMAKE_C_COMPILER}
|
|
||||||
CXX=${CMAKE_CXX_COMPILER}
|
|
||||||
CFLAGS=${CMAKE_C_FLAGS}
|
|
||||||
CXXFLAGS=${CMAKE_CXX_FLAGS}
|
|
||||||
LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_C_STANDARD_LIBRARIES}
|
|
||||||
")
|
|
||||||
|
|
||||||
message("${txt}")
|
|
||||||
|
|
||||||
set(VAR_PATH "/tmp/env.txt" CACHE PATH "Where to write environment file")
|
|
||||||
message(STATUS "Writing CC/CXX/CFLAGS/CXXFLAGS/LDFLAGS environment to ${VAR_PATH}")
|
|
||||||
|
|
||||||
file(WRITE "${VAR_PATH}" "${txt}")
|
|
81
.github/workflows/android.yml
vendored
Normal file
81
.github/workflows/android.yml
vendored
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
name: Build (Android)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
android:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- { name: Android.mk }
|
||||||
|
- { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64" }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: nttld/setup-ndk@v1
|
||||||
|
id: setup_ndk
|
||||||
|
with:
|
||||||
|
ndk-version: r21e
|
||||||
|
- name: Build (Android.mk)
|
||||||
|
if: ${{ matrix.platform.name == 'Android.mk' }}
|
||||||
|
run: |
|
||||||
|
./build-scripts/androidbuildlibs.sh
|
||||||
|
- name: Setup (CMake)
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install ninja-build pkg-config
|
||||||
|
- name: Configure (CMake)
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
cmake -B build \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${{ steps.setup_ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DANDROID_PLATFORM=${{ matrix.platform.android_platform }} \
|
||||||
|
-DANDROID_ABI=${{ matrix.platform.android_abi }} \
|
||||||
|
-DSDL_STATIC_PIC=ON \
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-GNinja
|
||||||
|
- name: Build (CMake)
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
cmake --build build --config Release --parallel --verbose
|
||||||
|
- name: Install (CMake)
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
cmake --install build --config Release
|
||||||
|
echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV
|
||||||
|
( cd prefix; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${{ steps.setup_ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake \
|
||||||
|
-DANDROID_PLATFORM=${{ matrix.platform.android_platform }} \
|
||||||
|
-DANDROID_ABI=${{ matrix.platform.android_abi }} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }}
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
- name: Verify sdl2-config
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
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 PATH=${{ env.SDL2_DIR }}/bin:$PATH
|
||||||
|
cmake/test/test_sdlconfig.sh
|
||||||
|
- name: Verify sdl2.pc
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
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.SDL2_DIR }}/lib/pkgconfig
|
||||||
|
cmake/test/test_pkgconfig.sh
|
||||||
|
- name: Verify Android.mk
|
||||||
|
if: ${{ matrix.platform.name == 'CMake' }}
|
||||||
|
run: |
|
||||||
|
export NDK_MODULE_PATH=${{ env.SDL2_DIR }}/share/ndk-modules
|
||||||
|
ndk-build -C ${{ github.workspace }}/cmake/test APP_PLATFORM=android-${{ matrix.platform.android_platform }} APP_ABI=${{ matrix.platform.android_abi }} NDK_OUT=$PWD NDK_LIBS_OUT=$PWD V=1
|
48
.github/workflows/build.yml
vendored
48
.github/workflows/build.yml
vendored
@@ -1,48 +0,0 @@
|
|||||||
name: 'Build (All)'
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
controller:
|
|
||||||
name: 'Create test plan'
|
|
||||||
runs-on: 'ubuntu-latest'
|
|
||||||
outputs:
|
|
||||||
platforms-level1: ${{ steps.plan.outputs.platforms-level1 }}
|
|
||||||
platforms-others: ${{ steps.plan.outputs.platforms-others }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/setup-python@main
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- uses: actions/checkout@main
|
|
||||||
with:
|
|
||||||
sparse-checkout: '.github/workflows/create-test-plan.py'
|
|
||||||
- name: 'Create plan'
|
|
||||||
id: plan
|
|
||||||
run: |
|
|
||||||
# Adding [sdl-ci-filter GLOB] to the commit message will limit the jobs
|
|
||||||
# e.g. [sdl-ci-filter msvc-*]
|
|
||||||
EOF=$(openssl rand -hex 32)
|
|
||||||
cat >/tmp/commit_message.txt <<$EOF
|
|
||||||
${{ github.event.head_commit.message }}
|
|
||||||
$EOF
|
|
||||||
|
|
||||||
python .github/workflows/create-test-plan.py \
|
|
||||||
--github-variable-prefix platforms \
|
|
||||||
--github-ci \
|
|
||||||
--verbose \
|
|
||||||
${{ (github.repository_owner != 'libsdl-org' && '--no-artifact') || '' }} \
|
|
||||||
--commit-message-file /tmp/commit_message.txt
|
|
||||||
level1:
|
|
||||||
needs: [controller]
|
|
||||||
uses: './.github/workflows/generic.yml'
|
|
||||||
with:
|
|
||||||
platforms: ${{ needs.controller.outputs.platforms-level1 }}
|
|
||||||
level2:
|
|
||||||
needs: [controller, level1]
|
|
||||||
uses: './.github/workflows/generic.yml'
|
|
||||||
with:
|
|
||||||
platforms: ${{ needs.controller.outputs.platforms-others }}
|
|
806
.github/workflows/create-test-plan.py
vendored
806
.github/workflows/create-test-plan.py
vendored
@@ -1,806 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
import argparse
|
|
||||||
import dataclasses
|
|
||||||
import fnmatch
|
|
||||||
from enum import Enum
|
|
||||||
import json
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class AppleArch(Enum):
|
|
||||||
ARM64 = "arm64"
|
|
||||||
X86_64 = "x86_64"
|
|
||||||
|
|
||||||
|
|
||||||
class MsvcArch(Enum):
|
|
||||||
X86 = "x86"
|
|
||||||
X64 = "x64"
|
|
||||||
Arm32 = "arm"
|
|
||||||
Arm64 = "arm64"
|
|
||||||
|
|
||||||
|
|
||||||
class JobOs(Enum):
|
|
||||||
WindowsLatest = "windows-latest"
|
|
||||||
UbuntuLatest = "ubuntu-latest"
|
|
||||||
MacosLatest = "macos-latest"
|
|
||||||
Ubuntu22_04 = "ubuntu-22.04"
|
|
||||||
Ubuntu24_04 = "ubuntu-24.04"
|
|
||||||
Macos13 = "macos-13"
|
|
||||||
|
|
||||||
|
|
||||||
class SdlPlatform(Enum):
|
|
||||||
Android = "android"
|
|
||||||
Emscripten = "emscripten"
|
|
||||||
Haiku = "haiku"
|
|
||||||
Msys2 = "msys2"
|
|
||||||
Linux = "linux"
|
|
||||||
MacOS = "macos"
|
|
||||||
Ios = "ios"
|
|
||||||
Tvos = "tvos"
|
|
||||||
Msvc = "msvc"
|
|
||||||
N3ds = "n3ds"
|
|
||||||
Ps2 = "ps2"
|
|
||||||
Psp = "psp"
|
|
||||||
Vita = "vita"
|
|
||||||
Riscos = "riscos"
|
|
||||||
FreeBSD = "freebsd"
|
|
||||||
NetBSD = "netbsd"
|
|
||||||
OpenBSD = "openbsd"
|
|
||||||
Watcom = "watcom"
|
|
||||||
|
|
||||||
|
|
||||||
class Msys2Platform(Enum):
|
|
||||||
Mingw32 = "mingw32"
|
|
||||||
Mingw64 = "mingw64"
|
|
||||||
Clang64 = "clang64"
|
|
||||||
Ucrt64 = "ucrt64"
|
|
||||||
|
|
||||||
|
|
||||||
class IntelCompiler(Enum):
|
|
||||||
Icx = "icx"
|
|
||||||
|
|
||||||
|
|
||||||
class VitaGLES(Enum):
|
|
||||||
Pib = "pib"
|
|
||||||
Pvr = "pvr"
|
|
||||||
|
|
||||||
class WatcomPlatform(Enum):
|
|
||||||
Windows = "windows"
|
|
||||||
OS2 = "OS/2"
|
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass(slots=True)
|
|
||||||
class JobSpec:
|
|
||||||
name: str
|
|
||||||
os: JobOs
|
|
||||||
platform: SdlPlatform
|
|
||||||
artifact: Optional[str]
|
|
||||||
container: Optional[str] = None
|
|
||||||
autotools: bool = False
|
|
||||||
no_cmake: bool = False
|
|
||||||
xcode: bool = False
|
|
||||||
android_mk: bool = False
|
|
||||||
lean: bool = False
|
|
||||||
android_arch: Optional[str] = None
|
|
||||||
android_abi: Optional[str] = None
|
|
||||||
android_platform: Optional[int] = None
|
|
||||||
msys2_platform: Optional[Msys2Platform] = None
|
|
||||||
intel: Optional[IntelCompiler] = None
|
|
||||||
apple_archs: Optional[set[AppleArch]] = None
|
|
||||||
msvc_project: Optional[str] = None
|
|
||||||
msvc_arch: Optional[MsvcArch] = None
|
|
||||||
msvc_static_crt: bool = False
|
|
||||||
clang_cl: bool = False
|
|
||||||
gdk: bool = False
|
|
||||||
uwp: bool = False
|
|
||||||
vita_gles: Optional[VitaGLES] = None
|
|
||||||
watcom_platform: Optional[WatcomPlatform] = None
|
|
||||||
|
|
||||||
|
|
||||||
JOB_SPECS = {
|
|
||||||
"msys2-mingw32": JobSpec(name="Windows (msys2, mingw32)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw32", msys2_platform=Msys2Platform.Mingw32, ),
|
|
||||||
"msys2-mingw64": JobSpec(name="Windows (msys2, mingw64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64", msys2_platform=Msys2Platform.Mingw64, ),
|
|
||||||
"msys2-clang64": JobSpec(name="Windows (msys2, clang64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64-clang", msys2_platform=Msys2Platform.Clang64, ),
|
|
||||||
"msys2-ucrt64": JobSpec(name="Windows (msys2, ucrt64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64-ucrt", msys2_platform=Msys2Platform.Ucrt64, ),
|
|
||||||
"msvc-x64": JobSpec(name="Windows (MSVC, x64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-x64", msvc_arch=MsvcArch.X64, msvc_project="VisualC/SDL.sln", ),
|
|
||||||
"msvc-x86": JobSpec(name="Windows (MSVC, x86)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-x86", msvc_arch=MsvcArch.X86, msvc_project="VisualC/SDL.sln", ),
|
|
||||||
"msvc-static-x86": JobSpec(name="Windows (MSVC, static VCRT, x86)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-x86", msvc_arch=MsvcArch.X86, msvc_static_crt=True, ),
|
|
||||||
"msvc-static-x64": JobSpec(name="Windows (MSVC, static VCRT, x64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-x64", msvc_arch=MsvcArch.X64, msvc_static_crt=True, ),
|
|
||||||
"msvc-clang-x64": JobSpec(name="Windows (MSVC, clang-cl x64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-clang-cl-x64", msvc_arch=MsvcArch.X64, clang_cl=True, ),
|
|
||||||
"msvc-clang-x86": JobSpec(name="Windows (MSVC, clang-cl x86)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-clang-cl-x86", msvc_arch=MsvcArch.X86, clang_cl=True, ),
|
|
||||||
"msvc-arm32": JobSpec(name="Windows (MSVC, ARM)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-arm32", msvc_arch=MsvcArch.Arm32, ),
|
|
||||||
"msvc-arm64": JobSpec(name="Windows (MSVC, ARM64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-arm64", msvc_arch=MsvcArch.Arm64, ),
|
|
||||||
"msvc-uwp-x64": JobSpec(name="UWP (MSVC, x64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-UWP", msvc_arch=MsvcArch.X64, msvc_project="VisualC-WinRT/SDL-UWP.sln", uwp=True, ),
|
|
||||||
"msvc-gdk-x64": JobSpec(name="GDK (MSVC, x64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msvc, artifact="SDL-VC-GDK", msvc_arch=MsvcArch.X64, msvc_project="VisualC-GDK/SDL.sln", gdk=True, no_cmake=True, ),
|
|
||||||
"ubuntu-22.04": JobSpec(name="Ubuntu 22.04", os=JobOs.Ubuntu22_04, platform=SdlPlatform.Linux, artifact="SDL-ubuntu22.04", autotools=True),
|
|
||||||
"steamrt-sniper": JobSpec(name="Steam Linux Runtime (Sniper)", os=JobOs.UbuntuLatest, platform=SdlPlatform.Linux, artifact="SDL-slrsniper", container="registry.gitlab.steamos.cloud/steamrt/sniper/sdk:beta", ),
|
|
||||||
"ubuntu-intel-icx": JobSpec(name="Ubuntu 22.04 (Intel oneAPI)", os=JobOs.Ubuntu22_04, platform=SdlPlatform.Linux, artifact="SDL-ubuntu22.04-oneapi", intel=IntelCompiler.Icx, ),
|
|
||||||
"macos-gnu-arm64-x64": JobSpec(name="MacOS (GNU prefix)", os=JobOs.MacosLatest, platform=SdlPlatform.MacOS, artifact="SDL-macos-arm64-x64-gnu",autotools=True, apple_archs={AppleArch.X86_64, AppleArch.ARM64, }, ),
|
|
||||||
"ios": JobSpec(name="iOS (CMake & xcode)", os=JobOs.MacosLatest, platform=SdlPlatform.Ios, artifact="SDL-ios-arm64", xcode=True, ),
|
|
||||||
"tvos": JobSpec(name="tvOS (CMake & xcode)", os=JobOs.MacosLatest, platform=SdlPlatform.Tvos, artifact="SDL-tvos-arm64", xcode=True, ),
|
|
||||||
"android-cmake": JobSpec(name="Android (CMake)", os=JobOs.UbuntuLatest, platform=SdlPlatform.Android, artifact="SDL-android-arm64", android_abi="arm64-v8a", android_arch="aarch64", android_platform=23, ),
|
|
||||||
"android-mk": JobSpec(name="Android (Android.mk)", os=JobOs.UbuntuLatest, platform=SdlPlatform.Android, artifact=None, no_cmake=True, android_mk=True, ),
|
|
||||||
"emscripten": JobSpec(name="Emscripten", os=JobOs.UbuntuLatest, platform=SdlPlatform.Emscripten, artifact="SDL-emscripten", ),
|
|
||||||
"haiku": JobSpec(name="Haiku", os=JobOs.UbuntuLatest, platform=SdlPlatform.Haiku, artifact="SDL-haiku-x64", container="ghcr.io/haiku/cross-compiler:x86_64-r1beta5", ),
|
|
||||||
"n3ds": JobSpec(name="Nintendo 3DS", os=JobOs.UbuntuLatest, platform=SdlPlatform.N3ds, artifact="SDL-n3ds", container="devkitpro/devkitarm:latest", ),
|
|
||||||
"ps2": JobSpec(name="Sony PlayStation 2", os=JobOs.UbuntuLatest, platform=SdlPlatform.Ps2, artifact="SDL-ps2", container="ps2dev/ps2dev:latest", ),
|
|
||||||
"psp": JobSpec(name="Sony PlayStation Portable", os=JobOs.UbuntuLatest, platform=SdlPlatform.Psp, artifact="SDL-psp", container="pspdev/pspdev:latest", ),
|
|
||||||
"vita-pib": JobSpec(name="Sony PlayStation Vita (GLES w/ pib)", os=JobOs.UbuntuLatest, platform=SdlPlatform.Vita, artifact="SDL-vita-pib", container="vitasdk/vitasdk:latest", vita_gles=VitaGLES.Pib, ),
|
|
||||||
"vita-pvr": JobSpec(name="Sony PlayStation Vita (GLES w/ PVR_PSP2)", os=JobOs.UbuntuLatest, platform=SdlPlatform.Vita, artifact="SDL-vita-pvr", container="vitasdk/vitasdk:latest", vita_gles=VitaGLES.Pvr, ),
|
|
||||||
"riscos": JobSpec(name="RISC OS", os=JobOs.UbuntuLatest, platform=SdlPlatform.Riscos, artifact="SDL-riscos", container="riscosdotinfo/riscos-gccsdk-4.7:latest", ),
|
|
||||||
"netbsd": JobSpec(name="NetBSD", os=JobOs.UbuntuLatest, platform=SdlPlatform.NetBSD, artifact="SDL-netbsd-x64", autotools=True, ),
|
|
||||||
"openbsd": JobSpec(name="OpenBSD", os=JobOs.UbuntuLatest, platform=SdlPlatform.OpenBSD, artifact="SDL-openbsd-x64", autotools=True, ),
|
|
||||||
"freebsd": JobSpec(name="FreeBSD", os=JobOs.UbuntuLatest, platform=SdlPlatform.FreeBSD, artifact="SDL-freebsd-x64", autotools=True, ),
|
|
||||||
"watcom-win32": JobSpec(name="Watcom (Windows)", os=JobOs.WindowsLatest, platform=SdlPlatform.Watcom, artifact="SDL-watcom-win32", no_cmake=True, watcom_platform=WatcomPlatform.Windows ),
|
|
||||||
"watcom-os2": JobSpec(name="Watcom (OS/2)", os=JobOs.WindowsLatest, platform=SdlPlatform.Watcom, artifact="SDL-watcom-win32", no_cmake=True, watcom_platform=WatcomPlatform.OS2 ),
|
|
||||||
# "watcom-win32"
|
|
||||||
# "watcom-os2"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class StaticLibType(Enum):
|
|
||||||
MSVC = "SDL2-static.lib"
|
|
||||||
A = "libSDL2.a"
|
|
||||||
|
|
||||||
|
|
||||||
class SharedLibType(Enum):
|
|
||||||
WIN32 = "SDL2.dll"
|
|
||||||
SO_0 = "libSDL2-2.0.so.0"
|
|
||||||
SO = "libSDL2.so"
|
|
||||||
DYLIB = "libSDL2-2.0.0.dylib"
|
|
||||||
FRAMEWORK = "SDL2.framework/Versions/A/SDL2"
|
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass(slots=True)
|
|
||||||
class JobDetails:
|
|
||||||
name: str
|
|
||||||
key: str
|
|
||||||
os: str
|
|
||||||
platform: str
|
|
||||||
artifact: str
|
|
||||||
no_autotools: bool
|
|
||||||
no_cmake: bool
|
|
||||||
build_autotools_tests: bool = True
|
|
||||||
build_tests: bool = True
|
|
||||||
container: str = ""
|
|
||||||
cmake_build_type: str = "RelWithDebInfo"
|
|
||||||
shell: str = "sh"
|
|
||||||
sudo: str = "sudo"
|
|
||||||
cmake_config_emulator: str = ""
|
|
||||||
apk_packages: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
apt_packages: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
brew_packages: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
cmake_toolchain_file: str = ""
|
|
||||||
cmake_arguments: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
cmake_generator: str = "Ninja"
|
|
||||||
cmake_build_arguments: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
cppflags: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
cc: str = ""
|
|
||||||
cxx: str = ""
|
|
||||||
cflags: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
cxxflags: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
ldflags: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
pollute_directories: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
use_cmake: bool = True
|
|
||||||
shared: bool = True
|
|
||||||
static: bool = True
|
|
||||||
shared_lib: Optional[SharedLibType] = None
|
|
||||||
static_lib: Optional[StaticLibType] = None
|
|
||||||
run_tests: bool = True
|
|
||||||
test_pkg_config: bool = True
|
|
||||||
cc_from_cmake: bool = False
|
|
||||||
source_cmd: str = ""
|
|
||||||
pretest_cmd: str = ""
|
|
||||||
android_apks: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
android_ndk: bool = False
|
|
||||||
android_mk: bool = False
|
|
||||||
minidump: bool = False
|
|
||||||
intel: bool = False
|
|
||||||
msys2_msystem: str = ""
|
|
||||||
msys2_env: str = ""
|
|
||||||
msys2_no_perl: bool = False
|
|
||||||
werror: bool = True
|
|
||||||
msvc_vcvars_arch: str = ""
|
|
||||||
msvc_vcvars_sdk: str = ""
|
|
||||||
msvc_project: str = ""
|
|
||||||
msvc_project_flags: list[str] = dataclasses.field(default_factory=list)
|
|
||||||
setup_ninja: bool = False
|
|
||||||
setup_libusb_arch: str = ""
|
|
||||||
xcode_sdk: str = ""
|
|
||||||
xcode_target: str = ""
|
|
||||||
setup_gdk_folder: str = ""
|
|
||||||
cpactions: bool = False
|
|
||||||
cpactions_os: str = ""
|
|
||||||
cpactions_version: str = ""
|
|
||||||
cpactions_arch: str = ""
|
|
||||||
cpactions_setup_cmd: str = ""
|
|
||||||
cpactions_install_cmd: str = ""
|
|
||||||
setup_vita_gles_type: str = ""
|
|
||||||
check_sources: bool = False
|
|
||||||
watcom_makefile: str = ""
|
|
||||||
binutils_strings: str = "strings"
|
|
||||||
|
|
||||||
def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
|
|
||||||
data = {
|
|
||||||
"name": self.name,
|
|
||||||
"key": self.key,
|
|
||||||
"os": self.os,
|
|
||||||
"container": self.container if self.container else "",
|
|
||||||
"platform": self.platform,
|
|
||||||
"artifact": self.artifact,
|
|
||||||
"enable-artifacts": enable_artifacts,
|
|
||||||
"shell": self.shell,
|
|
||||||
"msys2-msystem": self.msys2_msystem,
|
|
||||||
"msys2-env": self.msys2_env,
|
|
||||||
"msys2-no-perl": self.msys2_no_perl,
|
|
||||||
"android-ndk": self.android_ndk,
|
|
||||||
"intel": self.intel,
|
|
||||||
"apk-packages": my_shlex_join(self.apk_packages),
|
|
||||||
"apt-packages": my_shlex_join(self.apt_packages),
|
|
||||||
"test-pkg-config": self.test_pkg_config,
|
|
||||||
"brew-packages": my_shlex_join(self.brew_packages),
|
|
||||||
"pollute-directories": my_shlex_join(self.pollute_directories),
|
|
||||||
"no-autotools": self.no_autotools,
|
|
||||||
"no-cmake": self.no_cmake,
|
|
||||||
"build-autotools-tests": self.build_autotools_tests,
|
|
||||||
"build-tests": self.build_tests,
|
|
||||||
"source-cmd": self.source_cmd,
|
|
||||||
"pretest-cmd": self.pretest_cmd,
|
|
||||||
"cmake-config-emulator": self.cmake_config_emulator,
|
|
||||||
"cc": self.cc,
|
|
||||||
"cxx": self.cxx,
|
|
||||||
"cflags": my_shlex_join(self.cppflags + self.cflags),
|
|
||||||
"cxxflags": my_shlex_join(self.cppflags + self.cxxflags),
|
|
||||||
"ldflags": my_shlex_join(self.ldflags),
|
|
||||||
"cmake-generator": self.cmake_generator,
|
|
||||||
"cmake-toolchain-file": self.cmake_toolchain_file,
|
|
||||||
"cmake-arguments": my_shlex_join(self.cmake_arguments),
|
|
||||||
"cmake-build-arguments": my_shlex_join(self.cmake_build_arguments),
|
|
||||||
"shared": self.shared,
|
|
||||||
"static": self.static,
|
|
||||||
"shared-lib": self.shared_lib.value if self.shared_lib else None,
|
|
||||||
"static-lib": self.static_lib.value if self.static_lib else None,
|
|
||||||
"cmake-build-type": self.cmake_build_type,
|
|
||||||
"run-tests": self.run_tests,
|
|
||||||
"android-apks": my_shlex_join(self.android_apks),
|
|
||||||
"android-mk": self.android_mk,
|
|
||||||
"werror": self.werror,
|
|
||||||
"sudo": self.sudo,
|
|
||||||
"msvc-vcvars-arch": self.msvc_vcvars_arch,
|
|
||||||
"msvc-vcvars-sdk": self.msvc_vcvars_sdk,
|
|
||||||
"msvc-project": self.msvc_project,
|
|
||||||
"msvc-project-flags": my_shlex_join(self.msvc_project_flags),
|
|
||||||
"setup-ninja": self.setup_ninja,
|
|
||||||
"setup-libusb-arch": self.setup_libusb_arch,
|
|
||||||
"cc-from-cmake": self.cc_from_cmake,
|
|
||||||
"xcode-sdk": self.xcode_sdk,
|
|
||||||
"xcode-target": self.xcode_target,
|
|
||||||
"cpactions": self.cpactions,
|
|
||||||
"cpactions-os": self.cpactions_os,
|
|
||||||
"cpactions-version": self.cpactions_version,
|
|
||||||
"cpactions-arch": self.cpactions_arch,
|
|
||||||
"cpactions-setup-cmd": self.cpactions_setup_cmd,
|
|
||||||
"cpactions-install-cmd": self.cpactions_install_cmd,
|
|
||||||
"setup-vita-gles-type": self.setup_vita_gles_type,
|
|
||||||
"setup-gdk-folder": self.setup_gdk_folder,
|
|
||||||
"check-sources": self.check_sources,
|
|
||||||
"watcom-makefile": self.watcom_makefile,
|
|
||||||
"binutils-strings": self.binutils_strings,
|
|
||||||
}
|
|
||||||
return {k: v for k, v in data.items() if v != ""}
|
|
||||||
|
|
||||||
|
|
||||||
def my_shlex_join(s):
|
|
||||||
def escape(s):
|
|
||||||
if s[:1] == "'" and s[-1:] == "'":
|
|
||||||
return s
|
|
||||||
if set(s).intersection(set("; \t")):
|
|
||||||
s = s.replace("\\", "\\\\").replace("\"", "\\\"")
|
|
||||||
return f'"{s}"'
|
|
||||||
return s
|
|
||||||
|
|
||||||
return " ".join(escape(e) for e in s)
|
|
||||||
|
|
||||||
|
|
||||||
def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDetails:
|
|
||||||
job = JobDetails(
|
|
||||||
name=spec.name,
|
|
||||||
key=key,
|
|
||||||
os=spec.os.value,
|
|
||||||
artifact=spec.artifact or "",
|
|
||||||
container=spec.container or "",
|
|
||||||
platform=spec.platform.value,
|
|
||||||
sudo="sudo",
|
|
||||||
no_autotools=not spec.autotools,
|
|
||||||
no_cmake=spec.no_cmake,
|
|
||||||
)
|
|
||||||
if job.os.startswith("ubuntu"):
|
|
||||||
job.apt_packages.extend([
|
|
||||||
"ninja-build",
|
|
||||||
"pkg-config",
|
|
||||||
])
|
|
||||||
if spec.msvc_static_crt:
|
|
||||||
job.cmake_arguments.append("-DSDL_FORCE_STATIC_VCRT=ON")
|
|
||||||
pretest_cmd = []
|
|
||||||
if trackmem_symbol_names:
|
|
||||||
pretest_cmd.append("export SDL_TRACKMEM_SYMBOL_NAMES=1")
|
|
||||||
else:
|
|
||||||
pretest_cmd.append("export SDL_TRACKMEM_SYMBOL_NAMES=0")
|
|
||||||
win32 = spec.platform in (SdlPlatform.Msys2, SdlPlatform.Msvc)
|
|
||||||
fpic = None
|
|
||||||
build_parallel = True
|
|
||||||
if spec.lean:
|
|
||||||
job.cppflags.append("-DSDL_LEAN_AND_MEAN=1")
|
|
||||||
if win32:
|
|
||||||
job.cmake_arguments.append("-DSDLTEST_PROCDUMP=ON")
|
|
||||||
job.minidump = True
|
|
||||||
if spec.intel is not None:
|
|
||||||
match spec.intel:
|
|
||||||
case IntelCompiler.Icx:
|
|
||||||
job.cc = "icx"
|
|
||||||
job.cxx = "icpx"
|
|
||||||
case _:
|
|
||||||
raise ValueError(f"Invalid intel={spec.intel}")
|
|
||||||
job.source_cmd = f"source /opt/intel/oneapi/setvars.sh;"
|
|
||||||
job.intel = True
|
|
||||||
job.shell = "bash"
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
f"-DCMAKE_C_COMPILER={job.cc}",
|
|
||||||
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
|
||||||
"-DCMAKE_SYSTEM_NAME=Linux",
|
|
||||||
))
|
|
||||||
match spec.platform:
|
|
||||||
case SdlPlatform.Msvc:
|
|
||||||
job.setup_ninja = not spec.gdk
|
|
||||||
job.msvc_project = spec.msvc_project if spec.msvc_project else ""
|
|
||||||
job.msvc_project_flags.append("-p:TreatWarningsAsError=true")
|
|
||||||
job.test_pkg_config = False
|
|
||||||
job.shared_lib = SharedLibType.WIN32
|
|
||||||
job.static_lib = StaticLibType.MSVC
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=ProgramDatabase",
|
|
||||||
"-DCMAKE_EXE_LINKER_FLAGS=-DEBUG",
|
|
||||||
"-DCMAKE_SHARED_LINKER_FLAGS=-DEBUG",
|
|
||||||
))
|
|
||||||
if spec.uwp:
|
|
||||||
job.cmake_arguments.append("'-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>DLL'")
|
|
||||||
else:
|
|
||||||
job.cmake_arguments.append("'-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>'")
|
|
||||||
|
|
||||||
if spec.clang_cl:
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DCMAKE_C_COMPILER=clang-cl",
|
|
||||||
"-DCMAKE_CXX_COMPILER=clang-cl",
|
|
||||||
))
|
|
||||||
match spec.msvc_arch:
|
|
||||||
case MsvcArch.X86:
|
|
||||||
job.cflags.append("/clang:-m32")
|
|
||||||
job.ldflags.append("/MACHINE:X86")
|
|
||||||
case MsvcArch.X64:
|
|
||||||
job.cflags.append("/clang:-m64")
|
|
||||||
job.ldflags.append("/MACHINE:X64")
|
|
||||||
case _:
|
|
||||||
raise ValueError(f"Unsupported clang-cl architecture (arch={spec.msvc_arch})")
|
|
||||||
if spec.msvc_project:
|
|
||||||
match spec.msvc_arch:
|
|
||||||
case MsvcArch.X86:
|
|
||||||
msvc_platform = "Win32"
|
|
||||||
case MsvcArch.X64:
|
|
||||||
msvc_platform = "x64"
|
|
||||||
case _:
|
|
||||||
raise ValueError(f"Unsupported vcxproj architecture (arch={spec.msvc_arch})")
|
|
||||||
if spec.gdk:
|
|
||||||
msvc_platform = f"Gaming.Desktop.{msvc_platform}"
|
|
||||||
job.msvc_project_flags.append(f"-p:Platform={msvc_platform}")
|
|
||||||
match spec.msvc_arch:
|
|
||||||
case MsvcArch.X86:
|
|
||||||
job.msvc_vcvars_arch = "x64_x86"
|
|
||||||
case MsvcArch.X64:
|
|
||||||
job.msvc_vcvars_arch = "x64"
|
|
||||||
case MsvcArch.Arm32:
|
|
||||||
job.msvc_vcvars_arch = "x64_arm"
|
|
||||||
job.msvc_vcvars_sdk = "10.0.22621.0" # 10.0.26100.0 dropped ARM32 um and ucrt libraries
|
|
||||||
job.run_tests = False
|
|
||||||
case MsvcArch.Arm64:
|
|
||||||
job.msvc_vcvars_arch = "x64_arm64"
|
|
||||||
job.run_tests = False
|
|
||||||
if spec.uwp:
|
|
||||||
job.build_tests = False
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DCMAKE_SYSTEM_NAME=WindowsStore",
|
|
||||||
"-DCMAKE_SYSTEM_VERSION=10.0",
|
|
||||||
))
|
|
||||||
job.msvc_project_flags.append("-p:WindowsTargetPlatformVersion=10.0.17763.0")
|
|
||||||
elif spec.gdk:
|
|
||||||
job.setup_gdk_folder = "VisualC-GDK"
|
|
||||||
else:
|
|
||||||
match spec.msvc_arch:
|
|
||||||
case MsvcArch.X86:
|
|
||||||
job.setup_libusb_arch = "x86"
|
|
||||||
case MsvcArch.X64:
|
|
||||||
job.setup_libusb_arch = "x64"
|
|
||||||
case SdlPlatform.Linux:
|
|
||||||
if spec.name.startswith("Ubuntu"):
|
|
||||||
assert spec.os.value.startswith("ubuntu-")
|
|
||||||
job.apt_packages.extend((
|
|
||||||
"gnome-desktop-testing",
|
|
||||||
"libasound2-dev",
|
|
||||||
"libpulse-dev",
|
|
||||||
"libaudio-dev",
|
|
||||||
"libjack-dev",
|
|
||||||
"libsndio-dev",
|
|
||||||
"libusb-1.0-0-dev",
|
|
||||||
"libx11-dev",
|
|
||||||
"libxext-dev",
|
|
||||||
"libxrandr-dev",
|
|
||||||
"libxcursor-dev",
|
|
||||||
"libxfixes-dev",
|
|
||||||
"libxi-dev",
|
|
||||||
"libxss-dev",
|
|
||||||
"libwayland-dev",
|
|
||||||
"libxkbcommon-dev",
|
|
||||||
"libdrm-dev",
|
|
||||||
"libgbm-dev",
|
|
||||||
"libgl1-mesa-dev",
|
|
||||||
"libgles2-mesa-dev",
|
|
||||||
"libegl1-mesa-dev",
|
|
||||||
"libdbus-1-dev",
|
|
||||||
"libibus-1.0-dev",
|
|
||||||
"libudev-dev",
|
|
||||||
"fcitx-libs-dev",
|
|
||||||
))
|
|
||||||
ubuntu_year, ubuntu_month = [int(v) for v in spec.os.value.removeprefix("ubuntu-").split(".", 1)]
|
|
||||||
if ubuntu_year >= 22:
|
|
||||||
job.apt_packages.extend(("libpipewire-0.3-dev", "libdecor-0-dev"))
|
|
||||||
job.apt_packages.extend((
|
|
||||||
"libunwind-dev", # For SDL_test memory tracking
|
|
||||||
))
|
|
||||||
if trackmem_symbol_names:
|
|
||||||
# older libunwind is slow
|
|
||||||
job.cmake_arguments.append("-DSDLTEST_TIMEOUT_MULTIPLIER=2")
|
|
||||||
job.shared_lib = SharedLibType.SO_0
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
fpic = True
|
|
||||||
case SdlPlatform.Ios | SdlPlatform.Tvos:
|
|
||||||
job.brew_packages.extend([
|
|
||||||
"ninja",
|
|
||||||
])
|
|
||||||
job.run_tests = False
|
|
||||||
job.test_pkg_config = False
|
|
||||||
job.shared_lib = SharedLibType.DYLIB
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
match spec.platform:
|
|
||||||
case SdlPlatform.Ios:
|
|
||||||
if spec.xcode:
|
|
||||||
job.xcode_sdk = "iphoneos"
|
|
||||||
job.xcode_target = "Static Library-iOS"
|
|
||||||
job.cmake_arguments.extend([
|
|
||||||
"-DCMAKE_SYSTEM_NAME=iOS",
|
|
||||||
"-DCMAKE_OSX_ARCHITECTURES=\"arm64\"",
|
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=9.0",
|
|
||||||
])
|
|
||||||
case SdlPlatform.Tvos:
|
|
||||||
if spec.xcode:
|
|
||||||
job.xcode_sdk = "appletvos"
|
|
||||||
job.xcode_target = "Static Library-tvOS"
|
|
||||||
job.cmake_arguments.extend([
|
|
||||||
"-DCMAKE_SYSTEM_NAME=tvOS",
|
|
||||||
"-DCMAKE_OSX_ARCHITECTURES=\"arm64\"",
|
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=9.0",
|
|
||||||
])
|
|
||||||
case SdlPlatform.MacOS:
|
|
||||||
osx_arch = ";".join(e.value for e in spec.apple_archs) if spec.apple_archs else "arm64"
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
f"'-DCMAKE_OSX_ARCHITECTURES={osx_arch}'",
|
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=10.11",
|
|
||||||
))
|
|
||||||
job.build_autotools_tests = False
|
|
||||||
job.shared_lib = SharedLibType.DYLIB
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
job.apt_packages = []
|
|
||||||
job.brew_packages.extend((
|
|
||||||
"autoconf",
|
|
||||||
"ninja",
|
|
||||||
))
|
|
||||||
if spec.xcode:
|
|
||||||
job.xcode_sdk = "macosx"
|
|
||||||
case SdlPlatform.Android:
|
|
||||||
job.android_mk = spec.android_mk
|
|
||||||
job.run_tests = False
|
|
||||||
job.shared_lib = SharedLibType.SO
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
if spec.android_mk or not spec.no_cmake:
|
|
||||||
job.android_ndk = True
|
|
||||||
if spec.android_mk:
|
|
||||||
job.apt_packages = []
|
|
||||||
if not spec.no_cmake:
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
f"-DANDROID_PLATFORM={spec.android_platform}",
|
|
||||||
f"-DANDROID_ABI={spec.android_abi}",
|
|
||||||
))
|
|
||||||
job.cmake_toolchain_file = "${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake"
|
|
||||||
job.cc = f"${{ANDROID_NDK_HOME}}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target={spec.android_arch}-none-linux-androideabi{spec.android_platform}"
|
|
||||||
|
|
||||||
job.android_apks = [
|
|
||||||
"testaudiorecording-apk",
|
|
||||||
"testautomation-apk",
|
|
||||||
"testcontroller-apk",
|
|
||||||
"testmultiaudio-apk",
|
|
||||||
"testsprite-apk",
|
|
||||||
]
|
|
||||||
case SdlPlatform.Emscripten:
|
|
||||||
job.run_tests = False
|
|
||||||
job.shared = False
|
|
||||||
job.cmake_config_emulator = "emcmake"
|
|
||||||
job.cmake_build_type = "Debug"
|
|
||||||
job.test_pkg_config = False
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DSDLTEST_BROWSER=chrome",
|
|
||||||
"-DSDLTEST_TIMEOUT_MULTIPLIER=4",
|
|
||||||
"-DSDLTEST_CHROME_BINARY=${CHROME_BINARY}",
|
|
||||||
))
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Ps2:
|
|
||||||
build_parallel = False
|
|
||||||
job.shared = False
|
|
||||||
job.sudo = ""
|
|
||||||
job.apt_packages = []
|
|
||||||
job.apk_packages = ["cmake", "gmp", "mpc1", "mpfr4", "ninja", "pkgconf", "git", ]
|
|
||||||
job.cmake_toolchain_file = "${PS2DEV}/ps2sdk/ps2dev.cmake"
|
|
||||||
job.run_tests = False
|
|
||||||
job.shared = False
|
|
||||||
job.cc = "mips64r5900el-ps2-elf-gcc"
|
|
||||||
job.ldflags = ["-L${PS2DEV}/ps2sdk/ee/lib", "-L${PS2DEV}/gsKit/lib", "-L${PS2DEV}/ps2sdk/ports/lib", ]
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Psp:
|
|
||||||
build_parallel = False
|
|
||||||
job.sudo = ""
|
|
||||||
job.apt_packages = []
|
|
||||||
job.apk_packages = ["cmake", "gmp", "mpc1", "mpfr4", "ninja", "pkgconf", ]
|
|
||||||
job.cmake_toolchain_file = "${PSPDEV}/psp/share/pspdev.cmake"
|
|
||||||
job.run_tests = False
|
|
||||||
job.shared = False
|
|
||||||
job.cc = "psp-gcc"
|
|
||||||
job.ldflags = ["-L${PSPDEV}/lib", "-L${PSPDEV}/psp/lib", "-L${PSPDEV}/psp/sdk/lib", ]
|
|
||||||
job.pollute_directories = ["${PSPDEV}/include", "${PSPDEV}/psp/include", "${PSPDEV}/psp/sdk/include", ]
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Vita:
|
|
||||||
job.sudo = ""
|
|
||||||
job.apt_packages = []
|
|
||||||
job.apk_packages = ["cmake", "ninja", "pkgconf", "bash", "tar"]
|
|
||||||
job.cmake_toolchain_file = "${VITASDK}/share/vita.toolchain.cmake"
|
|
||||||
assert spec.vita_gles is not None
|
|
||||||
job.setup_vita_gles_type = {
|
|
||||||
VitaGLES.Pib: "pib",
|
|
||||||
VitaGLES.Pvr: "pvr",
|
|
||||||
}[spec.vita_gles]
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
f"-DVIDEO_VITA_PIB={ 'true' if spec.vita_gles == VitaGLES.Pib else 'false' }",
|
|
||||||
f"-DVIDEO_VITA_PVR={ 'true' if spec.vita_gles == VitaGLES.Pvr else 'false' }",
|
|
||||||
"-DSDL_ARMNEON=ON",
|
|
||||||
"-DSDL_ARMSIMD=ON",
|
|
||||||
))
|
|
||||||
# Fix vita.toolchain.cmake (https://github.com/vitasdk/vita-toolchain/pull/253)
|
|
||||||
job.source_cmd = r"""sed -i -E "s#set\\( PKG_CONFIG_EXECUTABLE \"\\$\\{VITASDK}/bin/arm-vita-eabi-pkg-config\" \\)#set\\( PKG_CONFIG_EXECUTABLE \"${VITASDK}/bin/arm-vita-eabi-pkg-config\" CACHE PATH \"Path of pkg-config executable\" \\)#" ${VITASDK}/share/vita.toolchain.cmake"""
|
|
||||||
job.run_tests = False
|
|
||||||
job.shared = False
|
|
||||||
job.cc = "arm-vita-eabi-gcc"
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Haiku:
|
|
||||||
fpic = False
|
|
||||||
job.build_autotools_tests = False
|
|
||||||
job.run_tests = False
|
|
||||||
job.cc = "x86_64-unknown-haiku-gcc"
|
|
||||||
job.cxx = "x86_64-unknown-haiku-g++"
|
|
||||||
job.sudo = ""
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
f"-DCMAKE_C_COMPILER={job.cc}",
|
|
||||||
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
|
||||||
"-DSDL_UNIX_CONSOLE_BUILD=ON",
|
|
||||||
))
|
|
||||||
job.shared_lib = SharedLibType.SO_0
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.N3ds:
|
|
||||||
job.cmake_generator = "Unix Makefiles"
|
|
||||||
job.cmake_build_arguments.append("-j$(nproc)")
|
|
||||||
job.shared = False
|
|
||||||
job.apt_packages = []
|
|
||||||
job.run_tests = False
|
|
||||||
job.cc_from_cmake = True
|
|
||||||
job.cmake_toolchain_file = "${DEVKITPRO}/cmake/3DS.cmake"
|
|
||||||
job.binutils_strings = "/opt/devkitpro/devkitARM/bin/arm-none-eabi-strings"
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Msys2:
|
|
||||||
job.shell = "msys2 {0}"
|
|
||||||
assert spec.msys2_platform
|
|
||||||
job.msys2_msystem = spec.msys2_platform.value
|
|
||||||
job.msys2_env = {
|
|
||||||
"mingw32": "mingw-w64-i686",
|
|
||||||
"mingw64": "mingw-w64-x86_64",
|
|
||||||
"clang32": "mingw-w64-clang-i686",
|
|
||||||
"clang64": "mingw-w64-clang-x86_64",
|
|
||||||
"ucrt64": "mingw-w64-ucrt-x86_64",
|
|
||||||
}[spec.msys2_platform.value]
|
|
||||||
job.msys2_no_perl = spec.msys2_platform in (Msys2Platform.Mingw32, )
|
|
||||||
job.shared_lib = SharedLibType.WIN32
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.Riscos:
|
|
||||||
# FIXME: Enable SDL_WERROR
|
|
||||||
job.werror = False
|
|
||||||
job.build_autotools_tests = False
|
|
||||||
job.apt_packages = ["cmake", "ninja-build"]
|
|
||||||
job.test_pkg_config = False
|
|
||||||
job.shared = False
|
|
||||||
job.run_tests = False
|
|
||||||
job.sudo = ""
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DRISCOS:BOOL=ON",
|
|
||||||
"-DCMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON",
|
|
||||||
"-DSDL_GCC_ATOMICS:BOOL=OFF",
|
|
||||||
))
|
|
||||||
job.cmake_toolchain_file = "/home/riscos/env/toolchain-riscos.cmake"
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
case SdlPlatform.FreeBSD | SdlPlatform.NetBSD | SdlPlatform.OpenBSD:
|
|
||||||
job.build_autotools_tests = False
|
|
||||||
job.cpactions = True
|
|
||||||
job.no_cmake = True
|
|
||||||
job.run_tests = False
|
|
||||||
job.apt_packages = []
|
|
||||||
job.shared_lib = SharedLibType.SO_0
|
|
||||||
job.static_lib = StaticLibType.A
|
|
||||||
match spec.platform:
|
|
||||||
case SdlPlatform.FreeBSD:
|
|
||||||
job.cpactions_os = "freebsd"
|
|
||||||
job.cpactions_version = "14.2"
|
|
||||||
job.cpactions_arch = "x86-64"
|
|
||||||
job.cpactions_setup_cmd = "sudo pkg update"
|
|
||||||
job.cpactions_install_cmd = "sudo pkg install -y cmake ninja pkgconf libXcursor libXext libXinerama libXi libXfixes libXrandr libXScrnSaver libXxf86vm wayland wayland-protocols libxkbcommon mesa-libs libglvnd evdev-proto libinotify alsa-lib jackit pipewire pulseaudio sndio dbus zh-fcitx ibus libudev-devd"
|
|
||||||
job.cmake_arguments.extend((
|
|
||||||
"-DSDL_CHECK_REQUIRED_INCLUDES=/usr/local/include",
|
|
||||||
"-DSDL_CHECK_REQUIRED_LINK_OPTIONS=-L/usr/local/lib",
|
|
||||||
))
|
|
||||||
case SdlPlatform.NetBSD:
|
|
||||||
job.cpactions_os = "netbsd"
|
|
||||||
job.cpactions_version = "10.1"
|
|
||||||
job.cpactions_arch = "x86-64"
|
|
||||||
job.cpactions_setup_cmd = "export PATH=\"/usr/pkg/sbin:/usr/pkg/bin:/sbin:$PATH\"; export PKG_CONFIG_PATH=\"/usr/pkg/lib/pkgconfig\";export PKG_PATH=\"https://cdn.netBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -p)/$(uname -r|cut -f \"1 2\" -d.)/All/\";echo \"PKG_PATH=$PKG_PATH\";echo \"uname -a -> \"$(uname -a)\"\";sudo -E sysctl -w security.pax.aslr.enabled=0;sudo -E sysctl -w security.pax.aslr.global=0;sudo -E pkgin clean;sudo -E pkgin update"
|
|
||||||
job.cpactions_install_cmd = "sudo -E pkgin -y install cmake dbus pkgconf ninja-build pulseaudio libxkbcommon wayland wayland-protocols libinotify libusb1"
|
|
||||||
case SdlPlatform.OpenBSD:
|
|
||||||
job.cpactions_os = "openbsd"
|
|
||||||
job.cpactions_version = "7.4"
|
|
||||||
job.cpactions_arch = "x86-64"
|
|
||||||
job.cpactions_setup_cmd = "sudo pkg_add -u"
|
|
||||||
job.cpactions_install_cmd = "sudo pkg_add cmake ninja pkgconf wayland wayland-protocols xwayland libxkbcommon libinotify pulseaudio dbus ibus"
|
|
||||||
case SdlPlatform.Watcom:
|
|
||||||
match spec.watcom_platform:
|
|
||||||
case WatcomPlatform.OS2:
|
|
||||||
job.watcom_makefile = "Makefile.os2"
|
|
||||||
job.run_tests = False
|
|
||||||
case WatcomPlatform.Windows:
|
|
||||||
job.watcom_makefile = "Makefile.w32"
|
|
||||||
job.run_tests = True
|
|
||||||
case _:
|
|
||||||
raise ValueError(f"Unsupported watcom_platform=${spec.watcom_platform}")
|
|
||||||
case _:
|
|
||||||
raise ValueError(f"Unsupported platform={spec.platform}")
|
|
||||||
|
|
||||||
if "ubuntu" in spec.name.lower():
|
|
||||||
job.check_sources = True
|
|
||||||
|
|
||||||
if not build_parallel:
|
|
||||||
job.cmake_build_arguments.append("-j1")
|
|
||||||
if job.cflags:
|
|
||||||
job.cmake_arguments.append(f"-DCMAKE_C_FLAGS={my_shlex_join(job.cflags)}")
|
|
||||||
if job.cxxflags:
|
|
||||||
job.cmake_arguments.append(f"-DCMAKE_CXX_FLAGS={my_shlex_join(job.cxxflags)}")
|
|
||||||
if job.ldflags:
|
|
||||||
job.cmake_arguments.append(f"-DCMAKE_SHARED_LINKER_FLAGS={my_shlex_join(job.ldflags)}")
|
|
||||||
job.cmake_arguments.append(f"-DCMAKE_EXE_LINKER_FLAGS={my_shlex_join(job.ldflags)}")
|
|
||||||
job.pretest_cmd = "\n".join(pretest_cmd)
|
|
||||||
def tf(b):
|
|
||||||
return "ON" if b else "OFF"
|
|
||||||
|
|
||||||
if fpic is not None:
|
|
||||||
job.cmake_arguments.append(f"-DCMAKE_POSITION_INDEPENDENT_CODE={tf(fpic)}")
|
|
||||||
|
|
||||||
if job.no_cmake:
|
|
||||||
job.cmake_arguments = []
|
|
||||||
|
|
||||||
return job
|
|
||||||
|
|
||||||
|
|
||||||
def spec_to_platform(spec: JobSpec, key: str, enable_artifacts: bool, trackmem_symbol_names: bool) -> dict[str, str|bool]:
|
|
||||||
logger.info("spec=%r", spec)
|
|
||||||
job = spec_to_job(spec, key=key, trackmem_symbol_names=trackmem_symbol_names)
|
|
||||||
logger.info("job=%r", job)
|
|
||||||
platform = job.to_workflow(enable_artifacts=enable_artifacts)
|
|
||||||
logger.info("platform=%r", platform)
|
|
||||||
return platform
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser(allow_abbrev=False)
|
|
||||||
parser.add_argument("--github-variable-prefix", default="platforms")
|
|
||||||
parser.add_argument("--github-ci", action="store_true")
|
|
||||||
parser.add_argument("--verbose", action="store_true")
|
|
||||||
parser.add_argument("--commit-message-file")
|
|
||||||
parser.add_argument("--no-artifact", dest="enable_artifacts", action="store_false")
|
|
||||||
parser.add_argument("--trackmem-symbol-names", dest="trackmem_symbol_names", action="store_true")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING)
|
|
||||||
|
|
||||||
remaining_keys = set(JOB_SPECS.keys())
|
|
||||||
|
|
||||||
all_level_keys = (
|
|
||||||
# Level 1
|
|
||||||
(
|
|
||||||
"haiku",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
filters = []
|
|
||||||
if args.commit_message_file:
|
|
||||||
with open(args.commit_message_file, "r") as f:
|
|
||||||
commit_message = f.read()
|
|
||||||
for m in re.finditer(r"\[sdl-ci-filter (.*)]", commit_message, flags=re.M):
|
|
||||||
filters.append(m.group(1).strip(" \t\n\r\t'\""))
|
|
||||||
|
|
||||||
if re.search(r"\[sdl-ci-artifacts?]", commit_message, flags=re.M):
|
|
||||||
args.enable_artifacts = True
|
|
||||||
|
|
||||||
if re.search(r"\[sdl-ci-(full-)?trackmem(-symbol-names)?]", commit_message, flags=re.M):
|
|
||||||
args.trackmem_symbol_names = True
|
|
||||||
|
|
||||||
if not filters:
|
|
||||||
filters.append("*")
|
|
||||||
|
|
||||||
logger.info("filters: %r", filters)
|
|
||||||
|
|
||||||
all_level_platforms = {}
|
|
||||||
|
|
||||||
all_platforms = {key: spec_to_platform(spec, key=key, enable_artifacts=args.enable_artifacts, trackmem_symbol_names=args.trackmem_symbol_names) for key, spec in JOB_SPECS.items()}
|
|
||||||
|
|
||||||
for level_i, level_keys in enumerate(all_level_keys, 1):
|
|
||||||
level_key = f"level{level_i}"
|
|
||||||
logger.info("Level %d: keys=%r", level_i, level_keys)
|
|
||||||
assert all(k in remaining_keys for k in level_keys)
|
|
||||||
level_platforms = tuple(all_platforms[key] for key in level_keys)
|
|
||||||
remaining_keys.difference_update(level_keys)
|
|
||||||
all_level_platforms[level_key] = level_platforms
|
|
||||||
logger.info("=" * 80)
|
|
||||||
|
|
||||||
logger.info("Keys before filter: %r", remaining_keys)
|
|
||||||
|
|
||||||
filtered_remaining_keys = set()
|
|
||||||
for filter in filters:
|
|
||||||
filtered_remaining_keys.update(fnmatch.filter(remaining_keys, filter))
|
|
||||||
|
|
||||||
logger.info("Keys after filter: %r", filtered_remaining_keys)
|
|
||||||
|
|
||||||
remaining_keys = filtered_remaining_keys
|
|
||||||
|
|
||||||
logger.info("Remaining: %r", remaining_keys)
|
|
||||||
all_level_platforms["others"] = tuple(all_platforms[key] for key in remaining_keys)
|
|
||||||
|
|
||||||
if args.github_ci:
|
|
||||||
for level, platforms in all_level_platforms.items():
|
|
||||||
platforms_json = json.dumps(platforms)
|
|
||||||
txt = f"{args.github_variable_prefix}-{level}={platforms_json}"
|
|
||||||
logger.info("%s", txt)
|
|
||||||
if "GITHUB_OUTPUT" in os.environ:
|
|
||||||
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
|
|
||||||
f.write(txt)
|
|
||||||
f.write("\n")
|
|
||||||
else:
|
|
||||||
logger.warning("GITHUB_OUTPUT not defined")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
raise SystemExit(main())
|
|
45
.github/workflows/emscripten.yml
vendored
Normal file
45
.github/workflows/emscripten.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
name: Build (Emscripten)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
emscripten:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: mymindstorm/setup-emsdk@v10
|
||||||
|
with:
|
||||||
|
version: 2.0.32
|
||||||
|
- name: Install ninja
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get install -y ninja-build
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
emcmake cmake -S . -B build \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix \
|
||||||
|
-GNinja
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build/ --verbose
|
||||||
|
- name: Run build-time tests
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
export SDL_TESTS_QUICK=1
|
||||||
|
# FIXME: enable Emscripten build time tests
|
||||||
|
# ctest -VV --test-dir build/
|
||||||
|
- name: Install
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV
|
||||||
|
cmake --install build/
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
emcmake cmake -S cmake/test -B cmake_config_build \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" \
|
||||||
|
-DTEST_SHARED=FALSE \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }}
|
||||||
|
cmake --build cmake_config_build --verbose
|
352
.github/workflows/generic.yml
vendored
352
.github/workflows/generic.yml
vendored
@@ -1,352 +0,0 @@
|
|||||||
name: 'Build'
|
|
||||||
run-name: 'Configure, Build and Test SDL'
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
platforms:
|
|
||||||
description: 'JSON-encoded test properties'
|
|
||||||
type: string
|
|
||||||
required: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: ${{ matrix.platform.name }}
|
|
||||||
runs-on: ${{ matrix.platform.os }}
|
|
||||||
container: ${{ matrix.platform.container }}
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: ${{ matrix.platform.shell }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
platform: ${{ fromJSON(inputs.platforms) }}
|
|
||||||
steps:
|
|
||||||
- name: 'Set up MSYS2'
|
|
||||||
if: ${{ matrix.platform.platform == 'msys2' }}
|
|
||||||
uses: msys2/setup-msys2@v2
|
|
||||||
with:
|
|
||||||
msystem: ${{ matrix.platform.msys2-msystem }}
|
|
||||||
install: >-
|
|
||||||
${{ matrix.platform.msys2-env }}-cc
|
|
||||||
${{ matrix.platform.msys2-env }}-cmake
|
|
||||||
${{ matrix.platform.msys2-env }}-ninja
|
|
||||||
${{ (!matrix.platform.msys2-no-perl && format('{0}-perl', matrix.platform.msys2-env)) || '' }}
|
|
||||||
${{ matrix.platform.msys2-env }}-pkg-config
|
|
||||||
${{ matrix.platform.msys2-env }}-clang-tools-extra
|
|
||||||
- name: 'About this job'
|
|
||||||
run: |
|
|
||||||
echo "key=${{ matrix.platform.key }}"
|
|
||||||
echo "name=${{ matrix.platform.name }}"
|
|
||||||
echo "os=${{ matrix.platform.os }}"
|
|
||||||
echo ""
|
|
||||||
echo "Add [sdl-ci-filter ${{ matrix.platform.key }}] to your commit message to reduce the number of jobs."
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: 'Set up ninja'
|
|
||||||
if: ${{ matrix.platform.setup-ninja }}
|
|
||||||
uses: ./.github/actions/setup-ninja
|
|
||||||
- uses: mymindstorm/setup-emsdk@v14
|
|
||||||
if: ${{ matrix.platform.platform == 'emscripten' }}
|
|
||||||
with:
|
|
||||||
version: 3.1.35
|
|
||||||
- uses: nttld/setup-ndk@v1
|
|
||||||
if: ${{ matrix.platform.android-ndk }}
|
|
||||||
id: setup-ndk
|
|
||||||
with:
|
|
||||||
local-cache: true
|
|
||||||
ndk-version: r21e
|
|
||||||
- uses: ilammy/msvc-dev-cmd@v1
|
|
||||||
if: ${{ matrix.platform.platform == 'msvc' }}
|
|
||||||
with:
|
|
||||||
arch: ${{ matrix.platform.msvc-vcvars-arch }}
|
|
||||||
sdk: ${{ matrix.platform.msvc-vcvars-sdk }}
|
|
||||||
- name: 'Set up Windows GDK Desktop'
|
|
||||||
uses: ./.github/actions/setup-gdk-desktop
|
|
||||||
if: ${{ matrix.platform.setup-gdk-folder != '' }}
|
|
||||||
with:
|
|
||||||
folder: '${{ matrix.platform.setup-gdk-folder }}'
|
|
||||||
- name: 'Setup Intel oneAPI toolchain'
|
|
||||||
id: intel
|
|
||||||
if: ${{ matrix.platform.intel }}
|
|
||||||
run: |
|
|
||||||
# Download the key to system keyring
|
|
||||||
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
|
|
||||||
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
|
|
||||||
|
|
||||||
# Add signed entry to apt sources and configure the APT client to use Intel repository:
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
|
|
||||||
|
|
||||||
# Update package list
|
|
||||||
sudo apt-get update -y
|
|
||||||
|
|
||||||
# Install oneAPI
|
|
||||||
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
|
|
||||||
- name: 'Install apk packages'
|
|
||||||
if: ${{ matrix.platform.apk-packages != '' }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.sudo }} apk update
|
|
||||||
${{ matrix.platform.sudo }} apk add ${{ matrix.platform.apk-packages }}
|
|
||||||
- name: 'Install apt packages'
|
|
||||||
if: ${{ matrix.platform.apt-packages != '' }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.sudo }} apt-get update
|
|
||||||
${{ matrix.platform.sudo }} apt-get install -y ${{ matrix.platform.apt-packages }}
|
|
||||||
- name: 'Install brew packages'
|
|
||||||
if: ${{ matrix.platform.brew-packages != '' }}
|
|
||||||
run: |
|
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
||||||
brew update
|
|
||||||
brew install ${{ matrix.platform.brew-packages }}
|
|
||||||
- name: 'Set up GLES for VITA' # Must be after apk
|
|
||||||
if: ${{ matrix.platform.setup-vita-gles-type != '' }}
|
|
||||||
uses: ./.github/actions/setup-vita-gles
|
|
||||||
with:
|
|
||||||
type: ${{ matrix.platform.setup-vita-gles-type }}
|
|
||||||
|
|
||||||
- name: 'Configure (Autotools)'
|
|
||||||
if: ${{ !matrix.platform.no-autotools }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source_cmd }}
|
|
||||||
set -eu
|
|
||||||
rm -rf build-autotools
|
|
||||||
mkdir build-autotools
|
|
||||||
./autogen.sh
|
|
||||||
(
|
|
||||||
cd build-autotools
|
|
||||||
../configure \
|
|
||||||
--enable-vendor-info="Github Workflow" \
|
|
||||||
--enable-werror \
|
|
||||||
--prefix=${{ github.workspace }}/autotools_prefix \
|
|
||||||
)
|
|
||||||
if test "x${{ (matrix.platform.build-autotools-tests && 'yes') || 'no' }}" = "xyes" ; then
|
|
||||||
curdir="$(pwd)"
|
|
||||||
multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
|
|
||||||
(
|
|
||||||
mkdir -p build-autotools/test
|
|
||||||
cd build-autotools/test
|
|
||||||
../../test/configure \
|
|
||||||
--enable-werror \
|
|
||||||
--x-includes=/usr/include \
|
|
||||||
--x-libraries="/usr/lib/${multiarch}" \
|
|
||||||
--prefix=${{ github.workspace }}/autotools_prefix \
|
|
||||||
SDL_CFLAGS="-I${curdir}/include" \
|
|
||||||
SDL_LIBS="-L${curdir}/build-autotools/build/.libs -lSDL2" \
|
|
||||||
ac_cv_lib_SDL2_ttf_TTF_Init=no \
|
|
||||||
${NULL+}
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
- name: 'Build (Autotools)'
|
|
||||||
if: ${{ !matrix.platform.no-autotools }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source_cmd }}
|
|
||||||
set -eu
|
|
||||||
parallel="$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
make -j"${parallel}" -C build-autotools V=1
|
|
||||||
if test "x${{ (matrix.platform.build-autotools-tests && 'yes') || 'no' }}" = "xyes" ; then
|
|
||||||
make -j"${parallel}" -C build-autotools/test V=1
|
|
||||||
fi
|
|
||||||
- name: 'Run build-time tests (Autotools)'
|
|
||||||
if: ${{ !matrix.platform.no-autotools && matrix.platform.build-autotools-tests && matrix.platform.run-tests }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source_cmd }}
|
|
||||||
set -eu
|
|
||||||
curdir="$(pwd)"
|
|
||||||
parallel="$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
export SDL_TESTS_QUICK=1
|
|
||||||
make -j"${parallel}" -C build-autotools/test check LD_LIBRARY_PATH="${curdir}/build-autotools/build/.libs"
|
|
||||||
if test "${{ runner.os }}" = "Linux"; then
|
|
||||||
# This should show us the SDL_REVISION
|
|
||||||
strings "${curdir}/build-autotools/build/.libs/libSDL2-2.0.so.0" | grep SDL-
|
|
||||||
fi
|
|
||||||
- name: 'Install (Autotools)'
|
|
||||||
if: ${{ !matrix.platform.no-autotools }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source_cmd }}
|
|
||||||
set -eu
|
|
||||||
curdir="$(pwd)"
|
|
||||||
parallel="$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
make -j"${parallel}" -C build-autotools install V=1
|
|
||||||
if test "x${{ (matrix.platform.build-autotools-tests && 'yes') || 'no' }}" = "xyes" ; then
|
|
||||||
make -j"${parallel}" -C build-autotools/test install V=1
|
|
||||||
fi
|
|
||||||
( cd autotools_prefix; find . ) | LC_ALL=C sort -u
|
|
||||||
echo "prefix=$(pwd)/autotools_prefix" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: 'Configure (CMake)'
|
|
||||||
if: ${{ !matrix.platform.no-cmake }}
|
|
||||||
#shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
${{ matrix.platform.cmake-config-emulator }} cmake -S . -B build -G "${{ matrix.platform.cmake-generator }}" \
|
|
||||||
-Wdeprecated -Wdev -Werror \
|
|
||||||
${{ matrix.platform.cmake-toolchain-file != '' && format('-DCMAKE_TOOLCHAIN_FILE={0}', matrix.platform.cmake-toolchain-file) || '' }} \
|
|
||||||
-DSDL_WERROR=${{ matrix.platform.werror }} \
|
|
||||||
-DSDL_TESTS=${{ matrix.platform.build-tests }} \
|
|
||||||
-DSDLTEST_TRACKMEM=OFF \
|
|
||||||
-DSDL_INSTALL_TESTS=${{ matrix.platform.build-tests }} \
|
|
||||||
-DSDL_DISABLE_INSTALL_DOCS=OFF \
|
|
||||||
-DSDL_DISABLE_INSTALL_DOCS=OFF \
|
|
||||||
${{ matrix.platform.cmake-arguments }} \
|
|
||||||
-DSDL_SHARED=${{ matrix.platform.shared }} \
|
|
||||||
-DSDL_STATIC=${{ matrix.platform.static }} \
|
|
||||||
-DSDL_TEST=ON \
|
|
||||||
-DSDL_VENDOR_INFO="Github Workflow" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=prefix \
|
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
||||||
-DSDL_CMAKE_DEBUG_POSTFIX="" \
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ matrix.platform.cmake-build-type }}
|
|
||||||
- name: 'Build (CMake)'
|
|
||||||
id: cmake-build
|
|
||||||
if: ${{ !matrix.platform.no-cmake }}
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
cmake --build build --config ${{ matrix.platform.cmake-build-type }} --verbose -- ${{ matrix.platform.cmake-build-arguments }}
|
|
||||||
- name: 'Verify SDL_REVISION'
|
|
||||||
if: ${{ !matrix.platform.no-cmake }}
|
|
||||||
run: |
|
|
||||||
echo "This should show us the SDL_REVISION"
|
|
||||||
echo "Shared library:"
|
|
||||||
${{ (matrix.platform.shared-lib && format('{0} build/{1} | grep "Github Workflow"', matrix.platform.binutils-strings, matrix.platform.shared-lib)) || 'echo "<Shared library not supported by platform>"' }}
|
|
||||||
echo "Static library:"
|
|
||||||
${{ (matrix.platform.static-lib && format('{0} build/{1} | grep "Github Workflow"', matrix.platform.binutils-strings, matrix.platform.static-lib)) || 'echo "<Static library not supported by platform>"' }}
|
|
||||||
- name: 'Run build-time tests (CMake)'
|
|
||||||
id: cmake-tests
|
|
||||||
if: ${{ !matrix.platform.no-cmake && matrix.platform.run-tests }}
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
${{ matrix.platform.pretest-cmd }}
|
|
||||||
set -eu
|
|
||||||
export SDL_TESTS_QUICK=1
|
|
||||||
ctest -VV --test-dir build/ -j2
|
|
||||||
- name: 'Install (CMake)'
|
|
||||||
id: cmake-install
|
|
||||||
if: ${{ steps.build.outcome == 'success' }}
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
cmake --install build --config ${{ matrix.platform.cmake-build-type }}
|
|
||||||
echo "prefix=$(pwd)/prefix" >> $GITHUB_OUTPUT
|
|
||||||
( cd prefix; find . ) | LC_ALL=C sort -u
|
|
||||||
- name: 'Verify CMake configuration files (CMake)'
|
|
||||||
if: ${{ steps.cmake-install.outcome == 'success' }}
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
${{ matrix.platform.cmake-config-emulator }} cmake -S cmake/test -B cmake_test_build -GNinja \
|
|
||||||
${{ matrix.platform.cmake-toolchain-file != '' && format('-DCMAKE_TOOLCHAIN_FILE={0}', matrix.platform.cmake-toolchain-file) || '' }} \
|
|
||||||
-DTEST_SHARED=${{ matrix.platform.shared }} \
|
|
||||||
-DTEST_STATIC=${{ matrix.platform.static }} \
|
|
||||||
${{ matrix.platform.cmake-arguments }} \
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ matrix.platform.cmake-build-type }} \
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.cmake-install.outputs.prefix }}"
|
|
||||||
cmake --build cmake_test_build --verbose --config ${{ matrix.platform.cmake-build-type }} -- ${{ matrix.platform.cmake-build-arguments }}
|
|
||||||
- name: 'Extract CC/CXX/CFLAGS/CXXFLAGS from CMake toolchain'
|
|
||||||
if: ${{ steps.cmake-install.outcome == 'success' && matrix.platform.cc-from-cmake }}
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
run: |
|
|
||||||
cmake -S .github/cmake -B /tmp/cmake_extract \
|
|
||||||
${{ matrix.platform.cmake-toolchain-file != '' && format('-DCMAKE_TOOLCHAIN_FILE={0}', matrix.platform.cmake-toolchain-file) || '' }} \
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ matrix.platform.cmake-build-type }} \
|
|
||||||
-DVAR_PATH=/tmp/env.txt
|
|
||||||
cat /tmp/env.txt >> $GITHUB_ENV
|
|
||||||
- name: 'Verify sdl2.pc (CMake)'
|
|
||||||
# shell: ${{ matrix.platform.shell }}
|
|
||||||
if: ${{ steps.cmake-install.outcome == 'success' && matrix.platform.test-pkg-config }}
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.source-cmd }}
|
|
||||||
${{ matrix.platform.cc && format('export CC="{0}"', matrix.platform.cc) || '' }}
|
|
||||||
${{ matrix.platform.cflags && format('export CFLAGS="{0}"', matrix.platform.cflags) || '' }}
|
|
||||||
${{ matrix.platform.ldflags && format('export LDFLAGS="{0}"', matrix.platform.ldflags) || '' }}
|
|
||||||
export PKG_CONFIG_PATH=${{ steps.cmake-install.outputs.prefix }}/lib/pkgconfig
|
|
||||||
cmake/test/test_pkgconfig.sh
|
|
||||||
- name: 'Build (cross-platform-actions, BSD)'
|
|
||||||
id: cpactions
|
|
||||||
if: ${{ matrix.platform.cpactions }}
|
|
||||||
uses: cross-platform-actions/action@v0.27.0
|
|
||||||
with:
|
|
||||||
operating_system: '${{ matrix.platform.cpactions-os }}'
|
|
||||||
architecture: '${{ matrix.platform.cpactions-arch }}'
|
|
||||||
version: '${{ matrix.platform.cpactions-version }}'
|
|
||||||
run: |
|
|
||||||
${{ matrix.platform.cpactions-setup-cmd }}
|
|
||||||
${{ matrix.platform.cpactions-install-cmd }}
|
|
||||||
cmake -S . -B build -GNinja \
|
|
||||||
${{ matrix.platform.cmake-toolchain-file != '' && format('-DCMAKE_TOOLCHAIN_FILE={0}', matrix.platform.cmake-toolchain-file) || '' }} \
|
|
||||||
-Wdeprecated -Wdev -Werror \
|
|
||||||
-DSDL_WERROR=${{ matrix.platform.werror }} \
|
|
||||||
-DSDL_DISABLE_INSTALL_DOCS=OFF \
|
|
||||||
${{ matrix.platform.cmake-arguments }} \
|
|
||||||
-DSDL_SHARED=${{ matrix.platform.shared }} \
|
|
||||||
-DSDL_STATIC=${{ matrix.platform.static }} \
|
|
||||||
-DSDL_TEST=ON \
|
|
||||||
-DSDL_VENDOR_INFO="Github Workflow" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=prefix \
|
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ matrix.platform.cmake-build-type }}
|
|
||||||
cmake --build build/ --config ${{ matrix.platform.cmake-build-type }} --verbose
|
|
||||||
|
|
||||||
cmake --build build/ --config ${{ matrix.platform.cmake-build-type }} --target clean
|
|
||||||
rm -rf build/CMakeFiles
|
|
||||||
rm -rf build/docs
|
|
||||||
- name: 'Set up Watcom'
|
|
||||||
uses: open-watcom/setup-watcom@v0
|
|
||||||
if: ${{ matrix.platform.watcom-makefile != '' }}
|
|
||||||
- name: 'Build (Watcom)'
|
|
||||||
if: ${{ matrix.platform.watcom-makefile != '' }}
|
|
||||||
run: |
|
|
||||||
wmake -f ${{ matrix.platform.watcom-makefile }} ENABLE_WERROR=1
|
|
||||||
- name: 'Build tests (Watcom)'
|
|
||||||
if: ${{ matrix.platform.watcom-makefile != '' }}
|
|
||||||
run: |
|
|
||||||
cd test
|
|
||||||
wmake -f ${{ matrix.platform.watcom-makefile }} ENABLE_WERROR=1
|
|
||||||
- name: 'Run tests (Watcom)'
|
|
||||||
if: ${{ matrix.platform.watcom-makefile != '' && matrix.platform.run-tests }}
|
|
||||||
run: |
|
|
||||||
cd test
|
|
||||||
wmake -f ${{ matrix.platform.watcom-makefile }} check-quick
|
|
||||||
- name: 'Distclean (Watcom)'
|
|
||||||
if: ${{ matrix.platform.watcom-makefile != '' }}
|
|
||||||
run: |
|
|
||||||
wmake -f ${{ matrix.platform.watcom-makefile }} distclean
|
|
||||||
cd test
|
|
||||||
wmake -f ${{ matrix.platform.watcom-makefile }} distclean
|
|
||||||
- name: 'Add msbuild to PATH'
|
|
||||||
id: setup-msbuild
|
|
||||||
if: ${{ matrix.platform.msvc-project != '' }}
|
|
||||||
uses: microsoft/setup-msbuild@v2
|
|
||||||
- name: Build msbuild
|
|
||||||
if: ${{ matrix.platform.msvc-project != '' }}
|
|
||||||
run: |
|
|
||||||
"$(cygpath -u '${{ steps.setup-msbuild.outputs.msbuildPath }}\msbuild.exe')" ${{ matrix.platform.msvc-project }} -m -p:BuildInParallel=true -p:Configuration=Release ${{ matrix.platform.msvc-project-flags }}
|
|
||||||
- name: 'Build (Android.mk)'
|
|
||||||
if: ${{ matrix.platform.android-mk }}
|
|
||||||
run: |
|
|
||||||
./build-scripts/androidbuildlibs.sh
|
|
||||||
- name: 'Build (xcode)'
|
|
||||||
if: ${{ matrix.platform.xcode-sdk != '' }}
|
|
||||||
run: |
|
|
||||||
xcodebuild -project Xcode/SDL/SDL.xcodeproj -target "${{ matrix.platform.xcode-target }}" -configuration Release -sdk ${{ matrix.platform.xcode-sdk }} clean build
|
|
||||||
- name: 'Setup Python'
|
|
||||||
uses: 'actions/setup-python@main'
|
|
||||||
if: ${{ matrix.platform.check-sources }}
|
|
||||||
with:
|
|
||||||
python-version: '3.x'
|
|
||||||
- name: 'Check Sources'
|
|
||||||
if: ${{ matrix.platform.check-sources }}
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
build-scripts/test-versioning.sh
|
|
||||||
- name: 'Upload binary package'
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ always() && steps.cmake-tests.outcome == 'failure' }}
|
|
||||||
with:
|
|
||||||
if-no-files-found: ignore
|
|
||||||
name: '${{ matrix.platform.artifact }}-minidumps'
|
|
||||||
path: |
|
|
||||||
build/**/*.dmp
|
|
||||||
build/**/*.exe
|
|
||||||
build/**/*.dll
|
|
||||||
build/**/*.pdb
|
|
20
.github/workflows/ios.yml
vendored
Normal file
20
.github/workflows/ios.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Build (iOS/tvOS)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- { name: iOS, target: Static Library-iOS, sdk: iphoneos }
|
||||||
|
- { name: tvOS, target: Static Library-tvOS, sdk: appletvos }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Build
|
||||||
|
run: xcodebuild -project Xcode/SDL/SDL.xcodeproj -target '${{ matrix.platform.target }}' -configuration Release -sdk ${{ matrix.platform.sdk }} clean build
|
206
.github/workflows/main.yml
vendored
Normal file
206
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
name: Build
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: ${{ matrix.platform.os }}
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ matrix.platform.shell }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686 }
|
||||||
|
- { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64 }
|
||||||
|
- { name: Windows (clang32), os: windows-latest, shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686 }
|
||||||
|
- { name: Windows (clang64), os: windows-latest, shell: 'msys2 {0}', msystem: clang64, msys-env: mingw-w64-clang-x86_64 }
|
||||||
|
- { name: Windows (ucrt64), os: windows-latest, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64 }
|
||||||
|
- { name: Ubuntu 20.04 (CMake), os: ubuntu-20.04, shell: sh }
|
||||||
|
- { name: Ubuntu 20.04 (autotools), os: ubuntu-20.04, shell: sh, autotools: true }
|
||||||
|
- { name: Ubuntu 22.04 (CMake), os: ubuntu-22.04, shell: sh }
|
||||||
|
- { name: Ubuntu 22.04 (autotools), os: ubuntu-22.04, shell: sh, autotools: true }
|
||||||
|
- { name: MacOS (CMake), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' }
|
||||||
|
- { name: MacOS (autotools), os: macos-latest, shell: sh, autotools: true }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Set up MSYS2
|
||||||
|
if: matrix.platform.shell == 'msys2 {0}'
|
||||||
|
uses: msys2/setup-msys2@v2
|
||||||
|
with:
|
||||||
|
msystem: ${{ matrix.platform.msystem }}
|
||||||
|
install: >-
|
||||||
|
${{ matrix.platform.msys-env }}-cc
|
||||||
|
${{ matrix.platform.msys-env }}-cmake
|
||||||
|
${{ matrix.platform.msys-env }}-ninja
|
||||||
|
${{ matrix.platform.msys-env }}-pkg-config
|
||||||
|
|
||||||
|
- name: Setup Linux dependencies
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install build-essential git make autoconf automake libtool \
|
||||||
|
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
|
||||||
|
libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
|
||||||
|
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
|
||||||
|
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
|
||||||
|
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
|
||||||
|
|
||||||
|
- name: Setup extra Ubuntu 22.04 dependencies
|
||||||
|
if: matrix.platform.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
sudo apt-get install libpipewire-0.3-dev libdecor-0-dev
|
||||||
|
|
||||||
|
- name: Setup Macos dependencies
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
run: |
|
||||||
|
brew install \
|
||||||
|
ninja
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Check that versioning is consistent
|
||||||
|
# We only need to run this once: arbitrarily use the Linux/CMake build
|
||||||
|
if: "runner.os == 'Linux' && ! matrix.platform.autotools"
|
||||||
|
run: ./build-scripts/test-versioning.sh
|
||||||
|
- name: Configure (CMake)
|
||||||
|
if: "! matrix.platform.autotools"
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build -G Ninja \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=cmake_prefix \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
${{ matrix.platform.cmake }}
|
||||||
|
- name: Build (CMake)
|
||||||
|
if: "! matrix.platform.autotools"
|
||||||
|
run: |
|
||||||
|
cmake --build build/ --config Release --verbose --parallel
|
||||||
|
- name: Run build-time tests (CMake)
|
||||||
|
if: "! matrix.platform.autotools"
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
export SDL_TESTS_QUICK=1
|
||||||
|
ctest -VV --test-dir build/
|
||||||
|
if test "${{ runner.os }}" = "Linux"; then
|
||||||
|
# This should show us the SDL_REVISION
|
||||||
|
strings build/libSDL2-2.0.so.0 | grep SDL-
|
||||||
|
fi
|
||||||
|
- name: Install (CMake)
|
||||||
|
if: "! matrix.platform.autotools"
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
cmake --install build/ --config Release
|
||||||
|
echo "SDL2_DIR=$(pwd)/cmake_prefix" >> $GITHUB_ENV
|
||||||
|
( cd cmake_prefix; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Configure (Autotools)
|
||||||
|
if: matrix.platform.autotools
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
rm -fr build-autotools
|
||||||
|
mkdir build-autotools
|
||||||
|
./autogen.sh
|
||||||
|
(
|
||||||
|
cd build-autotools
|
||||||
|
${{ github.workspace }}/configure \
|
||||||
|
--enable-vendor-info="Github Workflow" \
|
||||||
|
--enable-werror \
|
||||||
|
--prefix=${{ github.workspace }}/autotools_prefix \
|
||||||
|
)
|
||||||
|
if test "${{ runner.os }}" != "macOS" ; then
|
||||||
|
curdir="$(pwd)"
|
||||||
|
multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
|
||||||
|
(
|
||||||
|
mkdir -p build-autotools/test
|
||||||
|
cd build-autotools/test
|
||||||
|
${{ github.workspace }}/test/configure \
|
||||||
|
--enable-werror \
|
||||||
|
--x-includes=/usr/include \
|
||||||
|
--x-libraries="/usr/lib/${multiarch}" \
|
||||||
|
--prefix=${{ github.workspace }}/autotools_prefix \
|
||||||
|
SDL_CFLAGS="-I${curdir}/include" \
|
||||||
|
SDL_LIBS="-L${curdir}/build-autotools/build/.libs -lSDL2" \
|
||||||
|
ac_cv_lib_SDL2_ttf_TTF_Init=no \
|
||||||
|
${NULL+}
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
- name: Build (Autotools)
|
||||||
|
if: matrix.platform.autotools
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
parallel="$(getconf _NPROCESSORS_ONLN)"
|
||||||
|
make -j"${parallel}" -C build-autotools V=1
|
||||||
|
if test "${{ runner.os }}" != "macOS" ; then
|
||||||
|
make -j"${parallel}" -C build-autotools/test V=1
|
||||||
|
fi
|
||||||
|
- name: Run build-time tests (Autotools)
|
||||||
|
if: ${{ matrix.platform.autotools && (runner.os != 'macOS') }}
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
curdir="$(pwd)"
|
||||||
|
parallel="$(getconf _NPROCESSORS_ONLN)"
|
||||||
|
export SDL_TESTS_QUICK=1
|
||||||
|
make -j"${parallel}" -C build-autotools/test check LD_LIBRARY_PATH="${curdir}/build-autotools/build/.libs"
|
||||||
|
if test "${{ runner.os }}" = "Linux"; then
|
||||||
|
# This should show us the SDL_REVISION
|
||||||
|
strings "${curdir}/build-autotools/build/.libs/libSDL2-2.0.so.0" | grep SDL-
|
||||||
|
fi
|
||||||
|
- name: Install (Autotools)
|
||||||
|
if: matrix.platform.autotools
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
curdir="$(pwd)"
|
||||||
|
parallel="$(getconf _NPROCESSORS_ONLN)"
|
||||||
|
make -j"${parallel}" -C build-autotools install V=1
|
||||||
|
if test "${{ runner.os }}" != "macOS" ; then
|
||||||
|
make -j"${parallel}" -C build-autotools/test install V=1
|
||||||
|
fi
|
||||||
|
( cd autotools_prefix; find . ) | LC_ALL=C sort -u
|
||||||
|
echo "SDL2_DIR=$(pwd)/autotools_prefix" >> $GITHUB_ENV
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }}
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
- name: Verify sdl2-config
|
||||||
|
run: |
|
||||||
|
export PATH=${{ env.SDL2_DIR }}/bin:$PATH
|
||||||
|
cmake/test/test_sdlconfig.sh
|
||||||
|
- name: Verify sdl2.pc
|
||||||
|
run: |
|
||||||
|
export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig
|
||||||
|
cmake/test/test_pkgconfig.sh
|
||||||
|
- name: Distcheck (Autotools)
|
||||||
|
if: matrix.platform.autotools
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
parallel="$(getconf _NPROCESSORS_ONLN)"
|
||||||
|
make -j"${parallel}" -C build-autotools dist V=1
|
||||||
|
# Similar to Automake `make distcheck`: check that the tarball
|
||||||
|
# release is sufficient to do a new build
|
||||||
|
mkdir distcheck
|
||||||
|
tar -C distcheck -zxf build-autotools/SDL2-*.tar.gz
|
||||||
|
( cd distcheck/SDL2-* && ./configure )
|
||||||
|
make -j"${parallel}" -C distcheck/SDL2-*
|
||||||
|
- name: Run installed-tests (Autotools)
|
||||||
|
if: "runner.os == 'Linux' && matrix.platform.autotools"
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
parallel="$(getconf _NPROCESSORS_ONLN)"
|
||||||
|
sudo make -j"${parallel}" -C build-autotools install
|
||||||
|
sudo make -j"${parallel}" -C build-autotools/test install
|
||||||
|
export SDL_TESTS_QUICK=1
|
||||||
|
# We need to set LD_LIBRARY_PATH because it isn't in the default
|
||||||
|
# linker search path. We don't need to set XDG_DATA_DIRS for
|
||||||
|
# ginsttest-runner, because /usr/local/share *is* in the default
|
||||||
|
# search path for that.
|
||||||
|
env --chdir=/ \
|
||||||
|
LD_LIBRARY_PATH=/usr/local/lib \
|
||||||
|
SDL_AUDIODRIVER=dummy \
|
||||||
|
SDL_VIDEODRIVER=dummy \
|
||||||
|
ginsttest-runner --tap SDL2
|
74
.github/workflows/msvc.yml
vendored
Normal file
74
.github/workflows/msvc.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
name: Build (MSVC)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
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: 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' }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Create CMake project using SDL as a subproject
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
import os
|
||||||
|
import textwrap
|
||||||
|
srcdir = r"${{ github.workspace }}".replace("\\", "/")
|
||||||
|
builddir = f"{ srcdir }/build"
|
||||||
|
os.makedirs(builddir)
|
||||||
|
with open(f"{ builddir }/CMakeLists.txt", "w") as f:
|
||||||
|
f.write(textwrap.dedent(f"""\
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
project(sdl_user)
|
||||||
|
add_subdirectory("{ srcdir }" SDL)
|
||||||
|
"""))
|
||||||
|
- name: Configure (CMake)
|
||||||
|
run: cmake -S build -B build `
|
||||||
|
-DSDL_WERROR=${{ !matrix.platform.nowerror }} `
|
||||||
|
-DSDL_TESTS=ON `
|
||||||
|
-DSDL_INSTALL_TESTS=ON `
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" `
|
||||||
|
-DSDL2_DISABLE_INSTALL=OFF `
|
||||||
|
${{ matrix.platform.flags }} `
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix
|
||||||
|
- name: Build (CMake)
|
||||||
|
run: cmake --build build/ --config Release --parallel
|
||||||
|
- name: Run build-time tests
|
||||||
|
if: "! contains(matrix.platform.name, 'ARM')"
|
||||||
|
run: |
|
||||||
|
$env:SDL_TESTS_QUICK=1
|
||||||
|
ctest -VV --test-dir build/ -C Release
|
||||||
|
- name: Install (CMake)
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=$Env:GITHUB_WORKSPACE/prefix" >> $Env:GITHUB_ENV
|
||||||
|
cmake --install build/
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
if: ${{ !contains(matrix.platform.name, 'UWP') }} # FIXME: cmake/test/CMakeLists.txt should support UWP
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build `
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} `
|
||||||
|
${{ matrix.platform.flags }}
|
||||||
|
cmake --build cmake_config_build --config Release
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
if: ${{ matrix.platform.project != '' }}
|
||||||
|
uses: microsoft/setup-msbuild@v1.1.3
|
||||||
|
- name: Build msbuild
|
||||||
|
if: ${{ matrix.platform.project != '' }}
|
||||||
|
run: msbuild ${{ matrix.platform.project }} /m /p:BuildInParallel=true /p:Configuration=Release ${{ matrix.platform.projectflags }}
|
42
.github/workflows/n3ds.yml
vendored
Normal file
42
.github/workflows/n3ds.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: Build (Nintendo 3DS)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
n3ds:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: devkitpro/devkitarm:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Install build requirements
|
||||||
|
run: |
|
||||||
|
apt update
|
||||||
|
apt install ninja-build
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${DEVKITPRO}/cmake/3DS.cmake \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build --verbose
|
||||||
|
- name: Install CMake
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV
|
||||||
|
cmake --install build/
|
||||||
|
( cd prefix; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${DEVKITPRO}/cmake/3DS.cmake \
|
||||||
|
-DTEST_SHARED=FALSE \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
# Not running test_pkgconfig.sh and test_sdlconfig.sh
|
||||||
|
# as invoking the compiler manually is not supported
|
73
.github/workflows/ps2.yaml
vendored
Normal file
73
.github/workflows/ps2.yaml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
name: Build (Sony Playstation 2)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ps2:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: ps2dev/ps2dev:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: |
|
||||||
|
apk update
|
||||||
|
apk add cmake gmp mpc1 mpfr4 ninja pkgconf make git
|
||||||
|
|
||||||
|
# To be removed once ps2_drivers is part of PS2DEV
|
||||||
|
- name: Install ps2_drivers lib
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/fjtrujy/ps2_drivers.git
|
||||||
|
cd ps2_drivers
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN) clean
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN) install
|
||||||
|
|
||||||
|
- name: Configure (CMake)
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$PS2DEV/ps2sdk/ps2dev.cmake \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=cmake_prefix \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build --config Release --verbose --parallel
|
||||||
|
- name: Install (CMake)
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
cmake --install build/ --config Release
|
||||||
|
echo "SDL2_DIR=$(pwd)/cmake_prefix" >> $GITHUB_ENV
|
||||||
|
( cd cmake_prefix; find ) | LC_ALL=C sort -u
|
||||||
|
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$PS2DEV/ps2sdk/ps2dev.cmake \
|
||||||
|
-DTEST_SHARED=FALSE \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
- name: Verify sdl2-config
|
||||||
|
run: |
|
||||||
|
export CC=mips64r5900el-ps2-elf-gcc
|
||||||
|
export PATH=${{ env.SDL2_DIR }}/bin:$PATH
|
||||||
|
export EXTRA_LDFLAGS="-L$PS2DEV/ps2sdk/ee/lib -L$PS2DEV/gsKit/lib -L$PS2DEV/ps2sdk/ports/lib"
|
||||||
|
cmake/test/test_sdlconfig.sh
|
||||||
|
- name: Verify sdl2.pc
|
||||||
|
run: |
|
||||||
|
export CC=mips64r5900el-ps2-elf-gcc
|
||||||
|
export EXTRA_LDFLAGS="-L$PS2DEV/ps2sdk/ee/lib -L$PS2DEV/gsKit/lib -L$PS2DEV/ps2sdk/ports/lib"
|
||||||
|
export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig
|
||||||
|
cmake/test/test_pkgconfig.sh
|
||||||
|
|
||||||
|
- name: Get short SHA
|
||||||
|
id: slug
|
||||||
|
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
if: ${{ success() }}
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: tests-${{ steps.slug.outputs.sha8 }}
|
||||||
|
path: |
|
||||||
|
build/test
|
50
.github/workflows/psp.yaml
vendored
Normal file
50
.github/workflows/psp.yaml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Build (Sony Playstation Portable)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
psp:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: pspdev/pspdev:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: |
|
||||||
|
apk update
|
||||||
|
apk add cmake gmp mpc1 mpfr4 make pkgconf
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$PSPDEV/psp/share/pspdev.cmake \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build --config Release
|
||||||
|
- name: Install
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV
|
||||||
|
cmake --install build --config Release
|
||||||
|
( cd prefix; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$PSPDEV/psp/share/pspdev.cmake \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} \
|
||||||
|
-DTEST_SHARED=FALSE \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
- name: Verify sdl2-config
|
||||||
|
run: |
|
||||||
|
export CC=psp-gcc
|
||||||
|
export PATH=${{ env.SDL2_DIR }}/bin:$PATH
|
||||||
|
export EXTRA_LDFLAGS="-L$PSPDEV/lib -L$PSPDEV/psp/lib -L$PSPDEV/psp/sdk/lib"
|
||||||
|
cmake/test/test_sdlconfig.sh
|
||||||
|
- name: Verify sdl2.pc
|
||||||
|
run: |
|
||||||
|
export CC=psp-gcc
|
||||||
|
export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig
|
||||||
|
export EXTRA_LDFLAGS="-L$PSPDEV/lib -L$PSPDEV/psp/lib -L$PSPDEV/psp/sdk/lib"
|
||||||
|
cmake/test/test_pkgconfig.sh
|
403
.github/workflows/release.yml
vendored
403
.github/workflows/release.yml
vendored
@@ -1,403 +0,0 @@
|
|||||||
name: 'release'
|
|
||||||
run-name: 'Create SDL release artifacts for ${{ inputs.commit }}'
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
commit:
|
|
||||||
description: 'Commit of SDL'
|
|
||||||
required: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
src:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
project: ${{ steps.releaser.outputs.project }}
|
|
||||||
version: ${{ steps.releaser.outputs.version }}
|
|
||||||
src-tar-gz: ${{ steps.releaser.outputs.src-tar-gz }}
|
|
||||||
src-tar-xz: ${{ steps.releaser.outputs.src-tar-xz }}
|
|
||||||
src-zip: ${{ steps.releaser.outputs.src-zip }}
|
|
||||||
steps:
|
|
||||||
- name: 'Set up Python'
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- name: 'Fetch build-release.py'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: 'build-scripts/build-release.py'
|
|
||||||
- name: 'Set up SDL sources'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
path: 'SDL'
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: 'Build Source archive'
|
|
||||||
id: releaser
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
python build-scripts/build-release.py \
|
|
||||||
--actions source \
|
|
||||||
--commit ${{ inputs.commit }} \
|
|
||||||
--root "${{ github.workspace }}/SDL" \
|
|
||||||
--github \
|
|
||||||
--debug
|
|
||||||
- name: 'Store source archives'
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace}}/dist'
|
|
||||||
|
|
||||||
linux-verify:
|
|
||||||
needs: [src]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Unzip ${{ needs.src.outputs.src-zip }}'
|
|
||||||
id: zip
|
|
||||||
run: |
|
|
||||||
mkdir /tmp/zipdir
|
|
||||||
cd /tmp/zipdir
|
|
||||||
unzip "${{ github.workspace }}/${{ needs.src.outputs.src-zip }}"
|
|
||||||
echo "path=/tmp/zipdir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Untar ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
id: tar
|
|
||||||
run: |
|
|
||||||
mkdir -p /tmp/tardir
|
|
||||||
tar -C /tmp/tardir -v -x -f "${{ github.workspace }}/${{ needs.src.outputs.src-tar-gz }}"
|
|
||||||
echo "path=/tmp/tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Compare contents of ${{ needs.src.outputs.src-zip }} and ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
run: |
|
|
||||||
diff /tmp/zipdir /tmp/tardir
|
|
||||||
- name: 'Test versioning'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
${{ steps.tar.outputs.path }}/build-scripts/test-versioning.sh
|
|
||||||
- name: 'CMake (configure + build + tests + examples)'
|
|
||||||
run: |
|
|
||||||
cmake -S ${{ steps.tar.outputs.path }} -B /tmp/build -DSDL_TEST_LIBRARY=TRUE -DSDL_TESTS=TRUE -DSDL_EXAMPLES=TRUE
|
|
||||||
cmake --build /tmp/build --verbose
|
|
||||||
ctest --test-dir /tmp/build --no-tests=error --output-on-failure
|
|
||||||
|
|
||||||
dmg:
|
|
||||||
needs: [src]
|
|
||||||
runs-on: macos-latest
|
|
||||||
outputs:
|
|
||||||
dmg: ${{ steps.releaser.outputs.dmg }}
|
|
||||||
steps:
|
|
||||||
- name: 'Set up Python'
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- name: 'Fetch build-release.py'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: 'build-scripts/build-release.py'
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Untar ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
id: tar
|
|
||||||
run: |
|
|
||||||
mkdir -p "${{ github.workspace }}/tardir"
|
|
||||||
tar -C "${{ github.workspace }}/tardir" -v -x -f "${{ github.workspace }}/${{ needs.src.outputs.src-tar-gz }}"
|
|
||||||
echo "path=${{ github.workspace }}/tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Build SDL2.dmg'
|
|
||||||
id: releaser
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
python build-scripts/build-release.py \
|
|
||||||
--actions dmg \
|
|
||||||
--commit ${{ inputs.commit }} \
|
|
||||||
--root "${{ steps.tar.outputs.path }}" \
|
|
||||||
--github \
|
|
||||||
--debug
|
|
||||||
- name: 'Store DMG image file'
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: dmg
|
|
||||||
path: '${{ github.workspace }}/dist'
|
|
||||||
|
|
||||||
dmg-verify:
|
|
||||||
needs: [dmg, src]
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Download ${{ needs.dmg.outputs.dmg }}'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: dmg
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Untar ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
id: src
|
|
||||||
run: |
|
|
||||||
mkdir -p /tmp/tardir
|
|
||||||
tar -C /tmp/tardir -v -x -f "${{ github.workspace }}/${{ needs.src.outputs.src-tar-gz }}"
|
|
||||||
echo "path=/tmp/tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Mount ${{ needs.dmg.outputs.dmg }}'
|
|
||||||
id: mount
|
|
||||||
run: |
|
|
||||||
hdiutil attach '${{ github.workspace }}/${{ needs.dmg.outputs.dmg }}'
|
|
||||||
mount_point="/Volumes/${{ needs.src.outputs.project }}"
|
|
||||||
if [ ! -d "$mount_point/${{ needs.src.outputs.project }}.framework" ]; then
|
|
||||||
echo "Cannot find ${{ needs.src.outputs.project }}.framework!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "mount_point=$mount_point">>$GITHUB_OUTPUT
|
|
||||||
- name: 'CMake (configure + build) Darwin'
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
|
||||||
-DTEST_FULL=FALSE \
|
|
||||||
-DTEST_STATIC=FALSE \
|
|
||||||
-DTEST_TEST=FALSE \
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.mount.outputs.mount_point }}" \
|
|
||||||
-DCMAKE_SYSTEM_NAME=Darwin \
|
|
||||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
|
||||||
-Werror=dev \
|
|
||||||
-B build_darwin
|
|
||||||
cmake --build build_darwin --config Release --verbose
|
|
||||||
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
|
||||||
-DTEST_FULL=FALSE \
|
|
||||||
-DTEST_STATIC=FALSE \
|
|
||||||
-DTEST_TEST=FALSE \
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.mount.outputs.mount_point }}" \
|
|
||||||
-DCMAKE_SYSTEM_NAME=Darwin \
|
|
||||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
|
||||||
-Werror=dev \
|
|
||||||
-B build_darwin_2
|
|
||||||
cmake --build build_darwin --config Release --verbose
|
|
||||||
|
|
||||||
msvc:
|
|
||||||
needs: [src]
|
|
||||||
runs-on: windows-2025
|
|
||||||
outputs:
|
|
||||||
VC-x86: ${{ steps.releaser.outputs.VC-x86 }}
|
|
||||||
VC-x64: ${{ steps.releaser.outputs.VC-x64 }}
|
|
||||||
VC-devel: ${{ steps.releaser.outputs.VC-devel }}
|
|
||||||
steps:
|
|
||||||
- name: 'Set up Python'
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- name: 'Fetch build-release.py'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: 'build-scripts/build-release.py'
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Unzip ${{ needs.src.outputs.src-zip }}'
|
|
||||||
id: zip
|
|
||||||
run: |
|
|
||||||
New-Item C:\temp -ItemType Directory -ErrorAction SilentlyContinue
|
|
||||||
cd C:\temp
|
|
||||||
unzip "${{ github.workspace }}/${{ needs.src.outputs.src-zip }}"
|
|
||||||
echo "path=C:\temp\${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$Env:GITHUB_OUTPUT
|
|
||||||
- name: 'Build MSVC binary archives'
|
|
||||||
id: releaser
|
|
||||||
run: |
|
|
||||||
python build-scripts/build-release.py `
|
|
||||||
--actions msvc `
|
|
||||||
--commit ${{ inputs.commit }} `
|
|
||||||
--root "${{ steps.zip.outputs.path }}" `
|
|
||||||
--github `
|
|
||||||
--debug
|
|
||||||
- name: 'Store MSVC archives'
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: win32
|
|
||||||
path: '${{ github.workspace }}/dist'
|
|
||||||
|
|
||||||
msvc-verify:
|
|
||||||
needs: [msvc, src]
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- name: 'Fetch .github/actions/setup-ninja/action.yml'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: '.github/actions/setup-ninja/action.yml'
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Download MSVC binaries'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: win32
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Unzip ${{ needs.src.outputs.src-zip }}'
|
|
||||||
id: src
|
|
||||||
run: |
|
|
||||||
mkdir '${{ github.workspace }}/sources'
|
|
||||||
cd '${{ github.workspace }}/sources'
|
|
||||||
unzip "${{ github.workspace }}/${{ needs.src.outputs.src-zip }}"
|
|
||||||
echo "path=${{ github.workspace }}/sources/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$env:GITHUB_OUTPUT
|
|
||||||
- name: 'Unzip ${{ needs.msvc.outputs.VC-devel }}'
|
|
||||||
id: bin
|
|
||||||
run: |
|
|
||||||
mkdir '${{ github.workspace }}/vc'
|
|
||||||
cd '${{ github.workspace }}/vc'
|
|
||||||
unzip "${{ github.workspace }}/${{ needs.msvc.outputs.VC-devel }}"
|
|
||||||
echo "path=${{ github.workspace }}/vc/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$env:GITHUB_OUTPUT
|
|
||||||
- name: Set up ninja
|
|
||||||
uses: ./.github/actions/setup-ninja
|
|
||||||
- name: 'Configure vcvars x86'
|
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
|
||||||
with:
|
|
||||||
arch: x64_x86
|
|
||||||
- name: 'CMake (configure + build + tests) x86'
|
|
||||||
run: |
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" `
|
|
||||||
-B build_x86 `
|
|
||||||
-GNinja `
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug `
|
|
||||||
-Werror=dev `
|
|
||||||
-DTEST_FULL=FALSE `
|
|
||||||
-DTEST_STATIC=FALSE `
|
|
||||||
-DTEST_SHARED=TRUE `
|
|
||||||
-DTEST_TEST=TRUE `
|
|
||||||
-DCMAKE_SUPPRESS_REGENERATION=TRUE `
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.bin.outputs.path }}"
|
|
||||||
Start-Sleep -Seconds 2
|
|
||||||
cmake --build build_x86 --config Release --verbose
|
|
||||||
#ctest --test-dir build_x86 --no-tests=error -C Release --output-on-failure
|
|
||||||
- name: 'Configure vcvars x64'
|
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
|
||||||
with:
|
|
||||||
arch: x64
|
|
||||||
- name: 'CMake (configure + build + tests) x64'
|
|
||||||
run: |
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" `
|
|
||||||
-B build_x64 `
|
|
||||||
-GNinja `
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug `
|
|
||||||
-Werror=dev `
|
|
||||||
-DTEST_FULL=FALSE `
|
|
||||||
-DTEST_STATIC=FALSE `
|
|
||||||
-DTEST_SHARED=TRUE `
|
|
||||||
-DTEST_TEST=TRUE `
|
|
||||||
-DCMAKE_SUPPRESS_REGENERATION=TRUE `
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.bin.outputs.path }}"
|
|
||||||
Start-Sleep -Seconds 2
|
|
||||||
cmake --build build_x64 --config Release --verbose
|
|
||||||
#ctest --test-dir build_x64 --no-tests=error -C Release --output-on-failure
|
|
||||||
|
|
||||||
mingw:
|
|
||||||
needs: [src]
|
|
||||||
runs-on: ubuntu-24.04 # FIXME: current ubuntu-latest ships an outdated mingw, replace with ubuntu-latest once 24.04 becomes the new default
|
|
||||||
outputs:
|
|
||||||
mingw-devel-tar-gz: ${{ steps.releaser.outputs.mingw-devel-tar-gz }}
|
|
||||||
mingw-devel-tar-xz: ${{ steps.releaser.outputs.mingw-devel-tar-xz }}
|
|
||||||
steps:
|
|
||||||
- name: 'Set up Python'
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- name: 'Fetch build-release.py'
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: 'build-scripts/build-release.py'
|
|
||||||
- name: 'Install Mingw toolchain'
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y gcc-mingw-w64 g++-mingw-w64 ninja-build
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Untar ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
id: tar
|
|
||||||
run: |
|
|
||||||
mkdir -p /tmp/tardir
|
|
||||||
tar -C /tmp/tardir -v -x -f "${{ github.workspace }}/${{ needs.src.outputs.src-tar-gz }}"
|
|
||||||
echo "path=/tmp/tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Build MinGW binary archives'
|
|
||||||
id: releaser
|
|
||||||
run: |
|
|
||||||
python build-scripts/build-release.py \
|
|
||||||
--actions mingw \
|
|
||||||
--commit ${{ inputs.commit }} \
|
|
||||||
--root "${{ steps.tar.outputs.path }}" \
|
|
||||||
--github \
|
|
||||||
--debug
|
|
||||||
- name: 'Store MinGW archives'
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: mingw
|
|
||||||
path: '${{ github.workspace }}/dist'
|
|
||||||
|
|
||||||
mingw-verify:
|
|
||||||
needs: [mingw, src]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: 'Install Mingw toolchain'
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y gcc-mingw-w64 g++-mingw-w64 ninja-build
|
|
||||||
- name: 'Download source archives'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: sources
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Download MinGW binaries'
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: mingw
|
|
||||||
path: '${{ github.workspace }}'
|
|
||||||
- name: 'Untar ${{ needs.src.outputs.src-tar-gz }}'
|
|
||||||
id: src
|
|
||||||
run: |
|
|
||||||
mkdir -p /tmp/tardir
|
|
||||||
tar -C /tmp/tardir -v -x -f "${{ github.workspace }}/${{ needs.src.outputs.src-tar-gz }}"
|
|
||||||
echo "path=/tmp/tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }}" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'Untar and install ${{ needs.mingw.outputs.mingw-devel-tar-gz }}'
|
|
||||||
id: bin
|
|
||||||
run: |
|
|
||||||
mkdir -p /tmp/mingw-tardir
|
|
||||||
tar -C /tmp/mingw-tardir -v -x -f "${{ github.workspace }}/${{ needs.mingw.outputs.mingw-devel-tar-gz }}"
|
|
||||||
make -C /tmp/mingw-tardir/${{ needs.src.outputs.project }}-${{ needs.src.outputs.version }} cross CROSS_PATH=/tmp/deps-mingw
|
|
||||||
echo "path=/tmp/deps-mingw" >>$GITHUB_OUTPUT
|
|
||||||
- name: 'CMake (configure + build) i686'
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
|
||||||
-DCMAKE_BUILD_TYPE="Release" \
|
|
||||||
-DTEST_FULL=FALSE \
|
|
||||||
-DTEST_STATIC=TRUE \
|
|
||||||
-DTEST_TEST=TRUE \
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.bin.outputs.path }}" \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ steps.src.outputs.path }}/build-scripts/cmake-toolchain-mingw64-i686.cmake" \
|
|
||||||
-DCMAKE_C_FLAGS="-DSDL_DISABLE_SSE4_2" \
|
|
||||||
-Werror=dev \
|
|
||||||
-B build_x86
|
|
||||||
cmake --build build_x86 --config Release --verbose
|
|
||||||
- name: 'CMake (configure + build) x86_64'
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
|
||||||
-DCMAKE_BUILD_TYPE="Release" \
|
|
||||||
-DTEST_FULL=FALSE \
|
|
||||||
-DTEST_STATIC=TRUE \
|
|
||||||
-DTEST_TEST=TRUE \
|
|
||||||
-DCMAKE_PREFIX_PATH="${{ steps.bin.outputs.path }}" \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ steps.src.outputs.path }}/build-scripts/cmake-toolchain-mingw64-x86_64.cmake" \
|
|
||||||
-DCMAKE_C_FLAGS="-DSDL_DISABLE_SSE4_2" \
|
|
||||||
-Werror=dev \
|
|
||||||
-B build_x64
|
|
||||||
cmake --build build_x64 --config Release --verbose
|
|
68
.github/workflows/riscos.yml
vendored
Normal file
68
.github/workflows/riscos.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: Build (RISC OS)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: riscosdotinfo/riscos-gccsdk-4.7:latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- { name: autotools, test_args: '-DTEST_SHARED=FALSE' } # FIXME: autotools should build and install shared libraries
|
||||||
|
- { name: CMake }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: apt-get update && apt-get install -y cmake ninja-build
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Configure (autotools)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'autotools') }}
|
||||||
|
run: |
|
||||||
|
mkdir build_autotools
|
||||||
|
cd build_autotools
|
||||||
|
../configure \
|
||||||
|
--host=arm-unknown-riscos \
|
||||||
|
--disable-gcc-atomics \
|
||||||
|
--prefix=${{ github.workspace }}/prefix_autotools
|
||||||
|
- name: Build (autotools)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'autotools') }}
|
||||||
|
run: make -C build_autotools -j`nproc` V=1
|
||||||
|
- name: Install (autotools)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'autotools') }}
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=${{ github.workspace }}/prefix_autotools" >> $GITHUB_ENV
|
||||||
|
make -C build_autotools install
|
||||||
|
( cd ${{ github.workspace }}/prefix_autotools; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Configure (CMake)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'CMake') }}
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=/home/riscos/env/toolchain-riscos.cmake \
|
||||||
|
-DRISCOS=ON \
|
||||||
|
-DSDL_GCC_ATOMICS=OFF \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DSDL_VENDOR_INFO="Github Workflow" \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/prefix_cmake
|
||||||
|
- name: Build (CMake)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'CMake') }}
|
||||||
|
run: cmake --build build --verbose
|
||||||
|
- name: Install (CMake)
|
||||||
|
if: ${{ contains(matrix.platform.name, 'CMake') }}
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=${{ github.workspace }}/prefix_cmake" >> $GITHUB_ENV
|
||||||
|
cmake --install build/
|
||||||
|
( cd ${{ github.workspace }}/prefix_cmake; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=/home/riscos/env/toolchain-riscos.cmake \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
${{ matrix.platform.test_args }}
|
||||||
|
cmake --build cmake_config_build --verbose
|
53
.github/workflows/vita.yaml
vendored
Normal file
53
.github/workflows/vita.yaml
vendored
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
name: Build (Sony Playstation Vita)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: sh
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
vita:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: vitasdk/vitasdk:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Install build requirements
|
||||||
|
run: |
|
||||||
|
apk update
|
||||||
|
apk add cmake ninja pkgconf bash
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake \
|
||||||
|
-DSDL_WERROR=ON \
|
||||||
|
-DSDL_TESTS=ON \
|
||||||
|
-DSDL_INSTALL_TESTS=ON \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=prefix
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build --verbose
|
||||||
|
- name: Install CMake
|
||||||
|
run: |
|
||||||
|
echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV
|
||||||
|
cmake --install build/
|
||||||
|
( cd prefix; find ) | LC_ALL=C sort -u
|
||||||
|
- name: Verify CMake configuration files
|
||||||
|
run: |
|
||||||
|
cmake -S cmake/test -B cmake_config_build -G Ninja \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake \
|
||||||
|
-DTEST_SHARED=FALSE \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
cmake --build cmake_config_build --verbose
|
||||||
|
- name: Verify sdl2-config
|
||||||
|
run: |
|
||||||
|
export CC=arm-vita-eabi-gcc
|
||||||
|
export PATH=${{ env.SDL2_DIR }}/bin:$PATH
|
||||||
|
cmake/test/test_sdlconfig.sh
|
||||||
|
- name: Verify sdl2.pc
|
||||||
|
run: |
|
||||||
|
export CC=arm-vita-eabi-gcc
|
||||||
|
export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig
|
||||||
|
cmake/test/test_pkgconfig.sh
|
49
.github/workflows/vmactions.yml
vendored
Normal file
49
.github/workflows/vmactions.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Build (VM Actions)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
freebsd:
|
||||||
|
runs-on: macos-12
|
||||||
|
name: FreeBSD
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Build
|
||||||
|
uses: vmactions/freebsd-vm@v0
|
||||||
|
with:
|
||||||
|
usesh: true
|
||||||
|
prepare: |
|
||||||
|
pkg install -y \
|
||||||
|
gmake \
|
||||||
|
pkgconf \
|
||||||
|
libXcursor \
|
||||||
|
libXext \
|
||||||
|
libXinerama \
|
||||||
|
libXi \
|
||||||
|
libXfixes \
|
||||||
|
libXrandr \
|
||||||
|
libXScrnSaver \
|
||||||
|
libXxf86vm \
|
||||||
|
wayland \
|
||||||
|
wayland-protocols \
|
||||||
|
libxkbcommon \
|
||||||
|
mesa-libs \
|
||||||
|
libglvnd \
|
||||||
|
evdev-proto \
|
||||||
|
libinotify \
|
||||||
|
alsa-lib \
|
||||||
|
jackit \
|
||||||
|
nas \
|
||||||
|
pipewire \
|
||||||
|
pulseaudio \
|
||||||
|
sndio \
|
||||||
|
dbus \
|
||||||
|
zh-fcitx \
|
||||||
|
ibus \
|
||||||
|
libsamplerate \
|
||||||
|
libudev-devd
|
||||||
|
|
||||||
|
run: |
|
||||||
|
mkdir build_autotools
|
||||||
|
(cd build_autotools && CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ../configure)
|
||||||
|
gmake -C build_autotools -j`sysctl -n hw.ncpu` V=1
|
35
.github/workflows/watcom.yml
vendored
Normal file
35
.github/workflows/watcom.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
name: Build (OpenWatcom)
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
os2:
|
||||||
|
name: ${{ matrix.platform.name }}
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- { name: Windows, makefile: Makefile.w32 }
|
||||||
|
- { name: OS/2, makefile: Makefile.os2 }
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: open-watcom/setup-watcom@v0
|
||||||
|
- name: Build SDL2
|
||||||
|
run: |
|
||||||
|
wmake -f ${{ matrix.platform.makefile }} ENABLE_WERROR=1
|
||||||
|
- name: Build tests
|
||||||
|
run: |
|
||||||
|
cd test && wmake -f ${{ matrix.platform.makefile }} ENABLE_WERROR=1
|
||||||
|
cd ..
|
||||||
|
- name: Run tests
|
||||||
|
if: "matrix.platform.makefile == 'Makefile.w32'"
|
||||||
|
run: |
|
||||||
|
cd test && wmake -f ${{ matrix.platform.makefile }} check-quick
|
||||||
|
cd ..
|
||||||
|
- name: distclean
|
||||||
|
run: |
|
||||||
|
wmake -f ${{ matrix.platform.makefile }} distclean
|
||||||
|
cd test && wmake -f ${{ matrix.platform.makefile }} distclean
|
||||||
|
cd ..
|
10
.gitignore
vendored
10
.gitignore
vendored
@@ -15,8 +15,7 @@ build
|
|||||||
gen
|
gen
|
||||||
Build
|
Build
|
||||||
buildbot
|
buildbot
|
||||||
/REVISION.txt
|
/VERSION.txt
|
||||||
dist
|
|
||||||
|
|
||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
@@ -63,11 +62,6 @@ cmake-build-*
|
|||||||
xcuserdata
|
xcuserdata
|
||||||
*.xcworkspace
|
*.xcworkspace
|
||||||
|
|
||||||
# for QtCreator
|
|
||||||
CMakeLists.txt.user
|
|
||||||
build*/
|
|
||||||
*.pro.user*
|
|
||||||
|
|
||||||
# for Visual C++
|
# for Visual C++
|
||||||
.vs
|
.vs
|
||||||
Debug
|
Debug
|
||||||
@@ -104,7 +98,6 @@ VisualC/visualtest/testsprite2_sample.actions
|
|||||||
VisualC/visualtest/testsprite2_sample.config
|
VisualC/visualtest/testsprite2_sample.config
|
||||||
VisualC/visualtest/testsprite2_sample.parameters
|
VisualC/visualtest/testsprite2_sample.parameters
|
||||||
VisualC-GDK/**/Layout
|
VisualC-GDK/**/Layout
|
||||||
VisualC-GDK/shaders/*.h
|
|
||||||
|
|
||||||
# for Android
|
# for Android
|
||||||
android-project/local.properties
|
android-project/local.properties
|
||||||
@@ -180,7 +173,6 @@ test/testyuv
|
|||||||
test/torturethread
|
test/torturethread
|
||||||
|
|
||||||
builddir/
|
builddir/
|
||||||
!build-scripts/
|
|
||||||
debian/*.debhelper.log
|
debian/*.debhelper.log
|
||||||
debian/*.substvars
|
debian/*.substvars
|
||||||
debian/*.tar.gz
|
debian/*.tar.gz
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
projectfullname = Simple Directmedia Layer
|
projectfullname = SDL_mixer
|
||||||
projectshortname = SDL
|
projectshortname = SDL_mixer
|
||||||
incsubdir = include
|
incsubdir = include
|
||||||
wikisubdir = SDL2
|
wikisubdir =
|
||||||
readmesubdir = docs
|
apiprefixregex = (SDL_|SDLK_|KMOD_|AUDIO_)
|
||||||
apiprefixregex = (SDL_|SDLK_|KMOD_|AUDIO_|[US]int\d+)
|
|
||||||
mainincludefname = SDL.h
|
mainincludefname = SDL.h
|
||||||
versionfname = include/SDL_version.h
|
versionfname = include/SDL_version.h
|
||||||
versionmajorregex = \A\#define\s+SDL_MAJOR_VERSION\s+(\d+)\Z
|
versionmajorregex = \A\#define\s+SDL_MAJOR_VERSION\s+(\d+)\Z
|
||||||
@@ -11,22 +10,6 @@ versionminorregex = \A\#define\s+SDL_MINOR_VERSION\s+(\d+)\Z
|
|||||||
versionpatchregex = \A\#define\s+SDL_PATCHLEVEL\s+(\d+)\Z
|
versionpatchregex = \A\#define\s+SDL_PATCHLEVEL\s+(\d+)\Z
|
||||||
selectheaderregex = \ASDL.*?\.h\Z
|
selectheaderregex = \ASDL.*?\.h\Z
|
||||||
projecturl = https://libsdl.org/
|
projecturl = https://libsdl.org/
|
||||||
wikiurl = https://wiki.libsdl.org/SDL2
|
wikiurl = https://wiki.libsdl.org
|
||||||
bugreporturl = https://github.com/libsdl-org/sdlwiki/issues/new
|
bugreporturl = https://github.com/libsdl-org/sdlwiki/issues/new
|
||||||
warn_about_missing = 0
|
warn_about_missing = 0
|
||||||
#wikipreamble = (This is the legacy documentation for SDL2, the previous stable version; [SDL3](https://wiki.libsdl.org/SDL3/) is the current stable version.)
|
|
||||||
wikiheaderfiletext = Defined in [%fname%](https://github.com/libsdl-org/SDL/blob/SDL2/include/%fname%)
|
|
||||||
manpageheaderfiletext = Defined in %fname%
|
|
||||||
|
|
||||||
# All SDL_config_*.h headers are uncategorized, in case something slips in from them.
|
|
||||||
# All SDL_test_* headers become uncategorized, everything else just converts like SDL_audio.h -> Audio
|
|
||||||
# A handful of others we fix up in the header itself with /* WIKI CATEGORY: x */ comments.
|
|
||||||
headercategoryeval = s/\ASDL_config_.*?\.h\Z//; s/\ASDL_test_.*?\.h\Z//; s/\ASDL_?(.*?)\.h\Z/$1/; ucfirst();
|
|
||||||
|
|
||||||
# !!! FIXME: maybe later, but there are probably documentation gaps to fix first.
|
|
||||||
quickrefenabled = 0
|
|
||||||
quickrefcategoryorder = Init,Hints,Error,Version,Properties,Log,Video,Events,Keyboard,Mouse,Touch,Gesture,GameController,Joystick,Haptic,Audio,Timer,Render,LoadSO,Thread,Mutex,Atomic,Filesystem,RWOPS,Pixels,Surface,Blendmode,Rect,Clipboard,Messagebox,Vulkan,Metal,Platform,Power,Sensor,Bits,Endian,Assert,CPUInfo,Locale,System,Misc,GUID,Main,Stdinc
|
|
||||||
quickreftitle = SDL2 API Quick Reference
|
|
||||||
quickrefurl = https://libsdl.org/
|
|
||||||
quickrefdesc = The latest version of this document can be found at https://wiki.libsdl.org/SDL2/QuickReference
|
|
||||||
quickrefmacroregex = \A(SDL_Atomic...Ref|SDL_assert.*?|SDL_arraysize|SDL_Swap[BL]E\d\d|SDL_[a-z]+_cast|SDL_Load...)\Z
|
|
||||||
|
@@ -35,7 +35,6 @@ LOCAL_SRC_FILES := \
|
|||||||
$(wildcard $(LOCAL_PATH)/src/hidapi/android/*.cpp) \
|
$(wildcard $(LOCAL_PATH)/src/hidapi/android/*.cpp) \
|
||||||
$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
|
$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
|
||||||
$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
|
$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
|
||||||
$(wildcard $(LOCAL_PATH)/src/joystick/dummy/*.c) \
|
|
||||||
$(wildcard $(LOCAL_PATH)/src/joystick/hidapi/*.c) \
|
$(wildcard $(LOCAL_PATH)/src/joystick/hidapi/*.c) \
|
||||||
$(wildcard $(LOCAL_PATH)/src/joystick/virtual/*.c) \
|
$(wildcard $(LOCAL_PATH)/src/joystick/virtual/*.c) \
|
||||||
$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
|
$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
|
||||||
@@ -64,6 +63,7 @@ LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
|
|||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-Wall -Wextra \
|
-Wall -Wextra \
|
||||||
-Wdocumentation \
|
-Wdocumentation \
|
||||||
|
-Wdocumentation-unknown-command \
|
||||||
-Wmissing-prototypes \
|
-Wmissing-prototypes \
|
||||||
-Wunreachable-code-break \
|
-Wunreachable-code-break \
|
||||||
-Wunneeded-internal-declaration \
|
-Wunneeded-internal-declaration \
|
||||||
@@ -78,8 +78,6 @@ LOCAL_CFLAGS += \
|
|||||||
# Warnings we haven't fixed (yet)
|
# Warnings we haven't fixed (yet)
|
||||||
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare
|
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare
|
||||||
|
|
||||||
LOCAL_CXXFLAGS += -std=gnu++11
|
|
||||||
|
|
||||||
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid
|
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid
|
||||||
|
|
||||||
LOCAL_LDFLAGS := -Wl,--no-undefined
|
LOCAL_LDFLAGS := -Wl,--no-undefined
|
||||||
|
753
CMakeLists.txt
753
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
@@ -27,7 +27,6 @@ LDFLAGS = @BUILD_LDFLAGS@
|
|||||||
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
|
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
|
||||||
LIBTOOL = @LIBTOOL@
|
LIBTOOL = @LIBTOOL@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
FGREP = @FGREP@
|
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
RC = @RC@
|
RC = @RC@
|
||||||
@@ -52,7 +51,7 @@ WAYLAND_SCANNER_CODE_MODE = @WAYLAND_SCANNER_CODE_MODE@
|
|||||||
|
|
||||||
INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
|
INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
|
||||||
|
|
||||||
SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac docs include Makefile.* mingw sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake.in src test VisualC VisualC-GDK VisualC-WinRT Xcode Xcode-iOS wayland-protocols
|
SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac docs include Makefile.* mingw sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake.in src test VisualC VisualC-WinRT Xcode Xcode-iOS wayland-protocols
|
||||||
GEN_DIST = SDL2.spec
|
GEN_DIST = SDL2.spec
|
||||||
|
|
||||||
ifneq ($V,1)
|
ifneq ($V,1)
|
||||||
@@ -131,7 +130,7 @@ HDRS = \
|
|||||||
begin_code.h \
|
begin_code.h \
|
||||||
close_code.h
|
close_code.h
|
||||||
|
|
||||||
SDLTEST_HDRS = $(shell ls $(srcdir)/include | $(FGREP) SDL_test)
|
SDLTEST_HDRS = $(shell ls $(srcdir)/include | fgrep SDL_test)
|
||||||
|
|
||||||
LT_AGE = @LT_AGE@
|
LT_AGE = @LT_AGE@
|
||||||
LT_CURRENT = @LT_CURRENT@
|
LT_CURRENT = @LT_CURRENT@
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
# Makefile to build the SDL library
|
# Makefile to build the SDL library
|
||||||
|
|
||||||
CPPFLAGS = -I./include
|
INCLUDE = -I./include
|
||||||
CFLAGS = -g -O2
|
CFLAGS = -g -O2 $(INCLUDE)
|
||||||
AR = ar
|
AR = ar
|
||||||
RANLIB = ranlib
|
RANLIB = ranlib
|
||||||
|
|
||||||
|
14
Makefile.os2
14
Makefile.os2
@@ -1,4 +1,4 @@
|
|||||||
# Open Watcom makefile to build SDL2.dll for OS/2:
|
# Open Watcom makefile to build SDL2.dll for OS/2
|
||||||
# wmake -f Makefile.os2
|
# wmake -f Makefile.os2
|
||||||
#
|
#
|
||||||
# If you have GNU libiconv installed (iconv2.dll), you
|
# If you have GNU libiconv installed (iconv2.dll), you
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
LIBNAME = SDL2
|
LIBNAME = SDL2
|
||||||
MAJOR_VERSION = 2
|
MAJOR_VERSION = 2
|
||||||
MINOR_VERSION = 33
|
MINOR_VERSION = 26
|
||||||
MICRO_VERSION = 0
|
MICRO_VERSION = 3
|
||||||
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
||||||
DESCRIPTION = Simple DirectMedia Layer 2
|
DESCRIPTION = Simple DirectMedia Layer 2
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ CFLAGS_DLL+= -bd
|
|||||||
# iconv:
|
# iconv:
|
||||||
LIBICONV_LIB=iconv2.lib
|
LIBICONV_LIB=iconv2.lib
|
||||||
!ifeq LIBICONV 1
|
!ifeq LIBICONV 1
|
||||||
CFLAGS_DLL+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DSDL_USE_LIBICONV
|
CFLAGS_DLL+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1
|
||||||
LIBS+= $(ICONVLIB)
|
LIBS+= $(ICONVLIB)
|
||||||
!else
|
!else
|
||||||
LIBS+= libuls.lib libconv.lib
|
LIBS+= libuls.lib libconv.lib
|
||||||
@@ -81,7 +81,7 @@ SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
|
|||||||
SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
|
SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
|
||||||
SDL_sensor.c SDL_touch.c
|
SDL_sensor.c SDL_touch.c
|
||||||
SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
|
SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
|
||||||
SRCS+= SDL_render.c yuv_rgb_sse.c yuv_rgb_std.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
|
SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
|
||||||
SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
|
SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
|
||||||
SDL_render_sw.c SDL_rotate.c SDL_triangle.c
|
SDL_render_sw.c SDL_rotate.c SDL_triangle.c
|
||||||
SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
|
SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
|
||||||
@@ -94,7 +94,7 @@ SRCS+= SDL_systimer.c
|
|||||||
SRCS+= SDL_sysloadso.c
|
SRCS+= SDL_sysloadso.c
|
||||||
SRCS+= SDL_sysfilesystem.c
|
SRCS+= SDL_sysfilesystem.c
|
||||||
SRCS+= SDL_os2joystick.c SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
|
SRCS+= SDL_os2joystick.c SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
|
||||||
SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c SDL_hidapi_steamdeck.c SDL_steam_virtual_gamepad.c
|
SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c
|
||||||
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
|
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
|
||||||
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
|
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
|
||||||
SRCS+= SDL_dummysensor.c
|
SRCS+= SDL_dummysensor.c
|
||||||
@@ -152,8 +152,6 @@ SDL_blendpoint.obj: SDL_blendpoint.c
|
|||||||
wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
|
wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
|
||||||
SDL_RLEaccel.obj: SDL_RLEaccel.c
|
SDL_RLEaccel.obj: SDL_RLEaccel.c
|
||||||
wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
|
wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
|
||||||
yuv_rgb_sse.obj: yuv_rgb_sse.c
|
|
||||||
wcc386 $(CFLAGS_DLL) -wcd=202 -fo=$^@ $<
|
|
||||||
!ifeq HIDAPI 1
|
!ifeq HIDAPI 1
|
||||||
# c99 mode needed because of structs with flexible array members in libusb.h
|
# c99 mode needed because of structs with flexible array members in libusb.h
|
||||||
SDL_hidapi.obj: SDL_hidapi.c
|
SDL_hidapi.obj: SDL_hidapi.c
|
||||||
|
15
Makefile.w32
15
Makefile.w32
@@ -1,12 +1,12 @@
|
|||||||
# Open Watcom makefile to build SDL2.dll for Win32:
|
# Open Watcom makefile to build SDL2.dll for Win32
|
||||||
# wmake -f Makefile.w32
|
# wmake -f Makefile.w32
|
||||||
#
|
#
|
||||||
# To error out upon warnings: wmake -f Makefile.w32 ENABLE_WERROR=1
|
# To error out upon warnings: wmake -f Makefile.w32 ENABLE_WERROR=1
|
||||||
|
|
||||||
LIBNAME = SDL2
|
LIBNAME = SDL2
|
||||||
MAJOR_VERSION = 2
|
MAJOR_VERSION = 2
|
||||||
MINOR_VERSION = 33
|
MINOR_VERSION = 26
|
||||||
MICRO_VERSION = 0
|
MICRO_VERSION = 3
|
||||||
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
||||||
|
|
||||||
LIBHOME = .
|
LIBHOME = .
|
||||||
@@ -60,7 +60,7 @@ SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
|
|||||||
SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
|
SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
|
||||||
SDL_sensor.c SDL_touch.c
|
SDL_sensor.c SDL_touch.c
|
||||||
SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
|
SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
|
||||||
SRCS+= SDL_render.c yuv_rgb_sse.c yuv_rgb_std.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
|
SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
|
||||||
SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
|
SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
|
||||||
SDL_render_sw.c SDL_rotate.c SDL_triangle.c
|
SDL_render_sw.c SDL_rotate.c SDL_triangle.c
|
||||||
SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
|
SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
|
||||||
@@ -73,7 +73,7 @@ SRCS+= SDL_systimer.c
|
|||||||
SRCS+= SDL_sysloadso.c
|
SRCS+= SDL_sysloadso.c
|
||||||
SRCS+= SDL_sysfilesystem.c
|
SRCS+= SDL_sysfilesystem.c
|
||||||
SRCS+= SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
|
SRCS+= SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
|
||||||
SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c SDL_hidapi_steamdeck.c
|
SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c
|
||||||
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
|
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
|
||||||
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
|
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
|
||||||
SRCS+= SDL_dummysensor.c
|
SRCS+= SDL_dummysensor.c
|
||||||
@@ -93,7 +93,7 @@ SRCS+= SDL_render_gl.c SDL_shaders_gl.c
|
|||||||
SRCS+= SDL_render_gles2.c SDL_shaders_gles2.c
|
SRCS+= SDL_render_gles2.c SDL_shaders_gles2.c
|
||||||
SRCS+= SDL_windowssensor.c
|
SRCS+= SDL_windowssensor.c
|
||||||
SRCS+= SDL_syscond_cv.c
|
SRCS+= SDL_syscond_cv.c
|
||||||
SRCS+= SDL_windowsclipboard.c SDL_windowsevents.c SDL_windowsframebuffer.c SDL_windowskeyboard.c SDL_windowsmessagebox.c SDL_windowsmodes.c SDL_windowsmouse.c SDL_windowsopengl.c SDL_windowsopengles.c SDL_windowsshape.c SDL_windowsvideo.c SDL_windowsvulkan.c SDL_windowswindow.c SDL_steam_virtual_gamepad.c
|
SRCS+= SDL_windowsclipboard.c SDL_windowsevents.c SDL_windowsframebuffer.c SDL_windowskeyboard.c SDL_windowsmessagebox.c SDL_windowsmodes.c SDL_windowsmouse.c SDL_windowsopengl.c SDL_windowsopengles.c SDL_windowsshape.c SDL_windowsvideo.c SDL_windowsvulkan.c SDL_windowswindow.c
|
||||||
|
|
||||||
SRCS+= SDL_dynapi.c
|
SRCS+= SDL_dynapi.c
|
||||||
|
|
||||||
@@ -147,9 +147,6 @@ SDL_RLEaccel.obj: SDL_RLEaccel.c
|
|||||||
SDL_malloc.obj: SDL_malloc.c
|
SDL_malloc.obj: SDL_malloc.c
|
||||||
wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
|
wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
|
||||||
|
|
||||||
yuv_rgb_sse.obj: yuv_rgb_sse.c
|
|
||||||
wcc386 $(CFLAGS_DLL) -wcd=202 -fo=$^@ $<
|
|
||||||
|
|
||||||
# SDL2libm
|
# SDL2libm
|
||||||
MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c &
|
MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c &
|
||||||
k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
|
k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
|
||||||
|
@@ -30,18 +30,6 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL2testTargets.cmake")
|
|||||||
set(SDL2_SDL2test_FOUND TRUE)
|
set(SDL2_SDL2test_FOUND TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/sdlfind.cmake")
|
|
||||||
|
|
||||||
set(SDL_ALSA @SDL_ALSA@)
|
|
||||||
set(SDL_ALSA_SHARED @SDL_ALSA_SHARED@)
|
|
||||||
if(SDL_ALSA AND NOT SDL_ALSA_SHARED AND TARGET SDL2::SDL2-static)
|
|
||||||
sdlFindALSA()
|
|
||||||
endif()
|
|
||||||
unset(SDL_ALSA)
|
|
||||||
unset(SDL_ALSA_SHARED)
|
|
||||||
|
|
||||||
|
|
||||||
check_required_components(SDL2)
|
check_required_components(SDL2)
|
||||||
|
|
||||||
# Create SDL2::SDL2 alias for static-only builds
|
# Create SDL2::SDL2 alias for static-only builds
|
||||||
@@ -74,4 +62,4 @@ if(TARGET SDL2::SDL2main)
|
|||||||
list(INSERT SDL2_STATIC_LIBRARIES 0 SDL2::SDL2main)
|
list(INSERT SDL2_STATIC_LIBRARIES 0 SDL2::SDL2main)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SDL2TEST_LIBRARY SDL2::SDL2test)
|
set(SDL2TEST_LIBRARY SDL2::SDL2test)
|
@@ -173,12 +173,6 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>$(ProjectDir)..\shaders\buildshaders.bat $(ProjectDir)..\</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Message>Building shader blobs (Xbox Series)</Message>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -207,12 +201,6 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>$(ProjectDir)..\shaders\buildshaders.bat $(ProjectDir)..\ one</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Message>Building shader blobs (Xbox One)</Message>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Desktop.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Desktop.x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -271,12 +259,6 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>$(ProjectDir)..\shaders\buildshaders.bat $(ProjectDir)..\</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Message>Building shader blobs (Xbox Series)</Message>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.XboxOne.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.XboxOne.x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -306,12 +288,6 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>$(ProjectDir)..\shaders\buildshaders.bat $(ProjectDir)..\ one</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Message>Building shader blobs (Xbox One)</Message>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\include\begin_code.h" />
|
<ClInclude Include="..\..\include\begin_code.h" />
|
||||||
@@ -436,7 +412,6 @@
|
|||||||
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.h" />
|
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_steam_virtual_gamepad.h" />
|
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\usb_ids.h" />
|
<ClInclude Include="..\..\src\joystick\usb_ids.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
||||||
@@ -499,6 +474,7 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
||||||
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
||||||
@@ -543,13 +519,7 @@
|
|||||||
<ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" />
|
<ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" />
|
||||||
<ClInclude Include="..\..\src\video\windows\wmmsg.h" />
|
<ClInclude Include="..\..\src\video\windows\wmmsg.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_common.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_internal.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx_func.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -593,7 +563,7 @@
|
|||||||
<ClCompile Include="..\..\src\events\SDL_touch.c" />
|
<ClCompile Include="..\..\src\events\SDL_touch.c" />
|
||||||
<ClCompile Include="..\..\src\events\SDL_windowevents.c" />
|
<ClCompile Include="..\..\src\events\SDL_windowevents.c" />
|
||||||
<ClCompile Include="..\..\src\file\SDL_rwops.c" />
|
<ClCompile Include="..\..\src\file\SDL_rwops.c" />
|
||||||
<ClCompile Include="..\..\src\filesystem\gdk\SDL_sysfilesystem.cpp" />
|
<ClCompile Include="..\..\src\filesystem\windows\SDL_sysfilesystem.c" />
|
||||||
<ClCompile Include="..\..\src\haptic\dummy\SDL_syshaptic.c" />
|
<ClCompile Include="..\..\src\haptic\dummy\SDL_syshaptic.c" />
|
||||||
<ClCompile Include="..\..\src\haptic\SDL_haptic.c" />
|
<ClCompile Include="..\..\src\haptic\SDL_haptic.c" />
|
||||||
<ClCompile Include="..\..\src\haptic\windows\SDL_dinputhaptic.c" />
|
<ClCompile Include="..\..\src\haptic\windows\SDL_dinputhaptic.c" />
|
||||||
@@ -631,7 +601,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_shield.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_shield.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_stadia.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_stadia.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steamdeck.c" />
|
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_wii.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_wii.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
|
||||||
@@ -639,7 +608,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_steam_virtual_gamepad.c" />
|
|
||||||
<ClCompile Include="..\..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\windows\SDL_dinputjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\windows\SDL_dinputjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\windows\SDL_rawinputjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\windows\SDL_rawinputjoystick.c" />
|
||||||
@@ -784,9 +752,7 @@
|
|||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowsvideo.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowsvideo.c" />
|
||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowsvulkan.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowsvulkan.c" />
|
||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowswindow.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowswindow.c" />
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx.c" />
|
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb.c" />
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_sse.c" />
|
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_std.c" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\main\windows\version.rc" />
|
<ResourceCompile Include="..\..\src\main\windows\version.rc" />
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
<Filter Include="filesystem">
|
<Filter Include="filesystem">
|
||||||
<UniqueIdentifier>{377061e4-3856-4f05-b916-0d3b360df0f6}</UniqueIdentifier>
|
<UniqueIdentifier>{377061e4-3856-4f05-b916-0d3b360df0f6}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="filesystem\gdk">
|
<Filter Include="filesystem\windows">
|
||||||
<UniqueIdentifier>{226a6643-1c65-4c7f-92aa-861313d974bb}</UniqueIdentifier>
|
<UniqueIdentifier>{226a6643-1c65-4c7f-92aa-861313d974bb}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="haptic">
|
<Filter Include="haptic">
|
||||||
@@ -501,9 +501,6 @@
|
|||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h">
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_steam_virtual_gamepad.h">
|
|
||||||
<Filter>joystick</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h">
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -780,6 +777,9 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
|
||||||
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -925,8 +925,8 @@
|
|||||||
<ClCompile Include="..\..\src\file\SDL_rwops.c">
|
<ClCompile Include="..\..\src\file\SDL_rwops.c">
|
||||||
<Filter>file</Filter>
|
<Filter>file</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\filesystem\gdk\SDL_sysfilesystem.cpp">
|
<ClCompile Include="..\..\src\filesystem\windows\SDL_sysfilesystem.c">
|
||||||
<Filter>filesystem\gdk</Filter>
|
<Filter>filesystem\windows</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\haptic\SDL_haptic.c">
|
<ClCompile Include="..\..\src\haptic\SDL_haptic.c">
|
||||||
<Filter>haptic</Filter>
|
<Filter>haptic</Filter>
|
||||||
@@ -943,9 +943,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_steam_virtual_gamepad.c">
|
|
||||||
<Filter>joystick</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\libm\e_atan2.c">
|
<ClCompile Include="..\..\src\libm\e_atan2.c">
|
||||||
<Filter>libm</Filter>
|
<Filter>libm</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -1084,9 +1081,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c">
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c">
|
||||||
<Filter>joystick\hidapi</Filter>
|
<Filter>joystick\hidapi</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steamdeck.c">
|
|
||||||
<Filter>joystick\hidapi</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c">
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c">
|
||||||
<Filter>joystick\hidapi</Filter>
|
<Filter>joystick\hidapi</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@@ -4,4 +4,3 @@ find . -type f \( -name '*.bmp' -o -name '*.wav' -o -name '*.dat' \) -print -del
|
|||||||
find . -depth -type d \( -name Gaming.Desktop.x64 \) -exec rm -rv {} \;
|
find . -depth -type d \( -name Gaming.Desktop.x64 \) -exec rm -rv {} \;
|
||||||
find . -depth -type d \( -name Gaming.Xbox.Scarlett.x64 \) -exec rm -rv {} \;
|
find . -depth -type d \( -name Gaming.Xbox.Scarlett.x64 \) -exec rm -rv {} \;
|
||||||
find . -depth -type d \( -name Gaming.Xbox.XboxOne.x64 \) -exec rm -rv {} \;
|
find . -depth -type d \( -name Gaming.Xbox.XboxOne.x64 \) -exec rm -rv {} \;
|
||||||
rm shaders/*.h
|
|
||||||
|
@@ -1,19 +0,0 @@
|
|||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ColorRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
"DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
"DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
"DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0)"
|
|
||||||
|
|
||||||
[RootSignature(ColorRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET0
|
|
||||||
{
|
|
||||||
return input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.5960};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.3918, -0.8130};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.0172, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.7927};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.2132, -0.5329};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.1124, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {0.0, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.0000, 0.0000, 1.4020};
|
|
||||||
const float3 Gcoeff = {1.0000, -0.3441, -0.7141};
|
|
||||||
const float3 Bcoeff = {1.0000, 1.7720, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.5960};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.3918, -0.8130};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.0172, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.7927};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.2132, -0.5329};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.1124, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,43 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureUV : register(t1);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {0.0, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.0000, 0.0000, 1.4020};
|
|
||||||
const float3 Gcoeff = {1.0000, -0.3441, -0.7141};
|
|
||||||
const float3 Bcoeff = {1.0000, 1.7720, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,24 +0,0 @@
|
|||||||
Texture2D theTexture : register(t0);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define TextureRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(TextureRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
return theTexture.Sample(theSampler, input.tex) * input.color;
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureU : register(t1);
|
|
||||||
Texture2D theTextureV : register(t2);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define YUVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(YUVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.5960};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.3918, -0.8130};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.0172, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.y = theTextureU.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.z = theTextureV.Sample(theSampler, input.tex).r;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureU : register(t1);
|
|
||||||
Texture2D theTextureV : register(t2);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define YUVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(YUVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {-0.0627451017, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.1644, 0.0000, 1.7927};
|
|
||||||
const float3 Gcoeff = {1.1644, -0.2132, -0.5329};
|
|
||||||
const float3 Bcoeff = {1.1644, 2.1124, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.y = theTextureU.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.z = theTextureV.Sample(theSampler, input.tex).r;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
Texture2D theTextureY : register(t0);
|
|
||||||
Texture2D theTextureU : register(t1);
|
|
||||||
Texture2D theTextureV : register(t2);
|
|
||||||
SamplerState theSampler : register(s0);
|
|
||||||
|
|
||||||
struct PixelShaderInput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define YUVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(YUVRS)]
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
|
||||||
{
|
|
||||||
const float3 offset = {0.0, -0.501960814, -0.501960814};
|
|
||||||
const float3 Rcoeff = {1.0000, 0.0000, 1.4020};
|
|
||||||
const float3 Gcoeff = {1.0000, -0.3441, -0.7141};
|
|
||||||
const float3 Bcoeff = {1.0000, 1.7720, 0.0000};
|
|
||||||
|
|
||||||
float4 Output;
|
|
||||||
|
|
||||||
float3 yuv;
|
|
||||||
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.y = theTextureU.Sample(theSampler, input.tex).r;
|
|
||||||
yuv.z = theTextureV.Sample(theSampler, input.tex).r;
|
|
||||||
|
|
||||||
yuv += offset;
|
|
||||||
Output.r = dot(yuv, Rcoeff);
|
|
||||||
Output.g = dot(yuv, Gcoeff);
|
|
||||||
Output.b = dot(yuv, Bcoeff);
|
|
||||||
Output.a = 1.0f;
|
|
||||||
|
|
||||||
return Output * input.color;
|
|
||||||
}
|
|
@@ -1,95 +0,0 @@
|
|||||||
#pragma pack_matrix( row_major )
|
|
||||||
|
|
||||||
struct VertexShaderConstants
|
|
||||||
{
|
|
||||||
matrix model;
|
|
||||||
matrix projectionAndView;
|
|
||||||
};
|
|
||||||
ConstantBuffer<VertexShaderConstants> Constants : register(b0);
|
|
||||||
|
|
||||||
struct VertexShaderInput
|
|
||||||
{
|
|
||||||
float3 pos : POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexShaderOutput
|
|
||||||
{
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 tex : TEXCOORD0;
|
|
||||||
float4 color : COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ColorRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
"DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
"DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
"DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0)"
|
|
||||||
|
|
||||||
#define TextureRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
#define YUVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
#define NVRS \
|
|
||||||
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
|
|
||||||
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
|
|
||||||
" DENY_HULL_SHADER_ROOT_ACCESS )," \
|
|
||||||
"RootConstants(num32BitConstants=32, b0),"\
|
|
||||||
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
|
|
||||||
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
|
|
||||||
|
|
||||||
[RootSignature(ColorRS)]
|
|
||||||
VertexShaderOutput mainColor(VertexShaderInput input)
|
|
||||||
{
|
|
||||||
VertexShaderOutput output;
|
|
||||||
float4 pos = float4(input.pos, 1.0f);
|
|
||||||
|
|
||||||
// Transform the vertex position into projected space.
|
|
||||||
pos = mul(pos, Constants.model);
|
|
||||||
pos = mul(pos, Constants.projectionAndView);
|
|
||||||
output.pos = pos;
|
|
||||||
|
|
||||||
// Pass through texture coordinates and color values without transformation
|
|
||||||
output.tex = input.tex;
|
|
||||||
output.color = input.color;
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
[RootSignature(TextureRS)]
|
|
||||||
VertexShaderOutput mainTexture(VertexShaderInput input)
|
|
||||||
{
|
|
||||||
return mainColor(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
[RootSignature(YUVRS)]
|
|
||||||
VertexShaderOutput mainYUV(VertexShaderInput input)
|
|
||||||
{
|
|
||||||
return mainColor(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
[RootSignature(NVRS)]
|
|
||||||
VertexShaderOutput mainNV(VertexShaderInput input)
|
|
||||||
{
|
|
||||||
return mainColor(input);
|
|
||||||
}
|
|
@@ -1,35 +0,0 @@
|
|||||||
if %2.==one. goto setxboxone
|
|
||||||
rem Xbox Series compile
|
|
||||||
set XBOXDXC="%GameDKLatest%\GXDK\bin\Scarlett\DXC.exe"
|
|
||||||
set SUFFIX=_Series.h
|
|
||||||
goto startbuild
|
|
||||||
|
|
||||||
:setxboxone
|
|
||||||
set XBOXDXC="%GameDKLatest%\GXDK\bin\XboxOne\DXC.exe"
|
|
||||||
set SUFFIX=_One.h
|
|
||||||
|
|
||||||
:startbuild
|
|
||||||
echo Building with %XBOXDXC%
|
|
||||||
cd "%1\shaders"
|
|
||||||
rem Root Signatures
|
|
||||||
%XBOXDXC% -E ColorRS -T rootsig_1_1 -rootsig-define ColorRS -Fh D3D12_RootSig_Color%SUFFIX% -Vn D3D12_RootSig_Color D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E TextureRS -T rootsig_1_1 -rootsig-define TextureRS -Fh D3D12_RootSig_Texture%SUFFIX% -Vn D3D12_RootSig_Texture D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E YUVRS -T rootsig_1_1 -rootsig-define YUVRS -Fh D3D12_RootSig_YUV%SUFFIX% -Vn D3D12_RootSig_YUV D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E NVRS -T rootsig_1_1 -rootsig-define NVRS -Fh D3D12_RootSig_NV%SUFFIX% -Vn D3D12_RootSig_NV D3D12_VertexShader.hlsl
|
|
||||||
rem Vertex Shaders
|
|
||||||
%XBOXDXC% -E mainColor -T vs_6_0 -Fh D3D12_VertexShader_Color%SUFFIX% -Vn D3D12_VertexShader_Color D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E mainTexture -T vs_6_0 -Fh D3D12_VertexShader_Texture%SUFFIX% -Vn D3D12_VertexShader_Texture D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E mainNV -T vs_6_0 -Fh D3D12_VertexShader_NV%SUFFIX% -Vn D3D12_VertexShader_NV D3D12_VertexShader.hlsl
|
|
||||||
%XBOXDXC% -E mainYUV -T vs_6_0 -Fh D3D12_VertexShader_YUV%SUFFIX% -Vn D3D12_VertexShader_YUV D3D12_VertexShader.hlsl
|
|
||||||
rem Pixel Shaders
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_Colors%SUFFIX% -Vn D3D12_PixelShader_Colors D3D12_PixelShader_Colors.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV12_BT601%SUFFIX% -Vn D3D12_PixelShader_NV12_BT601 D3D12_PixelShader_NV12_BT601.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV12_BT709%SUFFIX% -Vn D3D12_PixelShader_NV12_BT709 D3D12_PixelShader_NV12_BT709.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV12_JPEG%SUFFIX% -Vn D3D12_PixelShader_NV12_JPEG D3D12_PixelShader_NV12_JPEG.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV21_BT601%SUFFIX% -Vn D3D12_PixelShader_NV21_BT601 D3D12_PixelShader_NV21_BT601.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV21_BT709%SUFFIX% -Vn D3D12_PixelShader_NV21_BT709 D3D12_PixelShader_NV21_BT709.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_NV21_JPEG%SUFFIX% -Vn D3D12_PixelShader_NV21_JPEG D3D12_PixelShader_NV21_JPEG.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_Textures%SUFFIX% -Vn D3D12_PixelShader_Textures D3D12_PixelShader_Textures.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_YUV_BT601%SUFFIX% -Vn D3D12_PixelShader_YUV_BT601 D3D12_PixelShader_YUV_BT601.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_YUV_BT709%SUFFIX% -Vn D3D12_PixelShader_YUV_BT709 D3D12_PixelShader_YUV_BT709.hlsl
|
|
||||||
%XBOXDXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_YUV_JPEG%SUFFIX% -Vn D3D12_PixelShader_YUV_JPEG D3D12_PixelShader_YUV_JPEG.hlsl
|
|
@@ -139,7 +139,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.Scarlett.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.Scarlett.x64'">
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">
|
||||||
@@ -409,7 +409,7 @@
|
|||||||
<CopyFileToFolders Include="..\..\logos\Logo480x480.png" />
|
<CopyFileToFolders Include="..\..\logos\Logo480x480.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
||||||
<Filter>logos</Filter>
|
<Filter>logos</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<Filter>wingdk</Filter>
|
<Filter>wingdk</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="wingdk\MicrosoftGame.config">
|
<CopyFileToFolders Include="wingdk\MicrosoftGame.config">
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
@@ -239,17 +239,17 @@ LoadSprite(const char *file)
|
|||||||
/* This does the SDL_LoadBMP step repeatedly, but that's OK for test code. */
|
/* This does the SDL_LoadBMP step repeatedly, but that's OK for test code. */
|
||||||
sprites[i] = LoadTexture(state->renderers[i], file, SDL_TRUE, &sprite_w, &sprite_h);
|
sprites[i] = LoadTexture(state->renderers[i], file, SDL_TRUE, &sprite_w, &sprite_h);
|
||||||
if (!sprites[i]) {
|
if (!sprites[i]) {
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
||||||
SDL_DestroyTexture(sprites[i]);
|
SDL_DestroyTexture(sprites[i]);
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
/* We're ready to roll. :) */
|
||||||
return 0;
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -364,9 +364,8 @@ loop()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
for (i = 0; i < state->num_windows; ++i) {
|
for (i = 0; i < state->num_windows; ++i) {
|
||||||
if (state->windows[i] == NULL) {
|
if (state->windows[i] == NULL)
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
DrawSprites(state->renderers[i], sprites[i]);
|
DrawSprites(state->renderers[i], sprites[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -461,7 +460,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
soundname = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
soundname = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
||||||
|
|
||||||
if (!soundname) {
|
if (soundname == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError());
|
||||||
quit(1);
|
quit(1);
|
||||||
}
|
}
|
||||||
|
@@ -139,7 +139,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>
|
<Command>
|
||||||
@@ -223,7 +223,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>
|
<Command>
|
||||||
@@ -352,7 +352,7 @@ copy "%(FullPath)" "$(OutDir)\"</Command>
|
|||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
||||||
<Filter>logos</Filter>
|
<Filter>logos</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<Filter>wingdk</Filter>
|
<Filter>wingdk</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="wingdk\MicrosoftGame.config">
|
<CopyFileToFolders Include="wingdk\MicrosoftGame.config">
|
||||||
|
@@ -139,7 +139,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>
|
<Command>
|
||||||
@@ -223,7 +223,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>
|
<Command>
|
||||||
@@ -352,7 +352,7 @@ copy "%(FullPath)" "$(OutDir)\"</Command>
|
|||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
<CopyFileToFolders Include="..\..\logos\Logo480x480.png">
|
||||||
<Filter>logos</Filter>
|
<Filter>logos</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
||||||
<Filter>wingdk</Filter>
|
<Filter>wingdk</Filter>
|
||||||
</CopyFileToFolders>
|
</CopyFileToFolders>
|
||||||
<CopyFileToFolders Include="xboxseries\MicrosoftGame.config">
|
<CopyFileToFolders Include="xboxseries\MicrosoftGame.config">
|
||||||
|
@@ -125,7 +125,6 @@
|
|||||||
<ClInclude Include="..\src\joystick\controller_type.h" />
|
<ClInclude Include="..\src\joystick\controller_type.h" />
|
||||||
<ClInclude Include="..\src\joystick\SDL_gamecontrollerdb.h" />
|
<ClInclude Include="..\src\joystick\SDL_gamecontrollerdb.h" />
|
||||||
<ClInclude Include="..\src\joystick\SDL_joystick_c.h" />
|
<ClInclude Include="..\src\joystick\SDL_joystick_c.h" />
|
||||||
<ClInclude Include="..\src\joystick\SDL_steam_virtual_gamepad.h" />
|
|
||||||
<ClInclude Include="..\src\joystick\SDL_sysjoystick.h" />
|
<ClInclude Include="..\src\joystick\SDL_sysjoystick.h" />
|
||||||
<ClInclude Include="..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
<ClInclude Include="..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
||||||
<ClInclude Include="..\src\joystick\windows\SDL_dinputjoystick_c.h" />
|
<ClInclude Include="..\src\joystick\windows\SDL_dinputjoystick_c.h" />
|
||||||
@@ -185,14 +184,6 @@
|
|||||||
<ClInclude Include="..\src\video\winrt\SDL_winrtopengles.h" />
|
<ClInclude Include="..\src\video\winrt\SDL_winrtopengles.h" />
|
||||||
<ClInclude Include="..\src\video\winrt\SDL_winrtvideo_cpp.h" />
|
<ClInclude Include="..\src\video\winrt\SDL_winrtvideo_cpp.h" />
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb.h" />
|
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb.h" />
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_common.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_internal.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_lsx.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_lsx_func.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_sse.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_std.h" />
|
|
||||||
<ClInclude Include="..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\src\atomic\SDL_atomic.c" />
|
<ClCompile Include="..\src\atomic\SDL_atomic.c" />
|
||||||
@@ -246,7 +237,6 @@
|
|||||||
<ClCompile Include="..\src\joystick\controller_type.c" />
|
<ClCompile Include="..\src\joystick\controller_type.c" />
|
||||||
<ClCompile Include="..\src\joystick\SDL_gamecontroller.c" />
|
<ClCompile Include="..\src\joystick\SDL_gamecontroller.c" />
|
||||||
<ClCompile Include="..\src\joystick\SDL_joystick.c" />
|
<ClCompile Include="..\src\joystick\SDL_joystick.c" />
|
||||||
<ClCompile Include="..\src\joystick\SDL_steam_virtual_gamepad.c" />
|
|
||||||
<ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
<ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
||||||
<ClCompile Include="..\src\joystick\windows\SDL_dinputjoystick.c" />
|
<ClCompile Include="..\src\joystick\windows\SDL_dinputjoystick.c" />
|
||||||
<ClCompile Include="..\src\joystick\windows\SDL_windowsjoystick.c" />
|
<ClCompile Include="..\src\joystick\windows\SDL_windowsjoystick.c" />
|
||||||
@@ -354,9 +344,7 @@
|
|||||||
<ClCompile Include="..\src\video\winrt\SDL_winrtvideo.cpp">
|
<ClCompile Include="..\src\video\winrt\SDL_winrtvideo.cpp">
|
||||||
<CompileAsWinRT>true</CompileAsWinRT>
|
<CompileAsWinRT>true</CompileAsWinRT>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\video\yuv2rgb\yuv_rgb_lsx.c" />
|
<ClCompile Include="..\src\video\yuv2rgb\yuv_rgb.c" />
|
||||||
<ClCompile Include="..\src\video\yuv2rgb\yuv_rgb_sse.c" />
|
|
||||||
<ClCompile Include="..\src\video\yuv2rgb\yuv_rgb_std.c" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{89e9b32e-a86a-47c3-a948-d2b1622925ce}</ProjectGuid>
|
<ProjectGuid>{89e9b32e-a86a-47c3-a948-d2b1622925ce}</ProjectGuid>
|
||||||
@@ -371,7 +359,6 @@
|
|||||||
<TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
|
<TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
|
||||||
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
|
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
|
||||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
<WindowsTargetPlatformMinVersion>10.0.0.0</WindowsTargetPlatformMinVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
@@ -392,7 +379,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
@@ -604,4 +591,4 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@@ -255,9 +255,6 @@
|
|||||||
<ClInclude Include="..\src\joystick\SDL_joystick_c.h">
|
<ClInclude Include="..\src\joystick\SDL_joystick_c.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\src\joystick\SDL_steam_virtual_gamepad.h">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\src\joystick\SDL_sysjoystick.h">
|
<ClInclude Include="..\src\joystick\SDL_sysjoystick.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -561,9 +558,6 @@
|
|||||||
<ClCompile Include="..\src\joystick\SDL_joystick.c">
|
<ClCompile Include="..\src\joystick\SDL_joystick.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\joystick\SDL_steam_virtual_gamepad.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c">
|
<ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -852,4 +846,4 @@
|
|||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@@ -44,6 +44,22 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||||
@@ -121,7 +137,6 @@
|
|||||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||||
<OmitDefaultLibName>true</OmitDefaultLibName>
|
<OmitDefaultLibName>true</OmitDefaultLibName>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
@@ -320,7 +335,6 @@
|
|||||||
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.h" />
|
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_steam_virtual_gamepad.h" />
|
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\usb_ids.h" />
|
<ClInclude Include="..\..\src\joystick\usb_ids.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
|
||||||
@@ -378,6 +392,7 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
||||||
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
||||||
@@ -422,13 +437,7 @@
|
|||||||
<ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" />
|
<ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" />
|
||||||
<ClInclude Include="..\..\src\video\windows\wmmsg.h" />
|
<ClInclude Include="..\..\src\video\windows\wmmsg.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_common.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_internal.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx_func.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std.h" />
|
|
||||||
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
|
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -483,7 +492,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_shield.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_shield.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_stadia.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_stadia.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steamdeck.c" />
|
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_wii.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_wii.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
|
||||||
@@ -491,7 +499,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_steam_virtual_gamepad.c" />
|
|
||||||
<ClCompile Include="..\..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\virtual\SDL_virtualjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\windows\SDL_dinputjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\windows\SDL_dinputjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\windows\SDL_rawinputjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\windows\SDL_rawinputjoystick.c" />
|
||||||
@@ -613,9 +620,7 @@
|
|||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowsvideo.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowsvideo.c" />
|
||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowsvulkan.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowsvulkan.c" />
|
||||||
<ClCompile Include="..\..\src\video\windows\SDL_windowswindow.c" />
|
<ClCompile Include="..\..\src\video\windows\SDL_windowswindow.c" />
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_lsx.c" />
|
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb.c" />
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_sse.c" />
|
|
||||||
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_std.c" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\main\windows\version.rc" />
|
<ResourceCompile Include="..\..\src\main\windows\version.rc" />
|
||||||
|
@@ -501,9 +501,6 @@
|
|||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h">
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_steam_virtual_gamepad.h">
|
|
||||||
<Filter>joystick</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h">
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -780,6 +777,9 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
|
||||||
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -934,9 +934,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
||||||
<Filter>joystick</Filter>
|
<Filter>joystick</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_steam_virtual_gamepad.c">
|
|
||||||
<Filter>joystick</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\libm\e_atan2.c">
|
<ClCompile Include="..\..\src\libm\e_atan2.c">
|
||||||
<Filter>libm</Filter>
|
<Filter>libm</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -1075,9 +1072,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c">
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steam.c">
|
||||||
<Filter>joystick\hidapi</Filter>
|
<Filter>joystick\hidapi</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_steamdeck.c">
|
|
||||||
<Filter>joystick\hidapi</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c">
|
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_switch.c">
|
||||||
<Filter>joystick\hidapi</Filter>
|
<Filter>joystick\hidapi</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
# SDL2 CMake configuration file:
|
# SDL2 CMake configuration file:
|
||||||
# This file is meant to be placed in a cmake subfolder of SDL2-devel-2.x.y-VC
|
# This file is meant to be placed in a cmake subfolder of SDL2-devel-2.x.y-VC
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.0...3.28)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
set_package_properties(SDL2 PROPERTIES
|
set_package_properties(SDL2 PROPERTIES
|
||||||
@@ -68,8 +68,6 @@ if(EXISTS "${_sdl2_library}" AND EXISTS "${_sdl2_dll_library}")
|
|||||||
IMPORTED_LOCATION "${_sdl2_dll_library}"
|
IMPORTED_LOCATION "${_sdl2_dll_library}"
|
||||||
COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED"
|
COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED"
|
||||||
INTERFACE_SDL2_SHARED "ON"
|
INTERFACE_SDL2_SHARED "ON"
|
||||||
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
|
||||||
INTERFACE_SDL_VERSION "SDL2"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
set(SDL2_SDL2_FOUND TRUE)
|
set(SDL2_SDL2_FOUND TRUE)
|
||||||
@@ -79,8 +77,6 @@ endif()
|
|||||||
unset(_sdl2_library)
|
unset(_sdl2_library)
|
||||||
unset(_sdl2_dll_library)
|
unset(_sdl2_dll_library)
|
||||||
|
|
||||||
set(SDL2_SDL2-static_FOUND FALSE)
|
|
||||||
|
|
||||||
set(_sdl2main_library "${SDL2_LIBDIR}/SDL2main.lib")
|
set(_sdl2main_library "${SDL2_LIBDIR}/SDL2main.lib")
|
||||||
if(EXISTS "${_sdl2main_library}")
|
if(EXISTS "${_sdl2main_library}")
|
||||||
if(NOT TARGET SDL2::SDL2main)
|
if(NOT TARGET SDL2::SDL2main)
|
||||||
@@ -88,13 +84,11 @@ if(EXISTS "${_sdl2main_library}")
|
|||||||
set_target_properties(SDL2::SDL2main
|
set_target_properties(SDL2::SDL2main
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
IMPORTED_LOCATION "${_sdl2main_library}"
|
IMPORTED_LOCATION "${_sdl2main_library}"
|
||||||
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
|
||||||
INTERFACE_SDL_VERSION "SDL2"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
set(SDL2_SDL2main_FOUND TRUE)
|
set(SDL2_SDL2main_FOUND TRUE)
|
||||||
else()
|
else()
|
||||||
set(SDL2_SDL2main_FOUND FALSE)
|
set(SDL2_SDL2_FOUND FALSE)
|
||||||
endif()
|
endif()
|
||||||
unset(_sdl2main_library)
|
unset(_sdl2main_library)
|
||||||
|
|
||||||
@@ -106,13 +100,11 @@ if(EXISTS "${_sdl2test_library}")
|
|||||||
PROPERTIES
|
PROPERTIES
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
|
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
|
||||||
IMPORTED_LOCATION "${_sdl2test_library}"
|
IMPORTED_LOCATION "${_sdl2test_library}"
|
||||||
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
|
||||||
INTERFACE_SDL_VERSION "SDL2"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
set(SDL2_SDL2test_FOUND TRUE)
|
set(SDL2_SDL2test_FOUND TRUE)
|
||||||
else()
|
else()
|
||||||
set(SDL2_SDL2test_FOUND FALSE)
|
set(SDL2_SDL2_FOUND FALSE)
|
||||||
endif()
|
endif()
|
||||||
unset(_sdl2test_library)
|
unset(_sdl2test_library)
|
||||||
|
|
||||||
|
@@ -188,12 +188,6 @@
|
|||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\..\SDLtest\SDLtest.vcxproj">
|
|
||||||
<Project>{da956fd3-e143-46f2-9fe5-c77bebc56b1a}</Project>
|
|
||||||
<Private>false</Private>
|
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
||||||
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
|
@@ -210,7 +210,6 @@
|
|||||||
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
|
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_joystick.c" />
|
<ClCompile Include="..\..\..\test\testautomation_joystick.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
|
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_log.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\testautomation_main.c" />
|
<ClCompile Include="..\..\..\test\testautomation_main.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_math.c" />
|
<ClCompile Include="..\..\..\test\testautomation_math.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_mouse.c" />
|
<ClCompile Include="..\..\..\test\testautomation_mouse.c" />
|
||||||
@@ -225,7 +224,6 @@
|
|||||||
<ClCompile Include="..\..\..\test\testautomation_syswm.c" />
|
<ClCompile Include="..\..\..\test\testautomation_syswm.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_timer.c" />
|
<ClCompile Include="..\..\..\test\testautomation_timer.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_video.c" />
|
<ClCompile Include="..\..\..\test\testautomation_video.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_subsystems.c" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\test\testautomation_suites.h" />
|
<ClInclude Include="..\..\..\test\testautomation_suites.h" />
|
||||||
@@ -233,4 +231,4 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@@ -216,12 +216,6 @@
|
|||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\..\SDLtest\SDLtest.vcxproj">
|
|
||||||
<Project>{da956fd3-e143-46f2-9fe5-c77bebc56b1a}</Project>
|
|
||||||
<Private>false</Private>
|
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
||||||
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
|
@@ -188,12 +188,6 @@
|
|||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\..\SDLtest\SDLtest.vcxproj">
|
|
||||||
<Project>{da956fd3-e143-46f2-9fe5-c77bebc56b1a}</Project>
|
|
||||||
<Private>false</Private>
|
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
||||||
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
|
@@ -194,12 +194,6 @@
|
|||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\..\SDLtest\SDLtest.vcxproj">
|
|
||||||
<Project>{da956fd3-e143-46f2-9fe5-c77bebc56b1a}</Project>
|
|
||||||
<Private>false</Private>
|
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
||||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
|
||||||
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
|
46
WhatsNew.txt
46
WhatsNew.txt
@@ -1,42 +1,6 @@
|
|||||||
|
|
||||||
This is a list of major changes in SDL's version history.
|
This is a list of major changes in SDL's version history.
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
2.30.0:
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
General:
|
|
||||||
* Added support for 2 bits-per-pixel indexed surface formats
|
|
||||||
* Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available
|
|
||||||
* Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller.
|
|
||||||
* Added the environment variable SDL_LOGGING to control default log output
|
|
||||||
|
|
||||||
macOS:
|
|
||||||
* Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used
|
|
||||||
* Added the hint SDL_HINT_JOYSTICK_MFI to control whether the GCController controller driver should be used
|
|
||||||
* Added the hint SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE to choose whether high or low power GPU should be used for rendering, in the case where there are multiple GPUs available
|
|
||||||
|
|
||||||
Xbox:
|
|
||||||
* Added the function SDL_GDKGetDefaultUser()
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
2.28.2:
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
General:
|
|
||||||
* Added the hint SDL_HINT_JOYSTICK_WGI to control whether to use Windows.Gaming.Input for controllers
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
2.28.0:
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
General:
|
|
||||||
* Added SDL_HasWindowSurface() and SDL_DestroyWindowSurface() to switch between the window surface and rendering APIs
|
|
||||||
* Added a display event SDL_DISPLAYEVENT_MOVED which is sent when the primary monitor changes or displays change position relative to each other
|
|
||||||
* Added the hint SDL_HINT_ENABLE_SCREEN_KEYBOARD to control whether the on-screen keyboard should be shown when text input is active
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
2.26.0:
|
2.26.0:
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
@@ -60,7 +24,7 @@ General:
|
|||||||
* Added access to the individual left and right gyro sensors of the combined Joy-Cons controller
|
* Added access to the individual left and right gyro sensors of the combined Joy-Cons controller
|
||||||
* Added a microsecond timestamp to SDL_SensorEvent and SDL_ControllerSensorEvent, when the hardware provides that information
|
* Added a microsecond timestamp to SDL_SensorEvent and SDL_ControllerSensorEvent, when the hardware provides that information
|
||||||
* Added SDL_SensorGetDataWithTimestamp() and SDL_GameControllerGetSensorDataWithTimestamp() to retrieve the last sensor data with the associated microsecond timestamp
|
* Added SDL_SensorGetDataWithTimestamp() and SDL_GameControllerGetSensorDataWithTimestamp() to retrieve the last sensor data with the associated microsecond timestamp
|
||||||
* Added the hint SDL_HINT_HIDAPI_IGNORE_DEVICES to have the SDL HID API ignore specific devices
|
* Added the hint SDL_HINT_HIDAPI_IGNORE_DEVICES to have the SDL HID API ignore specific devices
|
||||||
* SDL_GetRevision() now includes more information about the SDL build, including the git commit hash if available
|
* SDL_GetRevision() now includes more information about the SDL build, including the git commit hash if available
|
||||||
|
|
||||||
Windows:
|
Windows:
|
||||||
@@ -681,7 +645,7 @@ iOS:
|
|||||||
|
|
||||||
tvOS:
|
tvOS:
|
||||||
* Added support for Apple TV
|
* Added support for Apple TV
|
||||||
* Added a hint SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION to control whether he Apple TV remote's joystick axes will automatically match the rotation of the remote.
|
* Added a hint SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION to control whether he Apple TV remote's joystick axes will automatically match the rotation of the remote.
|
||||||
|
|
||||||
Android:
|
Android:
|
||||||
* Fixed SDL not resizing window when Android screen resolution changes
|
* Fixed SDL not resizing window when Android screen resolution changes
|
||||||
@@ -826,8 +790,8 @@ Linux:
|
|||||||
* Added experimental Wayland and Mir support, disabled by default
|
* Added experimental Wayland and Mir support, disabled by default
|
||||||
|
|
||||||
Android:
|
Android:
|
||||||
* Joystick support (minimum SDK version required to build SDL is now 12,
|
* Joystick support (minimum SDK version required to build SDL is now 12,
|
||||||
the required runtime version remains at 10, but on such devices joystick
|
the required runtime version remains at 10, but on such devices joystick
|
||||||
support won't be available).
|
support won't be available).
|
||||||
* Hotplugging support for joysticks
|
* Hotplugging support for joysticks
|
||||||
* Added a hint SDL_HINT_ACCELEROMETER_AS_JOYSTICK to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default.
|
* Added a hint SDL_HINT_ACCELEROMETER_AS_JOYSTICK to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default.
|
||||||
@@ -880,7 +844,7 @@ iOS:
|
|||||||
|
|
||||||
Android:
|
Android:
|
||||||
IMPORTANT: You MUST get the updated SDLActivity.java to match C code
|
IMPORTANT: You MUST get the updated SDLActivity.java to match C code
|
||||||
* Moved EGL initialization to native code
|
* Moved EGL initialization to native code
|
||||||
* Fixed the accelerometer axis rotation relative to the device rotation
|
* Fixed the accelerometer axis rotation relative to the device rotation
|
||||||
* Fixed race conditions when handling the EGL context on pause/resume
|
* Fixed race conditions when handling the EGL context on pause/resume
|
||||||
* Touch devices are available for enumeration immediately after init
|
* Touch devices are available for enumeration immediately after init
|
||||||
|
@@ -118,7 +118,7 @@ initializeTextures(SDL_Renderer *renderer)
|
|||||||
|
|
||||||
/* load the ship */
|
/* load the ship */
|
||||||
bmp_surface = SDL_LoadBMP("ship.bmp");
|
bmp_surface = SDL_LoadBMP("ship.bmp");
|
||||||
if (!bmp_surface) {
|
if (bmp_surface == NULL) {
|
||||||
fatalError("could not ship.bmp");
|
fatalError("could not ship.bmp");
|
||||||
}
|
}
|
||||||
/* set blue to transparent on the ship */
|
/* set blue to transparent on the ship */
|
||||||
@@ -140,7 +140,7 @@ initializeTextures(SDL_Renderer *renderer)
|
|||||||
|
|
||||||
/* load the space background */
|
/* load the space background */
|
||||||
bmp_surface = SDL_LoadBMP("space.bmp");
|
bmp_surface = SDL_LoadBMP("space.bmp");
|
||||||
if (!bmp_surface) {
|
if (bmp_surface == NULL) {
|
||||||
fatalError("could not load space.bmp");
|
fatalError("could not load space.bmp");
|
||||||
}
|
}
|
||||||
/* create space texture from surface */
|
/* create space texture from surface */
|
||||||
@@ -179,7 +179,7 @@ main(int argc, char *argv[])
|
|||||||
printf("There are %d joysticks available\n", SDL_NumJoysticks());
|
printf("There are %d joysticks available\n", SDL_NumJoysticks());
|
||||||
printf("Default joystick (index 0) is %s\n", SDL_JoystickName(0));
|
printf("Default joystick (index 0) is %s\n", SDL_JoystickName(0));
|
||||||
accelerometer = SDL_JoystickOpen(0);
|
accelerometer = SDL_JoystickOpen(0);
|
||||||
if (!accelerometer) {
|
if (accelerometer == NULL) {
|
||||||
fatalError("Could not open joystick (accelerometer)");
|
fatalError("Could not open joystick (accelerometer)");
|
||||||
}
|
}
|
||||||
printf("joystick number of axis = %d\n",
|
printf("joystick number of axis = %d\n",
|
||||||
|
@@ -52,9 +52,9 @@ void spawnTrailFromEmitter(struct particle *emitter);
|
|||||||
void spawnEmitterParticle(GLfloat x, GLfloat y);
|
void spawnEmitterParticle(GLfloat x, GLfloat y);
|
||||||
void explodeEmitter(struct particle *emitter);
|
void explodeEmitter(struct particle *emitter);
|
||||||
void initializeParticles(void);
|
void initializeParticles(void);
|
||||||
void initializeTexture(void);
|
void initializeTexture();
|
||||||
int nextPowerOfTwo(int x);
|
int nextPowerOfTwo(int x);
|
||||||
void drawParticles(void);
|
void drawParticles();
|
||||||
void stepParticles(double deltaTime);
|
void stepParticles(double deltaTime);
|
||||||
|
|
||||||
/* helper function (used in texture loading)
|
/* helper function (used in texture loading)
|
||||||
@@ -84,16 +84,14 @@ stepParticles(double deltaTime)
|
|||||||
/* is the particle actually active, or is it marked for deletion? */
|
/* is the particle actually active, or is it marked for deletion? */
|
||||||
if (curr->isActive) {
|
if (curr->isActive) {
|
||||||
/* is the particle off the screen? */
|
/* is the particle off the screen? */
|
||||||
if (curr->y > screen_h) {
|
if (curr->y > screen_h)
|
||||||
curr->isActive = 0;
|
curr->isActive = 0;
|
||||||
} else if (curr->y < 0) {
|
else if (curr->y < 0)
|
||||||
curr->isActive = 0;
|
curr->isActive = 0;
|
||||||
}
|
if (curr->x > screen_w)
|
||||||
if (curr->x > screen_w) {
|
|
||||||
curr->isActive = 0;
|
curr->isActive = 0;
|
||||||
} else if (curr->x < 0) {
|
else if (curr->x < 0)
|
||||||
curr->isActive = 0;
|
curr->isActive = 0;
|
||||||
}
|
|
||||||
|
|
||||||
/* step velocity, then step position */
|
/* step velocity, then step position */
|
||||||
curr->yvel += ACCEL * deltaMilliseconds;
|
curr->yvel += ACCEL * deltaMilliseconds;
|
||||||
@@ -135,17 +133,15 @@ stepParticles(double deltaTime)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if we're a dust particle, shrink our size */
|
/* if we're a dust particle, shrink our size */
|
||||||
if (curr->type == dust) {
|
if (curr->type == dust)
|
||||||
curr->size -= deltaMilliseconds * 0.010f;
|
curr->size -= deltaMilliseconds * 0.010f;
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we're still active, pack ourselves in the array next
|
/* if we're still active, pack ourselves in the array next
|
||||||
to the last active guy (pack the array tightly) */
|
to the last active guy (pack the array tightly) */
|
||||||
if (curr->isActive) {
|
if (curr->isActive)
|
||||||
*(slot++) = *curr;
|
*(slot++) = *curr;
|
||||||
}
|
|
||||||
} /* endif (curr->isActive) */
|
} /* endif (curr->isActive) */
|
||||||
curr++;
|
curr++;
|
||||||
}
|
}
|
||||||
@@ -159,7 +155,7 @@ stepParticles(double deltaTime)
|
|||||||
This draws all the particles shown on screen
|
This draws all the particles shown on screen
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
drawParticles(void)
|
drawParticles()
|
||||||
{
|
{
|
||||||
|
|
||||||
/* draw the background */
|
/* draw the background */
|
||||||
@@ -192,9 +188,8 @@ explodeEmitter(struct particle *emitter)
|
|||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 200; i++) {
|
for (i = 0; i < 200; i++) {
|
||||||
|
|
||||||
if (num_active_particles >= MAX_PARTICLES) {
|
if (num_active_particles >= MAX_PARTICLES)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
/* come up with a random angle and speed for new particle */
|
/* come up with a random angle and speed for new particle */
|
||||||
float theta = randomFloat(0, 2.0f * 3.141592);
|
float theta = randomFloat(0, 2.0f * 3.141592);
|
||||||
@@ -231,9 +226,8 @@ void
|
|||||||
spawnTrailFromEmitter(struct particle *emitter)
|
spawnTrailFromEmitter(struct particle *emitter)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (num_active_particles >= MAX_PARTICLES) {
|
if (num_active_particles >= MAX_PARTICLES)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
/* select the particle at the slot at the end of our array */
|
/* select the particle at the slot at the end of our array */
|
||||||
struct particle *p = &particles[num_active_particles];
|
struct particle *p = &particles[num_active_particles];
|
||||||
@@ -268,9 +262,8 @@ void
|
|||||||
spawnEmitterParticle(GLfloat x, GLfloat y)
|
spawnEmitterParticle(GLfloat x, GLfloat y)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (num_active_particles >= MAX_PARTICLES) {
|
if (num_active_particles >= MAX_PARTICLES)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
/* find particle at endpoint of array */
|
/* find particle at endpoint of array */
|
||||||
struct particle *p = &particles[num_active_particles];
|
struct particle *p = &particles[num_active_particles];
|
||||||
@@ -324,7 +317,7 @@ initializeParticles(void)
|
|||||||
loads the particle texture
|
loads the particle texture
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
initializeTexture(void)
|
initializeTexture()
|
||||||
{
|
{
|
||||||
|
|
||||||
int bpp; /* texture bits per pixel */
|
int bpp; /* texture bits per pixel */
|
||||||
@@ -334,7 +327,7 @@ initializeTexture(void)
|
|||||||
to format passed into OpenGL */
|
to format passed into OpenGL */
|
||||||
|
|
||||||
bmp_surface = SDL_LoadBMP("stroke.bmp");
|
bmp_surface = SDL_LoadBMP("stroke.bmp");
|
||||||
if (!bmp_surface) {
|
if (bmp_surface == NULL) {
|
||||||
fatalError("could not load stroke.bmp");
|
fatalError("could not load stroke.bmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,10 +449,7 @@ main(int argc, char *argv[])
|
|||||||
while (!done) {
|
while (!done) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
double deltaTime = updateDeltaTime();
|
double deltaTime = updateDeltaTime();
|
||||||
SDL_bool hasEvents = SDL_FALSE;
|
|
||||||
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
hasEvents = SDL_TRUE;
|
|
||||||
if (event.type == SDL_QUIT) {
|
if (event.type == SDL_QUIT) {
|
||||||
done = 1;
|
done = 1;
|
||||||
}
|
}
|
||||||
@@ -469,17 +459,10 @@ main(int argc, char *argv[])
|
|||||||
spawnEmitterParticle(x, y);
|
spawnEmitterParticle(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stepParticles(deltaTime);
|
||||||
/* Only update and render if we have active particles or just received events */
|
drawParticles();
|
||||||
if (num_active_particles > 0 || hasEvents) {
|
SDL_GL_SwapWindow(window);
|
||||||
stepParticles(deltaTime);
|
SDL_Delay(1);
|
||||||
drawParticles();
|
|
||||||
SDL_GL_SwapWindow(window);
|
|
||||||
SDL_Delay(16); // Target 60 FPS when active
|
|
||||||
} else {
|
|
||||||
/* Idle state - wait for events with longer delay to save CPU */
|
|
||||||
SDL_Delay(100); // Much longer delay when idle
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delete textures */
|
/* delete textures */
|
||||||
|
@@ -108,7 +108,7 @@ initializeTexture(SDL_Renderer *renderer)
|
|||||||
SDL_Surface *bmp_surface;
|
SDL_Surface *bmp_surface;
|
||||||
/* load the bmp */
|
/* load the bmp */
|
||||||
bmp_surface = SDL_LoadBMP("icon.bmp");
|
bmp_surface = SDL_LoadBMP("icon.bmp");
|
||||||
if (!bmp_surface) {
|
if (bmp_surface == NULL) {
|
||||||
fatalError("could not load bmp");
|
fatalError("could not load bmp");
|
||||||
}
|
}
|
||||||
/* set white to transparent on the happyface */
|
/* set white to transparent on the happyface */
|
||||||
|
@@ -196,7 +196,7 @@ loadFont(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
draw(void)
|
draw()
|
||||||
{
|
{
|
||||||
SDL_SetRenderDrawColor(renderer, bg_color.r, bg_color.g, bg_color.b, bg_color.a);
|
SDL_SetRenderDrawColor(renderer, bg_color.r, bg_color.g, bg_color.b, bg_color.a);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
@@ -207,9 +207,9 @@ playSound(struct sound *s)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* if this channel's sound is older than the oldest so far, set it to oldest */
|
/* if this channel's sound is older than the oldest so far, set it to oldest */
|
||||||
if (mixer.channels[i].timestamp < mixer.channels[oldest_channel].timestamp) {
|
if (mixer.channels[i].timestamp <
|
||||||
|
mixer.channels[oldest_channel].timestamp)
|
||||||
oldest_channel = i;
|
oldest_channel = i;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no empty channels, take the oldest one */
|
/* no empty channels, take the oldest one */
|
||||||
|
@@ -57,7 +57,7 @@ initializeTexture(SDL_Renderer *renderer)
|
|||||||
{
|
{
|
||||||
SDL_Surface *bmp_surface;
|
SDL_Surface *bmp_surface;
|
||||||
bmp_surface = SDL_LoadBMP("stroke.bmp");
|
bmp_surface = SDL_LoadBMP("stroke.bmp");
|
||||||
if (!bmp_surface) {
|
if (bmp_surface == NULL) {
|
||||||
fatalError("could not load stroke.bmp");
|
fatalError("could not load stroke.bmp");
|
||||||
}
|
}
|
||||||
brush =
|
brush =
|
||||||
|
@@ -19,10 +19,10 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.33.0</string>
|
<string>2.26.3</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>SDLX</string>
|
<string>SDLX</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>2.33.0</string>
|
<string>2.26.3</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
Title SDL 2.33.0
|
Title SDL 2.0.0
|
||||||
Version 1
|
Version 1
|
||||||
Description SDL Library for Mac OS X (http://www.libsdl.org)
|
Description SDL Library for Mac OS X (http://www.libsdl.org)
|
||||||
DefaultLocation /Library/Frameworks
|
DefaultLocation /Library/Frameworks
|
||||||
|
@@ -31,15 +31,8 @@ endmacro()
|
|||||||
|
|
||||||
set(SDL2_FOUND TRUE)
|
set(SDL2_FOUND TRUE)
|
||||||
|
|
||||||
# Compute the installation prefix relative to this file.
|
string(REGEX REPLACE "SDL2\\.framework.*" "SDL2.framework" SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||||
set(SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}") # > /SDL2.framework/Resources/CMake/
|
string(REGEX REPLACE "SDL2\\.framework.*" "" SDL2_FRAMEWORK_PARENT_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" REALPATH) # > /SDL2.framework/Versions/Current/Resources/CMake
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" REALPATH) # > /SDL2.framework/Versions/A/Resources/CMake/
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" PATH) # > /SDL2.framework/Versions/A/Resources/
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" PATH) # > /SDL2.framework/Versions/A/
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" PATH) # > /SDL2.framework/Versions/
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PATH "${SDL2_FRAMEWORK_PATH}" PATH) # > /SDL2.framework/
|
|
||||||
get_filename_component(SDL2_FRAMEWORK_PARENT_PATH "${SDL2_FRAMEWORK_PATH}" PATH) # > /
|
|
||||||
|
|
||||||
# For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables.
|
# For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables.
|
||||||
|
|
||||||
@@ -56,16 +49,14 @@ set(SDL2_LIBRARIES "SDL2::SDL2")
|
|||||||
# This is done for compatibility with CMake generated SDL2-target.cmake files.
|
# This is done for compatibility with CMake generated SDL2-target.cmake files.
|
||||||
|
|
||||||
if(NOT TARGET SDL2::SDL2)
|
if(NOT TARGET SDL2::SDL2)
|
||||||
add_library(SDL2::SDL2 SHARED IMPORTED)
|
add_library(SDL2::SDL2 INTERFACE IMPORTED)
|
||||||
set_target_properties(SDL2::SDL2
|
set_target_properties(SDL2::SDL2
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
FRAMEWORK "TRUE"
|
INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\""
|
||||||
IMPORTED_LOCATION "${SDL2_FRAMEWORK_PATH}/Versions/A/SDL2"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
|
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
|
||||||
|
INTERFACE_LINK_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\";SHELL:-framework SDL2"
|
||||||
COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED"
|
COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED"
|
||||||
INTERFACE_SDL2_SHARED "ON"
|
INTERFACE_SDL2_SHARED "ON"
|
||||||
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
|
||||||
INTERFACE_SDL_VERSION "SDL2"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
set(SDL2_SDL2_FOUND TRUE)
|
set(SDL2_SDL2_FOUND TRUE)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
Simple DirectMedia Layer
|
Simple DirectMedia Layer
|
||||||
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
File diff suppressed because it is too large
Load Diff
163
acinclude/libtool.m4
vendored
163
acinclude/libtool.m4
vendored
@@ -219,8 +219,8 @@ esac
|
|||||||
ofile=libtool
|
ofile=libtool
|
||||||
can_build_shared=yes
|
can_build_shared=yes
|
||||||
|
|
||||||
# All known linkers require a '.a' archive for static linking (except MSVC and
|
# All known linkers require a '.a' archive for static linking (except MSVC,
|
||||||
# ICC, which need '.lib').
|
# which needs '.lib').
|
||||||
libext=a
|
libext=a
|
||||||
|
|
||||||
with_gnu_ld=$lt_cv_prog_gnu_ld
|
with_gnu_ld=$lt_cv_prog_gnu_ld
|
||||||
@@ -1023,21 +1023,6 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
|
|||||||
rm -f conftest.*
|
rm -f conftest.*
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
# Feature test to disable chained fixups since it is not
|
|
||||||
# compatible with '-undefined dynamic_lookup'
|
|
||||||
AC_CACHE_CHECK([for -no_fixup_chains linker flag],
|
|
||||||
[lt_cv_support_no_fixup_chains],
|
|
||||||
[ save_LDFLAGS=$LDFLAGS
|
|
||||||
LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains"
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([],[])],
|
|
||||||
lt_cv_support_no_fixup_chains=yes,
|
|
||||||
lt_cv_support_no_fixup_chains=no
|
|
||||||
)
|
|
||||||
LDFLAGS=$save_LDFLAGS
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
|
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
|
||||||
[lt_cv_ld_exported_symbols_list],
|
[lt_cv_ld_exported_symbols_list],
|
||||||
[lt_cv_ld_exported_symbols_list=no
|
[lt_cv_ld_exported_symbols_list=no
|
||||||
@@ -1062,7 +1047,7 @@ _LT_EOF
|
|||||||
echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
|
echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
|
||||||
$RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
|
$RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
|
||||||
cat > conftest.c << _LT_EOF
|
cat > conftest.c << _LT_EOF
|
||||||
int main(void) { return 0;}
|
int main() { return 0;}
|
||||||
_LT_EOF
|
_LT_EOF
|
||||||
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
|
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
|
||||||
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
||||||
@@ -1087,12 +1072,7 @@ _LT_EOF
|
|||||||
10.[[012]],*|,*powerpc*-darwin[[5-8]]*)
|
10.[[012]],*|,*powerpc*-darwin[[5-8]]*)
|
||||||
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
|
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$lt_cv_support_no_fixup_chains"; then
|
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
|
||||||
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup $wl-no_fixup_chains'
|
|
||||||
else
|
|
||||||
_lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup'
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -1385,7 +1365,7 @@ mips64*-*linux*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
||||||
s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
|
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
||||||
# Find out what ABI is being produced by ac_compile, and set linker
|
# Find out what ABI is being produced by ac_compile, and set linker
|
||||||
# options accordingly. Note that the listed cases only cover the
|
# options accordingly. Note that the listed cases only cover the
|
||||||
# situations where additional linker options are needed (such as when
|
# situations where additional linker options are needed (such as when
|
||||||
@@ -1400,7 +1380,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_i386_fbsd"
|
LD="${LD-ld} -m elf_i386_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*|x86_64-gnu*)
|
x86_64-*linux*)
|
||||||
case `/usr/bin/file conftest.o` in
|
case `/usr/bin/file conftest.o` in
|
||||||
*x86-64*)
|
*x86-64*)
|
||||||
LD="${LD-ld} -m elf32_x86_64"
|
LD="${LD-ld} -m elf32_x86_64"
|
||||||
@@ -1429,7 +1409,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_x86_64_fbsd"
|
LD="${LD-ld} -m elf_x86_64_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*|x86_64-gnu*)
|
x86_64-*linux*)
|
||||||
LD="${LD-ld} -m elf_x86_64"
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
;;
|
;;
|
||||||
powerpcle-*linux*|powerpc64le-*linux*)
|
powerpcle-*linux*|powerpc64le-*linux*)
|
||||||
@@ -1560,8 +1540,15 @@ old_postinstall_cmds='chmod 644 $oldlib'
|
|||||||
old_postuninstall_cmds=
|
old_postuninstall_cmds=
|
||||||
|
|
||||||
if test -n "$RANLIB"; then
|
if test -n "$RANLIB"; then
|
||||||
|
case $host_os in
|
||||||
|
bitrig* | openbsd*)
|
||||||
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@@ -1700,7 +1687,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
|
|||||||
lt_cv_sys_max_cmd_len=-1;
|
lt_cv_sys_max_cmd_len=-1;
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | windows* | cegcc*)
|
cygwin* | mingw* | cegcc*)
|
||||||
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
||||||
# about 5 minutes as the teststring grows exponentially.
|
# about 5 minutes as the teststring grows exponentially.
|
||||||
# Worse, since 9x/ME are not pre-emptively multitasking,
|
# Worse, since 9x/ME are not pre-emptively multitasking,
|
||||||
@@ -1882,11 +1869,11 @@ else
|
|||||||
/* When -fvisibility=hidden is used, assume the code has been annotated
|
/* When -fvisibility=hidden is used, assume the code has been annotated
|
||||||
correspondingly for the symbols needed. */
|
correspondingly for the symbols needed. */
|
||||||
#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
|
#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
|
||||||
int fnord (void) __attribute__((visibility("default")));
|
int fnord () __attribute__((visibility("default")));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int fnord (void) { return 42; }
|
int fnord () { return 42; }
|
||||||
int main (void)
|
int main ()
|
||||||
{
|
{
|
||||||
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
|
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
|
||||||
int status = $lt_dlunknown;
|
int status = $lt_dlunknown;
|
||||||
@@ -1943,7 +1930,7 @@ else
|
|||||||
lt_cv_dlopen_self=yes
|
lt_cv_dlopen_self=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | windows* | pw32* | cegcc*)
|
mingw* | pw32* | cegcc*)
|
||||||
lt_cv_dlopen=LoadLibrary
|
lt_cv_dlopen=LoadLibrary
|
||||||
lt_cv_dlopen_libs=
|
lt_cv_dlopen_libs=
|
||||||
;;
|
;;
|
||||||
@@ -2311,7 +2298,7 @@ if test yes = "$GCC"; then
|
|||||||
*) lt_awk_arg='/^libraries:/' ;;
|
*) lt_awk_arg='/^libraries:/' ;;
|
||||||
esac
|
esac
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
|
mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
|
||||||
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
||||||
esac
|
esac
|
||||||
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
||||||
@@ -2369,7 +2356,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
|
|||||||
# AWK program above erroneously prepends '/' to C:/dos/paths
|
# AWK program above erroneously prepends '/' to C:/dos/paths
|
||||||
# for these hosts.
|
# for these hosts.
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
||||||
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
|
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
|
||||||
esac
|
esac
|
||||||
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
||||||
@@ -2538,7 +2525,7 @@ bsdi[[45]]*)
|
|||||||
# libtool to hard-code these into programs
|
# libtool to hard-code these into programs
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
version_type=windows
|
version_type=windows
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
need_version=no
|
need_version=no
|
||||||
@@ -2567,14 +2554,14 @@ cygwin* | mingw* | windows* | pw32* | cegcc*)
|
|||||||
cygwin*)
|
cygwin*)
|
||||||
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
|
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
|
||||||
#soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
#soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
soname_spec='`echo $libname | sed -e 's/^lib//'`$shared_ext' # SDL customization.
|
soname_spec='`echo $libname | sed -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
m4_if([$1], [],[
|
m4_if([$1], [],[
|
||||||
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
|
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
|
||||||
;;
|
;;
|
||||||
mingw* | windows* | cegcc*)
|
mingw* | cegcc*)
|
||||||
# MinGW DLLs use traditional 'lib' prefix
|
# MinGW DLLs use traditional 'lib' prefix
|
||||||
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization.
|
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
;;
|
;;
|
||||||
pw32*)
|
pw32*)
|
||||||
# pw32 DLLs use 'pw' prefix rather than 'lib'
|
# pw32 DLLs use 'pw' prefix rather than 'lib'
|
||||||
@@ -2584,14 +2571,14 @@ m4_if([$1], [],[
|
|||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*,cl* | *,icl*)
|
*,cl*)
|
||||||
# Native MSVC or ICC
|
# Native MSVC
|
||||||
libname_spec='$name'
|
libname_spec='$name'
|
||||||
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
library_names_spec='$libname.dll.lib'
|
library_names_spec='$libname.dll.lib'
|
||||||
|
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw* | windows*)
|
mingw*)
|
||||||
sys_lib_search_path_spec=
|
sys_lib_search_path_spec=
|
||||||
lt_save_ifs=$IFS
|
lt_save_ifs=$IFS
|
||||||
IFS=';'
|
IFS=';'
|
||||||
@@ -2641,7 +2628,7 @@ m4_if([$1], [],[
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
# Assume MSVC and ICC wrapper
|
# Assume MSVC wrapper
|
||||||
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
|
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
|
||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
@@ -3280,7 +3267,7 @@ if test yes = "$GCC"; then
|
|||||||
# Check if gcc -print-prog-name=ld gives a path.
|
# Check if gcc -print-prog-name=ld gives a path.
|
||||||
AC_MSG_CHECKING([for ld used by $CC])
|
AC_MSG_CHECKING([for ld used by $CC])
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw* | *-*-windows*)
|
*-*-mingw*)
|
||||||
# gcc leaves a trailing carriage return, which upsets mingw
|
# gcc leaves a trailing carriage return, which upsets mingw
|
||||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||||
*)
|
*)
|
||||||
@@ -3389,7 +3376,7 @@ case $reload_flag in
|
|||||||
esac
|
esac
|
||||||
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
reload_cmds=false
|
reload_cmds=false
|
||||||
fi
|
fi
|
||||||
@@ -3486,10 +3473,10 @@ cygwin*)
|
|||||||
# func_win32_libid is a shell function defined in ltmain.sh
|
# func_win32_libid is a shell function defined in ltmain.sh
|
||||||
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
|
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
|
||||||
lt_cv_file_magic_cmd='func_win32_libid'
|
lt_cv_file_magic_cmd='func_win32_libid'
|
||||||
lt_cv_deplibs_check_method=pass_all # SDL customization.
|
lt_cv_deplibs_check_method=pass_all # SDL customization
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | windows* | pw32*)
|
mingw* | pw32*)
|
||||||
# Base MSYS/MinGW do not provide the 'file' command needed by
|
# Base MSYS/MinGW do not provide the 'file' command needed by
|
||||||
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
||||||
# unless we find 'file', for example because we are cross-compiling.
|
# unless we find 'file', for example because we are cross-compiling.
|
||||||
@@ -3498,10 +3485,10 @@ mingw* | windows* | pw32*)
|
|||||||
lt_cv_file_magic_cmd='func_win32_libid'
|
lt_cv_file_magic_cmd='func_win32_libid'
|
||||||
else
|
else
|
||||||
# Keep this pattern in sync with the one in func_win32_libid.
|
# Keep this pattern in sync with the one in func_win32_libid.
|
||||||
lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)'
|
lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
|
||||||
lt_cv_file_magic_cmd='$OBJDUMP -f'
|
lt_cv_file_magic_cmd='$OBJDUMP -f'
|
||||||
fi
|
fi
|
||||||
lt_cv_deplibs_check_method=pass_all # SDL customization.
|
lt_cv_deplibs_check_method=pass_all # SDL customization
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cegcc*)
|
cegcc*)
|
||||||
@@ -3654,7 +3641,7 @@ file_magic_glob=
|
|||||||
want_nocaseglob=no
|
want_nocaseglob=no
|
||||||
if test "$build" = "$host"; then
|
if test "$build" = "$host"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | windows* | pw32*)
|
mingw* | pw32*)
|
||||||
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
||||||
want_nocaseglob=yes
|
want_nocaseglob=yes
|
||||||
else
|
else
|
||||||
@@ -3706,7 +3693,7 @@ else
|
|||||||
# Tru64's nm complains that /dev/null is an invalid object file
|
# Tru64's nm complains that /dev/null is an invalid object file
|
||||||
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
|
mingw*) lt_bad_file=conftest.nm/nofile ;;
|
||||||
*) lt_bad_file=/dev/null ;;
|
*) lt_bad_file=/dev/null ;;
|
||||||
esac
|
esac
|
||||||
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
||||||
@@ -3797,7 +3784,7 @@ lt_cv_sharedlib_from_linklib_cmd,
|
|||||||
[lt_cv_sharedlib_from_linklib_cmd='unknown'
|
[lt_cv_sharedlib_from_linklib_cmd='unknown'
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# two different shell functions defined in ltmain.sh;
|
# two different shell functions defined in ltmain.sh;
|
||||||
# decide which one to use based on capabilities of $DLLTOOL
|
# decide which one to use based on capabilities of $DLLTOOL
|
||||||
case `$DLLTOOL --help 2>&1` in
|
case `$DLLTOOL --help 2>&1` in
|
||||||
@@ -3942,7 +3929,7 @@ case $host_os in
|
|||||||
aix*)
|
aix*)
|
||||||
symcode='[[BCDT]]'
|
symcode='[[BCDT]]'
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
symcode='[[ABCDGISTW]]'
|
symcode='[[ABCDGISTW]]'
|
||||||
;;
|
;;
|
||||||
hpux*)
|
hpux*)
|
||||||
@@ -4021,7 +4008,7 @@ $lt_c_name_lib_hook\
|
|||||||
# Handle CRLF in mingw tool chain
|
# Handle CRLF in mingw tool chain
|
||||||
opt_cr=
|
opt_cr=
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw* | windows*)
|
mingw*)
|
||||||
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -4036,7 +4023,7 @@ for ac_symprfx in "" "_"; do
|
|||||||
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
||||||
# Fake it for dumpbin and say T for any non-static function,
|
# Fake it for dumpbin and say T for any non-static function,
|
||||||
# D for any global variable and I for any imported variable.
|
# D for any global variable and I for any imported variable.
|
||||||
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
|
# Also find C++ and __fastcall symbols from MSVC++,
|
||||||
# which start with @ or ?.
|
# which start with @ or ?.
|
||||||
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
||||||
" {last_section=section; section=\$ 3};"\
|
" {last_section=section; section=\$ 3};"\
|
||||||
@@ -4072,7 +4059,7 @@ void nm_test_func(void){}
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
int main(void){nm_test_var='a';nm_test_func();return(0);}
|
int main(){nm_test_var='a';nm_test_func();return(0);}
|
||||||
_LT_EOF
|
_LT_EOF
|
||||||
|
|
||||||
if AC_TRY_EVAL(ac_compile); then
|
if AC_TRY_EVAL(ac_compile); then
|
||||||
@@ -4248,7 +4235,7 @@ m4_if([$1], [CXX], [
|
|||||||
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -4324,7 +4311,7 @@ m4_if([$1], [CXX], [
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
m4_if([$1], [GCJ], [],
|
m4_if([$1], [GCJ], [],
|
||||||
@@ -4572,7 +4559,7 @@ m4_if([$1], [CXX], [
|
|||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -4676,7 +4663,7 @@ m4_if([$1], [CXX], [
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
m4_if([$1], [GCJ], [],
|
m4_if([$1], [GCJ], [],
|
||||||
@@ -4951,9 +4938,9 @@ m4_if([$1], [CXX], [
|
|||||||
pw32*)
|
pw32*)
|
||||||
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
|
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | windows* | cegcc*)
|
cygwin* | mingw* | cegcc*)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl* | icl*)
|
cl*)
|
||||||
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -5009,16 +4996,16 @@ dnl Note also adjust exclude_expsyms for C++ above.
|
|||||||
extract_expsyms_cmds=
|
extract_expsyms_cmds=
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
|
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++ or Intel C++ Compiler.
|
# Microsoft Visual C++.
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
with_gnu_ld=no
|
with_gnu_ld=no
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
interix*)
|
interix*)
|
||||||
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
|
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||||
with_gnu_ld=yes
|
with_gnu_ld=yes
|
||||||
;;
|
;;
|
||||||
openbsd* | bitrig*)
|
openbsd* | bitrig*)
|
||||||
@@ -5124,7 +5111,7 @@ _LT_EOF
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
|
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
|
||||||
# as there is no search path for DLLs.
|
# as there is no search path for DLLs.
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
|
||||||
@@ -5581,14 +5568,14 @@ _LT_EOF
|
|||||||
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
|
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++ or Intel C++ Compiler.
|
# Microsoft Visual C++.
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl* | icl*)
|
cl*)
|
||||||
# Native MSVC or ICC
|
# Native MSVC
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
||||||
_LT_TAGVAR(always_export_symbols, $1)=yes
|
_LT_TAGVAR(always_export_symbols, $1)=yes
|
||||||
@@ -5598,14 +5585,14 @@ _LT_EOF
|
|||||||
# Tell ltmain to make .dll files, not .so files.
|
# Tell ltmain to make .dll files, not .so files.
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
# FIXME: Setting linknames here is a bad hack.
|
# FIXME: Setting linknames here is a bad hack.
|
||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
||||||
cp "$export_symbols" "$output_objdir/$soname.def";
|
cp "$export_symbols" "$output_objdir/$soname.def";
|
||||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
||||||
else
|
else
|
||||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
fi~
|
fi~
|
||||||
$CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
$CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
||||||
linknames='
|
linknames='
|
||||||
# The linker will not automatically build a static lib if we build a DLL.
|
# The linker will not automatically build a static lib if we build a DLL.
|
||||||
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
||||||
@@ -5629,7 +5616,7 @@ _LT_EOF
|
|||||||
fi'
|
fi'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Assume MSVC and ICC wrapper
|
# Assume MSVC wrapper
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
||||||
# Tell ltmain to make .lib files, not .a files.
|
# Tell ltmain to make .lib files, not .a files.
|
||||||
@@ -6238,7 +6225,7 @@ _LT_TAGVAR(objext, $1)=$objext
|
|||||||
lt_simple_compile_test_code="int some_variable = 0;"
|
lt_simple_compile_test_code="int some_variable = 0;"
|
||||||
|
|
||||||
# Code to be used in simple link tests
|
# Code to be used in simple link tests
|
||||||
lt_simple_link_test_code='int main(void){return(0);}'
|
lt_simple_link_test_code='int main(){return(0);}'
|
||||||
|
|
||||||
_LT_TAG_COMPILER
|
_LT_TAG_COMPILER
|
||||||
# Save the default compiler, since it gets overwritten when the other
|
# Save the default compiler, since it gets overwritten when the other
|
||||||
@@ -6448,7 +6435,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
GXX=no
|
GXX=no
|
||||||
@@ -6657,10 +6644,10 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
case $GXX,$cc_basename in
|
case $GXX,$cc_basename in
|
||||||
,cl* | no,cl* | ,icl* | no,icl*)
|
,cl* | no,cl*)
|
||||||
# Native MSVC or ICC
|
# Native MSVC
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
@@ -6824,7 +6811,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -6889,7 +6876,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -7228,7 +7215,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
# FIXME: insert proper C++ library support
|
# FIXME: insert proper C++ library support
|
||||||
@@ -7312,7 +7299,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
||||||
else
|
else
|
||||||
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
||||||
# platform.
|
# platform.
|
||||||
@@ -7323,7 +7310,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
|
||||||
@@ -8344,7 +8331,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
|
|||||||
[case $host in
|
[case $host in
|
||||||
*-*-mingw* )
|
*-*-mingw* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* | *-*-windows* ) # actually msys
|
*-*-mingw* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -8357,7 +8344,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
|
|||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* | *-*-windows* ) # actually msys
|
*-*-mingw* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -8383,9 +8370,9 @@ AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
|
|||||||
[#assume ordinary cross tools, or native build.
|
[#assume ordinary cross tools, or native build.
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw* | *-*-windows* )
|
*-*-mingw* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* | *-*-windows* ) # actually msys
|
*-*-mingw* ) # actually msys
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
2
acinclude/ltoptions.m4
vendored
2
acinclude/ltoptions.m4
vendored
@@ -128,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
|||||||
[enable_win32_dll=yes
|
[enable_win32_dll=yes
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||||
AC_CHECK_TOOL(AS, as, false)
|
AC_CHECK_TOOL(AS, as, false)
|
||||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||||
|
@@ -8,22 +8,22 @@ else {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
if (buildAsApplication) {
|
compileSdkVersion 31
|
||||||
namespace "org.libsdl.app"
|
|
||||||
}
|
|
||||||
compileSdkVersion 34
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 19
|
if (buildAsApplication) {
|
||||||
targetSdkVersion 34
|
applicationId "org.libsdl.app"
|
||||||
|
}
|
||||||
|
minSdkVersion 16
|
||||||
|
targetSdkVersion 31
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
ndkBuild {
|
||||||
arguments "APP_PLATFORM=android-19"
|
arguments "APP_PLATFORM=android-16"
|
||||||
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||||
}
|
}
|
||||||
// cmake {
|
// cmake {
|
||||||
// arguments "-DANDROID_APP_PLATFORM=android-19", "-DANDROID_STL=c++_static"
|
// arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
|
||||||
// // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
// // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||||
// abiFilters 'arm64-v8a'
|
// abiFilters 'arm64-v8a'
|
||||||
// }
|
// }
|
||||||
@@ -53,10 +53,10 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
lint {
|
lintOptions {
|
||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buildAsLibrary) {
|
if (buildAsLibrary) {
|
||||||
libraryVariants.all { variant ->
|
libraryVariants.all { variant ->
|
||||||
variant.outputs.each { output ->
|
variant.outputs.each { output ->
|
||||||
|
81
android-project/app/proguard-rules.pro
vendored
81
android-project/app/proguard-rules.pro
vendored
@@ -15,84 +15,3 @@
|
|||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
# public *;
|
# public *;
|
||||||
#}
|
#}
|
||||||
|
|
||||||
-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLInputConnection {
|
|
||||||
void nativeCommitText(java.lang.String, int);
|
|
||||||
void nativeGenerateScancodeForUnichar(char);
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep,includedescriptorclasses class org.libsdl.app.SDLActivity {
|
|
||||||
# for some reason these aren't compatible with allowoptimization modifier
|
|
||||||
boolean supportsRelativeMouse();
|
|
||||||
void setWindowStyle(boolean);
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLActivity {
|
|
||||||
java.lang.String nativeGetHint(java.lang.String); # Java-side doesn't use this, so it gets minified, but C-side still tries to register it
|
|
||||||
boolean onNativeSoftReturnKey();
|
|
||||||
void onNativeKeyboardFocusLost();
|
|
||||||
boolean isScreenKeyboardShown();
|
|
||||||
android.util.DisplayMetrics getDisplayDPI();
|
|
||||||
java.lang.String clipboardGetText();
|
|
||||||
boolean clipboardHasText();
|
|
||||||
void clipboardSetText(java.lang.String);
|
|
||||||
int createCustomCursor(int[], int, int, int, int);
|
|
||||||
void destroyCustomCursor(int);
|
|
||||||
android.content.Context getContext();
|
|
||||||
boolean getManifestEnvironmentVariables();
|
|
||||||
android.view.Surface getNativeSurface();
|
|
||||||
void initTouch();
|
|
||||||
boolean isAndroidTV();
|
|
||||||
boolean isChromebook();
|
|
||||||
boolean isDeXMode();
|
|
||||||
boolean isTablet();
|
|
||||||
void manualBackButton();
|
|
||||||
int messageboxShowMessageBox(int, java.lang.String, java.lang.String, int[], int[], java.lang.String[], int[]);
|
|
||||||
void minimizeWindow();
|
|
||||||
int openURL(java.lang.String);
|
|
||||||
void requestPermission(java.lang.String, int);
|
|
||||||
int showToast(java.lang.String, int, int, int, int);
|
|
||||||
boolean sendMessage(int, int);
|
|
||||||
boolean setActivityTitle(java.lang.String);
|
|
||||||
boolean setCustomCursor(int);
|
|
||||||
void setOrientation(int, int, boolean, java.lang.String);
|
|
||||||
boolean setRelativeMouseEnabled(boolean);
|
|
||||||
boolean setSystemCursor(int);
|
|
||||||
boolean shouldMinimizeOnFocusLoss();
|
|
||||||
boolean showTextInput(int, int, int, int);
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.HIDDeviceManager {
|
|
||||||
boolean initialize(boolean, boolean);
|
|
||||||
boolean openDevice(int);
|
|
||||||
int sendOutputReport(int, byte[]);
|
|
||||||
int sendFeatureReport(int, byte[]);
|
|
||||||
boolean getFeatureReport(int, byte[]);
|
|
||||||
void closeDevice(int);
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLAudioManager {
|
|
||||||
int[] getAudioOutputDevices();
|
|
||||||
int[] getAudioInputDevices();
|
|
||||||
int[] audioOpen(int, int, int, int, int);
|
|
||||||
void audioWriteFloatBuffer(float[]);
|
|
||||||
void audioWriteShortBuffer(short[]);
|
|
||||||
void audioWriteByteBuffer(byte[]);
|
|
||||||
void audioClose();
|
|
||||||
int[] captureOpen(int, int, int, int, int);
|
|
||||||
int captureReadFloatBuffer(float[], boolean);
|
|
||||||
int captureReadShortBuffer(short[], boolean);
|
|
||||||
int captureReadByteBuffer(byte[], boolean);
|
|
||||||
void captureClose();
|
|
||||||
void audioSetThreadPriority(boolean, int);
|
|
||||||
native int nativeSetupJNI();
|
|
||||||
native void removeAudioDevice(boolean, int);
|
|
||||||
native void addAudioDevice(boolean, int);
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLControllerManager {
|
|
||||||
void pollInputDevices();
|
|
||||||
void pollHapticDevices();
|
|
||||||
void hapticRun(int, float, int);
|
|
||||||
void hapticStop(int);
|
|
||||||
}
|
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
com.gamemaker.game
|
com.gamemaker.game
|
||||||
-->
|
-->
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.libsdl.app"
|
||||||
android:versionCode="1"
|
android:versionCode="1"
|
||||||
android:versionName="1.0"
|
android:versionName="1.0"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
@@ -62,7 +63,7 @@
|
|||||||
<application android:label="@string/app_name"
|
<application android:label="@string/app_name"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
||||||
android:hardwareAccelerated="true" >
|
android:hardwareAccelerated="true" >
|
||||||
|
|
||||||
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
||||||
|
@@ -186,7 +186,7 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe
|
|||||||
// Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead
|
// Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead
|
||||||
// of TRANSPORT_LE. Let's force ourselves to connect low energy.
|
// of TRANSPORT_LE. Let's force ourselves to connect low energy.
|
||||||
private BluetoothGatt connectGatt(boolean managed) {
|
private BluetoothGatt connectGatt(boolean managed) {
|
||||||
if (Build.VERSION.SDK_INT >= 23 /* Android 6.0 (M) */) {
|
if (Build.VERSION.SDK_INT >= 23) {
|
||||||
try {
|
try {
|
||||||
return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE);
|
return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -429,7 +429,7 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (newState == 0) {
|
else if (newState == 0) {
|
||||||
mIsConnected = false;
|
mIsConnected = false;
|
||||||
}
|
}
|
||||||
|
@@ -170,7 +170,7 @@ public class HIDDeviceManager {
|
|||||||
Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol());
|
Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol());
|
||||||
Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount());
|
Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount());
|
||||||
|
|
||||||
// Get endpoint details
|
// Get endpoint details
|
||||||
for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++)
|
for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++)
|
||||||
{
|
{
|
||||||
UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi);
|
UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi);
|
||||||
@@ -251,8 +251,6 @@ public class HIDDeviceManager {
|
|||||||
0x20d6, // PowerA
|
0x20d6, // PowerA
|
||||||
0x24c6, // PowerA
|
0x24c6, // PowerA
|
||||||
0x2c22, // Qanba
|
0x2c22, // Qanba
|
||||||
0x2dc8, // 8BitDo
|
|
||||||
0x9886, // ASTRO Gaming
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
|
if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
|
||||||
@@ -273,20 +271,15 @@ public class HIDDeviceManager {
|
|||||||
final int XB1_IFACE_SUBCLASS = 71;
|
final int XB1_IFACE_SUBCLASS = 71;
|
||||||
final int XB1_IFACE_PROTOCOL = 208;
|
final int XB1_IFACE_PROTOCOL = 208;
|
||||||
final int[] SUPPORTED_VENDORS = {
|
final int[] SUPPORTED_VENDORS = {
|
||||||
0x03f0, // HP
|
|
||||||
0x044f, // Thrustmaster
|
|
||||||
0x045e, // Microsoft
|
0x045e, // Microsoft
|
||||||
0x0738, // Mad Catz
|
0x0738, // Mad Catz
|
||||||
0x0b05, // ASUS
|
|
||||||
0x0e6f, // PDP
|
0x0e6f, // PDP
|
||||||
0x0f0d, // Hori
|
0x0f0d, // Hori
|
||||||
0x10f5, // Turtle Beach
|
|
||||||
0x1532, // Razer Wildcat
|
0x1532, // Razer Wildcat
|
||||||
0x20d6, // PowerA
|
0x20d6, // PowerA
|
||||||
0x24c6, // PowerA
|
0x24c6, // PowerA
|
||||||
0x2dc8, // 8BitDo
|
0x2dc8, /* 8BitDo */
|
||||||
0x2e24, // Hyperkin
|
0x2e24, // Hyperkin
|
||||||
0x3537, // GameSir
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (usbInterface.getId() == 0 &&
|
if (usbInterface.getId() == 0 &&
|
||||||
@@ -360,19 +353,13 @@ public class HIDDeviceManager {
|
|||||||
private void initializeBluetooth() {
|
private void initializeBluetooth() {
|
||||||
Log.d(TAG, "Initializing Bluetooth");
|
Log.d(TAG, "Initializing Bluetooth");
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 31 /* Android 12 */ &&
|
if (Build.VERSION.SDK_INT <= 30 &&
|
||||||
mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH_CONNECT, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH_CONNECT");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT <= 30 /* Android 11.0 (R) */ &&
|
|
||||||
mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
||||||
Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH");
|
Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) || (Build.VERSION.SDK_INT < 18 /* Android 4.3 (JELLY_BEAN_MR2) */)) {
|
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) || (Build.VERSION.SDK_INT < 18)) {
|
||||||
Log.d(TAG, "Couldn't initialize Bluetooth, this version of Android does not support Bluetooth LE");
|
Log.d(TAG, "Couldn't initialize Bluetooth, this version of Android does not support Bluetooth LE");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -537,7 +524,7 @@ public class HIDDeviceManager {
|
|||||||
for (HIDDevice device : mDevicesById.values()) {
|
for (HIDDevice device : mDevicesById.values()) {
|
||||||
device.setFrozen(frozen);
|
device.setFrozen(frozen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -586,18 +573,12 @@ public class HIDDeviceManager {
|
|||||||
try {
|
try {
|
||||||
final int FLAG_MUTABLE = 0x02000000; // PendingIntent.FLAG_MUTABLE, but don't require SDK 31
|
final int FLAG_MUTABLE = 0x02000000; // PendingIntent.FLAG_MUTABLE, but don't require SDK 31
|
||||||
int flags;
|
int flags;
|
||||||
if (Build.VERSION.SDK_INT >= 31 /* Android 12.0 (S) */) {
|
if (Build.VERSION.SDK_INT >= 31) {
|
||||||
flags = FLAG_MUTABLE;
|
flags = FLAG_MUTABLE;
|
||||||
} else {
|
} else {
|
||||||
flags = 0;
|
flags = 0;
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= 33 /* Android 14.0 (U) */) {
|
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
|
||||||
Intent intent = new Intent(HIDDeviceManager.ACTION_USB_PERMISSION);
|
|
||||||
intent.setPackage(mContext.getPackageName());
|
|
||||||
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, intent, flags));
|
|
||||||
} else {
|
|
||||||
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
|
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
|
||||||
HIDDeviceOpenResult(deviceID, false);
|
HIDDeviceOpenResult(deviceID, false);
|
||||||
|
@@ -52,7 +52,7 @@ class HIDDeviceUSB implements HIDDevice {
|
|||||||
@Override
|
@Override
|
||||||
public String getSerialNumber() {
|
public String getSerialNumber() {
|
||||||
String result = null;
|
String result = null;
|
||||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
try {
|
try {
|
||||||
result = mDevice.getSerialNumber();
|
result = mDevice.getSerialNumber();
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ class HIDDeviceUSB implements HIDDevice {
|
|||||||
@Override
|
@Override
|
||||||
public String getManufacturerName() {
|
public String getManufacturerName() {
|
||||||
String result = null;
|
String result = null;
|
||||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
result = mDevice.getManufacturerName();
|
result = mDevice.getManufacturerName();
|
||||||
}
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
@@ -86,7 +86,7 @@ class HIDDeviceUSB implements HIDDevice {
|
|||||||
@Override
|
@Override
|
||||||
public String getProductName() {
|
public String getProductName() {
|
||||||
String result = null;
|
String result = null;
|
||||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
result = mDevice.getProductName();
|
result = mDevice.getProductName();
|
||||||
}
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
|
@@ -29,7 +29,6 @@ public class SDL {
|
|||||||
|
|
||||||
// This function stores the current activity (SDL or not)
|
// This function stores the current activity (SDL or not)
|
||||||
public static void setContext(Context context) {
|
public static void setContext(Context context) {
|
||||||
SDLAudioManager.setContext(context);
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,10 +37,6 @@ public class SDL {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
||||||
loadLibrary(libraryName, mContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void loadLibrary(String libraryName, Context context) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
|
||||||
|
|
||||||
if (libraryName == null) {
|
if (libraryName == null) {
|
||||||
throw new NullPointerException("No library name provided.");
|
throw new NullPointerException("No library name provided.");
|
||||||
@@ -57,10 +52,10 @@ public class SDL {
|
|||||||
// To use ReLinker, just add it as a dependency. For more information, see
|
// To use ReLinker, just add it as a dependency. For more information, see
|
||||||
// https://github.com/KeepSafe/ReLinker for ReLinker's repository.
|
// https://github.com/KeepSafe/ReLinker for ReLinker's repository.
|
||||||
//
|
//
|
||||||
Class<?> relinkClass = context.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
|
Class<?> relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
|
||||||
Class<?> relinkListenerClass = context.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
|
Class<?> relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
|
||||||
Class<?> contextClass = context.getClassLoader().loadClass("android.content.Context");
|
Class<?> contextClass = mContext.getClassLoader().loadClass("android.content.Context");
|
||||||
Class<?> stringClass = context.getClassLoader().loadClass("java.lang.String");
|
Class<?> stringClass = mContext.getClassLoader().loadClass("java.lang.String");
|
||||||
|
|
||||||
// Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
|
// Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
|
||||||
// they've changed during updates.
|
// they've changed during updates.
|
||||||
@@ -70,7 +65,7 @@ public class SDL {
|
|||||||
|
|
||||||
// Actually load the library!
|
// Actually load the library!
|
||||||
Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
|
Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
|
||||||
loadMethod.invoke(relinkInstance, context, libraryName, null, null);
|
loadMethod.invoke(relinkInstance, mContext, libraryName, null, null);
|
||||||
}
|
}
|
||||||
catch (final Throwable e) {
|
catch (final Throwable e) {
|
||||||
// Fall back
|
// Fall back
|
||||||
|
@@ -60,8 +60,8 @@ import java.util.Locale;
|
|||||||
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
||||||
private static final String TAG = "SDL";
|
private static final String TAG = "SDL";
|
||||||
private static final int SDL_MAJOR_VERSION = 2;
|
private static final int SDL_MAJOR_VERSION = 2;
|
||||||
private static final int SDL_MINOR_VERSION = 33;
|
private static final int SDL_MINOR_VERSION = 26;
|
||||||
private static final int SDL_MICRO_VERSION = 0;
|
private static final int SDL_MICRO_VERSION = 3;
|
||||||
/*
|
/*
|
||||||
// Display InputType.SOURCE/CLASS of events and devices
|
// Display InputType.SOURCE/CLASS of events and devices
|
||||||
//
|
//
|
||||||
@@ -89,11 +89,11 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
| InputDevice.SOURCE_CLASS_POSITION
|
| InputDevice.SOURCE_CLASS_POSITION
|
||||||
| InputDevice.SOURCE_CLASS_TRACKBALL);
|
| InputDevice.SOURCE_CLASS_TRACKBALL);
|
||||||
|
|
||||||
if (s2 != 0) cls += "Some_Unknown";
|
if (s2 != 0) cls += "Some_Unkown";
|
||||||
|
|
||||||
s2 = s_copy & InputDevice.SOURCE_ANY; // keep source only, no class;
|
s2 = s_copy & InputDevice.SOURCE_ANY; // keep source only, no class;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 23) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
tst = InputDevice.SOURCE_BLUETOOTH_STYLUS;
|
tst = InputDevice.SOURCE_BLUETOOTH_STYLUS;
|
||||||
if ((s & tst) == tst) src += " BLUETOOTH_STYLUS";
|
if ((s & tst) == tst) src += " BLUETOOTH_STYLUS";
|
||||||
s2 &= ~tst;
|
s2 &= ~tst;
|
||||||
@@ -107,7 +107,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
if ((s & tst) == tst) src += " GAMEPAD";
|
if ((s & tst) == tst) src += " GAMEPAD";
|
||||||
s2 &= ~tst;
|
s2 &= ~tst;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 21) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
tst = InputDevice.SOURCE_HDMI;
|
tst = InputDevice.SOURCE_HDMI;
|
||||||
if ((s & tst) == tst) src += " HDMI";
|
if ((s & tst) == tst) src += " HDMI";
|
||||||
s2 &= ~tst;
|
s2 &= ~tst;
|
||||||
@@ -146,7 +146,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
if ((s & tst) == tst) src += " TOUCHSCREEN";
|
if ((s & tst) == tst) src += " TOUCHSCREEN";
|
||||||
s2 &= ~tst;
|
s2 &= ~tst;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 18) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||||
tst = InputDevice.SOURCE_TOUCH_NAVIGATION;
|
tst = InputDevice.SOURCE_TOUCH_NAVIGATION;
|
||||||
if ((s & tst) == tst) src += " TOUCH_NAVIGATION";
|
if ((s & tst) == tst) src += " TOUCH_NAVIGATION";
|
||||||
s2 &= ~tst;
|
s2 &= ~tst;
|
||||||
@@ -163,14 +163,14 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
if (s == FLAG_TAINTED) src += " FLAG_TAINTED";
|
if (s == FLAG_TAINTED) src += " FLAG_TAINTED";
|
||||||
s2 &= ~FLAG_TAINTED;
|
s2 &= ~FLAG_TAINTED;
|
||||||
|
|
||||||
if (s2 != 0) src += " Some_Unknown";
|
if (s2 != 0) src += " Some_Unkown";
|
||||||
|
|
||||||
Log.v(TAG, prefix + "int=" + s_copy + " CLASS={" + cls + " } source(s):" + src);
|
Log.v(TAG, prefix + "int=" + s_copy + " CLASS={" + cls + " } source(s):" + src);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static boolean mIsResumedCalled, mHasFocus;
|
public static boolean mIsResumedCalled, mHasFocus;
|
||||||
public static final boolean mHasMultiWindow = (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */);
|
public static final boolean mHasMultiWindow = (Build.VERSION.SDK_INT >= 24);
|
||||||
|
|
||||||
// Cursor types
|
// Cursor types
|
||||||
// private static final int SDL_SYSTEM_CURSOR_NONE = -1;
|
// private static final int SDL_SYSTEM_CURSOR_NONE = -1;
|
||||||
@@ -224,9 +224,9 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
|
|
||||||
protected static SDLGenericMotionListener_API12 getMotionListener() {
|
protected static SDLGenericMotionListener_API12 getMotionListener() {
|
||||||
if (mMotionListener == null) {
|
if (mMotionListener == null) {
|
||||||
if (Build.VERSION.SDK_INT >= 26 /* Android 8.0 (O) */) {
|
if (Build.VERSION.SDK_INT >= 26) {
|
||||||
mMotionListener = new SDLGenericMotionListener_API26();
|
mMotionListener = new SDLGenericMotionListener_API26();
|
||||||
} else if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
} else if (Build.VERSION.SDK_INT >= 24) {
|
||||||
mMotionListener = new SDLGenericMotionListener_API24();
|
mMotionListener = new SDLGenericMotionListener_API24();
|
||||||
} else {
|
} else {
|
||||||
mMotionListener = new SDLGenericMotionListener_API12();
|
mMotionListener = new SDLGenericMotionListener_API12();
|
||||||
@@ -281,7 +281,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
// Load the .so
|
// Load the .so
|
||||||
public void loadLibraries() {
|
public void loadLibraries() {
|
||||||
for (String lib : getLibraries()) {
|
for (String lib : getLibraries()) {
|
||||||
SDL.loadLibrary(lib, this);
|
SDL.loadLibrary(lib);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
mHIDDeviceManager = HIDDeviceManager.acquire(this);
|
mHIDDeviceManager = HIDDeviceManager.acquire(this);
|
||||||
|
|
||||||
// Set up the surface
|
// Set up the surface
|
||||||
mSurface = createSDLSurface(this);
|
mSurface = createSDLSurface(getApplication());
|
||||||
|
|
||||||
mLayout = new RelativeLayout(this);
|
mLayout = new RelativeLayout(this);
|
||||||
mLayout.addView(mSurface);
|
mLayout.addView(mSurface);
|
||||||
@@ -404,7 +404,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
SDLActivity.onNativeOrientationChanged(mCurrentOrientation);
|
SDLActivity.onNativeOrientationChanged(mCurrentOrientation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (Build.VERSION.SDK_INT < 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT < 24) {
|
||||||
mCurrentLocale = getContext().getResources().getConfiguration().locale;
|
mCurrentLocale = getContext().getResources().getConfiguration().locale;
|
||||||
} else {
|
} else {
|
||||||
mCurrentLocale = getContext().getResources().getConfiguration().getLocales().get(0);
|
mCurrentLocale = getContext().getResources().getConfiguration().getLocales().get(0);
|
||||||
@@ -588,8 +588,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
mHIDDeviceManager = null;
|
mHIDDeviceManager = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDLAudioManager.release(this);
|
|
||||||
|
|
||||||
if (SDLActivity.mBrokenLibraries) {
|
if (SDLActivity.mBrokenLibraries) {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
return;
|
return;
|
||||||
@@ -768,7 +766,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case COMMAND_CHANGE_WINDOW_STYLE:
|
case COMMAND_CHANGE_WINDOW_STYLE:
|
||||||
if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) {
|
if (Build.VERSION.SDK_INT >= 19) {
|
||||||
if (context instanceof Activity) {
|
if (context instanceof Activity) {
|
||||||
Window window = ((Activity) context).getWindow();
|
Window window = ((Activity) context).getWindow();
|
||||||
if (window != null) {
|
if (window != null) {
|
||||||
@@ -790,9 +788,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
SDLActivity.mFullscreenModeActive = false;
|
SDLActivity.mFullscreenModeActive = false;
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= 28 /* Android 9 (Pie) */) {
|
|
||||||
window.getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "error handling message, getContext() returned no Activity");
|
Log.e(TAG, "error handling message, getContext() returned no Activity");
|
||||||
@@ -846,7 +841,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
msg.obj = data;
|
msg.obj = data;
|
||||||
boolean result = commandHandler.sendMessage(msg);
|
boolean result = commandHandler.sendMessage(msg);
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) {
|
if (Build.VERSION.SDK_INT >= 19) {
|
||||||
if (command == COMMAND_CHANGE_WINDOW_STYLE) {
|
if (command == COMMAND_CHANGE_WINDOW_STYLE) {
|
||||||
// Ensure we don't return until the resize has actually happened,
|
// Ensure we don't return until the resize has actually happened,
|
||||||
// or 500ms have passed.
|
// or 500ms have passed.
|
||||||
@@ -974,18 +969,15 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
/* If set, hint "explicitly controls which UI orientations are allowed". */
|
/* If set, hint "explicitly controls which UI orientations are allowed". */
|
||||||
if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
|
if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
|
||||||
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
|
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
|
||||||
} else if (hint.contains("LandscapeLeft")) {
|
|
||||||
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
|
||||||
} else if (hint.contains("LandscapeRight")) {
|
} else if (hint.contains("LandscapeRight")) {
|
||||||
|
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
||||||
|
} else if (hint.contains("LandscapeLeft")) {
|
||||||
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
|
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* exact match to 'Portrait' to distinguish with PortraitUpsideDown */
|
if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
|
||||||
boolean contains_Portrait = hint.contains("Portrait ") || hint.endsWith("Portrait");
|
|
||||||
|
|
||||||
if (contains_Portrait && hint.contains("PortraitUpsideDown")) {
|
|
||||||
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
|
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
|
||||||
} else if (contains_Portrait) {
|
} else if (hint.contains("Portrait")) {
|
||||||
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
|
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
|
||||||
} else if (hint.contains("PortraitUpsideDown")) {
|
} else if (hint.contains("PortraitUpsideDown")) {
|
||||||
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
|
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
|
||||||
@@ -998,8 +990,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
/* No valid hint, nothing is explicitly allowed */
|
/* No valid hint, nothing is explicitly allowed */
|
||||||
if (!is_portrait_allowed && !is_landscape_allowed) {
|
if (!is_portrait_allowed && !is_landscape_allowed) {
|
||||||
if (resizable) {
|
if (resizable) {
|
||||||
/* All orientations are allowed, respecting user orientation lock setting */
|
/* All orientations are allowed */
|
||||||
req = ActivityInfo.SCREEN_ORIENTATION_FULL_USER;
|
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
||||||
} else {
|
} else {
|
||||||
/* Fixed window and nothing specified. Get orientation from w/h of created window */
|
/* Fixed window and nothing specified. Get orientation from w/h of created window */
|
||||||
req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
|
req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
|
||||||
@@ -1008,8 +1000,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
/* At least one orientation is allowed */
|
/* At least one orientation is allowed */
|
||||||
if (resizable) {
|
if (resizable) {
|
||||||
if (is_portrait_allowed && is_landscape_allowed) {
|
if (is_portrait_allowed && is_landscape_allowed) {
|
||||||
/* hint allows both landscape and portrait, promote to full user */
|
/* hint allows both landscape and portrait, promote to full sensor */
|
||||||
req = ActivityInfo.SCREEN_ORIENTATION_FULL_USER;
|
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
||||||
} else {
|
} else {
|
||||||
/* Use the only one allowed "orientation" */
|
/* Use the only one allowed "orientation" */
|
||||||
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
|
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
|
||||||
@@ -1098,7 +1090,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
// thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result,
|
// thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result,
|
||||||
// we should stick to relative mode.
|
// we should stick to relative mode.
|
||||||
//
|
//
|
||||||
if (Build.VERSION.SDK_INT < 27 /* Android 8.1 (O_MR1) */ && isDeXMode()) {
|
if ((Build.VERSION.SDK_INT < 27) && isDeXMode()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1188,7 +1180,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static boolean isDeXMode() {
|
public static boolean isDeXMode() {
|
||||||
if (Build.VERSION.SDK_INT < 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT < 24) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -1348,6 +1340,23 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((source & InputDevice.SOURCE_KEYBOARD) == InputDevice.SOURCE_KEYBOARD) {
|
||||||
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
|
if (isTextInputEvent(event)) {
|
||||||
|
if (ic != null) {
|
||||||
|
ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
||||||
|
} else {
|
||||||
|
SDLInputConnection.nativeCommitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onNativeKeyDown(keyCode);
|
||||||
|
return true;
|
||||||
|
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||||
|
onNativeKeyUp(keyCode);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((source & InputDevice.SOURCE_MOUSE) == InputDevice.SOURCE_MOUSE) {
|
if ((source & InputDevice.SOURCE_MOUSE) == InputDevice.SOURCE_MOUSE) {
|
||||||
// on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
|
// on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
|
||||||
// they are ignored here because sending them as mouse input to SDL is messy
|
// they are ignored here because sending them as mouse input to SDL is messy
|
||||||
@@ -1362,21 +1371,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
|
||||||
if (isTextInputEvent(event)) {
|
|
||||||
if (ic != null) {
|
|
||||||
ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
|
||||||
} else {
|
|
||||||
SDLInputConnection.nativeCommitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onNativeKeyDown(keyCode);
|
|
||||||
return true;
|
|
||||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
|
||||||
onNativeKeyUp(keyCode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1623,7 +1617,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
private final Runnable rehideSystemUi = new Runnable() {
|
private final Runnable rehideSystemUi = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) {
|
if (Build.VERSION.SDK_INT >= 19) {
|
||||||
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
|
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
|
||||||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
||||||
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
||||||
@@ -1676,7 +1670,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
Bitmap bitmap = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
|
Bitmap bitmap = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
|
||||||
++mLastCursorID;
|
++mLastCursorID;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
try {
|
try {
|
||||||
mCursors.put(mLastCursorID, PointerIcon.create(bitmap, hotSpotX, hotSpotY));
|
mCursors.put(mLastCursorID, PointerIcon.create(bitmap, hotSpotX, hotSpotY));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -1692,7 +1686,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static void destroyCustomCursor(int cursorID) {
|
public static void destroyCustomCursor(int cursorID) {
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
try {
|
try {
|
||||||
mCursors.remove(cursorID);
|
mCursors.remove(cursorID);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -1706,7 +1700,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
*/
|
*/
|
||||||
public static boolean setCustomCursor(int cursorID) {
|
public static boolean setCustomCursor(int cursorID) {
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
try {
|
try {
|
||||||
mSurface.setPointerIcon(mCursors.get(cursorID));
|
mSurface.setPointerIcon(mCursors.get(cursorID));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -1761,7 +1755,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
cursor_type = 1002; //PointerIcon.TYPE_HAND;
|
cursor_type = 1002; //PointerIcon.TYPE_HAND;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
try {
|
try {
|
||||||
mSurface.setPointerIcon(PointerIcon.getSystemIcon(SDL.getContext(), cursor_type));
|
mSurface.setPointerIcon(PointerIcon.getSystemIcon(SDL.getContext(), cursor_type));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -1775,7 +1769,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static void requestPermission(String permission, int requestCode) {
|
public static void requestPermission(String permission, int requestCode) {
|
||||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
if (Build.VERSION.SDK_INT < 23) {
|
||||||
nativePermissionResult(requestCode, true);
|
nativePermissionResult(requestCode, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1804,7 +1798,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
i.setData(Uri.parse(url));
|
i.setData(Uri.parse(url));
|
||||||
|
|
||||||
int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
||||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
|
flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
|
||||||
} else {
|
} else {
|
||||||
flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
|
flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
|
||||||
@@ -2008,18 +2002,6 @@ class SDLInputConnection extends BaseInputConnection {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
|
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
|
||||||
if (Build.VERSION.SDK_INT <= 29 /* Android 10.0 (Q) */) {
|
|
||||||
// Workaround to capture backspace key. Ref: http://stackoverflow.com/questions>/14560344/android-backspace-in-webview-baseinputconnection
|
|
||||||
// and https://bugzilla.libsdl.org/show_bug.cgi?id=2265
|
|
||||||
if (beforeLength > 0 && afterLength == 0) {
|
|
||||||
// backspace(s)
|
|
||||||
while (beforeLength-- > 0) {
|
|
||||||
nativeGenerateScancodeForUnichar('\b');
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!super.deleteSurroundingText(beforeLength, afterLength)) {
|
if (!super.deleteSurroundingText(beforeLength, afterLength)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,5 @@
|
|||||||
package org.libsdl.app;
|
package org.libsdl.app;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.media.AudioDeviceCallback;
|
|
||||||
import android.media.AudioDeviceInfo;
|
|
||||||
import android.media.AudioFormat;
|
import android.media.AudioFormat;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.AudioRecord;
|
import android.media.AudioRecord;
|
||||||
@@ -11,67 +8,34 @@ import android.media.MediaRecorder;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.Arrays;
|
public class SDLAudioManager
|
||||||
|
{
|
||||||
public class SDLAudioManager {
|
|
||||||
protected static final String TAG = "SDLAudio";
|
protected static final String TAG = "SDLAudio";
|
||||||
|
|
||||||
protected static AudioTrack mAudioTrack;
|
protected static AudioTrack mAudioTrack;
|
||||||
protected static AudioRecord mAudioRecord;
|
protected static AudioRecord mAudioRecord;
|
||||||
protected static Context mContext;
|
|
||||||
|
|
||||||
private static final int[] NO_DEVICES = {};
|
|
||||||
|
|
||||||
private static AudioDeviceCallback mAudioDeviceCallback;
|
|
||||||
|
|
||||||
public static void initialize() {
|
public static void initialize() {
|
||||||
mAudioTrack = null;
|
mAudioTrack = null;
|
||||||
mAudioRecord = null;
|
mAudioRecord = null;
|
||||||
mAudioDeviceCallback = null;
|
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */)
|
|
||||||
{
|
|
||||||
mAudioDeviceCallback = new AudioDeviceCallback() {
|
|
||||||
@Override
|
|
||||||
public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
|
|
||||||
Arrays.stream(addedDevices).forEach(deviceInfo -> addAudioDevice(deviceInfo.isSink(), deviceInfo.getId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
|
|
||||||
Arrays.stream(removedDevices).forEach(deviceInfo -> removeAudioDevice(deviceInfo.isSink(), deviceInfo.getId()));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setContext(Context context) {
|
|
||||||
mContext = context;
|
|
||||||
if (context != null) {
|
|
||||||
registerAudioDeviceCallback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void release(Context context) {
|
|
||||||
unregisterAudioDeviceCallback(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
|
|
||||||
protected static String getAudioFormatString(int audioFormat) {
|
protected static String getAudioFormatString(int audioFormat) {
|
||||||
switch (audioFormat) {
|
switch (audioFormat) {
|
||||||
case AudioFormat.ENCODING_PCM_8BIT:
|
case AudioFormat.ENCODING_PCM_8BIT:
|
||||||
return "8-bit";
|
return "8-bit";
|
||||||
case AudioFormat.ENCODING_PCM_16BIT:
|
case AudioFormat.ENCODING_PCM_16BIT:
|
||||||
return "16-bit";
|
return "16-bit";
|
||||||
case AudioFormat.ENCODING_PCM_FLOAT:
|
case AudioFormat.ENCODING_PCM_FLOAT:
|
||||||
return "float";
|
return "float";
|
||||||
default:
|
default:
|
||||||
return Integer.toString(audioFormat);
|
return Integer.toString(audioFormat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static int[] open(boolean isCapture, int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
protected static int[] open(boolean isCapture, int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
|
||||||
int channelConfig;
|
int channelConfig;
|
||||||
int sampleSize;
|
int sampleSize;
|
||||||
int frameSize;
|
int frameSize;
|
||||||
@@ -79,14 +43,14 @@ public class SDLAudioManager {
|
|||||||
Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", requested " + desiredFrames + " frames of " + desiredChannels + " channel " + getAudioFormatString(audioFormat) + " audio at " + sampleRate + " Hz");
|
Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", requested " + desiredFrames + " frames of " + desiredChannels + " channel " + getAudioFormatString(audioFormat) + " audio at " + sampleRate + " Hz");
|
||||||
|
|
||||||
/* On older devices let's use known good settings */
|
/* On older devices let's use known good settings */
|
||||||
if (Build.VERSION.SDK_INT < 21 /* Android 5.0 (LOLLIPOP) */) {
|
if (Build.VERSION.SDK_INT < 21) {
|
||||||
if (desiredChannels > 2) {
|
if (desiredChannels > 2) {
|
||||||
desiredChannels = 2;
|
desiredChannels = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* AudioTrack has sample rate limitation of 48000 (fixed in 5.0.2) */
|
/* AudioTrack has sample rate limitation of 48000 (fixed in 5.0.2) */
|
||||||
if (Build.VERSION.SDK_INT < 22 /* Android 5.1 (LOLLIPOP_MR1) */) {
|
if (Build.VERSION.SDK_INT < 22) {
|
||||||
if (sampleRate < 8000) {
|
if (sampleRate < 8000) {
|
||||||
sampleRate = 8000;
|
sampleRate = 8000;
|
||||||
} else if (sampleRate > 48000) {
|
} else if (sampleRate > 48000) {
|
||||||
@@ -95,7 +59,7 @@ public class SDLAudioManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (audioFormat == AudioFormat.ENCODING_PCM_FLOAT) {
|
if (audioFormat == AudioFormat.ENCODING_PCM_FLOAT) {
|
||||||
int minSDKVersion = (isCapture ? 23 /* Android 6.0 (M) */ : 21 /* Android 5.0 (LOLLIPOP) */);
|
int minSDKVersion = (isCapture ? 23 : 21);
|
||||||
if (Build.VERSION.SDK_INT < minSDKVersion) {
|
if (Build.VERSION.SDK_INT < minSDKVersion) {
|
||||||
audioFormat = AudioFormat.ENCODING_PCM_16BIT;
|
audioFormat = AudioFormat.ENCODING_PCM_16BIT;
|
||||||
}
|
}
|
||||||
@@ -156,7 +120,7 @@ public class SDLAudioManager {
|
|||||||
channelConfig = AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER;
|
channelConfig = AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
if (Build.VERSION.SDK_INT >= 23 /* Android 6.0 (M) */) {
|
if (Build.VERSION.SDK_INT >= 23) {
|
||||||
channelConfig = AudioFormat.CHANNEL_OUT_7POINT1_SURROUND;
|
channelConfig = AudioFormat.CHANNEL_OUT_7POINT1_SURROUND;
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "Requested " + desiredChannels + " channels, getting 5.1 surround");
|
Log.v(TAG, "Requested " + desiredChannels + " channels, getting 5.1 surround");
|
||||||
@@ -237,10 +201,6 @@ public class SDLAudioManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */ && deviceId != 0) {
|
|
||||||
mAudioRecord.setPreferredDevice(getOutputAudioDeviceInfo(deviceId));
|
|
||||||
}
|
|
||||||
|
|
||||||
mAudioRecord.startRecording();
|
mAudioRecord.startRecording();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,10 +224,6 @@ public class SDLAudioManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */ && deviceId != 0) {
|
|
||||||
mAudioTrack.setPreferredDevice(getInputAudioDeviceInfo(deviceId));
|
|
||||||
}
|
|
||||||
|
|
||||||
mAudioTrack.play();
|
mAudioTrack.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,73 +238,11 @@ public class SDLAudioManager {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AudioDeviceInfo getInputAudioDeviceInfo(int deviceId) {
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS))
|
|
||||||
.filter(deviceInfo -> deviceInfo.getId() == deviceId)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static AudioDeviceInfo getOutputAudioDeviceInfo(int deviceId) {
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS))
|
|
||||||
.filter(deviceInfo -> deviceInfo.getId() == deviceId)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerAudioDeviceCallback() {
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
audioManager.registerAudioDeviceCallback(mAudioDeviceCallback, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void unregisterAudioDeviceCallback(Context context) {
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
|
||||||
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
audioManager.unregisterAudioDeviceCallback(mAudioDeviceCallback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static int[] getAudioOutputDevices() {
|
public static int[] audioOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
return open(false, sampleRate, audioFormat, desiredChannels, desiredFrames);
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
|
|
||||||
} else {
|
|
||||||
return NO_DEVICES;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called by SDL using JNI.
|
|
||||||
*/
|
|
||||||
public static int[] getAudioInputDevices() {
|
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
|
|
||||||
} else {
|
|
||||||
return NO_DEVICES;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called by SDL using JNI.
|
|
||||||
*/
|
|
||||||
public static int[] audioOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
|
||||||
return open(false, sampleRate, audioFormat, desiredChannels, desiredFrames, deviceId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -360,11 +254,6 @@ public class SDLAudioManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (android.os.Build.VERSION.SDK_INT < 21 /* Android 5.0 (LOLLIPOP) */) {
|
|
||||||
Log.e(TAG, "Attempted to make an incompatible audio call with uninitialized audio! (floating-point output is supported since Android 5.0 Lollipop)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < buffer.length;) {
|
for (int i = 0; i < buffer.length;) {
|
||||||
int result = mAudioTrack.write(buffer, i, buffer.length - i, AudioTrack.WRITE_BLOCKING);
|
int result = mAudioTrack.write(buffer, i, buffer.length - i, AudioTrack.WRITE_BLOCKING);
|
||||||
if (result > 0) {
|
if (result > 0) {
|
||||||
@@ -437,22 +326,18 @@ public class SDLAudioManager {
|
|||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static int[] captureOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
public static int[] captureOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
|
||||||
return open(true, sampleRate, audioFormat, desiredChannels, desiredFrames, deviceId);
|
return open(true, sampleRate, audioFormat, desiredChannels, desiredFrames);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This method is called by SDL using JNI. */
|
/** This method is called by SDL using JNI. */
|
||||||
public static int captureReadFloatBuffer(float[] buffer, boolean blocking) {
|
public static int captureReadFloatBuffer(float[] buffer, boolean blocking) {
|
||||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This method is called by SDL using JNI. */
|
/** This method is called by SDL using JNI. */
|
||||||
public static int captureReadShortBuffer(short[] buffer, boolean blocking) {
|
public static int captureReadShortBuffer(short[] buffer, boolean blocking) {
|
||||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
if (Build.VERSION.SDK_INT < 23) {
|
||||||
return mAudioRecord.read(buffer, 0, buffer.length);
|
return mAudioRecord.read(buffer, 0, buffer.length);
|
||||||
} else {
|
} else {
|
||||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||||
@@ -461,7 +346,7 @@ public class SDLAudioManager {
|
|||||||
|
|
||||||
/** This method is called by SDL using JNI. */
|
/** This method is called by SDL using JNI. */
|
||||||
public static int captureReadByteBuffer(byte[] buffer, boolean blocking) {
|
public static int captureReadByteBuffer(byte[] buffer, boolean blocking) {
|
||||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
if (Build.VERSION.SDK_INT < 23) {
|
||||||
return mAudioRecord.read(buffer, 0, buffer.length);
|
return mAudioRecord.read(buffer, 0, buffer.length);
|
||||||
} else {
|
} else {
|
||||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||||
@@ -506,9 +391,4 @@ public class SDLAudioManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static native int nativeSetupJNI();
|
public static native int nativeSetupJNI();
|
||||||
|
|
||||||
public static native void removeAudioDevice(boolean isCapture, int deviceId);
|
|
||||||
|
|
||||||
public static native void addAudioDevice(boolean isCapture, int deviceId);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,7 @@ public class SDLControllerManager
|
|||||||
public static native int nativeAddJoystick(int device_id, String name, String desc,
|
public static native int nativeAddJoystick(int device_id, String name, String desc,
|
||||||
int vendor_id, int product_id,
|
int vendor_id, int product_id,
|
||||||
boolean is_accelerometer, int button_mask,
|
boolean is_accelerometer, int button_mask,
|
||||||
int naxes, int axis_mask, int nhats, int nballs);
|
int naxes, int nhats, int nballs);
|
||||||
public static native int nativeRemoveJoystick(int device_id);
|
public static native int nativeRemoveJoystick(int device_id);
|
||||||
public static native int nativeAddHaptic(int device_id, String name);
|
public static native int nativeAddHaptic(int device_id, String name);
|
||||||
public static native int nativeRemoveHaptic(int device_id);
|
public static native int nativeRemoveHaptic(int device_id);
|
||||||
@@ -42,7 +42,7 @@ public class SDLControllerManager
|
|||||||
|
|
||||||
public static void initialize() {
|
public static void initialize() {
|
||||||
if (mJoystickHandler == null) {
|
if (mJoystickHandler == null) {
|
||||||
if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) {
|
if (Build.VERSION.SDK_INT >= 19) {
|
||||||
mJoystickHandler = new SDLJoystickHandler_API19();
|
mJoystickHandler = new SDLJoystickHandler_API19();
|
||||||
} else {
|
} else {
|
||||||
mJoystickHandler = new SDLJoystickHandler_API16();
|
mJoystickHandler = new SDLJoystickHandler_API16();
|
||||||
@@ -50,7 +50,7 @@ public class SDLControllerManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mHapticHandler == null) {
|
if (mHapticHandler == null) {
|
||||||
if (Build.VERSION.SDK_INT >= 26 /* Android 8.0 (O) */) {
|
if (Build.VERSION.SDK_INT >= 26) {
|
||||||
mHapticHandler = new SDLHapticHandler_API26();
|
mHapticHandler = new SDLHapticHandler_API26();
|
||||||
} else {
|
} else {
|
||||||
mHapticHandler = new SDLHapticHandler();
|
mHapticHandler = new SDLHapticHandler();
|
||||||
@@ -168,32 +168,6 @@ class SDLJoystickHandler_API16 extends SDLJoystickHandler {
|
|||||||
arg1Axis = MotionEvent.AXIS_GAS;
|
arg1Axis = MotionEvent.AXIS_GAS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the AXIS_Z is sorted between AXIS_RY and AXIS_RZ.
|
|
||||||
// This is because the usual pairing are:
|
|
||||||
// - AXIS_X + AXIS_Y (left stick).
|
|
||||||
// - AXIS_RX, AXIS_RY (sometimes the right stick, sometimes triggers).
|
|
||||||
// - AXIS_Z, AXIS_RZ (sometimes the right stick, sometimes triggers).
|
|
||||||
// This sorts the axes in the above order, which tends to be correct
|
|
||||||
// for Xbox-ish game pads that have the right stick on RX/RY and the
|
|
||||||
// triggers on Z/RZ.
|
|
||||||
//
|
|
||||||
// Gamepads that don't have AXIS_Z/AXIS_RZ but use
|
|
||||||
// AXIS_LTRIGGER/AXIS_RTRIGGER are unaffected by this.
|
|
||||||
//
|
|
||||||
// References:
|
|
||||||
// - https://developer.android.com/develop/ui/views/touch-and-input/game-controllers/controller-input
|
|
||||||
// - https://www.kernel.org/doc/html/latest/input/gamepad.html
|
|
||||||
if (arg0Axis == MotionEvent.AXIS_Z) {
|
|
||||||
arg0Axis = MotionEvent.AXIS_RZ - 1;
|
|
||||||
} else if (arg0Axis > MotionEvent.AXIS_Z && arg0Axis < MotionEvent.AXIS_RZ) {
|
|
||||||
--arg0Axis;
|
|
||||||
}
|
|
||||||
if (arg1Axis == MotionEvent.AXIS_Z) {
|
|
||||||
arg1Axis = MotionEvent.AXIS_RZ - 1;
|
|
||||||
} else if (arg1Axis > MotionEvent.AXIS_Z && arg1Axis < MotionEvent.AXIS_RZ) {
|
|
||||||
--arg1Axis;
|
|
||||||
}
|
|
||||||
|
|
||||||
return arg0Axis - arg1Axis;
|
return arg0Axis - arg1Axis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -236,7 +210,7 @@ class SDLJoystickHandler_API16 extends SDLJoystickHandler {
|
|||||||
mJoysticks.add(joystick);
|
mJoysticks.add(joystick);
|
||||||
SDLControllerManager.nativeAddJoystick(joystick.device_id, joystick.name, joystick.desc,
|
SDLControllerManager.nativeAddJoystick(joystick.device_id, joystick.name, joystick.desc,
|
||||||
getVendorId(joystickDevice), getProductId(joystickDevice), false,
|
getVendorId(joystickDevice), getProductId(joystickDevice), false,
|
||||||
getButtonMask(joystickDevice), joystick.axes.size(), getAxisMask(joystick.axes), joystick.hats.size()/2, 0);
|
getButtonMask(joystickDevice), joystick.axes.size(), joystick.hats.size()/2, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -317,9 +291,6 @@ class SDLJoystickHandler_API16 extends SDLJoystickHandler {
|
|||||||
public int getVendorId(InputDevice joystickDevice) {
|
public int getVendorId(InputDevice joystickDevice) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
public int getAxisMask(List<InputDevice.MotionRange> ranges) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
public int getButtonMask(InputDevice joystickDevice) {
|
public int getButtonMask(InputDevice joystickDevice) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -337,43 +308,6 @@ class SDLJoystickHandler_API19 extends SDLJoystickHandler_API16 {
|
|||||||
return joystickDevice.getVendorId();
|
return joystickDevice.getVendorId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAxisMask(List<InputDevice.MotionRange> ranges) {
|
|
||||||
// For compatibility, keep computing the axis mask like before,
|
|
||||||
// only really distinguishing 2, 4 and 6 axes.
|
|
||||||
int axis_mask = 0;
|
|
||||||
if (ranges.size() >= 2) {
|
|
||||||
// ((1 << SDL_GAMEPAD_AXIS_LEFTX) | (1 << SDL_GAMEPAD_AXIS_LEFTY))
|
|
||||||
axis_mask |= 0x0003;
|
|
||||||
}
|
|
||||||
if (ranges.size() >= 4) {
|
|
||||||
// ((1 << SDL_GAMEPAD_AXIS_RIGHTX) | (1 << SDL_GAMEPAD_AXIS_RIGHTY))
|
|
||||||
axis_mask |= 0x000c;
|
|
||||||
}
|
|
||||||
if (ranges.size() >= 6) {
|
|
||||||
// ((1 << SDL_GAMEPAD_AXIS_LEFT_TRIGGER) | (1 << SDL_GAMEPAD_AXIS_RIGHT_TRIGGER))
|
|
||||||
axis_mask |= 0x0030;
|
|
||||||
}
|
|
||||||
// Also add an indicator bit for whether the sorting order has changed.
|
|
||||||
// This serves to disable outdated gamecontrollerdb.txt mappings.
|
|
||||||
boolean have_z = false;
|
|
||||||
boolean have_past_z_before_rz = false;
|
|
||||||
for (InputDevice.MotionRange range : ranges) {
|
|
||||||
int axis = range.getAxis();
|
|
||||||
if (axis == MotionEvent.AXIS_Z) {
|
|
||||||
have_z = true;
|
|
||||||
} else if (axis > MotionEvent.AXIS_Z && axis < MotionEvent.AXIS_RZ) {
|
|
||||||
have_past_z_before_rz = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (have_z && have_past_z_before_rz) {
|
|
||||||
// If both these exist, the compare() function changed sorting order.
|
|
||||||
// Set a bit to indicate this fact.
|
|
||||||
axis_mask |= 0x8000;
|
|
||||||
}
|
|
||||||
return axis_mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getButtonMask(InputDevice joystickDevice) {
|
public int getButtonMask(InputDevice joystickDevice) {
|
||||||
int button_mask = 0;
|
int button_mask = 0;
|
||||||
@@ -546,15 +480,13 @@ class SDLHapticHandler {
|
|||||||
if (haptic == null) {
|
if (haptic == null) {
|
||||||
InputDevice device = InputDevice.getDevice(deviceIds[i]);
|
InputDevice device = InputDevice.getDevice(deviceIds[i]);
|
||||||
Vibrator vib = device.getVibrator();
|
Vibrator vib = device.getVibrator();
|
||||||
if (vib != null) {
|
if (vib.hasVibrator()) {
|
||||||
if (vib.hasVibrator()) {
|
haptic = new SDLHaptic();
|
||||||
haptic = new SDLHaptic();
|
haptic.device_id = deviceIds[i];
|
||||||
haptic.device_id = deviceIds[i];
|
haptic.name = device.getName();
|
||||||
haptic.name = device.getName();
|
haptic.vib = vib;
|
||||||
haptic.vib = vib;
|
mHaptics.add(haptic);
|
||||||
mHaptics.add(haptic);
|
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
||||||
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -811,7 +743,7 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsRelativeMouse() {
|
public boolean supportsRelativeMouse() {
|
||||||
return (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */);
|
return (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -821,7 +753,7 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setRelativeMouseEnabled(boolean enabled) {
|
public boolean setRelativeMouseEnabled(boolean enabled) {
|
||||||
if (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */) {
|
if (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27)) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
SDLActivity.getContentView().requestPointerCapture();
|
SDLActivity.getContentView().requestPointerCapture();
|
||||||
} else {
|
} else {
|
||||||
|
@@ -116,7 +116,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
int nDeviceHeight = height;
|
int nDeviceHeight = height;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (Build.VERSION.SDK_INT >= 17 /* Android 4.2 (JELLY_BEAN_MR1) */) {
|
if (Build.VERSION.SDK_INT >= 17) {
|
||||||
DisplayMetrics realMetrics = new DisplayMetrics();
|
DisplayMetrics realMetrics = new DisplayMetrics();
|
||||||
mDisplay.getRealMetrics( realMetrics );
|
mDisplay.getRealMetrics( realMetrics );
|
||||||
nDeviceWidth = realMetrics.widthPixels;
|
nDeviceWidth = realMetrics.widthPixels;
|
||||||
@@ -163,7 +163,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
|
|
||||||
// Don't skip in MultiWindow.
|
// Don't skip in MultiWindow.
|
||||||
if (skip) {
|
if (skip) {
|
||||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
if (SDLActivity.mSingleton.isInMultiWindowMode()) {
|
if (SDLActivity.mSingleton.isInMultiWindowMode()) {
|
||||||
Log.v("SDL", "Don't skip in Multi-Window");
|
Log.v("SDL", "Don't skip in Multi-Window");
|
||||||
skip = false;
|
skip = false;
|
||||||
|
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="AppTheme" parent="android:Theme.NoTitleBar.Fullscreen">
|
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
|
||||||
<!-- Customize your theme here. -->
|
<!-- Customize your theme here. -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -6,7 +6,7 @@ buildscript {
|
|||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.1.1'
|
classpath 'com.android.tools.build:gradle:7.0.3'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#Thu Nov 11 18:20:34 PST 2021
|
#Thu Nov 11 18:20:34 PST 2021
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
4
android-project/gradlew
vendored
4
android-project/gradlew
vendored
@@ -126,8 +126,8 @@ if $cygwin ; then
|
|||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
i=0
|
i=0
|
||||||
for arg in "$@" ; do
|
for arg in "$@" ; do
|
||||||
CHECK=`echo "$arg"|grep -E -c "$OURCYGPATTERN" -`
|
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||||
CHECK2=`echo "$arg"|grep -E -c "^-"` ### Determine if an option
|
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||||
|
@@ -80,8 +80,7 @@ do
|
|||||||
cd $folder
|
cd $folder
|
||||||
done
|
done
|
||||||
|
|
||||||
# Uppercase the first char in the activity class name because it's Java
|
ACTIVITY="${folder}Activity"
|
||||||
ACTIVITY="$(echo $folder | awk '{$1=toupper(substr($1,0,1))substr($1,2)}1')Activity"
|
|
||||||
sed -i -e "s|\"SDLActivity\"|\"$ACTIVITY\"|g" $BUILDPATH/app/src/main/AndroidManifest.xml
|
sed -i -e "s|\"SDLActivity\"|\"$ACTIVITY\"|g" $BUILDPATH/app/src/main/AndroidManifest.xml
|
||||||
|
|
||||||
# Fill in a default Activity
|
# Fill in a default Activity
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Build the Android libraries without needing a project
|
# Build the Android libraries without needing a project
|
||||||
# (AndroidManifest.xml, jni/{Application,Android}.mk, etc.)
|
# (AndroidManifest.xml, jni/{Application,Android}.mk, etc.)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,32 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
cd "$(dirname $0)/../src"
|
|
||||||
|
|
||||||
echo "Running clang-format in $(pwd)"
|
|
||||||
|
|
||||||
find . -regex '.*\.[chm]p*' -exec clang-format -i {} \;
|
|
||||||
|
|
||||||
# Revert third-party code
|
|
||||||
git checkout \
|
|
||||||
events/imKStoUCS.* \
|
|
||||||
hidapi \
|
|
||||||
joystick/controller_type.c \
|
|
||||||
joystick/controller_type.h \
|
|
||||||
joystick/hidapi/steam/controller_constants.h \
|
|
||||||
joystick/hidapi/steam/controller_structs.h \
|
|
||||||
libm \
|
|
||||||
stdlib/SDL_malloc.c \
|
|
||||||
stdlib/SDL_qsort.c \
|
|
||||||
stdlib/SDL_strtokr.c \
|
|
||||||
video/arm \
|
|
||||||
video/khronos \
|
|
||||||
video/x11/edid-parse.c \
|
|
||||||
video/yuv2rgb
|
|
||||||
clang-format -i hidapi/SDL_hidapi.c
|
|
||||||
|
|
||||||
# Revert generated code
|
|
||||||
git checkout dynapi/SDL_dynapi_overrides.h
|
|
||||||
git checkout dynapi/SDL_dynapi_procs.h
|
|
||||||
git checkout render/metal/SDL_shaders_metal_*.h
|
|
||||||
|
|
||||||
echo "clang-format complete!"
|
|
@@ -1,18 +0,0 @@
|
|||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR x86)
|
|
||||||
|
|
||||||
find_program(CMAKE_C_COMPILER NAMES i686-w64-mingw32-gcc)
|
|
||||||
find_program(CMAKE_CXX_COMPILER NAMES i686-w64-mingw32-g++)
|
|
||||||
find_program(CMAKE_RC_COMPILER NAMES i686-w64-mingw32-windres windres)
|
|
||||||
|
|
||||||
if(NOT CMAKE_C_COMPILER)
|
|
||||||
message(FATAL_ERROR "Failed to find CMAKE_C_COMPILER.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT CMAKE_CXX_COMPILER)
|
|
||||||
message(FATAL_ERROR "Failed to find CMAKE_CXX_COMPILER.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT CMAKE_RC_COMPILER)
|
|
||||||
message(FATAL_ERROR "Failed to find CMAKE_RC_COMPILER.")
|
|
||||||
endif()
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user