commit d609b85b
Update the SDL2 include to prevent issues with newer versions
Changed files
| M | CMakeLists.txt before |
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4de0adb..fa28d7e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,15 +41,26 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(MACOSX TRUE)
endif()
-#Setup SDL2
+# Setup SDL2 and extensions
find_package(SDL2 REQUIRED)
+# Try modern CMake approach first, fallback to pkg-config for cross-compilation (e.g., MXE)
+find_package(SDL2_image QUIET)
+find_package(SDL2_mixer QUIET)
+find_package(SDL2_ttf QUIET)
-#Setup things that use pkg-config
-find_package(PkgConfig REQUIRED)
-pkg_search_module(SDL2MIXER REQUIRED SDL2_mixer)
-pkg_search_module(SDL2IMAGE REQUIRED SDL2_image)
-pkg_search_module(SDL2TTF REQUIRED SDL2_ttf)
+if(NOT SDL2_image_FOUND OR NOT SDL2_mixer_FOUND OR NOT SDL2_ttf_FOUND)
+ find_package(PkgConfig REQUIRED)
+ if(NOT SDL2_image_FOUND)
+ pkg_search_module(SDL2_image REQUIRED SDL2_image)
+ endif()
+ if(NOT SDL2_mixer_FOUND)
+ pkg_search_module(SDL2_mixer REQUIRED SDL2_mixer)
+ endif()
+ if(NOT SDL2_ttf_FOUND)
+ pkg_search_module(SDL2_ttf REQUIRED SDL2_ttf)
+ endif()
+endif()
find_package(Intl REQUIRED)
@@ -113,21 +124,31 @@ endif()
target_include_directories(blockattack SYSTEM PRIVATE "source/code/Libs/imgui")
target_include_directories(blockattack PRIVATE "source/code/Libs/include")
target_include_directories(blockattack PRIVATE "source/code/Libs/include/cereal/external") #Contains rapidjson
-target_include_directories(blockattack PRIVATE ${SDL2_INCLUDE_DIRS})
-target_include_directories(blockattack PRIVATE ${SDL2MIXER_INCLUDE_DIRS})
-target_include_directories(blockattack PRIVATE ${SDL2IMAGE_INCLUDE_DIRS})
-target_include_directories(blockattack PRIVATE ${SDL2TTF_INCLUDE_DIRS})
+if(NOT TARGET SDL2_image::SDL2_image)
+ target_include_directories(blockattack PRIVATE ${SDL2_image_INCLUDE_DIRS})
+ target_include_directories(blockattack PRIVATE ${SDL2_mixer_INCLUDE_DIRS})
+ target_include_directories(blockattack PRIVATE ${SDL2_ttf_INCLUDE_DIRS})
+endif()
target_include_directories(blockattack PRIVATE ${Intl_INCLUDE_DIRS})
-target_link_libraries(blockattack PRIVATE ${SDL2_LIBRARIES})
-target_link_libraries(blockattack PRIVATE fmt)
-target_link_libraries(blockattack PRIVATE platform_folders)
-target_link_libraries(blockattack PRIVATE physfs)
+target_link_libraries(blockattack PRIVATE
+ SDL2::SDL2
+ fmt
+ platform_folders
+ physfs
+ ${Boost_LIBRARIES}
+)
+
+# Link SDL2 extensions - use imported targets if available, otherwise use pkg-config variables
+if(TARGET SDL2_image::SDL2_image)
+ target_link_libraries(blockattack PRIVATE SDL2_image::SDL2_image SDL2_mixer::SDL2_mixer SDL2_ttf::SDL2_ttf)
+else()
+ target_link_libraries(blockattack PRIVATE ${SDL2_image_LIBRARIES} ${SDL2_mixer_LIBRARIES} ${SDL2_ttf_LIBRARIES})
+endif()
+
if (MACOSX)
target_link_libraries(blockattack PRIVATE intl)
endif()
-target_link_libraries(blockattack PRIVATE ${SDL2MIXER_LIBRARIES} ${SDL2IMAGE_LIBRARIES} ${SDL2TTF_LIBRARIES})
-target_link_libraries(blockattack PRIVATE ${Boost_LIBRARIES} )
set_target_properties(blockattack PROPERTIES RUNTIME_OUTPUT_DIRECTORY Game)
#Installing