Improve sdl (#1816)

* Allow libsdl_<libs> to work in static (or with statically built libsdl)

* libsdl_image: Fix libsdl_image

* Some fixes

* Some fixes

* More fixes

* Fix SDL find defines

* Update xmake.lua

* Update xmake.lua

* More fixes

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* fixes and logs

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* improve sdl

* pass freetype

* fix sep

* add verbose

* Update xmake.lua

* fix missing zlib

* fix wasm

* fix ttf

* fix sdl_ttf

* fix path

* improve shared

* revert ci

* format

* fix sdl gfx

* fix sdl gfx

* improve sdl ttf

* fix gfx

* improve sdl ttf

* improve sdl ttf

* improve sdl ttf

* fix net

* improve wasm and bsd

* improve gfx

* test

* Update xmake.lua

* fix gfx

* port sdl gfx

* export dll

* Update xmake.lua

---------

Co-authored-by: SirLynix <lynix680@gmail.com>
pull/1831/head
ruki 2 years ago committed by GitHub
parent 1342f3d21e
commit cad11b9cac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      packages/l/libsdl/xmake.lua
  2. 176
      packages/l/libsdl_gfx/patches/1.0.4/add-x64-support.patch
  3. 80
      packages/l/libsdl_gfx/xmake.lua
  4. 87
      packages/l/libsdl_image/xmake.lua
  5. 94
      packages/l/libsdl_mixer/xmake.lua
  6. 84
      packages/l/libsdl_net/xmake.lua
  7. 15
      packages/l/libsdl_ttf/patches/2.20.1/cmakelists.patch
  8. 123
      packages/l/libsdl_ttf/xmake.lua

@ -49,6 +49,10 @@ package("libsdl")
add_configs("with_x", {description = "Enables X support (requires it on the system)", default = true, type = "boolean"})
end
if is_plat("wasm") then
add_cxflags("-sUSE_SDL=0")
end
on_load(function (package)
if package:config("use_sdlmain") then
package:add("components", "main")
@ -172,9 +176,6 @@ package("libsdl")
end
table.insert(configs, "-DCMAKE_INCLUDE_PATH=" .. table.concat(includedirs, ";"))
end
elseif package:is_plat("bsd") then
opt = opt or {}
opt.packagedeps = "libusb"
elseif package:is_plat("wasm") then
-- emscripten enables USE_SDL by default which will conflict with the sdl headers
opt = opt or {}
@ -184,5 +185,6 @@ package("libsdl")
end)
on_test(function (package)
assert(package:has_cfuncs("SDL_Init", {includes = "SDL2/SDL.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
assert(package:has_cfuncs("SDL_Init",
{includes = "SDL2/SDL.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
end)

@ -1,176 +0,0 @@
diff --git a/SDL2_gfx.sln b/SDL2_gfx.sln
index 786f339..bd7635b 100644
--- a/SDL2_gfx.sln
+++ b/SDL2_gfx.sln
@@ -15,12 +15,18 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
+ Debug|x64 = Debug|x64
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Debug|Win32.ActiveCfg = Debug|Win32
{AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Debug|Win32.Build.0 = Debug|Win32
{AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Release|Win32.ActiveCfg = Release|Win32
{AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Release|Win32.Build.0 = Release|Win32
+ {AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Debug|x64.ActiveCfg = Debug|x64
+ {AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Debug|x64.Build.0 = Debug|x64
+ {AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Release|x64.ActiveCfg = Release|x64
+ {AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}.Release|x64.Build.0 = Release|x64
{AE22EFD3-6F6D-48C0-AF3D-EF190406BEDC}.Debug|Win32.ActiveCfg = Debug|Win32
{AE22EFD3-6F6D-48C0-AF3D-EF190406BEDC}.Debug|Win32.Build.0 = Debug|Win32
{AE22EFD3-6F6D-48C0-AF3D-EF190406BEDC}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/SDL2_gfx.vcxproj b/SDL2_gfx.vcxproj
index e842d8a..4ae0cfa 100644
--- a/SDL2_gfx.vcxproj
+++ b/SDL2_gfx.vcxproj
@@ -9,24 +9,42 @@
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AE22EFD3-6E6D-48C0-AF3D-EF190406BEDC}</ProjectGuid>
<RootNamespace>SDL2_gfx</RootNamespace>
<Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <PlatformToolset>v141</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>v141</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v142</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -37,6 +55,12 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -46,6 +70,12 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@@ -104,6 +134,63 @@
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\SDL2-2.0.5\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_EXPORT;USE_MMX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\SDL2-2.0.5\VisualC\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>
+ </ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories>..\SDL2-2.0.5\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\SDL2-2.0.5\VisualC\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="SDL2_framerate.c" />
<ClCompile Include="SDL2_gfxPrimitives.c" />
@@ -121,10 +208,12 @@
<CustomBuildStep Include="ChangeLog">
<FileType>Document</FileType>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</CustomBuildStep>
<CustomBuildStep Include="README">
<FileType>Document</FileType>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</CustomBuildStep>
</ItemGroup>
<ItemGroup>

@ -9,7 +9,6 @@ package("libsdl_gfx")
add_versions("ferzkopp:1.0.4", "b6da07583b7fb8f4d8cee97cac9176b97a287f56a8112e22f38183ecf47b9dcb")
add_versions("sourceforge:1.0.4", "63e0e01addedc9df2f85b93a248f06e8a04affa014a835c2ea34bfe34e576262")
add_patches("1.0.4", path.join(os.scriptdir(), "patches", "1.0.4", "add-x64-support.patch"), "2ea0eda111d95864bbc9aedbf8aa91dd3923208d2816a626dfd6bc173986e426")
add_patches("1.0.4", path.join(os.scriptdir(), "patches", "1.0.4", "lrint_fix.patch"), "9fb928306fb25293720214377bff2f605f60ea26f43ea5346cf1268c504aff1a")
elseif is_plat("macosx", "linux") then
set_urls("https://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-$(version).tar.gz")
@ -25,62 +24,47 @@ package("libsdl_gfx")
add_extsources("brew::sdl2_gfx")
end
add_deps("libsdl")
add_links("SDL2_gfx")
if is_plat("wasm") then
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
add_includedirs("include", "include/SDL2")
on_install("windows", function(package)
import("core.tool.toolchain")
local vs = tonumber(toolchain.load("msvc"):config("vs"))
if vs < 2019 then
raise("Your compiler is too old to use this library.")
end
local file_name = "SDL2_gfx.vcxproj"
local content = io.readfile(file_name)
content = content:gsub("%%%(AdditionalIncludeDirectories%)", package:dep("libsdl"):installdir("include", "SDL2") .. ";%%(AdditionalIncludeDirectories)")
content = content:gsub("%%%(AdditionalLibraryDirectories%)", package:dep("libsdl"):installdir("lib") .. ";%%(AdditionalLibraryDirectories)")
io.writefile(file_name, content)
-- MSVC trick no longer required since C++11
io.replace("SDL2_gfxPrimitives.c", "#if defined(_MSC_VER)", "#if 0", {plain = true})
local configs = {}
local arch = package:is_arch("x86") and "Win32" or "x64"
local mode = package:debug() and "Debug" or "Release"
table.insert(configs, "/property:Configuration=" .. mode)
table.insert(configs, "/property:Platform=" .. arch)
if vs >= 2022 then
table.insert(configs, "/p:PlatformToolset=v143")
on_load(function (package)
if package:config("shared") then
package:add("deps", "libsdl", { configs = { shared = true }})
else
package:add("deps", "libsdl")
end
table.insert(configs, "-target:SDL2_gfx")
import("package.tools.msbuild").build(package, configs)
local build_dir = path.join(arch, mode)
os.cp(path.join(build_dir, "*.lib"), package:installdir("lib"))
os.cp(path.join(build_dir, "*.dll"), package:installdir("bin"))
os.cp("*.h", package:installdir("include", "SDL2"))
end)
on_install("macosx", "linux", function (package)
on_install("windows|x86", "windows|x64", "macosx", "linux", function(package)
io.writefile("xmake.lua", [[
add_rules("mode.debug", "mode.release")
if is_kind("shared") then
add_requires("libsdl", {configs = {shared = true}})
else
add_requires("libsdl")
end
target("SDL2_gfx")
set_kind("$(kind)")
add_files("*.c")
add_headerfiles("*.h", {prefixdir = "SDL2"})
add_packages("libsdl")
add_rules("utils.install.pkgconfig_importfiles")
if is_plat("windows") and is_kind("shared") then
add_defines("DLL_EXPORT")
end
if is_arch("x86", "i386") then
add_defines("USE_MMX")
end
]])
local configs = {}
if package:config("shared") then
table.insert(configs, "--enable-shared=yes")
else
table.insert(configs, "--enable-shared=no")
end
if package:is_plat("linux") and package:config("pic") ~= false then
table.insert(configs, "--with-pic")
configs.kind = "shared"
end
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "--with-sdl-prefix=" .. libsdl:installdir())
end
import("package.tools.autoconf").install(package, configs)
import("package.tools.xmake").install(package, configs)
end)
on_test(function (package)

@ -1,5 +1,4 @@
package("libsdl_image")
set_homepage("http://www.libsdl.org/projects/SDL_image/")
set_description("Simple DirectMedia Layer image loading library")
set_license("zlib")
@ -12,71 +11,53 @@ package("libsdl_image")
add_extsources("brew::sdl2_image")
end
if is_plat("windows", "mingw") then
set_urls("https://www.libsdl.org/projects/SDL_image/release/SDL2_image-devel-$(version)-VC.zip")
add_urls("https://github.com/libsdl-org/SDL_image/releases/download/release-$(version)/SDL2_image-devel-$(version)-VC.zip")
add_versions("2.0.5", "a180f9b75c4d3fbafe02af42c42463cc7bc488e763cfd1ec2ffb75678b4387ac")
add_versions("2.6.0", "e8953ec28e689fdef7805d0dc6913b8038dc6e250fe340929e459f367e2e75fa")
add_versions("2.6.1", "b431347d039081b3ec065670d3037f106c8683f11491c45776cde7e69965a5f3")
add_versions("2.6.2", "f510a58b03ce2b74a68d4e6733c47c1931813ab1736e533ad576f4cecb3a8a4d")
else
set_urls("https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$(version).zip")
add_urls("https://github.com/libsdl-org/SDL_image/releases/download/release-$(version)/SDL2_image-$(version).zip")
add_versions("2.0.5", "eee0927d1e7819d57c623fe3e2b3c6761c77c474fe9bc425e8674d30ac049b1c")
add_versions("2.6.0", "2252cdfd5be73cefaf727edc39c2ef3b7682e797acbd3126df117e925d46aaf6")
add_versions("2.6.1", "cbfea63a46715c63a1db9e41617e550749a95ffd33ef9bd5ba6e58b2bdca6ed3")
add_versions("2.6.2", "efe3c229853d0d40c35e5a34c3f532d5d9728f0abc623bc62c962bcef8754205")
end
add_urls("https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$(version).zip",
"https://github.com/libsdl-org/SDL_image/releases/download/release-$(version)/SDL2_image-$(version).zip")
add_versions("2.6.0", "2252cdfd5be73cefaf727edc39c2ef3b7682e797acbd3126df117e925d46aaf6")
add_versions("2.6.1", "cbfea63a46715c63a1db9e41617e550749a95ffd33ef9bd5ba6e58b2bdca6ed3")
add_versions("2.6.2", "efe3c229853d0d40c35e5a34c3f532d5d9728f0abc623bc62c962bcef8754205")
if is_plat("macosx") then
if is_plat("macosx", "iphoneos") then
add_frameworks("CoreFoundation", "CoreGraphics", "ImageIO", "CoreServices")
elseif is_plat("wasm") then
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
add_deps("libsdl")
add_deps("cmake")
add_links("SDL2_image")
add_includedirs("include", "include/SDL2")
on_load("macosx", "linux", function (package)
if package:version():ge("2.6") then
package:add("deps", "cmake")
on_load(function (package)
if package:config("shared") then
package:add("deps", "libsdl", { configs = { shared = true }})
else
package:add("deps", "automake", "autoconf")
package:add("deps", "libsdl")
end
end)
on_install("windows", "mingw", function (package)
local arch = package:arch()
if package:is_plat("mingw") then
arch = (arch == "x86_64") and "x64" or "x86"
end
os.cp("include/*", package:installdir("include/SDL2"))
os.cp(path.join("lib", arch, "*.lib"), package:installdir("lib"))
os.cp(path.join("lib", arch, "*.dll"), package:installdir("bin"))
end)
on_install("macosx", "linux", function (package)
if package:version():ge("2.6") then
local configs = {"-DSDL_TEST=OFF"}
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
table.insert(configs, "-DSDL_STATIC=" .. (package:config("shared") and "OFF" or "ON"))
table.insert(configs, "-DSDL_SHARED=" .. (package:config("shared") and "ON" or "OFF"))
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
end
import("package.tools.cmake").install(package, configs)
else
local configs = {}
table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "--with-sdl-prefix=" .. libsdl:installdir())
on_install(function (package)
local configs = {"-DSDL2IMAGE_SAMPLES=OFF", "-DSDL2IMAGE_TESTS=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"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
local fetchinfo = libsdl:fetch()
if fetchinfo then
for _, dir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
if os.isfile(path.join(dir, "SDL_version.h")) then
table.insert(configs, "-DSDL2_INCLUDE_DIR=" .. dir)
break
end
end
for _, libfile in ipairs(fetchinfo.libfiles) do
if libfile:match("SDL2%..+$") or libfile:match("SDL2-static%..+$") then
table.insert(configs, "-DSDL2_LIBRARY=" .. table.concat(fetchinfo.libfiles, ";"))
end
end
end
io.replace("Makefile.am", "noinst_PROGRAMS = showimage.-\n", "\n")
os.rm("./configure")
import("package.tools.autoconf").install(package, configs)
end
import("package.tools.cmake").install(package, configs)
end)
on_test(function (package)

@ -1,23 +1,14 @@
package("libsdl_mixer")
set_homepage("https://www.libsdl.org/projects/SDL_mixer/")
set_description("Simple DirectMedia Layer mixer audio library")
set_license("zlib")
if is_plat("windows", "mingw") then
set_urls("https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-devel-$(version)-VC.zip")
add_urls("https://github.com/libsdl-org/SDL_mixer/releases/download/release-$(version)/SDL2_mixer-devel-$(version)-VC.zip")
add_versions("2.0.4", "258788438b7e0c8abb386de01d1d77efe79287d9967ec92fbb3f89175120f0b0")
add_versions("2.6.0", "b8862b95340b8990177fdb3fb1f22fe5fd089d8b2ad0a30bf7d84e0f4a6138ae")
add_versions("2.6.1", "e086e1fed423a801e0e7573af063f2f51d3bcef0c9da356ed8a62a7a7f7a0815")
add_versions("2.6.2", "7f050663ccc7911bb9c57b11e32ca79578b712490186b8645ddbbe4e7d2fe1c9")
else
set_urls("https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$(version).zip")
add_urls("https://github.com/libsdl-org/SDL_mixer/releases/download/release-$(version)/SDL2_mixer-$(version).zip")
add_versions("2.0.4", "9affb8c7bf6fbffda0f6906bfb99c0ea50dca9b188ba9e15be90042dc03c5ded")
add_versions("2.6.0", "aca0ffc96a4bf2a56a16536a269de28e341ce38a46a25180bc1ef75e19b08a3a")
add_versions("2.6.1", "788c748c1d3a87126511e60995b03526ed4e31e2ba053dffd9dcc8abde97b950")
add_versions("2.6.2", "61549615a67e731805ca1df553e005be966a625c1d20fb085bf99edeef6e0469")
end
add_urls("https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$(version).zip",
"https://github.com/libsdl-org/SDL_mixer/releases/download/release-$(version)/SDL2_mixer-$(version).zip")
add_versions("2.0.4", "9affb8c7bf6fbffda0f6906bfb99c0ea50dca9b188ba9e15be90042dc03c5ded")
add_versions("2.6.0", "aca0ffc96a4bf2a56a16536a269de28e341ce38a46a25180bc1ef75e19b08a3a")
add_versions("2.6.1", "788c748c1d3a87126511e60995b03526ed4e31e2ba053dffd9dcc8abde97b950")
add_versions("2.6.2", "61549615a67e731805ca1df553e005be966a625c1d20fb085bf99edeef6e0469")
if is_plat("mingw") and is_subhost("msys") then
add_extsources("pacman::SDL2_mixer")
@ -27,51 +18,50 @@ package("libsdl_mixer")
add_extsources("brew::sdl2_mixer")
end
add_deps("libsdl")
add_links("SDL2_mixer")
add_deps("cmake")
add_includedirs("include", "include/SDL2")
on_load(function (package)
if package:version():ge("2.6") and package:is_plat("macosx", "linux") then
package:add("deps", "cmake")
end
end)
if is_plat("wasm") then
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
on_install("windows", "mingw", function (package)
local arch = package:arch()
if package:is_plat("mingw") then
arch = (arch == "x86_64") and "x64" or "x86"
on_load(function (package)
if package:config("shared") then
package:add("deps", "libsdl", { configs = { shared = true }})
else
package:add("deps", "libsdl")
end
os.cp("include/*", package:installdir("include/SDL2"))
os.cp(path.join("lib", arch, "*.lib"), package:installdir("lib"))
os.cp(path.join("lib", arch, "*.dll"), package:installdir("bin"))
end)
on_install("macosx", "linux", function (package)
if package:version():ge("2.6") then
local configs = {"-DSDL2MIXER_SAMPLES=OFF",
"-DSDL2MIXER_FLAC=OFF",
"-DSDL2MIXER_OPUS=OFF",
"-DSDL2MIXER_MOD=OFF",
"-DSDL2MIXER_MIDI=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"))
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
end
import("package.tools.cmake").install(package, configs)
else
local configs = {}
table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "--with-sdl-prefix=" .. libsdl:installdir())
on_install(function (package)
local configs = {"-DSDL2MIXER_SAMPLES=OFF",
"-DSDL2MIXER_FLAC=OFF",
"-DSDL2MIXER_OPUS=OFF",
"-DSDL2MIXER_MOD=OFF",
"-DSDL2MIXER_MIDI=OFF",
"-DSDL2MIXER_CMD=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"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
local fetchinfo = libsdl:fetch()
if fetchinfo then
for _, dir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
if os.isfile(path.join(dir, "SDL_version.h")) then
table.insert(configs, "-DSDL2_INCLUDE_DIR=" .. dir)
break
end
end
for _, libfile in ipairs(fetchinfo.libfiles) do
if libfile:match("SDL2%..+$") or libfile:match("SDL2-static%..+$") then
table.insert(configs, "-DSDL2_LIBRARY=" .. table.concat(fetchinfo.libfiles, ";"))
end
end
end
import("package.tools.autoconf").install(package, configs)
end
import("package.tools.cmake").install(package, configs)
end)
on_test(function (package)

@ -1,19 +1,11 @@
package("libsdl_net")
set_homepage("https://www.libsdl.org/projects/SDL_net/")
set_description("Simple DirectMedia Layer networking library")
set_license("zlib")
if is_plat("windows", "mingw") then
set_urls("https://www.libsdl.org/projects/SDL_net/release/SDL2_net-devel-$(version)-VC.zip")
add_urls("https://github.com/libsdl-org/SDL_net/releases/download/release-$(version)/SDL2_net-devel-$(version)-VC.zip")
add_versions("2.0.1", "c1e423f2068adc6ff1070fa3d6a7886700200538b78fd5adc36903a5311a243e")
add_versions("2.2.0", "f364e55babb44e47b41d039a43c640aa1f76615b726855591b555321c7d870dd")
else
set_urls("https://www.libsdl.org/projects/SDL_net/release/SDL2_net-$(version).zip")
add_urls("https://github.com/libsdl-org/SDL_net/releases/download/release-$(version)/SDL2_net-$(version).zip")
add_versions("2.0.1", "52031ed9d08a5eb1eda40e9a0409248bf532dde5e8babff5780ef1925657d59f")
add_versions("2.2.0", "1eec3a9d43df019d7916a6ecce32f2a3ad5248c82c9c237948afc712399be36d")
end
add_urls("https://www.libsdl.org/projects/SDL_net/release/SDL2_net-$(version).zip",
"https://github.com/libsdl-org/SDL_net/releases/download/release-$(version)/SDL2_net-$(version).zip")
add_versions("2.2.0", "1eec3a9d43df019d7916a6ecce32f2a3ad5248c82c9c237948afc712399be36d")
if is_plat("mingw") and is_subhost("msys") then
add_extsources("pacman::SDL2_net")
@ -23,49 +15,53 @@ package("libsdl_net")
add_extsources("brew::sdl2_net")
end
add_deps("libsdl")
add_deps("cmake")
add_links("SDL2_net")
if is_plat("windows", "mingw") then
add_syslinks("iphlpapi", "ws2_32")
end
if is_plat("wasm") then
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
add_includedirs("include", "include/SDL2")
on_load(function (package)
if package:version():ge("2.2") and package:is_plat("macosx", "linux") then
package:add("deps", "cmake")
end
end)
on_install("windows", "mingw", function (package)
local arch = package:arch()
if package:is_plat("mingw") then
arch = (arch == "x86_64") and "x64" or "x86"
if package:config("shared") then
package:add("deps", "libsdl", { configs = { shared = true }})
else
package:add("deps", "libsdl")
end
os.cp("include/*", package:installdir("include/SDL2"))
os.cp(path.join("lib", arch, "*.lib"), package:installdir("lib"))
os.cp(path.join("lib", arch, "*.dll"), package:installdir("bin"))
end)
on_install("macosx", "linux", function (package)
if package:version():ge("2.2") then
local configs = {"-DSDL2NET_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"))
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
end
import("package.tools.cmake").install(package, configs)
else
local configs = {}
table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "--with-sdl-prefix=" .. libsdl:installdir())
on_install(function (package)
local configs = {"-DSDL2NET_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"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
local fetchinfo = libsdl:fetch()
if fetchinfo then
for _, dir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
if os.isfile(path.join(dir, "SDL_version.h")) then
table.insert(configs, "-DSDL2_INCLUDE_DIR=" .. dir)
break
end
end
for _, libfile in ipairs(fetchinfo.libfiles) do
if libfile:match("SDL2%..+$") or libfile:match("SDL2-static%..+$") then
table.insert(configs, "-DSDL2_LIBRARY=" .. table.concat(fetchinfo.libfiles, ";"))
end
end
end
import("package.tools.autoconf").install(package, configs)
end
io.replace("CMakeLists.txt", "find_package(SDL2test)", "", {plain = true})
import("package.tools.cmake").install(package, configs)
end)
on_test(function (package)
assert(package:has_cfuncs("SDLNet_Init", {includes = "SDL2/SDL_net.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
assert(package:has_cfuncs("SDLNet_Init",
{includes = "SDL2/SDL_net.h", configs = {cxflags = "-sUSE_SDL=0", defines = "SDL_MAIN_HANDLED"}}))
end)

@ -0,0 +1,15 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0aac377..94a44f4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -348,8 +348,8 @@ if(SDL2TTF_INSTALL)
endif()
# Only install a SDL2_ttf.pc file in Release mode
install(CODE "
- file(COPY_FILE \"${CMAKE_CURRENT_BINARY_DIR}/SDL2_ttf-$<CONFIG>.pc\"
- \"${CMAKE_CURRENT_BINARY_DIR}/SDL2_ttf.pc\" ONLY_IF_DIFFERENT)
+ file(COPY \"${CMAKE_CURRENT_BINARY_DIR}/SDL2_ttf-$<CONFIG>.pc\"
+ DESTINATION \"${CMAKE_CURRENT_BINARY_DIR}/SDL2_ttf.pc\")
file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${PC_DESTDIR}\"
TYPE FILE
FILES \"${CMAKE_CURRENT_BINARY_DIR}/SDL2_ttf.pc\")" CONFIG Release)

@ -1,6 +1,5 @@
package("libsdl_ttf")
set_homepage("https://www.libsdl.org/projects/SDL_ttf/")
set_homepage("https://github.com/libsdl-org/SDL_ttf/")
set_description("Simple DirectMedia Layer text rendering library")
set_license("zlib")
@ -12,69 +11,87 @@ package("libsdl_ttf")
add_extsources("brew::sdl2_ttf")
end
if is_plat("windows", "mingw") then
set_urls("https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-devel-$(version)-VC.zip")
add_urls("https://github.com/libsdl-org/SDL_ttf/releases/download/release-$(version)/SDL2_ttf-devel-$(version)-VC.zip")
add_versions("2.0.15", "aab0d81f1aa6fe654be412efc85829f2b188165dca6c90eb4b12b673f93e054b")
add_versions("2.0.18", "4e1404ac6095bbcd4cb133eb644a765885aa283ae45f36cfbc3cf5a77d7e1cbd")
add_versions("2.20.0", "bc206392a74d2b32f74d770a3a1e623e87c72374781c115478277ab4c722358b")
add_versions("2.20.1", "2facfa180f77bac381776376c7598ad504a84d99414418049bb106cb1705fe22")
else
set_urls("https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$(version).zip")
add_urls("https://github.com/libsdl-org/SDL_ttf/releases/download/release-$(version)/SDL2_ttf-$(version).zip")
add_versions("2.0.15", "cdb72b5b1c3b27795fa128af36f369fee5d3e38a96c350855da0b81880555dbc")
add_versions("2.0.18", "64e6a93c7542aba1e32e1418413898dfde82be95fdd0c73ba265fbdada189b5f")
add_versions("2.20.0", "04e94fc5ecac3475ab35c1d5cf52650df691867e7e4befcc861bf982a747111a")
add_versions("2.20.1", "18d81ab399c8e39adababe8918691830ba6e0d6448e5baa141ee0ddf87ede2dc")
end
add_urls("https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$(version).tar.gz",
"https://github.com/libsdl-org/SDL_ttf/releases/download/release-$(version)/SDL2_ttf-$(version).tar.gz")
add_versions("2.20.0", "874680232b72839555a558b48d71666b562e280f379e673b6f0c7445ea3b9b8a")
add_versions("2.20.1", "78cdad51f3cc3ada6932b1bb6e914b33798ab970a1e817763f22ddbfd97d0c57")
add_versions("2.20.2", "9dc71ed93487521b107a2c4a9ca6bf43fb62f6bddd5c26b055e6b91418a22053")
add_deps("libsdl")
if is_plat("linux", "macosx") then
add_deps("freetype")
end
add_patches(">=2.20.0 <=2.20.1", path.join(os.scriptdir(), "patches", "2.20.1", "cmakelists.patch"), "fe04ada62d9ed70029c0efb3c04bfec22fc7596bd6b73a567beb964e61ebd82c")
add_deps("cmake", "freetype")
add_links("SDL2_ttf")
add_includedirs("include", "include/SDL2")
on_load("macosx", "linux", function (package)
if package:version():ge("2.20") then
package:add("deps", "cmake")
else
package:add("deps", "automake", "autoconf")
end
end)
if is_plat("wasm") then
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
on_install("windows", "mingw", function (package)
local arch = package:arch()
if package:is_plat("mingw") then
arch = (arch == "x86_64") and "x64" or "x86"
on_load(function (package)
if package:config("shared") then
package:add("deps", "libsdl", { configs = { shared = true }})
else
package:add("deps", "libsdl")
end
os.cp("include/*", package:installdir("include/SDL2"))
os.cp(path.join("lib", arch, "*.lib"), package:installdir("lib"))
os.cp(path.join("lib", arch, "*.dll"), package:installdir("bin"))
end)
on_install("macosx", "linux", function (package)
if package:version():ge("2.20") then
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"))
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
on_install(function (package)
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"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "-DSDL2_DIR=" .. libsdl:installdir())
local fetchinfo = libsdl:fetch()
if fetchinfo then
for _, dir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
if os.isfile(path.join(dir, "SDL_version.h")) then
table.insert(configs, "-DSDL2_INCLUDE_DIR=" .. dir)
break
end
end
for _, libfile in ipairs(fetchinfo.libfiles) do
if libfile:match("SDL2%..+$") or libfile:match("SDL2-static%..+$") then
table.insert(configs, "-DSDL2_LIBRARY=" .. libfile)
end
end
end
import("package.tools.cmake").install(package, configs)
else
local configs = {}
table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
local libsdl = package:dep("libsdl")
if libsdl and not libsdl:is_system() then
table.insert(configs, "--with-sdl-prefix=" .. libsdl:installdir())
end
local freetype = package:dep("freetype")
if freetype then
local fetchinfo = freetype:fetch()
if fetchinfo then
local includedirs = table.wrap(fetchinfo.includedirs or fetchinfo.sysincludedirs)
if #includedirs > 0 then
table.insert(configs, "-DFREETYPE_INCLUDE_DIRS=" .. table.concat(includedirs, ";"))
end
local libfiles = table.wrap(fetchinfo.libfiles)
if #libfiles > 0 then
table.insert(configs, "-DFREETYPE_LIBRARY=" .. libfiles[1])
end
if not freetype:config("shared") then
local libfiles = {}
for _, dep in ipairs(freetype:librarydeps()) do
local depinfo = dep:fetch()
if depinfo then
table.join2(libfiles, depinfo.libfiles)
end
end
if #libfiles > 0 then
local libraries = ""
for _, libfile in ipairs(libfiles) do
libraries = libraries .. " " .. (libfile:gsub("\\", "/"))
end
io.replace("CMakeLists.txt", "target_link_libraries(SDL2_ttf PRIVATE Freetype::Freetype)",
"target_link_libraries(SDL2_ttf PRIVATE Freetype::Freetype " .. libraries .. ")", {plain = true})
end
end
end
import("package.tools.autoconf").install(package, configs)
end
import("package.tools.cmake").install(package, configs)
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_ttf.h", configs = {defines = "SDL_MAIN_HANDLED"}}))
end)

Loading…
Cancel
Save