From 0a1479d58c4f617ffcb84a6977f57d8ddc703662 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Sun, 15 Jan 2023 17:39:07 +0100 Subject: [PATCH] cmake: fix sdl3.pc for Nintendo 3DS + add to test matrix --- .github/cmake/CMakeLists.txt | 16 ++++++++++++++++ .github/workflows/n3ds.yml | 13 +++++++++++-- .github/workflows/ps2.yml | 2 +- .github/workflows/psp.yml | 2 +- CMakeLists.txt | 7 +++++++ cmake/test/test_pkgconfig.sh | 26 +++++++++++++------------- 6 files changed, 49 insertions(+), 17 deletions(-) create mode 100644 .github/cmake/CMakeLists.txt diff --git a/.github/cmake/CMakeLists.txt b/.github/cmake/CMakeLists.txt new file mode 100644 index 000000000..39ebaf8b8 --- /dev/null +++ b/.github/cmake/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.0) +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}") diff --git a/.github/workflows/n3ds.yml b/.github/workflows/n3ds.yml index 9b11122f3..45adb110c 100644 --- a/.github/workflows/n3ds.yml +++ b/.github/workflows/n3ds.yml @@ -42,5 +42,14 @@ jobs: -DCMAKE_PREFIX_PATH=${{ env.SDL3_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 + - name: Extract CC/CXX/CFLAGS/CXXFLAGS from CMake toolchain + run: | + cmake -S .github/cmake -B /tmp/cmake_extract \ + -DCMAKE_TOOLCHAIN_FILE=${DEVKITPRO}/cmake/3DS.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DVAR_PATH=/tmp/n3ds_env.txt + cat /tmp/n3ds_env.txt >> $GITHUB_ENV + - name: Verify sdl3.pc + run: | + export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig + cmake/test/test_pkgconfig.sh diff --git a/.github/workflows/ps2.yml b/.github/workflows/ps2.yml index a0f90201f..29b4c9e7c 100644 --- a/.github/workflows/ps2.yml +++ b/.github/workflows/ps2.yml @@ -54,7 +54,7 @@ jobs: - name: Verify sdl3.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 LDFLAGS="-L$PS2DEV/ps2sdk/ee/lib -L$PS2DEV/gsKit/lib -L$PS2DEV/ps2sdk/ports/lib" export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig cmake/test/test_pkgconfig.sh diff --git a/.github/workflows/psp.yml b/.github/workflows/psp.yml index feade4e1e..073ed0db0 100644 --- a/.github/workflows/psp.yml +++ b/.github/workflows/psp.yml @@ -43,6 +43,6 @@ jobs: - name: Verify sdl3.pc run: | export CC=psp-gcc + export LDFLAGS="-L$PSPDEV/lib -L$PSPDEV/psp/lib -L$PSPDEV/psp/sdk/lib" export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig - export EXTRA_LDFLAGS="-L$PSPDEV/lib -L$PSPDEV/psp/lib -L$PSPDEV/psp/sdk/lib" cmake/test/test_pkgconfig.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 28c8cb254..86b7d478c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2721,6 +2721,13 @@ elseif(N3DS) else() message_error("SDL_FILE must be enabled to build on N3DS") endif() + + foreach(lib ${CMAKE_C_STANDARD_LIBRARIES}) + if(lib MATCHES "^-l") + string(SUBSTRING "${lib}" 2 -1 lib) + endif() + list(APPEND SDL_EXTRA_LIBS ${lib}) + endforeach() endif() if(HAVE_VULKAN AND NOT SDL_LOADSO) diff --git a/cmake/test/test_pkgconfig.sh b/cmake/test/test_pkgconfig.sh index c2aa3408c..5bb84df2c 100755 --- a/cmake/test/test_pkgconfig.sh +++ b/cmake/test/test_pkgconfig.sh @@ -13,7 +13,7 @@ case "$machine" in *android* ) EXEPREFIX="lib" EXESUFFIX=".so" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -shared" + LDFLAGS="$EXTRA_LDFLAGS -shared" ;; * ) EXEPREFIX="" @@ -25,20 +25,20 @@ set -e # Get the canonical path of the folder containing this script testdir=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)") -CFLAGS="$( pkg-config sdl3 --cflags )" -LDFLAGS="$( pkg-config sdl3 --libs )" -STATIC_LDFLAGS="$( pkg-config sdl3 --libs --static )" +SDL_CFLAGS="$( pkg-config sdl3 --cflags )" +SDL_LDFLAGS="$( pkg-config sdl3 --libs )" +SDL_STATIC_LDFLAGS="$( pkg-config sdl3 --libs --static )" -compile_cmd="$CC -c "$testdir/main_gui.c" -o main_gui_pkgconfig.c.o $CFLAGS $EXTRA_CFLAGS" -link_cmd="$CC main_gui_pkgconfig.c.o -o ${EXEPREFIX}main_gui_pkgconfig${EXESUFFIX} $LDFLAGS $EXTRA_LDFLAGS" -static_link_cmd="$CC main_gui_pkgconfig.c.o -o ${EXEPREFIX}main_gui_pkgconfig_static${EXESUFFIX} $STATIC_LDFLAGS $EXTRA_LDFLAGS" +compile_cmd="$CC -c "$testdir/main_gui.c" -o main_gui_pkgconfig.c.o $SDL_CFLAGS $CFLAGS" +link_cmd="$CC main_gui_pkgconfig.c.o -o ${EXEPREFIX}main_gui_pkgconfig${EXESUFFIX} $SDL_LDFLAGS $LDFLAGS" +static_link_cmd="$CC main_gui_pkgconfig.c.o -o ${EXEPREFIX}main_gui_pkgconfig_static${EXESUFFIX} $SDL_STATIC_LDFLAGS $LDFLAGS" -echo "-- CC: $CC" -echo "-- CFLAGS: $CFLAGS" -echo "-- EXTRA_CFLAGS: $EXTRA_CFLAGS" -echo "-- LDFLASG: $LDFLAGS" -echo "-- STATIC_LDFLAGS: $STATIC_LDFLAGS" -echo "-- EXTRA_LDFLAGS: $EXTRA_LDFLAGS" +echo "-- CC: $CC" +echo "-- CFLAGS: $CFLAGS" +echo "-- LDFLASG: $LDFLAGS" +echo "-- SDL_CFLAGS: $SDL_CFLAGS" +echo "-- SDL_LDFLAGS: $SDL_LDFLAGS" +echo "-- SDL_STATIC_LDFLAGS: $SDL_STATIC_LDFLAGS" echo "-- COMPILE: $compile_cmd" echo "-- LINK: $link_cmd"