Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix macOS CI again #2079

Merged
merged 7 commits into from
Dec 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ jobs:
runs-on: macos-latest
needs: clang-format
env:
MACOSX_DEPLOYMENT_TARGET: 10.15
VCPKG_BUILD_TYPE: release
steps:
- uses: actions/checkout@v3
Expand Down
3 changes: 2 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
"inherits": "fullrelease",
"installDir": ".install",
"cacheVariables": {
"FREECIV_USE_VCPKG": "ON"
"FREECIV_USE_VCPKG": "ON",
"CMAKE_FIND_PACKAGE_PREFER_CONFIG": "ON"
}
},
{
Expand Down
8 changes: 5 additions & 3 deletions client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,15 @@ endif()

if (AUDIO_SDL)
target_sources(freeciv21-client PRIVATE audio/audio_sdl.cpp)
# SDL comes with the -s option on emscripten
if (NOT EMSCRIPTEN)
# SDL comes with the -s option on emscripten
# See https://github.com/microsoft/vcpkg/blob/2023.12.12/ports/sdl2/usage
target_link_libraries(freeciv21-client
PRIVATE $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>)
target_link_libraries(freeciv21-client PRIVATE ${SDL2_MIXER_LIBRARIES})
target_include_directories(freeciv21-client PRIVATE ${SDL2_MIXER_INCLUDE_DIR})
target_link_libraries(freeciv21-client
PRIVATE $<IF:$<TARGET_EXISTS:SDL2_mixer::SDL2_mixer>,
SDL2_mixer::SDL2_mixer,
SDL2_mixer::SDL2_mixer-static>)
endif()
endif()

Expand Down
73 changes: 31 additions & 42 deletions cmake/FindSDL2_mixer.cmake
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
# - Locate SDL2_mixer library
# This module defines:
# SDL2_MIXER_LIBRARIES, the name of the library to link against
# SDL2_MIXER_INCLUDE_DIRS, where to find the headers
# SDL2_MIXER_FOUND, if false, do not try to link against
# SDL2_MIXER_VERSION_STRING - human-readable string containing the version of SDL2_mixer
#
# For backward compatiblity the following variables are also set:
# SDLMIXER_LIBRARY (same value as SDL2_MIXER_LIBRARIES)
# SDLMIXER_INCLUDE_DIR (same value as SDL2_MIXER_INCLUDE_DIRS)
# SDLMIXER_FOUND (same value as SDL2_MIXER_FOUND)
# SDL2_mixer_LIBRARIES, the name of the library to link against
# SDL2_mixer_INCLUDE_DIRS, where to find the headers
# SDL2_mixer_FOUND, if false, do not try to link against
# SDL2_mixer_VERSION_STRING - human-readable string containing the version of SDL2_mixer
#
# $SDLDIR is an environment variable that would
# correspond to the ./configure --prefix=$SDLDIR
Expand All @@ -32,58 +27,52 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)

if(NOT SDL2_MIXER_INCLUDE_DIR AND SDLMIXER_INCLUDE_DIR)
set(SDL2_MIXER_INCLUDE_DIR ${SDLMIXER_INCLUDE_DIR} CACHE PATH "directory cache
entry initialized from old variable name")
endif()
find_path(SDL2_MIXER_INCLUDE_DIR SDL_mixer.h
find_path(SDL2_mixer_INCLUDE_DIR SDL_mixer.h
HINTS
ENV SDLMIXERDIR
ENV SDLDIR
PATH_SUFFIXES include/SDL2 include/SDL2.0 include
)

if(NOT SDL2_MIXER_LIBRARY AND SDLMIXER_LIBRARY)
set(SDL2_MIXER_LIBRARY ${SDLMIXER_LIBRARY} CACHE FILEPATH "file cache entry
initialized from old variable name")
endif()
find_library(SDL2_MIXER_LIBRARY
find_library(SDL2_mixer_LIBRARY
NAMES SDL2_mixer
HINTS
ENV SDLMIXERDIR
ENV SDLDIR
PATH_SUFFIXES lib
)

if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL2_mixer.h")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL2_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL2_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL2_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}")
set(SDL2_MIXER_VERSION_STRING ${SDL2_MIXER_VERSION_MAJOR}.${SDL2_MIXER_VERSION_MINOR}.${SDL2_MIXER_VERSION_PATCH})
unset(SDL2_MIXER_VERSION_MAJOR_LINE)
unset(SDL2_MIXER_VERSION_MINOR_LINE)
unset(SDL2_MIXER_VERSION_PATCH_LINE)
unset(SDL2_MIXER_VERSION_MAJOR)
unset(SDL2_MIXER_VERSION_MINOR)
unset(SDL2_MIXER_VERSION_PATCH)
if(SDL2_mixer_INCLUDE_DIR AND EXISTS "${SDL2_mixer_INCLUDE_DIR}/SDL2_mixer.h")
file(STRINGS "${SDL2_mixer_INCLUDE_DIR}/SDL2_mixer.h" SDL2_mixer_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_mixer_INCLUDE_DIR}/SDL2_mixer.h" SDL2_mixer_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_mixer_INCLUDE_DIR}/SDL2_mixer.h" SDL2_mixer_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_mixer_VERSION_MAJOR "${SDL2_mixer_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_mixer_VERSION_MINOR "${SDL2_mixer_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_mixer_VERSION_PATCH "${SDL2_mixer_VERSION_PATCH_LINE}")
set(SDL2_mixer_VERSION_STRING ${SDL2_mixer_VERSION_MAJOR}.${SDL2_mixer_VERSION_MINOR}.${SDL2_mixer_VERSION_PATCH})
unset(SDL2_mixer_VERSION_MAJOR_LINE)
unset(SDL2_mixer_VERSION_MINOR_LINE)
unset(SDL2_mixer_VERSION_PATCH_LINE)
unset(SDL2_mixer_VERSION_MAJOR)
unset(SDL2_mixer_VERSION_MINOR)
unset(SDL2_mixer_VERSION_PATCH)
endif()

set(SDL2_MIXER_LIBRARIES ${SDL2_MIXER_LIBRARY})
set(SDL2_MIXER_INCLUDE_DIRS ${SDL2_MIXER_INCLUDE_DIR})
set(SDL2_mixer_LIBRARIES ${SDL2_mixer_LIBRARY})
set(SDL2_mixer_INCLUDE_DIRS ${SDL2_mixer_INCLUDE_DIR})

include(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer
REQUIRED_VARS SDL2_MIXER_LIBRARIES SDL2_MIXER_INCLUDE_DIRS
VERSION_VAR SDL2_MIXER_VERSION_STRING)
REQUIRED_VARS SDL2_mixer_LIBRARIES SDL2_mixer_INCLUDE_DIRS
VERSION_VAR SDL2_mixer_VERSION_STRING)

# for backward compatiblity
set(SDLMIXER_LIBRARY ${SDL2_MIXER_LIBRARIES})
set(SDLMIXER_INCLUDE_DIR ${SDL2_MIXER_INCLUDE_DIRS})
set(SDLMIXER_FOUND ${SDL2_MIXER_FOUND})
if (SDL2_mixer_FOUND)
add_library(SDL2_mixer::SDL2_mixer UNKNOWN IMPORTED)
set_target_properties(SDL2_mixer::SDL2_mixer PROPERTIES
IMPORTED_LOCATION "${SDL2_mixer_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_mixer_INCLUDE_DIR}")
endif()

mark_as_advanced(SDL2_MIXER_LIBRARY SDL2_MIXER_INCLUDE_DIR)
mark_as_advanced(SDL2_mixer_LIBRARY SDL2_mixer_INCLUDE_DIR)

18 changes: 9 additions & 9 deletions cmake/FreecivDependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,16 @@ endif()
# SDL2 for audio
find_package(SDL2)
find_package(SDL2_mixer)
if (SDL2_MIXER_LIBRARIES AND SDL2_FOUND)
if (EMSCRIPTEN OR (SDL2_mixer_FOUND AND SDL2_FOUND))
message(STATUS "Building with audio support enabled")
set(AUDIO_SDL TRUE)
endif()
if (NOT SDL2_FOUND)
message(STATUS "SDL2 not found - audio support disabled")
endif()
if (NOT SDL2_MIXER_LIBRARIES)
message(STATUS "SDL2_mixer not found - audio support disabled")
set(SDL2_MIXER_LIBRARIES "")
set(SDL2_MIXER_INCLUDE_DIR "")
else()
if (NOT SDL2_FOUND)
message(STATUS "SDL2 not found - audio support disabled")
endif()
if (NOT SDL2_mixer_FOUND)
message(STATUS "SDL2_mixer not found - audio support disabled")
endif()
endif()

# Lua
Expand Down
3 changes: 3 additions & 0 deletions docs/Contributing/workarounds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@ Workarounds
This page lists workarounds in the code. They should be checked from time to
time and removed once they are no longer needed.

#. The file ``cmake/FindSDL2_mixer.cmake`` is needed for SDL2_mixer 2.0, which
didn't have CMake support. CMake support was introduced in SDL2_mixer 2.5,
but Ubuntu 22.04 is stuck with SDL2_mixer 2.0.4.
#. The macOS CI installs a fixed Python version to work around a bug in Meson.
(``.github/workflows/build.yaml``)
Loading