Skip to content

Commit

Permalink
Fix glm on Fedora
Browse files Browse the repository at this point in the history
  • Loading branch information
MatusGuy committed Jan 27, 2025
1 parent 6297944 commit ad125e7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,13 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
endif()

# Fedora Linux stores the glm CMake config files in /usr/share/cmake/glm/.
# If you wanna know how this hack works, read this:
# https://cmake.org/cmake/help/v3.31/command/find_package.html#config-mode-search-procedure
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
list(APPEND CMAKE_PREFIX_PATH "/usr")
endif()

## Add lots of dependencies to compiler switches
include(SuperTux/AddPackage)

Expand All @@ -149,16 +156,15 @@ add_package(TARGET Vorbis
PKG Vorbis PKG_USE Vorbis::vorbis CONFIG REQUIRED PKG_CONFIG vorbis)
add_package(TARGET VorbisFile
PKG Vorbis PKG_USE Vorbis::vorbisfile CONFIG REQUIRED PKG_CONFIG vorbisfile)
add_package(TARGET glm
PKG glm PKG_USE glm::glm CONFIG REQUIRED PKG_CONFIG glm)
add_package(TARGET fmt
PKG fmt PKG_USE fmt::fmt CONFIG REQUIRED PKG_CONFIG fmt)
add_package(TARGET PhysFS
PKG PhysFS PKG_USE PhysFS::PhysFS CONFIG REQUIRED PKG_CONFIG physfs
PREFER_PKGCONFIG)
add_package(TARGET ZLIB
PKG ZLIB PKG_USE ZLIB::ZLIB PKG_CONFIG zlib REQUIRED)
# add_package(TARGET Iconv PKG Iconv PKG_USE Iconv::Iconv PKG_CONFIG libiconv) # probably wrong
add_package(TARGET glm
PKG glm PKG_USE glm::glm CONFIG REQUIRED PKG_CONFIG glm)

add_subdirectory(external/SDL_SavePNG EXCLUDE_FROM_ALL)
add_subdirectory(external/simplesquirrel EXCLUDE_FROM_ALL)
Expand Down
12 changes: 8 additions & 4 deletions mk/cmake/SuperTux/AddPackage.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,8 @@ function(add_package)
find_package(${addpackage_args_PKG} ${addpackage_fp_args})
endif()

if(${addpackage_args_PKG}_FOUND AND
NOT addpackage_args_PREFER_PKGCONFIG AND
TARGET ${PKG_USE})
if((${addpackage_args_PKG}_FOUND OR TARGET ${addpackage_args_PKG_USE})
AND NOT addpackage_args_PREFER_PKGCONFIG)
get_target_property(addpackage_pkg_alias_check ${addpackage_args_PKG_USE} ALIASED_TARGET)
if(addpackage_pkg_alias_check STREQUAL "addpackage_pkg_alias_check-NOTFOUND")
add_library(${addpackage_args_TARGET} ALIAS ${addpackage_args_PKG_USE})
Expand All @@ -74,16 +73,21 @@ function(add_package)
# "unalias" it, aka just export the "alias" as the new target, so a re-alias, really...
get_target_property(${addpackage_args_TARGET} ${addpackage_args_PKG_USE} ALIASED_TARGET)
endif()

message(STATUS "Package \"${addpackage_args_PKG}\" was found successfuly!")
else()
if(NOT addpackage_args_PREFER_PKGCONFIG)
message(DEBUG "CMake Package \"${addpackage_args_PKG}\" doesn't exist, so falling back to PkgConfig")
endif()

if(PkgConfig_FOUND)
set(addpackage_args_pkg_config_args)
if(addpackage_args_REQUIRED)
list(APPEND addpackage_args_pkg_config_args REQUIRED IMPORTED_TARGET GLOBAL)
list(APPEND addpackage_args_pkg_config_args REQUIRED)
endif()

list(APPEND addpackage_args_pkg_config_args IMPORTED_TARGET GLOBAL)

pkg_search_module(${addpackage_args_TARGET} ${addpackage_args_pkg_config_args} ${addpackage_args_PKG_CONFIG})

if(NOT ${addpackage_args_TARGET}_FOUND AND addpackage_args_REQUIRED)
Expand Down

0 comments on commit ad125e7

Please sign in to comment.