aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/luajit
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/luajit')
-rw-r--r--vcpkg/ports/luajit/003-do-not-set-macosx-deployment-target.patch14
-rw-r--r--vcpkg/ports/luajit/005-do-not-pass-ld-e-macosx.patch11
-rw-r--r--vcpkg/ports/luajit/Makefile.nmake20
-rwxr-xr-xvcpkg/ports/luajit/configure86
-rw-r--r--vcpkg/ports/luajit/luajit.pc24
-rw-r--r--vcpkg/ports/luajit/msvcbuild.patch31
-rw-r--r--vcpkg/ports/luajit/portfile.cmake111
-rw-r--r--vcpkg/ports/luajit/vcpkg.json49
8 files changed, 346 insertions, 0 deletions
diff --git a/vcpkg/ports/luajit/003-do-not-set-macosx-deployment-target.patch b/vcpkg/ports/luajit/003-do-not-set-macosx-deployment-target.patch
new file mode 100644
index 0000000..4f9f632
--- /dev/null
+++ b/vcpkg/ports/luajit/003-do-not-set-macosx-deployment-target.patch
@@ -0,0 +1,14 @@
+diff --git a/src/Makefile b/src/Makefile
+index 30d64be..b753ea1 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -316,9 +316,6 @@ ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector
+ TARGET_XCFLAGS+= -fno-stack-protector
+ endif
+ ifeq (Darwin,$(TARGET_SYS))
+- ifeq (,$(MACOSX_DEPLOYMENT_TARGET))
+- $(error missing: export MACOSX_DEPLOYMENT_TARGET=XX.YY)
+- endif
+ TARGET_STRIP+= -x
+ TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL
+ TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
diff --git a/vcpkg/ports/luajit/005-do-not-pass-ld-e-macosx.patch b/vcpkg/ports/luajit/005-do-not-pass-ld-e-macosx.patch
new file mode 100644
index 0000000..8f2f615
--- /dev/null
+++ b/vcpkg/ports/luajit/005-do-not-pass-ld-e-macosx.patch
@@ -0,0 +1,11 @@
+diff --git a/etc/luajit.pc b/etc/luajit.pc
+index 39e1e57..3837d3b 100644
+--- a/etc/luajit.pc
++++ b/etc/luajit.pc
+@@ -21,5 +21,5 @@ URL: https://luajit.org
+ Version: ${version}
+ Requires:
+ Libs: -L${libdir} -l${libname}
+-Libs.private: -Wl,-E -lm -ldl
++Libs.private: -lm -ldl
+ Cflags: -I${includedir}
diff --git a/vcpkg/ports/luajit/Makefile.nmake b/vcpkg/ports/luajit/Makefile.nmake
new file mode 100644
index 0000000..3ca2508
--- /dev/null
+++ b/vcpkg/ports/luajit/Makefile.nmake
@@ -0,0 +1,20 @@
+all:
+ @echo _CL_ = $(_CL_)
+ @echo _LINK_ = $(_LINK_)
+ cd src && .\msvcbuild.bat $(MSVCBUILD_OPTIONS)
+
+install: src\luajit.exe
+ -mkdir "$(INSTALLDIR)"
+ -mkdir "$(INSTALLDIR)\bin"
+ copy src\luajit.exe "$(INSTALLDIR)\bin\"
+ if exist src\lua51.dll copy src\lua51.dll "$(INSTALLDIR)\bin\"
+ -mkdir "$(INSTALLDIR)\lib"
+ copy src\lua51.lib "$(INSTALLDIR)\lib\"
+ -mkdir "$(INSTALLDIR)\include"
+ -mkdir "$(INSTALLDIR)\include\luajit"
+ copy src\lua.h "$(INSTALLDIR)\include\luajit\"
+ copy src\luajit.h "$(INSTALLDIR)\include\luajit\"
+ copy src\luaconf.h "$(INSTALLDIR)\include\luajit\"
+ copy src\lualib.h "$(INSTALLDIR)\include\luajit\"
+ copy src\lauxlib.h "$(INSTALLDIR)\include\luajit\"
+ copy src\lua.hpp "$(INSTALLDIR)\include\luajit\"
diff --git a/vcpkg/ports/luajit/configure b/vcpkg/ports/luajit/configure
new file mode 100755
index 0000000..0384100
--- /dev/null
+++ b/vcpkg/ports/luajit/configure
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+set -e
+
+LJARCH=
+LUAJIT_BUILDMODE=
+LUAJIT_BUILDVM_X=
+LUAJIT_DASM_ARCHS=
+LUAJIT_PREFIX=
+for OPTION; do
+ case "${OPTION}" in
+ --prefix=*)
+ LUAJIT_PREFIX="${OPTION#--prefix=}"
+ ;;
+ BUILDMODE=*)
+ LUAJIT_BUILDMODE="${OPTION#BUILDMODE=}"
+ ;;
+ BUILDVM_X=*)
+ LUAJIT_BUILDVM_X="${OPTION#BUILDVM_X=}"
+ ;;
+ DASM_ARCHS=*)
+ LUAJIT_DASM_ARCHS="${OPTION#DASM_ARCHS=}"
+ ;;
+ LJARCH=*)
+ LJARCH="${OPTION#LJARCH=}"
+ ;;
+ esac
+done
+
+cat > Makefile.vcpkg <<END_MAKEFILE ;
+
+COMMON_OPTIONS += 'E=@:' 'Q='
+COMMON_OPTIONS += 'BUILDMODE=${LUAJIT_BUILDMODE}'
+COMMON_OPTIONS += 'PREFIX=${LUAJIT_PREFIX}'
+COMMON_OPTIONS += 'INSTALL_TNAME=luajit'
+
+BUILD_OPTIONS += 'CC=${CC}'
+BUILD_OPTIONS += 'CCDEBUG='
+BUILD_OPTIONS += 'CFLAGS=${CPPFLAGS} ${CFLAGS}'
+BUILD_OPTIONS += 'LDFLAGS=${LDFLAGS}'
+BUILD_OPTIONS += 'LIBS=${LIBS}'
+
+ifeq (${LJARCH},)
+# native
+BUILDVM_PREFIX = ${LUAJIT_PREFIX}/manual-tools/luajit
+DASM_ARCHS = ${LUAJIT_DASM_ARCHS}
+else
+# cross
+BUILD_OPTIONS += 'HOST_CC=:'
+BUILD_OPTIONS += 'BUILDVM_T='
+BUILD_OPTIONS += 'BUILDVM_X=${LUAJIT_BUILDVM_X}'
+endif
+
+# used by src/Makefile, best effort from manual '<CC> [-m32] -E src/lj_arch.h -dM'
+TARGET_TESTARCH_COMMON += 'LJ_LE 1' 'LJ_HASJIT 1' 'LJ_HASFFI 1' 'LJ_ARCH_HASFPU 1' 'LJ_ABI_SOFTFP 0'
+TARGET_TESTARCH_COMMON_32 += \$(TARGET_TESTARCH_COMMON) 'LJ_ARCH_BITS 32'
+TARGET_TESTARCH_COMMON_64 += \$(TARGET_TESTARCH_COMMON) 'LJ_ARCH_BITS 64' 'LJ_TARGET_GC64 1'
+TARGET_TESTARCH_arm = \$(TARGET_TESTARCH_COMMON_32) LJ_TARGET_ARM
+TARGET_TESTARCH_arm64 = \$(TARGET_TESTARCH_COMMON_64) LJ_TARGET_ARM64 'LJ_ARCH_VERSION 80'
+TARGET_TESTARCH_x86 = \$(TARGET_TESTARCH_COMMON_32) LJ_TARGET_X86
+TARGET_TESTARCH_x64 = \$(TARGET_TESTARCH_COMMON_64) LJ_TARGET_X64 'LJ_FR2 1'
+
+all:
+ \$(MAKE) clean \$(COMMON_OPTIONS) \$(BUILD_OPTIONS)
+ \$(MAKE) all \$(COMMON_OPTIONS) \$(BUILD_OPTIONS)
+ for DA in \$(DASM_ARCHS); do \\
+ rm -f src/host/buildvm_arch.h src/host/*.o; \\
+ case "\$\$DA" in \\
+ arm) TARGET_TESTARCH="\$(TARGET_TESTARCH_arm)" ;; \\
+ arm64) TARGET_TESTARCH="\$(TARGET_TESTARCH_arm64)" ;; \\
+ x86) TARGET_TESTARCH="\$(TARGET_TESTARCH_x86)" ;; \\
+ x64) TARGET_TESTARCH="\$(TARGET_TESTARCH_x64)" ;; \\
+ esac ; \\
+ \$(MAKE) -C src host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX) \$(COMMON_OPTIONS) \$(BUILD_OPTIONS) \\
+ BUILDVM_T=host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX) "TARGET_TESTARCH=\$\${TARGET_TESTARCH}" \\
+ || exit 1; \\
+ done
+
+install:
+ \$(MAKE) install \$(COMMON_OPTIONS)
+ for DA in \$(DASM_ARCHS); do \\
+ mkdir -p "\$\${DESTDIR}\$(BUILDVM_PREFIX)"; \\
+ install -m 0755 "src/host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX)" "\$\${DESTDIR}\$(BUILDVM_PREFIX)/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX)" || exit 1 ; \\
+ done
+
+END_MAKEFILE
diff --git a/vcpkg/ports/luajit/luajit.pc b/vcpkg/ports/luajit/luajit.pc
new file mode 100644
index 0000000..877303c
--- /dev/null
+++ b/vcpkg/ports/luajit/luajit.pc
@@ -0,0 +1,24 @@
+# Package information for LuaJIT to be used by pkg-config.
+majver=2
+minver=1
+relver=0
+version=${majver}.${minver}.${relver}-beta3
+abiver=51
+
+prefix=handled-by-fixup
+multilib=lib
+exec_prefix=${prefix}
+libdir=${exec_prefix}/${multilib}
+libname=lua${abiver}
+includedir=${prefix}/include/luajit
+
+INSTALL_LMOD=${prefix}/share/lua/${abiver}
+INSTALL_CMOD=${prefix}/${multilib}/lua/${abiver}
+
+Name: LuaJIT
+Description: Just-in-time compiler for Lua
+URL: https://luajit.org
+Version: ${version}
+Requires:
+Libs: -L${libdir} -l${libname}
+Cflags: -I${includedir}
diff --git a/vcpkg/ports/luajit/msvcbuild.patch b/vcpkg/ports/luajit/msvcbuild.patch
new file mode 100644
index 0000000..8e2e756
--- /dev/null
+++ b/vcpkg/ports/luajit/msvcbuild.patch
@@ -0,0 +1,31 @@
+diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
+index aab4ef1..e92c486 100644
+--- a/src/msvcbuild.bat
++++ b/src/msvcbuild.bat
+@@ -79,10 +79,9 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
+ @set LJCOMPILE=%LJCOMPILE% /Zi %DEBUGCFLAGS%
+ @set LJLINK=%LJLINK% /opt:ref /opt:icf /incremental:no
+ :NODEBUG
+-@set LJLINK=%LJLINK% /%BUILDTYPE%
+ @if "%1"=="amalg" goto :AMALGDLL
+ @if "%1"=="static" goto :STATIC
+-%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL lj_*.c lib_*.c
++%LJCOMPILE% /DLUA_BUILD_AS_DLL lj_*.c lib_*.c /Fdlua51.pdb
+ @if errorlevel 1 goto :BAD
+ %LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj
+ @if errorlevel 1 goto :BAD
+@@ -102,7 +101,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
+ if exist %LJDLLNAME%.manifest^
+ %LJMT% -manifest %LJDLLNAME%.manifest -outputresource:%LJDLLNAME%;2
+
+-%LJCOMPILE% luajit.c
++%LJCOMPILE% luajit.c /Fdluajit.pdb
+ @if errorlevel 1 goto :BAD
+ %LJLINK% /out:luajit.exe luajit.obj %LJLIBNAME%
+ @if errorlevel 1 goto :BAD
+@@ -124,4 +123,5 @@ if exist luajit.exe.manifest^
+ @goto :END
+ :FAIL
+ @echo You must open a "Visual Studio Command Prompt" to run this script
++@exit 1
+ :END
diff --git a/vcpkg/ports/luajit/portfile.cmake b/vcpkg/ports/luajit/portfile.cmake
new file mode 100644
index 0000000..2906de6
--- /dev/null
+++ b/vcpkg/ports/luajit/portfile.cmake
@@ -0,0 +1,111 @@
+set(extra_patches "")
+if (VCPKG_TARGET_IS_OSX)
+ list(APPEND extra_patches 005-do-not-pass-ld-e-macosx.patch)
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO LuaJIT/LuaJIT
+ REF d0e88930ddde28ff662503f9f20facf34f7265aa #2023-01-04
+ SHA512 e4111b2d7eeb05676c62d69da13a380a51d98f082c0be575a414c09ee27ff17d101b5b4a95e1b8a1bad14d55a4d2b305718a11878fbf36e0d3d48e62ba03407f
+ HEAD_REF master
+ PATCHES
+ msvcbuild.patch
+ 003-do-not-set-macosx-deployment-target.patch
+ ${extra_patches}
+)
+
+vcpkg_cmake_get_vars(cmake_vars_file)
+include("${cmake_vars_file}")
+
+if(VCPKG_DETECTED_MSVC)
+ # Due to lack of better MSVC cross-build support, just always build the host
+ # minilua tool with the target toolchain. This will work for native builds and
+ # for targeting x86 from x64 hosts. (UWP and ARM64 is unsupported.)
+ vcpkg_list(SET options)
+ if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ list(APPEND options "MSVCBUILD_OPTIONS=static")
+ endif()
+
+ vcpkg_install_nmake(SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_NAME "${CMAKE_CURRENT_LIST_DIR}/Makefile.nmake"
+ OPTIONS
+ ${options}
+ )
+
+ if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/luajit/luaconf.h" "defined(LUA_BUILD_AS_DLL)" "1")
+ endif()
+
+ file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/luajit.pc" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/pkgconfig")
+ if(NOT VCPKG_BUILD_TYPE)
+ file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/luajit.pc" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig")
+ endif()
+
+ vcpkg_copy_pdbs()
+else()
+ vcpkg_list(SET options)
+ if(VCPKG_CROSSCOMPILING)
+ list(APPEND options
+ "LJARCH=${VCPKG_TARGET_ARCHITECTURE}"
+ "BUILDVM_X=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/buildvm-${VCPKG_TARGET_ARCHITECTURE}${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ )
+ endif()
+
+ vcpkg_list(SET make_options "EXECUTABLE_SUFFIX=${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ set(strip_options "") # cf. src/Makefile
+ if(VCPKG_TARGET_IS_OSX)
+ vcpkg_list(APPEND make_options "TARGET_SYS=Darwin")
+ set(strip_options " -x")
+ elseif(VCPKG_TARGET_IS_IOS)
+ vcpkg_list(APPEND make_options "TARGET_SYS=iOS")
+ set(strip_options " -x")
+ elseif(VCPKG_TARGET_IS_LINUX)
+ vcpkg_list(APPEND make_options "TARGET_SYS=Linux")
+ elseif(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_list(APPEND make_options "TARGET_SYS=Windows")
+ set(strip_options " --strip-unneeded")
+ endif()
+
+ set(dasm_archs "")
+ if("buildvm-32" IN_LIST FEATURES)
+ string(APPEND dasm_archs " arm x86")
+ endif()
+ if("buildvm-64" IN_LIST FEATURES)
+ string(APPEND dasm_archs " arm64 x64")
+ endif()
+
+ file(COPY "${CMAKE_CURRENT_LIST_DIR}/configure" DESTINATION "${SOURCE_PATH}")
+ vcpkg_configure_make(SOURCE_PATH "${SOURCE_PATH}"
+ COPY_SOURCE
+ OPTIONS
+ "BUILDMODE=${VCPKG_LIBRARY_LINKAGE}"
+ ${options}
+ OPTIONS_RELEASE
+ "DASM_ARCHS=${dasm_archs}"
+ )
+ vcpkg_install_make(
+ MAKEFILE "Makefile.vcpkg"
+ OPTIONS
+ ${make_options}
+ "TARGET_AR=${VCPKG_DETECTED_CMAKE_AR} rcus"
+ "TARGET_STRIP=${VCPKG_DETECTED_CMAKE_STRIP}${strip_options}"
+ )
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/lua"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/lib/lua"
+ "${CURRENT_PACKAGES_DIR}/share/lua"
+ "${CURRENT_PACKAGES_DIR}/share/man"
+)
+
+vcpkg_copy_tools(TOOL_NAMES luajit AUTO_CLEAN)
+
+vcpkg_fixup_pkgconfig()
+
+file(COPY "${SOURCE_PATH}/src/jit/" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/luajit/jit")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYRIGHT")
diff --git a/vcpkg/ports/luajit/vcpkg.json b/vcpkg/ports/luajit/vcpkg.json
new file mode 100644
index 0000000..1c83e57
--- /dev/null
+++ b/vcpkg/ports/luajit/vcpkg.json
@@ -0,0 +1,49 @@
+{
+ "name": "luajit",
+ "version-date": "2023-01-04",
+ "port-version": 7,
+ "description": "LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.",
+ "homepage": "https://github.com/LuaJIT/LuaJIT",
+ "license": "MIT",
+ "supports": "!uwp & !(arm64 & windows)",
+ "dependencies": [
+ {
+ "name": "luajit",
+ "host": true,
+ "features": [
+ "buildvm-64"
+ ],
+ "platform": "!native & (arm64 | x64) & (!windows | mingw)"
+ },
+ {
+ "name": "luajit",
+ "host": true,
+ "features": [
+ "buildvm-32"
+ ],
+ "platform": "!native & ((arm & !arm64) | x86) & (!windows | mingw)"
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-get-vars",
+ "host": true
+ }
+ ],
+ "features": {
+ "buildvm-32": {
+ "description": "Install host tools for 32 bit targets",
+ "supports": "native & ((arm & !arm64) | x86) & (!windows | mingw)"
+ },
+ "buildvm-64": {
+ "description": "Install host tools for 64 bit targets",
+ "supports": "native & (arm64 | x64) & (!windows | mingw)"
+ }
+ }
+}