Jelajahi Sumber

Fix libsdl_* packages (#3045)

* Fix libsdl_* packages

cd3672b6ab4ba77b3c75b2b23bd63ab93ec928d4 broke libsdl_* packages tests for some reason (perhaps ldflags?)
This fixes them

* libsdl: Fix MinGW

* Fix libsdl_gfx
Jérôme Leclercq 1 tahun lalu
induk
melakukan
c0f99077c2

+ 8 - 5
packages/l/libsdl/xmake.lua

@@ -81,8 +81,13 @@ package("libsdl")
     end
 
     on_load(function (package)
-        if package:config("sdlmain") or package:config("use_sdlmain") then
+        if package:config("sdlmain") then
             package:add("components", "main")
+            if package:is_plat("mingw") then
+                -- MinGW requires linking mingw32 before SDL2main
+                local libsuffix = package:is_debug() and "d" or ""
+                package:add("linkorders", "mingw32", "SDL2main" .. libsuffix)
+            end
         else
             package:add("defines", "SDL_MAIN_HANDLED")
         end
@@ -102,7 +107,8 @@ package("libsdl")
             component:add("ldflags", "-subsystem:windows")
             component:add("syslinks", "shell32")
         elseif package:is_plat("mingw") then
-            component:add("ldflags", "-Wl,-subsystem,windows")
+            component:add("syslinks", "mingw32")
+            component:add("ldflags", "-mwindows")
         end
         component:add("deps", "lib")
     end)
@@ -226,9 +232,6 @@ package("libsdl")
     on_test(function (package)
         assert(package:check_cxxsnippets({test = [[
             #include <SDL2/SDL.h>
-            #if defined(__MINGW32__) || defined(__MINGW64__)
-            #   undef main
-            #endif
             int main(int argc, char** argv) {
                 SDL_Init(0);
                 return 0;

+ 4 - 4
packages/l/libsdl_gfx/xmake.lua

@@ -68,8 +68,8 @@ package("libsdl_gfx")
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("aacircleRGBA", {includes = "SDL2/SDL2_gfxPrimitives.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
-        assert(package:has_cfuncs("SDL_initFramerate", {includes = "SDL2/SDL2_framerate.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
-        assert(package:has_cfuncs("rotozoomSurface", {includes = "SDL2/SDL2_rotozoom.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
-        assert(package:has_cfuncs("SDL_imageFilterAdd", {includes = "SDL2/SDL2_imageFilter.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
+        assert(package:has_cfuncs("aacircleRGBA", {includes = {"SDL2/SDL_main.h", "SDL2/SDL2_gfxPrimitives.h"}}))
+        assert(package:has_cfuncs("SDL_initFramerate", {includes = {"SDL2/SDL_main.h", "SDL2/SDL2_framerate.h"}}))
+        assert(package:has_cfuncs("rotozoomSurface", {includes = {"SDL2/SDL_main.h", "SDL2/SDL2_rotozoom.h"}}))
+        assert(package:has_cfuncs("SDL_imageFilterAdd", {includes = {"SDL2/SDL_main.h", "SDL2/SDL2_imageFilter.h"}}))
     end)

+ 1 - 1
packages/l/libsdl_image/xmake.lua

@@ -61,5 +61,5 @@ package("libsdl_image")
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("IMG_Init", {includes = "SDL2/SDL_image.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
+        assert(package:has_cfuncs("IMG_Init", {includes = {"SDL2/SDL_main.h", "SDL2/SDL_image.h"}}))
     end)

+ 1 - 1
packages/l/libsdl_mixer/xmake.lua

@@ -65,5 +65,5 @@ package("libsdl_mixer")
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("Mix_Init", {includes = "SDL2/SDL_mixer.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
+        assert(package:has_cfuncs("Mix_Init", {includes = {"SDL2/SDL_main.h", "SDL2/SDL_mixer.h"}}))
     end)

+ 1 - 2
packages/l/libsdl_net/xmake.lua

@@ -62,6 +62,5 @@ package("libsdl_net")
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("SDLNet_Init",
-            {includes = "SDL2/SDL_net.h", configs = {cxflags = "-sUSE_SDL=0", defines = "SDL_MAIN_HANDLED"}}))
+        assert(package:has_cfuncs("SDLNet_Init", {includes = {"SDL2/SDL_main.h", "SDL2/SDL_net.h"}, configs = {cxflags = "-sUSE_SDL=0"}}))
     end)

+ 2 - 2
packages/l/libsdl_ttf/xmake.lua

@@ -47,6 +47,7 @@ package("libsdl_ttf")
         local configs = {"-DSDL2TTF_SAMPLES=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DSDL2TTF_VENDORED=OFF")
         local libsdl = package:dep("libsdl")
         if libsdl and not libsdl:is_system() then
             table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
@@ -100,6 +101,5 @@ package("libsdl_ttf")
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("TTF_Init",
-            {includes = "SDL2/SDL_ttf.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
+        assert(package:has_cfuncs("TTF_Init", {includes = {"SDL2/SDL_main.h", "SDL2/SDL_ttf.h"}}))
     end)