Aegisub: update to 3.4.2, adopt

Co-authored-by: classabbyamp <void@placeviolette.net>
This commit is contained in:
Komeil Parseh 2025-06-21 16:06:58 +03:30 committed by Andrew J. Hesford
parent 6faa5b5301
commit e219c40b74
7 changed files with 325 additions and 428 deletions

View file

@ -0,0 +1,192 @@
From c5f5bffd46d56c3af2ca46c15a31691d46f3b177 Mon Sep 17 00:00:00 2001
From: Komeil Parseh <komeilparseh@disroot.org>
Date: Mon, 16 Jun 2025 03:46:22 +0330
Subject: [PATCH 1/3] Remove tests/tests/iconv.cpp
This file is removed as it does not contribute to the test suite
and is not required for the build or testing process.
---
tests/meson.build | 1 -
tests/tests/iconv.cpp | 158 ------------------------------------------
2 files changed, 159 deletions(-)
delete mode 100644 tests/tests/iconv.cpp
diff --git a/tests/meson.build b/tests/meson.build
index 81008e3ca..ff8cee523 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -25,7 +25,6 @@ tests_src = [
'tests/format.cpp',
'tests/fs.cpp',
'tests/hotkey.cpp',
- 'tests/iconv.cpp',
'tests/ifind.cpp',
'tests/karaoke_matcher.cpp',
'tests/keyframe.cpp',
diff --git a/tests/tests/iconv.cpp b/tests/tests/iconv.cpp
deleted file mode 100644
index 07a494c72..000000000
--- a/tests/tests/iconv.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2010, Thomas Goyne <plorkyeran@aegisub.org>
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-#include <libaegisub/charset_conv.h>
-
-#include <main.h>
-
-#include <array>
-#include <cstdint>
-#include <iconv.h>
-
-using namespace agi::charset;
-
-TEST(lagi_iconv, BasicSetup) {
- EXPECT_NO_THROW(IconvWrapper("UTF-8", "UTF-16LE"));
-}
-
-TEST(lagi_iconv, InvalidConversions) {
- EXPECT_THROW(IconvWrapper("nonexistent charset", "UTF-16LE"), UnsupportedConversion);
- EXPECT_THROW(IconvWrapper("UTF-16LE", "nonexistent charset"), UnsupportedConversion);
- EXPECT_THROW(IconvWrapper("nonexistent charset", "nonexistent charset"), UnsupportedConversion);
-}
-
-#ifdef _LIBICONV_VERSION
-TEST(lagi_iconv, Fallbacks) {
- IconvWrapper nofallback("UTF-8", "Shift-JIS", false);
- IconvWrapper fallback("UTF-8", "Shift-JIS", true);
- IconvWrapper noneneeded("UTF-8", "UTF-16LE", false);
-
- // Shift-JIS does not have a backslash
- EXPECT_THROW(nofallback.Convert("\\"), BadInput);
- ASSERT_NO_THROW(fallback.Convert("\\"));
- EXPECT_EQ("\\", fallback.Convert("\\"));
- EXPECT_NO_THROW(noneneeded.Convert("\\"));
-
- // BOM into non-unicode
- char bom[] = "\xEF\xBB\xBF";
- EXPECT_THROW(nofallback.Convert(bom), BadInput);
- ASSERT_NO_THROW(fallback.Convert(bom));
- EXPECT_EQ("", fallback.Convert(bom));
- EXPECT_NO_THROW(noneneeded.Convert(bom));
-
- // A snowman (U+2603)
- char snowman[] = "\xE2\x98\x83";
- EXPECT_THROW(nofallback.Convert(snowman), BadInput);
- EXPECT_NO_THROW(noneneeded.Convert(snowman));
- ASSERT_NO_THROW(fallback.Convert(snowman));
- EXPECT_EQ("?", fallback.Convert(snowman));
-}
-
-TEST(lagi_iconv, BadInput) {
- IconvWrapper utf16("UTF-16LE", "UTF-8");
- EXPECT_THROW(utf16.Convert(" "), BadInput);
- IconvWrapper utf8("UTF-8", "UTF-16LE");
- EXPECT_THROW(utf8.Convert("\xE2\xFF"), BadInput);
-}
-#endif
-
-TEST(lagi_iconv, Conversions) {
- IconvWrapper utf16le("UTF-16LE", "UTF-8", false);
- IconvWrapper utf16be("UTF-16BE", "UTF-8", false);
- IconvWrapper utf8("UTF-8", "UTF-16LE", false);
-
- char space_utf8_[] = " ";
- char space_utf16be_[] = {0, 32, 0, 0};
- char space_utf16le_[] = {32, 0, 0, 0};
- std::string space_utf8(space_utf8_);
- std::string space_utf16be(space_utf16be_, 2);
- std::string space_utf16le(space_utf16le_, 2);
-
- EXPECT_EQ(space_utf8, utf16le.Convert(space_utf16le));
- EXPECT_EQ(space_utf8, utf16be.Convert(space_utf16be));
- EXPECT_EQ(space_utf16le, utf8.Convert(space_utf8));
-}
-
-// Basic overflow tests
-TEST(lagi_iconv, Buffer) {
- IconvWrapper conv("UTF-8", "UTF-16LE", false);
- std::array<char, 4> buff;
- buff.fill(0xFF);
- std::span<char> sbuff(buff);
- std::string_view src("", 1);
-
- EXPECT_THROW(conv.Convert(src, sbuff.first(0)), BufferTooSmall);
- EXPECT_EQ('\xFF', buff[0]);
- EXPECT_THROW(conv.Convert(src, sbuff.first(1)), BufferTooSmall);
- EXPECT_EQ('\xFF', buff[0]);
- EXPECT_NO_THROW(conv.Convert(src, sbuff.first(2)));
- EXPECT_EQ('\0', buff[0]);
- EXPECT_EQ('\0', buff[1]);
- EXPECT_EQ('\xFF', buff[2]);
-}
-
-TEST(lagi_iconv, LocalSupport) {
- ASSERT_NO_THROW(IconvWrapper("UTF-8", ""));
- IconvWrapper conv("UTF-8", "");
- ASSERT_NO_THROW(conv.Convert(" "));
- EXPECT_EQ(" ", conv.Convert(" "));
-}
-TEST(lagi_iconv, wchar_tSupport) {
- EXPECT_NO_THROW(IconvWrapper("UTF-8", "wchar_t"));
-}
-
-TEST(lagi_iconv, Roundtrip) {
- for (auto const& name : GetEncodingsList<std::vector<std::string>>()) {
- ASSERT_NO_THROW(IconvWrapper("utf-8", name.c_str()));
- ASSERT_NO_THROW(IconvWrapper(name.c_str(), "utf-8"));
- EXPECT_EQ(
- "Jackdaws love my big sphinx of quartz",
- IconvWrapper(name.c_str(), "utf-8").Convert(
- IconvWrapper("utf-8", name.c_str()).Convert(
- "Jackdaws love my big sphinx of quartz")));
- }
-}
-
-TEST(lagi_iconv, Iso6937) {
- ASSERT_NO_THROW(IconvWrapper("UTF-8", "ISO-6937-2"));
- IconvWrapper subst("UTF-8", "ISO-6937-2");
- IconvWrapper no_subst("UTF-8", "ISO-6937-2", false);
-
- // 7-bit is same as ISO-8859
- for (int i = 0; i < 128; ++i) {
- const char buf[] = { (char)i, 0 };
- std::string ret;
- EXPECT_NO_THROW(ret = subst.Convert(buf));
- EXPECT_STREQ(buf, ret.c_str());
- }
-
- std::string ret;
-
- // LATIN CAPITAL LETTER D WITH CARON (U+010E) - multibyte char in main block
- EXPECT_NO_THROW(ret = subst.Convert("\xC4\x8E"));
- EXPECT_STREQ("\xCF\x44", ret.c_str());
-
- // BREVE - multibyte char in extended ranges
- EXPECT_NO_THROW(ret = subst.Convert("\xCB\x98"));
- EXPECT_STREQ("\xC6\x20", ret.c_str());
-
- // EM DASH - single byte char in extended ranges
- EXPECT_NO_THROW(ret = subst.Convert("\xE2\x80\x94"));
- EXPECT_STREQ("\xD0", ret.c_str());
-
- // codepoint not in ISO-6937-2
- EXPECT_NO_THROW(ret = subst.Convert("\xCB\x97"));
- EXPECT_STREQ("?", ret.c_str());
- EXPECT_THROW(no_subst.Convert("\xCB\x97"), BadInput);
-}
--
2.49.0

View file

@ -0,0 +1,101 @@
From 663c2818115316f1cbd4f97324ba2764870b6269 Mon Sep 17 00:00:00 2001
From: Komeil Parseh <komeilparseh@disroot.org>
Date: Mon, 16 Jun 2025 15:44:47 +0330
Subject: [PATCH 2/3] Adjust LuaJIT dependency to avoid cross-build test
failures
On Void Linux, LuaJIT is consistently provided as version 5.2 (97618aeef1ac02ddc6cc755a8c9c712c7de3bfe2)(#55648)
Aegisub's Meson build system performs an internal check/test
to verify compatibility with LuaJIT 5.2 during configuration.
This test involves running a compiled binary or script for the
target architecture, which invariably fails in a cross-compilation
environment with "Can not run test applications in this cross environment"
errors, even when LuaJIT is correctly installed for the target.
To resolve this, the Meson build configuration is modified to
bypass this runtime compatibility test. Instead of explicitly
checking for LuaJIT 5.2 support, it now relies on the system's
'luajit' dependency directly. This ensures that the build
process completes successfully without attempting to execute
target binaries/scripts on the host system.
This addresses the LuaJIT test failures encountered during
aarch64 cross-compilation.
---
meson.build | 24 +-----------------------
subprojects/luabins/meson.build | 24 +-----------------------
2 files changed, 2 insertions(+), 46 deletions(-)
diff --git a/meson.build b/meson.build
index f0e56521c..0af26806e 100644
--- a/meson.build
+++ b/meson.build
@@ -319,29 +319,7 @@ if get_option('enable_update_checker')
endif
luajit = dependency('luajit', version: '>=2.0.0', required: get_option('system_luajit'))
-if luajit.found() and luajit.type_name() != 'internal'
- luajit_test = cc.run('''#include <lauxlib.h>
-int main(void)
-{
- lua_State *L = luaL_newstate();
- if (!L) return 1;
- // This is valid in lua 5.2, but a syntax error in 5.1
- const char testprogram[] = "function foo() while true do break return end end";
- return luaL_loadstring(L, testprogram) == LUA_ERRSYNTAX;
-}''', dependencies: luajit)
-
- if luajit_test.returncode() == 1
- if get_option('system_luajit')
- error('System luajit found but not compiled in 5.2 mode')
- else
- message('System luajit found but not compiled in 5.2 mode; using built-in luajit')
- endif
- else
- deps += luajit
- endif
-else
- message('System luajit not found; using built-in luajit')
-endif
+deps += luajit # void already uses luajit52 https://github.com/void-linux/void-packages/commit/97618aeef1ac02ddc6cc755a8c9c712c7de3bfe2
if not deps.contains(luajit)
deps += subproject('luajit').get_variable('luajit_dep')
diff --git a/subprojects/luabins/meson.build b/subprojects/luabins/meson.build
index 1d87ab2b1..6176a8471 100644
--- a/subprojects/luabins/meson.build
+++ b/subprojects/luabins/meson.build
@@ -12,29 +12,7 @@ luabins_src = files(
deps = []
luajit = dependency('luajit', version: '>=2.0.0')
-if luajit.found() and luajit.type_name() != 'internal'
- luajit_test = meson.get_compiler('c').run('''#include <lauxlib.h>
-int main(void)
-{
- lua_State *L = luaL_newstate();
- if (!L) return 1;
- // This is valid in lua 5.2, but a syntax error in 5.1
- const char testprogram[] = "function foo() while true do break return end end";
- return luaL_loadstring(L, testprogram) == LUA_ERRSYNTAX;
-}''', dependencies: luajit)
-
- if luajit_test.returncode() == 1
- message('System luajit found but not compiled in 5.2 mode; using built-in luajit')
- else
- deps += luajit
- endif
-else
- message('System luajit not found; using built-in luajit')
-endif
-
-if not deps.contains(luajit)
- deps += subproject('luajit').get_variable('luajit_dep')
-endif
+deps += luajit # void already uses luajit52 https://github.com/void-linux/void-packages/commit/97618aeef1ac02ddc6cc755a8c9c712c7de3bfe2
luabins = static_library('luabins', luabins_src, dependencies: deps)
luabins_dep = declare_dependency(link_with: luabins)
--
2.49.0

View file

@ -1,56 +0,0 @@
From dee94396eee4b67eafae7f00e540cb284769473d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89rico=20Nogueira?= <erico.erc@gmail.com>
Date: Wed, 15 Sep 2021 23:54:10 -0300
Subject: [PATCH] Allow CMake builds from tarball.
Add environment variable that can be passed to build/version.sh to force
a git version if it can't use git to determine one.
Since we are here, also fix:
- use of 'return' in a script, should be 'exit'
- wrong grep command to match numerical version with 3 digits
---
build/version.sh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/build/version.sh b/build/version.sh
index 8cea0a3f3..d505341e4 100755
--- a/build/version.sh
+++ b/build/version.sh
@@ -10,13 +10,13 @@ if ! test -d "${srcdir}/.git"; then
done < "${version_h_path}"
if test x$BUILD_GIT_VERSION_NUMBER != x -a x$BUILD_GIT_VERSION_STRING != x; then
export VERSION_SOURCE="from cached git_version.h"
- return 0
+ exit 0
else
echo "invalid git_version.h"
exit 2
fi
- else
- echo "git repo not found and no cached git_version.h"
+ elif [ -z "$FORCE_GIT_VERSION" ]; then
+ echo "git repo not found and no cached git_version.h - use FORCE_GIT_VERSION to override"
exit 2
fi
fi
@@ -25,13 +25,13 @@ last_svn_revision=6962
last_svn_hash="16cd907fe7482cb54a7374cd28b8501f138116be"
git_revision=$(expr $last_svn_revision + $(git log --pretty=oneline $last_svn_hash..HEAD 2>/dev/null | wc -l))
-git_version_str=$(git describe --exact-match 2> /dev/null)
+git_version_str=${FORCE_GIT_VERSION:-$(git describe --exact-match 2> /dev/null)}
installer_version='0.0.0'
resource_version='0, 0, 0'
if test x$git_version_str != x; then
git_version_str="${git_version_str##v}"
tagged_release=1
- if [ $(echo $git_version_str | grep '\d\.\d\.\d') ]; then
+ if [ $(echo $git_version_str | grep '[0-9].[0-9].[0-9]') ]; then
installer_version=$git_version_str
resource_version=$(echo $git_version_str | sed 's/\./, /g')
fi
--
2.33.0

View file

@ -1,65 +0,0 @@
Index: Aegisub-3.3.2/src/command/video.cpp
===================================================================
--- Aegisub-3.3.2.orig/src/command/video.cpp
+++ Aegisub-3.3.2/src/command/video.cpp
@@ -475,7 +475,7 @@ static void save_snapshot(agi::Context *
// If where ever that is isn't defined, we can't save there
if ((basepath == "\\") || (basepath == "/")) {
// So save to the current user's home dir instead
- basepath = wxGetHomeDir().c_str();
+ basepath = static_cast<const char *>(wxGetHomeDir().c_str());
}
}
// Actual fixed (possibly relative) path, decode it
Index: Aegisub-3.3.2/src/dialog_attachments.cpp
===================================================================
--- Aegisub-3.3.2.orig/src/dialog_attachments.cpp
+++ Aegisub-3.3.2/src/dialog_attachments.cpp
@@ -161,7 +161,7 @@ void DialogAttachments::OnExtract(wxComm
// Multiple or single?
if (listView->GetNextSelected(i) != -1)
- path = wxDirSelector(_("Select the path to save the files to:"), to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString())).c_str();
+ path = static_cast<const char*>(wxDirSelector(_("Select the path to save the files to:"), to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString())).c_str());
else {
path = SaveFileSelector(
_("Select the path to save the file to:"),
Index: Aegisub-3.3.2/libaegisub/include/libaegisub/lua/utils.h
===================================================================
--- Aegisub-3.3.2.orig/libaegisub/include/libaegisub/lua/utils.h
+++ Aegisub-3.3.2/libaegisub/include/libaegisub/lua/utils.h
@@ -27,6 +27,7 @@
#include <boost/exception/detail/attribute_noreturn.hpp>
#define BOOST_NORETURN BOOST_ATTRIBUTE_NORETURN
#endif
+#include <boost/flyweight.hpp>
namespace agi { namespace lua {
// Exception type for errors where the error details are on the lua stack
@@ -91,6 +92,13 @@ void set_field(lua_State *L, const char
lua_setfield(L, -2, name);
}
+template<>
+inline void set_field(lua_State *L, const char *name,
+ boost::flyweights::flyweight<std::string> value) {
+ push_value(L, value.get());
+ lua_setfield(L, -2, name);
+}
+
template<int (*func)(lua_State *L)>
void set_field(lua_State *L, const char *name) {
push_value(L, exception_wrapper<func>);
Index: Aegisub-3.3.2/src/auto4_lua.cpp
===================================================================
--- Aegisub-3.3.2.orig/src/auto4_lua.cpp
+++ Aegisub-3.3.2/src/auto4_lua.cpp
@@ -119,7 +119,7 @@ namespace {
int get_translation(lua_State *L)
{
wxString str(check_wxstring(L, 1));
- push_value(L, _(str).utf8_str());
+ push_value(L, static_cast<const char *>(_(str).utf8_str()));
return 1;
}

View file

@ -1,15 +0,0 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -347,9 +347,9 @@ target_link_libraries(Aegisub PRIVATE "O
find_package(Iconv REQUIRED)
target_link_libraries(libaegisub PRIVATE "Iconv::Iconv")
-find_package(ICU REQUIRED uc)
-target_link_libraries(libaegisub PRIVATE "ICU::uc")
-target_link_libraries(Aegisub PRIVATE "ICU::uc")
+find_package(ICU REQUIRED uc i18n)
+target_link_libraries(libaegisub PRIVATE "ICU::uc" ICU::i18n)
+target_link_libraries(Aegisub PRIVATE "ICU::uc" ICU::i18n)
find_package(wxWidgets REQUIRED adv base core gl stc xml)
include(${wxWidgets_USE_FILE})

View file

@ -1,267 +0,0 @@
From 72ffe91cf33b2afa7bb1996d1ede9d7b9624c7f0 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 26 Sep 2021 00:44:01 +0200
Subject: [PATCH] enforce system luajit
---
CMakeLists.txt | 192 ++--------------------------------
vendor/luabins/CMakeLists.txt | 3 +-
2 files changed, 13 insertions(+), 182 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4614f6d..0e7bc81 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,10 @@ cmake_policy(SET CMP0074 NEW)
project(Aegisub)
+find_package(PkgConfig)
+
+pkg_check_modules(LUAJIT REQUIRED luajit)
+
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
# Explicitly set the build type to Release if no other type is specified
@@ -12,181 +16,6 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
-add_executable(luajit-minilua vendor/luajit/src/host/minilua.c)
-if(NOT WIN32)
- target_link_libraries(luajit-minilua m)
-endif()
-if(WIN32)
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen"
- COMMAND luajit-minilua ../dynasm/dynasm.lua -LN -D WIN -D JIT -D FFI -D P64 -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h" vm_x86.dasc
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
- )
- else()
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen"
- COMMAND luajit-minilua ../dynasm/dynasm.lua -LN -D WIN -D JIT -D FFI -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h" vm_x86.dasc
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
- )
- endif()
-else()
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen"
- COMMAND luajit-minilua ../dynasm/dynasm.lua -D P64 -D JIT -D FFI -D FPU -D HFABI -D VER= -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h" vm_x86.dasc
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
- )
- else()
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen"
- COMMAND luajit-minilua ../dynasm/dynasm.lua -D JIT -D FFI -D FPU -D HFABI -D VER= -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h" vm_x86.dasc
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
- )
- endif()
-endif()
-
-add_executable(luajit-buildvm
- vendor/luajit/src/host/buildvm.c
- vendor/luajit/src/host/buildvm_asm.c
- vendor/luajit/src/host/buildvm_peobj.c
- vendor/luajit/src/host/buildvm_lib.c
- vendor/luajit/src/host/buildvm_fold.c
-
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/buildvm_arch.h"
-)
-target_compile_definitions(luajit-buildvm PRIVATE LUAJIT_ENABLE_LUA52COMPAT)
-target_include_directories(luajit-buildvm PRIVATE vendor/luajit/src "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen")
-if(UNIX)
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.s"
- COMMAND luajit-buildvm -m elfasm -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.s"
- )
-elseif(MSVC)
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.obj"
- COMMAND luajit-buildvm -m peobj -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.obj"
- )
-endif()
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_ffdef.h"
- COMMAND luajit-buildvm -m ffdef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_ffdef.h" lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_bcdef.h"
- COMMAND luajit-buildvm -m bcdef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_bcdef.h" lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_folddef.h"
- COMMAND luajit-buildvm -m folddef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_folddef.h" lj_opt_fold.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_recdef.h"
- COMMAND luajit-buildvm -m recdef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_recdef.h" lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_libdef.h"
- COMMAND luajit-buildvm -m libdef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_libdef.h" lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/jit/vmdef.lua"
- COMMAND luajit-buildvm -m vmdef -o "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/jit/vmdef.lua" lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src
-)
-
-add_library(luajit STATIC
- vendor/luajit/src/lib_base.c
- vendor/luajit/src/lib_math.c
- vendor/luajit/src/lib_bit.c
- vendor/luajit/src/lib_string.c
- vendor/luajit/src/lib_table.c
- vendor/luajit/src/lib_io.c
- vendor/luajit/src/lib_os.c
- vendor/luajit/src/lib_package.c
- vendor/luajit/src/lib_debug.c
- vendor/luajit/src/lib_jit.c
- vendor/luajit/src/lib_ffi.c
- vendor/luajit/src/lj_gc.c
- vendor/luajit/src/lj_err.c
- vendor/luajit/src/lj_char.c
- vendor/luajit/src/lj_bc.c
- vendor/luajit/src/lj_obj.c
- vendor/luajit/src/lj_buf.c
- vendor/luajit/src/lj_str.c
- vendor/luajit/src/lj_tab.c
- vendor/luajit/src/lj_func.c
- vendor/luajit/src/lj_udata.c
- vendor/luajit/src/lj_meta.c
- vendor/luajit/src/lj_debug.c
- vendor/luajit/src/lj_state.c
- vendor/luajit/src/lj_dispatch.c
- vendor/luajit/src/lj_vmevent.c
- vendor/luajit/src/lj_vmmath.c
- vendor/luajit/src/lj_strscan.c
- vendor/luajit/src/lj_strfmt.c
- vendor/luajit/src/lj_strfmt_num.c
- vendor/luajit/src/lj_api.c
- vendor/luajit/src/lj_profile.c
- vendor/luajit/src/lj_lex.c
- vendor/luajit/src/lj_parse.c
- vendor/luajit/src/lj_bcread.c
- vendor/luajit/src/lj_bcwrite.c
- vendor/luajit/src/lj_load.c
- vendor/luajit/src/lj_ir.c
- vendor/luajit/src/lj_opt_mem.c
- vendor/luajit/src/lj_opt_fold.c
- vendor/luajit/src/lj_opt_narrow.c
- vendor/luajit/src/lj_opt_dce.c
- vendor/luajit/src/lj_opt_loop.c
- vendor/luajit/src/lj_opt_split.c
- vendor/luajit/src/lj_opt_sink.c
- vendor/luajit/src/lj_mcode.c
- vendor/luajit/src/lj_snap.c
- vendor/luajit/src/lj_record.c
- vendor/luajit/src/lj_crecord.c
- vendor/luajit/src/lj_ffrecord.c
- vendor/luajit/src/lj_asm.c
- vendor/luajit/src/lj_trace.c
- vendor/luajit/src/lj_gdbjit.c
- vendor/luajit/src/lj_ctype.c
- vendor/luajit/src/lj_cdata.c
- vendor/luajit/src/lj_cconv.c
- vendor/luajit/src/lj_ccall.c
- vendor/luajit/src/lj_ccallback.c
- vendor/luajit/src/lj_carith.c
- vendor/luajit/src/lj_clib.c
- vendor/luajit/src/lj_cparse.c
- vendor/luajit/src/lj_lib.c
- vendor/luajit/src/lj_alloc.c
- vendor/luajit/src/lib_aux.c
- vendor/luajit/src/lib_init.c
-
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_ffdef.h"
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_bcdef.h"
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_folddef.h"
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_recdef.h"
- "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen/lj_libdef.h"
- # "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/jit/vmdef.lua"
-)
-target_compile_definitions(luajit PRIVATE LUAJIT_ENABLE_LUA52COMPAT)
-target_include_directories(luajit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/gen" PUBLIC "vendor/luajit/src")
-if(WIN32)
- target_sources(luajit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.obj")
-else()
- target_sources(luajit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.s")
- set_property(SOURCE "${CMAKE_CURRENT_BINARY_DIR}/vendor/luajit/src/lj_vm.s" PROPERTY LANGUAGE C)
- target_link_libraries(luajit ${CMAKE_DL_LIBS})
-endif()
-
add_subdirectory(vendor/luabins)
add_library(libaegisub STATIC
@@ -264,20 +93,20 @@ elseif(WIN32)
endif()
set_target_properties(libaegisub PROPERTIES PREFIX "")
target_compile_definitions(libaegisub PRIVATE CMAKE_BUILD)
-target_include_directories(libaegisub PUBLIC "libaegisub/include")
+target_include_directories(libaegisub PUBLIC ${LUAJIT_INCLUDE_DIRS} "libaegisub/include")
target_precompile_headers(libaegisub PRIVATE "libaegisub/lagi_pre.h")
-target_link_libraries(libaegisub PRIVATE luajit luabins)
+target_link_libraries(libaegisub PRIVATE ${LUAJIT_LIBRARIES} luabins)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/default_config.cpp" "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/default_config.h"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/default_config_platform.json"
- COMMAND luajit-minilua "${PROJECT_SOURCE_DIR}/tools/respack.lua" manifest.respack default_config.cpp default_config.h
+ COMMAND luajit "${PROJECT_SOURCE_DIR}/tools/respack.lua" manifest.respack default_config.cpp default_config.h
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc"
)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.cpp" "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.h"
- COMMAND luajit-minilua ../../tools/respack.lua manifest.respack "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.cpp" "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.h"
+ COMMAND luajit ../../tools/respack.lua manifest.respack "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.cpp" "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc/bitmap.h"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/bitmaps
)
@@ -451,8 +280,9 @@ add_executable(Aegisub WIN32
src/video_slider.cpp
src/visual_feature.cpp
)
-target_link_libraries(Aegisub PRIVATE ${CMAKE_DL_LIBS} libaegisub luajit)
+target_link_libraries(Aegisub PRIVATE ${CMAKE_DL_LIBS} libaegisub ${LUAJIT_LIBRARIES})
target_compile_definitions(Aegisub PRIVATE CMAKE_BUILD)
+target_include_directories(Aegisub PUBLIC ${LUAJIT_INCLUDE_DIRS})
target_include_directories(Aegisub PRIVATE "src/libresrc" "${CMAKE_CURRENT_BINARY_DIR}/src/libresrc")
target_precompile_headers(Aegisub PRIVATE "src/agi_pre.h")
@@ -776,7 +606,7 @@ message(STATUS "\n"
" FFTW3: ${WITH_FFTW3}\n"
" Hunspell: ${WITH_HUNSPELL}\n"
" uchardet: ${WITH_UCHARDET}\n"
- " LuaJIT: bundled\n"
+ " LuaJIT: unfucked\n"
"\n"
"Options\n"
" Startup log: ${WITH_STARTUPLOG}\n"
diff --git a/vendor/luabins/CMakeLists.txt b/vendor/luabins/CMakeLists.txt
index 1fe1d20..e68403c 100644
--- a/vendor/luabins/CMakeLists.txt
+++ b/vendor/luabins/CMakeLists.txt
@@ -36,4 +36,5 @@ add_library(luabins STATIC
src/savebuffer.c
src/write.c
)
-target_link_libraries(luabins PRIVATE luajit)
\ No newline at end of file
+target_include_directories(luabins PUBLIC ${LUAJIT_INCLUDE_DIRS})
+target_link_libraries(luabins PRIVATE ${LUAJIT_LIBRARIES})
--
2.33.0

View file

@ -1,34 +1,41 @@
# Template file for 'Aegisub'
pkgname=Aegisub
version=3.3.2
revision=11
build_style=cmake
build_helper=cmake-wxWidgets-gtk3
cmake_builddir="BUILD"
configure_args="-DwxWidgets_CONFIG_EXECUTABLE=$WX_CONFIG
-DWITH_PORTAUDIO=$(vopt_if portaudio ON OFF)
-DWITH_OPENAL=$(vopt_if openal ON OFF) -DWITH_FFTW3=$(vopt_if fftw ON OFF)"
hostmakedepends="gettext-devel intltool pkg-config git LuaJIT"
makedepends="alsa-lib-devel boost-devel libcurl-devel fontconfig-devel
freetype-devel hunspell-devel icu-devel libass-devel libffms2-devel
MesaLib-devel wxWidgets-gtk3-devel LuaJIT-devel $(vopt_if fftw fftw-devel)
$(vopt_if openal libopenal-devel) $(vopt_if portaudio portaudio-devel)"
short_desc="Subtitle editor (ssa, ass, srt)"
maintainer="Orphaned <orphan@voidlinux.org>"
license="BSD-3-Clause, MIT"
homepage="https://github.com/wangqr/Aegisub"
distfiles="https://github.com/wangqr/Aegisub/archive/v${version}.tar.gz"
checksum="9aaab8e66cef2a72368c6b7f79b2f99700321a7b9a1ca623c5e6be0e65418db5"
build_options="fftw openal portaudio"
build_options_default="fftw"
desc_option_fftw="Enable support for rendering of audio waveforms/spectrum"
desc_option_openal="Enable support for openal"
version=3.4.2
revision=1
build_style=meson
configure_args="-Dsystem_luajit=true"
hostmakedepends="pkg-config gettext meson ninja LuaJIT"
makedepends="libass-devel zlib-devel icu-devel boost-devel
wxWidgets-gtk3-devel MesaLib-devel LuaJIT-devel fontconfig-devel ffmpeg6
ffmpeg6-devel libffms2-devel fftw-devel hunspell-devel uchardet-devel gtest-devel
pulseaudio-devel alsa-lib-devel libopenal-devel portaudio-devel libcurl-devel"
short_desc="Cross-platform advanced subtitle editor"
maintainer="Komeil Parseh <komeilparseh@disroot.org>"
license="BSD-3-Clause"
homepage="https://github.com/TypesettingTools/Aegisub"
distfiles="${homepage}/archive/v${version}.tar.gz"
checksum="38731ec76392fe763ce34e34cda6ee233802cf20ef3f380a3998da35a893a5c4"
CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
pre_configure() {
if [ "$XBPS_CROSS_BUILD" ]; then
cat > cross-wx.ini <<-EOF
[binaries]
wx-config = ['${XBPS_WRAPPERDIR}/wx-config-gtk3']
EOF
configure_args+=" --cross-file=cross-wx.ini"
fi
}
pre_build() {
cat > build/git_version.h <<-EOF
#define BUILD_GIT_VERSION_NUMBER 0
#define BUILD_GIT_VERSION_STRING "voidlinux"
#define TAGGED_RELEASE 0
#define INSTALLER_VERSION "0.0.0"
#define RESOURCE_BASE_VERSION 0, 0, 0
EOF
export FORCE_GIT_VERSION="$version"
}