package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
3.1 KiB
65 lines
3.1 KiB
package("lame") |
|
set_homepage("https://lame.sourceforge.io/") |
|
set_description("High quality MPEG Audio Layer III (MP3) encoder") |
|
set_license("LGPL-2.0-or-later") |
|
|
|
add_urls("https://downloads.sourceforge.net/project/lame/lame/$(version)/lame-$(version).tar.gz") |
|
add_versions("3.100", "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e") |
|
add_configs("shared", {description = "Build static libraries", default = false, type = "boolean", readonly = true}) |
|
|
|
add_deps("nasm") |
|
|
|
on_install("linux", "macosx", "bsd", function (package) |
|
local configs = {"--enable-nasm"} |
|
table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no")) |
|
if package:debug() then |
|
table.insert(configs, "--enable-debug") |
|
end |
|
if package:is_plat("linux") and package:config("pic") ~= false then |
|
table.insert(configs, "--with-pic") |
|
end |
|
-- fix undefined symbol error _lame_init_old |
|
-- https://sourceforge.net/p/lame/mailman/message/36081038/ |
|
io.replace("include/libmp3lame.sym", "lame_init_old\n", "", {plain = true}) |
|
import("package.tools.autoconf").install(package, configs) |
|
end) |
|
|
|
on_install("windows", function (package) |
|
-- slight adjustments according to https://github.com/conan-io/conan-center-index/blob/b39954231875c1350964a658c408c8a840a9eb20/recipes/libmp3lame/all/conanfile.py |
|
-- Honor vc runtime |
|
io.replace("Makefile.MSVC", "CC_OPTS = $(CC_OPTS) /MT", "", {plain = true}) |
|
-- Do not hardcode LTO |
|
io.replace("Makefile.MSVC", " /GL", "", {plain = true}) |
|
io.replace("Makefile.MSVC", " /LTCG", "", {plain = true}) |
|
io.replace("Makefile.MSVC", "ADDL_OBJ = bufferoverflowU.lib", "", {plain = true}) |
|
|
|
-- lame install guide says to `copy configMS.h config.h` |
|
-- then to `nmake -f Makefile.MSVC comp=msvc asm=no` |
|
os.cp("configMS.h", "config.h") |
|
-- this was here before, who knows if it's needed |
|
io.gsub("Makefile.MSVC", "nasmw", "nasm") |
|
|
|
-- more stuff from conan-io |
|
local configs = {"-f", "Makefile.MSVC", "comp=msvc"} |
|
if package:is_arch("x86") then |
|
table.insert(configs, "asm=yes") |
|
elseif package:is_arch("x64") then |
|
io.replace("Makefile.MSVC", "MACHINE = /machine:I386", "MACHINE =/machine:X64", {plain = true}) |
|
table.insert(configs, "MSVCVER=Win64") |
|
table.insert(configs, "asm=yes") |
|
elseif package:is_arch("arm64") then |
|
io.replace("Makefile.MSVC", "MACHINE = /machine:I386", "MACHINE =/machine:ARM64", {plain = true}) |
|
table.insert(configs, "MSVCVER=Win64") |
|
else |
|
table.insert(configs, "asm=yes") |
|
end |
|
import("package.tools.nmake").build(package, configs) |
|
|
|
os.cp("output/*.lib", package:installdir("lib")) |
|
os.cp("output/*.exe", package:installdir("bin")) |
|
os.cp("include/*.h", package:installdir("include/lame")) |
|
end) |
|
|
|
on_test(function (package) |
|
assert(package:has_cfuncs("lame_encode_buffer", {includes = "lame/lame.h"})) |
|
end)
|
|
|