300242e9b5
Luajit 2.0.0beta9 has patches upstream that fix the compile errors with clang and llvm, thanks to the help of the developer, Paul. Remove the patches at 2.0.0beta10 due out at the end of April. All changes were discussed in several emails. The plan is: * Change the Hotfix patch to apply only to stable. * Patch for missing /usr/include/unwind.h on 10.6.8 with clang. * Patch src/Makefile to not call -dumpspec. Clang doesn't have it. * Remove the instruction to the user to `sudo ln -s`. * Remove the fails_with_llvm. It compiles against llvm 2336. * Inreplaces should persist through version updates. * Respect the developer's choice that optimization is best at -O2. * Remove the hardcoded -O2 so we can set -O2 or switch to -Og. * Override the hardcoded CC=gcc. Use ENV.cc. * Remove the -march=i686 from CCOPT_X86. We set accurate march. * Use args for clarity. * For debug builds using clang, use -Og. See clang man page. Signed-off-by: Adam Vandenberg <flangy@gmail.com>
119 lines
4.1 KiB
Ruby
119 lines
4.1 KiB
Ruby
require 'formula'
|
|
|
|
class Luajit < Formula
|
|
homepage 'http://luajit.org/luajit.html'
|
|
url 'http://luajit.org/download/LuaJIT-2.0.0-beta9.tar.gz'
|
|
md5 'e7e03e67e2550817358bc28b44270c6d'
|
|
head 'http://luajit.org/git/luajit-2.0.git', :using => :git
|
|
|
|
# Skip cleaning both empty folders and bin/libs so external symbols still work.
|
|
skip_clean :all
|
|
|
|
def options
|
|
[["--enable-debug", "Build with debugging symbols."]]
|
|
end
|
|
|
|
def patches
|
|
unless ARGV.build_head? then
|
|
# Remove all patches at 2.0.0-beta10. They are fixed in HEAD.
|
|
# Patch 1: Hotfix is recommended by the LuaJIT developers.
|
|
# Patch 2: Fixes no /usr/include/unwind.h on Snow Leopard for Clang.
|
|
# DATA fixes build error with clang, no -dumpspecs options. Also removes
|
|
# the instruction to use sudo to symlink luajit. We do that already.
|
|
[ "http://luajit.org/download/beta9_hotfix1.patch",
|
|
"http://repo.or.cz/w/luajit-2.0.git/patch/018792452ecdcaeff9362e4238004420665b450b",
|
|
DATA ]
|
|
end
|
|
end
|
|
|
|
def install
|
|
# 1 - Remove the '-O2' so we can set Og if needed. Leave the -fomit part.
|
|
# 2 - Override the hardcoded gcc.
|
|
# 3 - Remove the '-march=i686' so we can set the march in cflags.
|
|
# All three changes should persist and were discussed upstream.
|
|
inreplace 'src/Makefile' do |f|
|
|
f.change_make_var! 'CCOPT', '-fomit-frame-pointer'
|
|
f.change_make_var! 'CC', ENV.cc
|
|
f.change_make_var! 'CCOPT_X86', ''
|
|
end
|
|
|
|
ENV.O2 # Respect the developer's choice.
|
|
args = [ "PREFIX=#{prefix}" ]
|
|
if ARGV.include? '--enable-debug' then
|
|
ENV.Og if ENV.compiler == :clang
|
|
args << 'CCDEBUG=-g'
|
|
end
|
|
|
|
bldargs = args
|
|
bldargs << 'amalg'
|
|
system 'make', *bldargs
|
|
args << 'install'
|
|
system 'make', *args # Build requires args during install
|
|
|
|
# Non-versioned symlink
|
|
if ARGV.build_head?
|
|
version = "2.0.0-beta9"
|
|
else
|
|
version = @version
|
|
end
|
|
ln_s bin+"luajit-#{version}", bin+"luajit"
|
|
end
|
|
end
|
|
|
|
__END__
|
|
--- a/src/Makefile
|
|
+++ b/src/Makefile
|
|
@@ -219,10 +219,6 @@
|
|
TARGET_ASHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) $(TARGET_FLAGS) $(TARGET_SHLDFLAGS)
|
|
TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS)
|
|
|
|
-ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs)))
|
|
- TARGET_XCFLAGS+= -fno-stack-protector
|
|
-endif
|
|
-
|
|
TARGET_TESTARCH=$(shell $(TARGET_CC) $(TARGET_ACFLAGS) -E lj_arch.h -dM)
|
|
ifneq (,$(findstring LJ_TARGET_X64 ,$(TARGET_TESTARCH)))
|
|
TARGET_CCARCH= x64
|
|
@@ -283,9 +279,12 @@
|
|
TARGET_DYNXLDOPTS=
|
|
else
|
|
ifeq (Darwin,$(TARGET_SYS))
|
|
- export MACOSX_DEPLOYMENT_TARGET=10.4
|
|
+ ifeq (,$(MACOSX_DEPLOYMENT_TARGET))
|
|
+ export MACOSX_DEPLOYMENT_TARGET=10.4
|
|
+ endif
|
|
TARGET_STRIP+= -x
|
|
TARGET_AR+= 2>/dev/null
|
|
+ TARGET_XCFLAGS+= -fno-stack-protector
|
|
TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
|
|
TARGET_DYNXLDOPTS=
|
|
TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER)
|
|
@@ -297,10 +296,14 @@
|
|
ifeq (iOS,$(TARGET_SYS))
|
|
TARGET_STRIP+= -x
|
|
TARGET_AR+= 2>/dev/null
|
|
+ TARGET_XCFLAGS+= -fno-stack-protector
|
|
TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
|
|
TARGET_DYNXLDOPTS=
|
|
TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER)
|
|
else
|
|
+ ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs)))
|
|
+ TARGET_XCFLAGS+= -fno-stack-protector
|
|
+ endif
|
|
ifneq (SunOS,$(TARGET_SYS))
|
|
TARGET_XLDFLAGS+= -Wl,-E
|
|
endif
|
|
--- a/Makefile 2012-03-31 11:23:39.000000000 -0700
|
|
+++ b/Makefile 2012-03-31 11:24:20.000000000 -0700
|
|
@@ -116,11 +116,6 @@
|
|
cd lib && $(INSTALL_F) $(FILES_JITLIB) $(INSTALL_JITLIB)
|
|
@echo "==== Successfully installed LuaJIT $(VERSION) to $(PREFIX) ===="
|
|
@echo ""
|
|
- @echo "Note: the beta releases deliberately do NOT install a symlink for luajit"
|
|
- @echo "You can do this now by running this command (with sudo):"
|
|
- @echo ""
|
|
- @echo " $(SYMLINK) $(INSTALL_TNAME) $(INSTALL_TSYM)"
|
|
- @echo ""
|
|
|
|
##############################################################################
|
|
|