star9029 1 рік тому
батько
коміт
db416e8f99

+ 22 - 0
packages/l/libmpeg2/patches/0.1.2/dx.patch

@@ -0,0 +1,22 @@
+diff --git a/libvo/video_out_dx.c b/libvo/video_out_dx.c
+index 36de68a..07cd524 100644
+--- a/libvo/video_out_dx.c
++++ b/libvo/video_out_dx.c
+@@ -92,7 +92,7 @@ static long FAR PASCAL event_procedure (HWND hwnd, UINT message,
+     switch (message) {
+ 
+     case WM_WINDOWPOSCHANGED:
+-	instance = (dx_instance_t *) GetWindowLong (hwnd, GWL_USERDATA);
++	instance = (dx_instance_t *) GetWindowLong (hwnd, GWLP_USERDATA);
+ 
+ 	/* update the window position and size */
+ 	point_window.x = 0;
+@@ -173,7 +173,7 @@ static int create_window (dx_instance_t * instance)
+     /* store a directx_instance pointer into the window local storage
+      * (for later use in event_handler).
+      * We need to use SetWindowLongPtr when it is available in mingw */
+-    SetWindowLong (instance->window, GWL_USERDATA, (LONG) instance);
++    SetWindowLong (instance->window, GWLP_USERDATA, (LONG) instance);
+ 
+     ShowWindow (instance->window, SW_SHOW);
+ 

+ 71 - 0
packages/l/libmpeg2/port/xmake.lua

@@ -0,0 +1,71 @@
+option("tools", {default = false})
+
+add_rules("mode.debug", "mode.release")
+
+add_includedirs("include")
+if is_plat("windows", "mingw") or is_host("windows") then
+    add_includedirs("vc++")
+end
+
+if is_plat("windows") and has_config("tools") then
+    add_requires("strings_h")
+end
+
+if is_arch("arm.*") then
+    add_requires("nasm")
+end
+
+if is_plat("macosx") or (is_host("macosx") and is_plat("mingw")) then
+    -- Fixes duplicate symbols
+    set_languages("gnu89")
+end
+
+rule("tools")
+    on_load(function (target)
+        if not get_config("tools") then
+            target:set("enabled", false)
+            return
+        end
+
+        target:add("kind", "binary")
+        target:add("files", "src/getopt.c")
+        target:add("includedirs", "src")
+        target:add("deps", "mpeg2")
+        if target:is_plat("windows") then
+            target:add("packages", "strings_h")
+        end
+    end)
+
+target("mpeg2")
+    set_kind("shared")
+    add_files("libmpeg2/**.c", "libvo/*.c")
+    add_headerfiles("include/mpeg2.h", "include/mpeg2convert.h", {prefixdir = "mpeg2dec"})
+
+    if is_plat("windows", "mingw") then
+        add_syslinks("user32", "gdi32")
+    end
+
+    if is_arch("arm.*") then
+        set_toolchains("nasm")
+        add_files("libmpeg2/motion_comp_arm_s.S")
+    end
+
+    if is_kind("shared") then
+        if is_plat("mingw") then
+            add_shflags("-Wl,--output-def,mpeg2.def")
+        elseif is_plat("windows") then
+            add_rules("utils.symbols.export_all")
+        end
+    end
+
+target("corrupt_mpeg2")
+    add_rules("tools")
+    add_files("src/corrupt_mpeg2.c")
+
+target("extract_mpeg2")
+    add_rules("tools")
+    add_files("src/extract_mpeg2.c")
+
+target("mpeg2dec")
+    add_rules("tools")
+    add_files("src/mpeg2dec.c", "src/dump_state.c", "src/gettimeofday.c")

+ 80 - 0
packages/l/libmpeg2/xmake.lua

@@ -0,0 +1,80 @@
+package("libmpeg2")
+    set_homepage("https://libmpeg2.sourceforge.io")
+    set_description("MPEG-1 and MPEG-2 stream decoding library")
+    set_license("GPL-2.0-or-later")
+
+    add_urls("https://libmpeg2.sourceforge.io/files/libmpeg2-$(version).tar.gz",
+             "https://github.com/cisco-open-source/libmpeg2.git")
+
+    add_versions("0.5.1", "dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4")
+
+    add_patches("0.5.1", "patches/0.1.2/dx.patch", "cf2474cbc42dfdcdc4241bf9eb5708a4e697e83f0ff513986b2e60281dd20b50")
+
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
+
+    if not is_host("windows") then
+        add_deps("autoconf", "automake", "libtool")
+    end
+
+    on_load(function (package)
+        if package:is_arch("arm.*") then
+            package:add("deps", "nasm")
+        end
+
+        if package:is_plat("windows") then
+            if package:has_tool("cxx", "clang", "clang_cl") then
+                if package:config("tools") then
+                    package:add("deps", "strings_h", {private = true})
+                end
+            else
+                if package:is_arch("x64") then
+                    package:add("deps", "mingw-w64")
+                else
+                    package:add("deps", "llvm-mingw")
+                end
+                package:config_set("shared", true)
+            end
+        end
+    end)
+
+    on_install("!android or android@!windows", function (package)
+        if not is_host("windows")then
+            -- Generate config.h by autotools
+            local configs = {"--disable-dependency-tracking"}
+            if not package:is_debug() then
+                table.insert(configs, "--disable-debug")
+            end
+            import("package.tools.autoconf").configure(package, configs)
+        end
+        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
+        import("package.tools.xmake").install(package, {tools = package:config("tools")})
+    end)
+
+    on_install("windows", function (package)
+        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
+        if package:has_tool("cxx", "clang", "clang_cl") then
+            import("package.tools.xmake").install(package, {tools = package:config("tools")})
+        else
+            local arch_prev = package:arch()
+            local plat_prev = package:plat()
+            package:plat_set("mingw")
+            package:arch_set(os.arch())
+
+            import("package.tools.xmake").install(package, {tools = package:config("tools")})
+
+            package:plat_set(plat_prev)
+            package:arch_set(arch_prev)
+
+            if package:config("shared") then
+                import("utils.platform.gnu2mslib")
+
+                gnu2mslib("mpeg2.lib", "mpeg2.def", {plat = package:plat(), arch = package:arch()})
+                os.vcp("mpeg2.lib", package:installdir("lib"))
+                os.rm(package:installdir("lib", "libmpeg2.dll.a"))
+            end
+        end
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("mpeg2_init", {includes = {"inttypes.h", "mpeg2dec/mpeg2.h"}}))
+    end)