@@ -4,96 +4,55 @@ if(NOT SAGE_USE_SDL3 OR IS_VS6_BUILD)
44 return ()
55endif ()
66
7- # GeneralsX @build felipebraz 17/04/2026 SDL3 Dependency
8- # Download and build SDL3 from source as a static library.
9- # This avoids manual installation and keeps the repository clean.
10-
11- set (SDL_TESTS OFF CACHE BOOL "" FORCE )
12- set (SDL_EXAMPLES OFF CACHE BOOL "" FORCE )
13- set (SDL_INSTALL OFF CACHE BOOL "" FORCE )
14- set (SDL_STATIC ON CACHE BOOL "" FORCE )
15- set (SDL_SHARED OFF CACHE BOOL "" FORCE )
16-
17- # Minimal build for Generals/Zero Hour engine integration.
18-
19- # Disable Subsystems
20- set (SDL_RENDER OFF CACHE BOOL "" FORCE ) # Disables all hardware renderers (D3D11, D3D12, Vulkan, GL)
21- set (SDL_HAPTIC OFF CACHE BOOL "" FORCE )
22- set (SDL_POWER OFF CACHE BOOL "" FORCE )
23- set (SDL_SENSOR OFF CACHE BOOL "" FORCE )
24- set (SDL_HIDAPI OFF CACHE BOOL "" FORCE )
25-
26- # Disable External Platform Support
27- set (SDL_X11 OFF CACHE BOOL "" FORCE )
28- set (SDL_WAYLAND OFF CACHE BOOL "" FORCE )
29- set (SDL_VULKAN OFF CACHE BOOL "" FORCE )
30- set (SDL_METAL OFF CACHE BOOL "" FORCE )
31-
32- # Disable Misc Features
33- set (SDL_CAMERA OFF CACHE BOOL "" FORCE )
34- set (SDL_DIALOG OFF CACHE BOOL "" FORCE )
35- set (SDL_LOCALE OFF CACHE BOOL "" FORCE )
36- set (SDL_MISC OFF CACHE BOOL "" FORCE )
37- set (SDL_OFFSCREEN OFF CACHE BOOL "" FORCE )
38- set (SDL_VIRTUAL_JOYSTICK OFF CACHE BOOL "" FORCE )
39-
40- # SDL3 - Core library (v3.4.2)
41- FetchContent_Declare (
42- SDL3
43- URL https://github.com/libsdl-org/SDL/releases/download/release-3.4.2/SDL3-3.4.2.tar.gz
44- URL_HASH SHA256=ef39a2e3f9a8a78296c40da701967dd1b0d0d6e267e483863ce70f8a03b4050c
45- )
46-
47- # SDL3_image - Image loading support (v3.4.0)
48- # --- SDL3_IMAGE CATEGORIES ---
49-
50- # Disable Metadata/Packaging
51- set (SDLIMAGE_SAMPLES OFF CACHE BOOL "" FORCE )
52- set (SDLIMAGE_TESTS OFF CACHE BOOL "" FORCE )
53- set (SDLIMAGE_INSTALL OFF CACHE BOOL "" FORCE )
54- set (SDLIMAGE_VENDORED OFF CACHE BOOL "" FORCE )
55- set (SDLIMAGE_BACKEND_WIC OFF CACHE BOOL "" FORCE ) # Avoid LNK2005
56-
57- # Disable Codecs (minimal set)
58- set (SDLIMAGE_BACKEND_STB OFF CACHE BOOL "" FORCE )
59- set (SDLIMAGE_JPG OFF CACHE BOOL "" FORCE )
60- set (SDLIMAGE_PNG OFF CACHE BOOL "" FORCE )
61- set (SDLIMAGE_APNG OFF CACHE BOOL "" FORCE ) # Fixes 'APNG_ENABLED not defined' warning
62- set (SDLIMAGE_WEBP OFF CACHE BOOL "" FORCE )
63- set (SDLIMAGE_TIF OFF CACHE BOOL "" FORCE )
64- set (SDLIMAGE_AVIF OFF CACHE BOOL "" FORCE )
65- set (SDLIMAGE_JXL OFF CACHE BOOL "" FORCE )
66- set (SDLIMAGE_QOI OFF CACHE BOOL "" FORCE )
67- set (BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE ) # Ensure static for SDL3_image
68-
69- FetchContent_Declare (
70- SDL3_image
71- URL https://github.com/libsdl-org/SDL_image/releases/download/release-3.4.0/SDL3_image-3.4.0.tar.gz
72- URL_HASH SHA256=2ceb75eab4235c2c7e93dafc3ef3268ad368ca5de40892bf8cffdd510f29d9d8
73- )
74-
75- FetchContent_MakeAvailable (SDL3)
7+ # Standardized vcpkg integration: Try find_package first, fallback to source build if not found.
8+ find_package (SDL3 CONFIG QUIET )
9+ find_package (SDL3_image CONFIG QUIET )
10+
11+ if (NOT SDL3_FOUND OR NOT SDL3_image_FOUND)
12+ message (STATUS "SDL3 not found via vcpkg/find_package, falling back to source build (FetchContent)..." )
13+
14+ # Match library type to target requirements
15+ set (SDL_STATIC ON CACHE BOOL "" FORCE )
16+ set (SDL_SHARED OFF CACHE BOOL "" FORCE )
17+ set (SDLIMAGE_VENDORED OFF CACHE BOOL "" FORCE )
18+ set (SDLIMAGE_BACKEND_STB ON CACHE BOOL "" FORCE )
19+ set (SDLIMAGE_PNG ON CACHE BOOL "" FORCE )
20+ set (SDLIMAGE_APNG ON CACHE BOOL "" FORCE )
21+
22+ FetchContent_Declare (
23+ SDL3
24+ URL https://github.com/libsdl-org/SDL/releases/download/release-3.4.2/SDL3-3.4.2.tar.gz
25+ URL_HASH SHA256=ef39a2e3f9a8a78296c40da701967dd1b0d0d6e267e483863ce70f8a03b4050c
26+ )
27+
28+ FetchContent_Declare (
29+ SDL3_image
30+ URL https://github.com/libsdl-org/SDL_image/releases/download/release-3.4.0/SDL3_image-3.4.0.tar.gz
31+ URL_HASH SHA256=2ceb75eab4235c2c7e93dafc3ef3268ad368ca5de40892bf8cffdd510f29d9d8
32+ )
33+
34+ FetchContent_MakeAvailable (SDL3)
35+ FetchContent_MakeAvailable (SDL3_image)
36+ endif ()
7637
77- # Trick SDL3_image into thinking SDL3 is already found to avoid the broken find_package() in the build tree.
78- # SDL3_image specifically checks for SDL3::Headers and SDL3::SDL3 (for static builds).
38+ # Uniform aliases to ensure linking works across both discovery methods
7939if (NOT TARGET SDL3::Headers)
8040 if (TARGET SDL3_Headers)
8141 add_library (SDL3::Headers ALIAS SDL3_Headers )
8242 else ()
8343 add_library (SDL3::Headers INTERFACE IMPORTED GLOBAL )
84- target_include_directories (SDL3::Headers INTERFACE " ${sdl3_SOURCE_DIR} /include" )
44+ target_link_libraries (SDL3::Headers INTERFACE SDL3::SDL3 )
8545 endif ()
8646endif ()
8747
8848if (NOT TARGET SDL3::SDL3)
89- if (TARGET SDL3-static)
49+ if (TARGET SDL3::SDL3-static)
50+ add_library (SDL3::SDL3 ALIAS SDL3::SDL3-static )
51+ elseif (TARGET SDL3-static)
9052 add_library (SDL3::SDL3 ALIAS SDL3-static )
9153 elseif (TARGET SDL3-shared)
9254 add_library (SDL3::SDL3 ALIAS SDL3-shared )
9355 endif ()
9456endif ()
9557
9658set (SDL3_FOUND TRUE CACHE BOOL "" FORCE )
97- set (SDL3_VERSION "3.4.2" CACHE STRING "" FORCE )
98-
99- FetchContent_MakeAvailable (SDL3_image)
0 commit comments