]> git.saurik.com Git - cycript.git/commitdiff
Drop -sys distinction and stabilize Xcode build.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 9 Sep 2013 16:41:04 +0000 (09:41 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 9 Sep 2013 16:41:04 +0000 (09:41 -0700)
Makefile.am
Makefile.in
macosx.sh [deleted file]
todo.txt
xcode.sh [new file with mode: 0755]

index e82a626da8a40e47bcf43ebe50a660f31899376f..a92bb74d9e584ace3f610bf2b77e495966b3e53e 100644 (file)
@@ -25,46 +25,40 @@ SUBDIRS =
 
 ACLOCAL_AMFLAGS = -I m4
 
-# XXX: do I really need -fno-common?
-AM_CPPFLAGS = -fno-common -I$(srcdir)/include -DYYDEBUG=1
+AM_CPPFLAGS = -I$(srcdir)/include -DYYDEBUG=1
 AM_CPPFLAGS += -include config.h -include $(srcdir)/unconfig.h
 
 CY_LDFLAGS = -no-undefined -avoid-version -export-dynamic
 
-noinst_LTLIBRARIES = 
 lib_LTLIBRARIES = 
 
-noinst_LTLIBRARIES += libcycript.la
-
 lib_LTLIBRARIES += libcycript-any.la
 libcycript_any_la_SOURCES = Select.cpp
 libcycript_any_la_LDFLAGS = $(CY_LDFLAGS)
 libcycript_any_la_LIBADD = -ldl
 
-libcycript_la_SOURCES = ConvertUTF.c Highlight.cpp Network.cpp Output.cpp Parser.cpp Replace.cpp
-libcycript_la_SOURCES += Cycript.tab.cc
-libcycript_la_SOURCES += lex.cy.cpp
+lib_LTLIBRARIES += libcycript.la
+libcycript_la_LDFLAGS = $(CY_LDFLAGS)
+libcycript_la_LIBADD = $(LTLIBFFI) -ldl
 
-lib_LTLIBRARIES += libcycript-sys.la
-libcycript_sys_la_SOURCES = 
-libcycript_sys_la_LDFLAGS = $(CY_LDFLAGS)
-libcycript_sys_la_LIBADD = libcycript.la $(LTLIBFFI) -ldl
+libcycript_la_SOURCES = ConvertUTF.c Highlight.cpp Network.cpp Output.cpp Parser.cpp Replace.cpp
+libcycript_la_SOURCES += Cycript.tab.cc lex.cy.cpp
 
 filters = $(CY_FILTERS)
 
 if CY_CONSOLE
 bin_PROGRAMS = cycript
 cycript_SOURCES = Console.cpp Display.cpp
-cycript_LDADD = libcycript.la libcycript-sys.la $(LTLIBAPR) $(LTLIBREADLINE) $(LTLIBTERMCAP) -ldl
+cycript_LDADD = libcycript.la $(LTLIBAPR) $(LTLIBREADLINE) $(LTLIBTERMCAP) -ldl
 
 ldid = true
 entitle = $(ldid) -S$(srcdir)/cycript.xml
 endif
 
 if CY_EXECUTE
-libcycript_sys_la_SOURCES += sig/ffi_type.cpp sig/parse.cpp sig/copy.cpp
-libcycript_sys_la_SOURCES += Bridge.cpp Execute.cpp JavaScriptCore.cpp Library.cpp
-libcycript_sys_la_LIBADD += $(LTJAVASCRIPTCORE)
+libcycript_la_SOURCES += sig/ffi_type.cpp sig/parse.cpp sig/copy.cpp
+libcycript_la_SOURCES += Bridge.cpp Execute.cpp JavaScriptCore.cpp Library.cpp
+libcycript_la_LIBADD += $(LTJAVASCRIPTCORE)
 
 AM_CPPFLAGS += -DCY_EXECUTE
 filters += C
@@ -83,11 +77,11 @@ endif
 if CY_OBJECTIVEC
 filters += ObjectiveC
 libcycript_la_SOURCES += ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
-libcycript_sys_la_LIBADD += $(LTOBJECTIVEC)
+libcycript_la_LIBADD += $(LTOBJECTIVEC)
 endif
 
 if CY_MACH
-libcycript_sys_la_SOURCES += Handler.mm
+libcycript_la_SOURCES += Handler.mm
 
 if CY_CONSOLE
 cycript_SOURCES += Mach/Inject.cpp
@@ -123,7 +117,7 @@ CLEANFILES += lex.cy.cpp
 lex.cy.cpp: Cycript.l
        $(FLEX) -t $< | $(SED) -e 's/int yyl;/yy_size_t yyl;/;s/int yyleng_r;/yy_size_t yyleng_r;/' >$@
 
-Console.lo Execute.lo Highlight.lo Library.lo Parser.lo lex.cy.lo: Cycript.tab.hh
+Console.$(OBJEXT) Execute.lo Handler.lo Highlight.lo Library.lo Parser.lo lex.cy.lo: Cycript.tab.hh
 
 CLEANFILES += Cycript.tab.cc Cycript.tab.hh location.hh position.hh stack.hh Cycript.output
 Cycript.tab.cc Cycript.tab.hh location.hh position.hh stack.hh Cycript.output: Cycript.yy
index b5b6e888734d4b06a4474c42fdd0240c88695f23..1f7496782b25787e9026308e82a6becc37fd0217 100644 (file)
@@ -163,7 +163,7 @@ am__uninstall_files_from_dir = { \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
-LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+LTLIBRARIES = $(lib_LTLIBRARIES)
 libcycript_any_la_DEPENDENCIES =
 am_libcycript_any_la_OBJECTS = Select.lo
 libcycript_any_la_OBJECTS = $(am_libcycript_any_la_OBJECTS)
@@ -178,33 +178,29 @@ libcycript_any_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am__DEPENDENCIES_1 =
 @CY_EXECUTE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
 @CY_OBJECTIVEC_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
-libcycript_sys_la_DEPENDENCIES = libcycript.la $(am__DEPENDENCIES_1) \
+libcycript_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3)
-am__libcycript_sys_la_SOURCES_DIST = sig/ffi_type.cpp sig/parse.cpp \
-       sig/copy.cpp Bridge.cpp Execute.cpp JavaScriptCore.cpp \
-       Library.cpp Handler.mm
+am__libcycript_la_SOURCES_DIST = ConvertUTF.c Highlight.cpp \
+       Network.cpp Output.cpp Parser.cpp Replace.cpp Cycript.tab.cc \
+       lex.cy.cpp sig/ffi_type.cpp sig/parse.cpp sig/copy.cpp \
+       Bridge.cpp Execute.cpp JavaScriptCore.cpp Library.cpp \
+       ObjectiveC/Output.cpp ObjectiveC/Replace.cpp \
+       ObjectiveC/Library.mm Handler.mm
 am__dirstamp = $(am__leading_dot)dirstamp
 @CY_EXECUTE_TRUE@am__objects_1 = sig/ffi_type.lo sig/parse.lo \
 @CY_EXECUTE_TRUE@      sig/copy.lo Bridge.lo Execute.lo \
 @CY_EXECUTE_TRUE@      JavaScriptCore.lo Library.lo
-@CY_MACH_TRUE@am__objects_2 = Handler.lo
-am_libcycript_sys_la_OBJECTS = $(am__objects_1) $(am__objects_2)
-libcycript_sys_la_OBJECTS = $(am_libcycript_sys_la_OBJECTS)
-libcycript_sys_la_LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(OBJCXXLD) $(AM_OBJCXXFLAGS) \
-       $(OBJCXXFLAGS) $(libcycript_sys_la_LDFLAGS) $(LDFLAGS) -o $@
-libcycript_la_LIBADD =
-am__libcycript_la_SOURCES_DIST = ConvertUTF.c Highlight.cpp \
-       Network.cpp Output.cpp Parser.cpp Replace.cpp Cycript.tab.cc \
-       lex.cy.cpp ObjectiveC/Output.cpp ObjectiveC/Replace.cpp \
-       ObjectiveC/Library.mm
-@CY_OBJECTIVEC_TRUE@am__objects_3 = ObjectiveC/Output.lo \
+@CY_OBJECTIVEC_TRUE@am__objects_2 = ObjectiveC/Output.lo \
 @CY_OBJECTIVEC_TRUE@   ObjectiveC/Replace.lo \
 @CY_OBJECTIVEC_TRUE@   ObjectiveC/Library.lo
+@CY_MACH_TRUE@am__objects_3 = Handler.lo
 am_libcycript_la_OBJECTS = ConvertUTF.lo Highlight.lo Network.lo \
        Output.lo Parser.lo Replace.lo Cycript.tab.lo lex.cy.lo \
-       $(am__objects_3)
+       $(am__objects_1) $(am__objects_2) $(am__objects_3)
 libcycript_la_OBJECTS = $(am_libcycript_la_OBJECTS)
+libcycript_la_LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(OBJCXXLD) $(AM_OBJCXXFLAGS) \
+       $(OBJCXXFLAGS) $(libcycript_la_LDFLAGS) $(LDFLAGS) -o $@
 PROGRAMS = $(bin_PROGRAMS)
 am__cycript_SOURCES_DIST = Console.cpp Display.cpp Mach/Inject.cpp
 @CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__objects_4 = Mach/Inject.$(OBJEXT)
@@ -212,8 +208,8 @@ am__cycript_SOURCES_DIST = Console.cpp Display.cpp Mach/Inject.cpp
 @CY_CONSOLE_TRUE@      Display.$(OBJEXT) $(am__objects_4)
 cycript_OBJECTS = $(am_cycript_OBJECTS)
 @CY_CONSOLE_TRUE@cycript_DEPENDENCIES = libcycript.la \
-@CY_CONSOLE_TRUE@      libcycript-sys.la $(am__DEPENDENCIES_1) \
-@CY_CONSOLE_TRUE@      $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+@CY_CONSOLE_TRUE@      $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+@CY_CONSOLE_TRUE@      $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -284,10 +280,9 @@ AM_V_OBJCXXLD = $(am__v_OBJCXXLD_@AM_V@)
 am__v_OBJCXXLD_ = $(am__v_OBJCXXLD_@AM_DEFAULT_V@)
 am__v_OBJCXXLD_0 = @echo "  OBJCXXLD" $@;
 am__v_OBJCXXLD_1 = 
-SOURCES = $(libcycript_any_la_SOURCES) $(libcycript_sys_la_SOURCES) \
-       $(libcycript_la_SOURCES) $(cycript_SOURCES)
+SOURCES = $(libcycript_any_la_SOURCES) $(libcycript_la_SOURCES) \
+       $(cycript_SOURCES)
 DIST_SOURCES = $(libcycript_any_la_SOURCES) \
-       $(am__libcycript_sys_la_SOURCES_DIST) \
        $(am__libcycript_la_SOURCES_DIST) $(am__cycript_SOURCES_DIST)
 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
        ctags-recursive dvi-recursive html-recursive info-recursive \
@@ -537,28 +532,23 @@ CLEANFILES = $(am__append_5) $(am__append_12) Cycript.yy Cycript.l \
        position.hh stack.hh Cycript.output
 SUBDIRS = 
 ACLOCAL_AMFLAGS = -I m4
-
-# XXX: do I really need -fno-common?
-AM_CPPFLAGS = -fno-common -I$(srcdir)/include -DYYDEBUG=1 -include \
-       config.h -include $(srcdir)/unconfig.h $(am__append_3) \
-       $(am__append_11)
+AM_CPPFLAGS = -I$(srcdir)/include -DYYDEBUG=1 -include config.h \
+       -include $(srcdir)/unconfig.h $(am__append_3) $(am__append_11)
 CY_LDFLAGS = -no-undefined -avoid-version -export-dynamic
-noinst_LTLIBRARIES = libcycript.la
-lib_LTLIBRARIES = libcycript-any.la libcycript-sys.la
+lib_LTLIBRARIES = libcycript-any.la libcycript.la
 libcycript_any_la_SOURCES = Select.cpp
 libcycript_any_la_LDFLAGS = $(CY_LDFLAGS)
 libcycript_any_la_LIBADD = -ldl
+libcycript_la_LDFLAGS = $(CY_LDFLAGS)
+libcycript_la_LIBADD = $(LTLIBFFI) -ldl $(am__append_2) \
+       $(am__append_8)
 libcycript_la_SOURCES = ConvertUTF.c Highlight.cpp Network.cpp \
        Output.cpp Parser.cpp Replace.cpp Cycript.tab.cc lex.cy.cpp \
-       $(am__append_7)
-libcycript_sys_la_SOURCES = $(am__append_1) $(am__append_9)
-libcycript_sys_la_LDFLAGS = $(CY_LDFLAGS)
-libcycript_sys_la_LIBADD = libcycript.la $(LTLIBFFI) -ldl \
-       $(am__append_2) $(am__append_8)
+       $(am__append_1) $(am__append_7) $(am__append_9)
 filters = $(CY_FILTERS) $(am__append_4) $(am__append_6)
 @CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp Display.cpp \
 @CY_CONSOLE_TRUE@      $(am__append_10)
-@CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la libcycript-sys.la $(LTLIBAPR) $(LTLIBREADLINE) $(LTLIBTERMCAP) -ldl
+@CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la $(LTLIBAPR) $(LTLIBREADLINE) $(LTLIBTERMCAP) -ldl
 @CY_CONSOLE_TRUE@ldid = true
 @CY_CONSOLE_TRUE@entitle = $(ldid) -S$(srcdir)/cycript.xml
 all: config.h
@@ -651,17 +641,6 @@ clean-libLTLIBRARIES:
          rm -f $${locs}; \
        }
 
-clean-noinstLTLIBRARIES:
-       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
-
 libcycript-any.la: $(libcycript_any_la_OBJECTS) $(libcycript_any_la_DEPENDENCIES) $(EXTRA_libcycript_any_la_DEPENDENCIES) 
        $(AM_V_CXXLD)$(libcycript_any_la_LINK) -rpath $(libdir) $(libcycript_any_la_OBJECTS) $(libcycript_any_la_LIBADD) $(LIBS)
 sig/$(am__dirstamp):
@@ -673,9 +652,6 @@ sig/$(DEPDIR)/$(am__dirstamp):
 sig/ffi_type.lo: sig/$(am__dirstamp) sig/$(DEPDIR)/$(am__dirstamp)
 sig/parse.lo: sig/$(am__dirstamp) sig/$(DEPDIR)/$(am__dirstamp)
 sig/copy.lo: sig/$(am__dirstamp) sig/$(DEPDIR)/$(am__dirstamp)
-
-libcycript-sys.la: $(libcycript_sys_la_OBJECTS) $(libcycript_sys_la_DEPENDENCIES) $(EXTRA_libcycript_sys_la_DEPENDENCIES) 
-       $(AM_V_OBJCXXLD)$(libcycript_sys_la_LINK) -rpath $(libdir) $(libcycript_sys_la_OBJECTS) $(libcycript_sys_la_LIBADD) $(LIBS)
 ObjectiveC/$(am__dirstamp):
        @$(MKDIR_P) ObjectiveC
        @: > ObjectiveC/$(am__dirstamp)
@@ -690,7 +666,7 @@ ObjectiveC/Library.lo: ObjectiveC/$(am__dirstamp) \
        ObjectiveC/$(DEPDIR)/$(am__dirstamp)
 
 libcycript.la: $(libcycript_la_OBJECTS) $(libcycript_la_DEPENDENCIES) $(EXTRA_libcycript_la_DEPENDENCIES) 
-       $(AM_V_OBJCXXLD)$(OBJCXXLINK)  $(libcycript_la_OBJECTS) $(libcycript_la_LIBADD) $(LIBS)
+       $(AM_V_OBJCXXLD)$(libcycript_la_LINK) -rpath $(libdir) $(libcycript_la_OBJECTS) $(libcycript_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
        @$(NORMAL_INSTALL)
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
@@ -1238,7 +1214,7 @@ maintainer-clean-generic:
 clean: clean-recursive
 
 clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
-       clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
+       clean-libtool mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1314,13 +1290,12 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
        am--refresh check check-am clean clean-binPROGRAMS \
        clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \
-       clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \
-       dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \
-       dist-tarZ dist-xz dist-zip distcheck distclean \
-       distclean-compile distclean-generic distclean-hdr \
-       distclean-libtool distclean-tags distcleancheck distdir \
-       distuninstallcheck dvi dvi-am html html-am info info-am \
-       install install-am install-binPROGRAMS install-data \
+       cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+       dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+       distcheck distclean distclean-compile distclean-generic \
+       distclean-hdr distclean-libtool distclean-tags distcleancheck \
+       distdir distuninstallcheck dvi dvi-am html html-am info \
+       info-am install install-am install-binPROGRAMS install-data \
        install-data-am install-dvi install-dvi-am install-exec \
        install-exec-am install-html install-html-am install-info \
        install-info-am install-libLTLIBRARIES install-man install-pdf \
@@ -1355,7 +1330,7 @@ Cycript.l: Cycript.l.in
 lex.cy.cpp: Cycript.l
        $(FLEX) -t $< | $(SED) -e 's/int yyl;/yy_size_t yyl;/;s/int yyleng_r;/yy_size_t yyleng_r;/' >$@
 
-Console.lo Execute.lo Highlight.lo Library.lo Parser.lo lex.cy.lo: Cycript.tab.hh
+Console.o Execute.lo Handler.lo Highlight.lo Library.lo Parser.lo lex.cy.lo: Cycript.tab.hh
 Cycript.tab.cc Cycript.tab.hh location.hh position.hh stack.hh Cycript.output: Cycript.yy
        $(BISON) -v --report=state $<
        ! grep -n '^ *$$default  reduce using rule [0-9]* (Lex[A-Z][^)]*)$$' Cycript.output -B 2 | grep 'shift, and go to state [0-9]*$$'
diff --git a/macosx.sh b/macosx.sh
deleted file mode 100755 (executable)
index e106942..0000000
--- a/macosx.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/bash
-
-# Cycript - Optimizing JavaScript Compiler/Runtime
-# Copyright (C) 2009-2013  Jay Freeman (saurik)
-
-# GNU General Public License, Version 3 {{{
-#
-# Cycript is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# Cycript is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Cycript.  If not, see <http://www.gnu.org/licenses/>.
-# }}}
-
-set -e
-
-cd "${0%%/*}"
-
-if [[ ! -e readline/libreadline.a ]]; then
-    ./readline.sh; fi
-if [[ ! -e libffi.a ]]; then
-    ./libffi.sh; fi
-
-if ! which aclocal; then
-    touch aclocal.m4; fi
-if ! which autoconf; then
-    touch configure.ac; fi
-if ! which automake; then
-    touch Makefile.in; fi
-if ! which autoheader; then
-    touch config.h.in; fi
-
-flags=("$@")
-
-function path() {
-    xcodebuild -sdk "$1" -version Path
-}
-
-xcs=$(xcode-select --print-path)
-mac=$(path macosx)
-
-function configure() {
-    local dir=$1
-    local sdk=$2
-    local flg=$3
-    shift 3
-
-    cc=$(xcrun --sdk "${sdk}" -f gcc)
-    cxx=$(xcrun --sdk "${sdk}" -f g++)
-    flg+=" -isysroot $(path "${sdk}")"
-
-    rm -rf build."${dir}"
-    mkdir build."${dir}"
-    cd build."${dir}"
-    CPP="${cc} -E" CC="${cc} ${flg}" CXXCPP="${cxx} -E" CXX="${cxx} ${flg}" OBJCXX="${cxx} ${flg}" ../configure "${flags[@]}" "$@"
-    cd ..
-}
-
-#configure mac "${mac}" "-arch i386 -arch x86_64 -mmacosx-version-min=10.6" CPPFLAGS="-I../readline" LDFLAGS="-L../readline"
-
-function build() {
-    local dir=$1
-    local sdk=$2
-    local flg=$3
-    shift 3
-
-    configure "${dir}" "${sdk}" "${flg}" "$@" #--with-libffi=libffi.a #CPPFLAGS="-idirafter ${mac}/usr/include"
-}
-
-sim="-mios-simulator-version-min=2.0"
-sim="" # gcc does not support this
-
-#build sim iphonesimulator "-arch i386 ${sim}" OBJCXXFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch" CPPFLAGS="-I../libffi.i386/include" LDFLAGS="-L.." --disable-console
-build ios iphoneos5.1 "-arch armv6 -miphoneos-version-min=2.0" --host=arm-apple-darwin10 CPPFLAGS="-I../libffi.armv6/include -I../sysroot.ios/usr/include -I../sysroot.ios/usr/include/apr-1" LTLIBAPR="../sysroot.ios/usr/lib/libapr-1.dylib" LDFLAGS="-L.. -L../sysroot.ios/usr/lib"
index 5d73856aca3d80fd82df5dfb7cfbb8c88ff30257..e9a1dd8d838869a455db1fce062b296c90acc961 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -116,3 +116,6 @@ using .withName from the grammar is a horrible hack that makes other uses imposs
 
 blocks should be allowed to return blocks/functions: ModifiedType needs to go
   instead, TypedParameterList should be folded into a TypeModifier with the other types
+
+LT_INIT([pic-only]) doesn't work, because the default is only used if unset, and it has a default setting...
+even when using --pic-only, libtool insists on building every file twice... with the same fucking arguments
diff --git a/xcode.sh b/xcode.sh
new file mode 100755 (executable)
index 0000000..67d2a74
--- /dev/null
+++ b/xcode.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# Cycript - Optimizing JavaScript Compiler/Runtime
+# Copyright (C) 2009-2013  Jay Freeman (saurik)
+
+# GNU General Public License, Version 3 {{{
+#
+# Cycript is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License,
+# or (at your option) any later version.
+#
+# Cycript is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Cycript.  If not, see <http://www.gnu.org/licenses/>.
+# }}}
+
+set -e
+
+cd "${0%%/*}"
+
+if [[ ! -e readline/libreadline.a ]]; then
+    ./readline.sh; fi
+if [[ ! -e libffi.a ]]; then
+    ./libffi.sh; fi
+
+if ! which aclocal; then
+    touch aclocal.m4; fi
+if ! which autoconf; then
+    touch configure.ac; fi
+if ! which automake; then
+    touch Makefile.in; fi
+if ! which autoheader; then
+    touch config.h.in; fi
+
+flags=("$@")
+
+function path() {
+    xcodebuild -sdk "$1" -version Path
+}
+
+xcs=$(xcode-select --print-path)
+mac=$(path macosx)
+
+function configure() {
+    local dir=$1
+    local sdk=$2
+    local flg=$3
+    shift 3
+
+    cc=$(xcrun --sdk "${sdk}" -f gcc)
+    cxx=$(xcrun --sdk "${sdk}" -f g++)
+    flg+=" -isysroot $(path "${sdk}")"
+
+    rm -rf build."${dir}"
+    mkdir build."${dir}"
+    cd build."${dir}"
+    CPP="${cc} -E" CC="${cc} ${flg}" CXXCPP="${cxx} -E" CXX="${cxx} ${flg}" OBJCXX="${cxx} ${flg}" ../configure "${flags[@]}" "$@"
+    cd ..
+}
+
+configure mac "${mac}" "-arch i386 -arch x86_64 -mmacosx-version-min=10.6" CPPFLAGS="-I../readline" LDFLAGS="-L../readline"
+
+function build() {
+    local dir=$1
+    local sdk=$2
+    local flg=$3
+    shift 3
+
+    configure "${dir}" "${sdk}" "${flg}" "$@" --enable-static --with-pic #CPPFLAGS="-idirafter ${mac}/usr/include"
+}
+
+sim="-mios-simulator-version-min=2.0"
+sim="" # gcc does not support this
+
+build sim iphonesimulator "-arch i386 ${sim}" OBJCXXFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch" CPPFLAGS="-I../libffi.i386/include" LDFLAGS="-L.." --disable-console
+build ios iphoneos5.1 "-arch armv6 -miphoneos-version-min=2.0" --host=arm-apple-darwin10 CPPFLAGS="-I../libffi.armv6/include -I../sysroot.ios/usr/include -I../sysroot.ios/usr/include/apr-1" LTLIBAPR="../sysroot.ios/usr/lib/libapr-1.dylib" LDFLAGS="-L.. -L../sysroot.ios/usr/lib"