1 # Cycript - Optimizing JavaScript Compiler/Runtime
2 # Copyright (C) 2009-2013 Jay Freeman (saurik)
4 # GNU General Public License, Version 3 {{{
6 # Cycript is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published
8 # by the Free Software Foundation, either version 3 of the License,
9 # or (at your option) any later version.
11 # Cycript is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with Cycript. If not, see <http://www.gnu.org/licenses/>.
25 libs += .libs/libcycript.dylib
26 libs += .libs/libcycript-any.dylib
27 libs += .libs/libcycript-sys.dylib
28 libs += .libs/libcycript-sim.dylib
29 libs += .libs/libcycript.o
36 # make stubbornly refuses to believe that these @'s are bugs
37 # http://osdir.com/ml/help-make-gnu/2012-04/msg00008.html
40 .PHONY: build-mac-$(1)
42 $(MAKE) -C build.mac-$(1)
43 build.mac-$(1)/.libs/cycript: build-mac-$(1)
45 build.mac-$(1)/.libs/libcycript.dylib: build-mac-$(1)
47 build.mac-$(1)/.libs/libcycript-any.dylib: build-mac-$(1)
51 $(foreach arch,i386 x86_64,$(eval $(call build_mac,$(arch))))
54 .PHONY: build-ios-$(1)
56 $(MAKE) -C build.ios-$(1)
57 build.ios-$(1)/.libs/cycript: build-ios-$(1)
59 build.ios-$(1)/.libs/libcycript.dylib: build-ios-$(1)
61 build.ios-$(1)/.libs/libcycript-any.dylib: build-ios-$(1)
63 build.ios-$(1)/.libs/libcycript.a: build-ios-$(1)
67 $(foreach arch,armv6 armv7,$(eval $(call build_ios,$(arch))))
70 .PHONY: build-sim-$(1)
72 $(MAKE) -C build.sim-$(1)
73 build.sim-$(1)/.libs/libcycript.dylib: build-sim-$(1)
75 build.sim-$(1)/.libs/libcycript.a: build-sim-$(1)
79 $(foreach arch,i386,$(eval $(call build_sim,$(arch))))
81 .libs/%: build.mac-i386/.libs/% build.mac-x86_64/.libs/% build.ios-armv6/.libs/%
83 lipo -create -output $@ $^
85 .libs/%-ios.a: build.ios-armv6/.libs/%.a build.ios-armv7/.libs/%.a build.sim/.libs/%.a
87 lipo -create -output $@ $^
89 .libs/libcycript-sys.dylib:
91 ln -sf libcycript.dylib $@
93 .libs/libcycript-sim.dylib: build.sim-i386/.libs/libcycript.dylib
97 .libs/libcycript-%.o: build.%/.libs/libcycript.a
99 ld -r -arch $$(lipo -detailed_info $< | sed -e '/^Non-fat file: / ! d; s/.*: //') -o $@ -all_load $< libffi.a
101 .libs/libcycript.o: .libs/libcycript-ios-armv6.o .libs/libcycript-ios-armv7.o .libs/libcycript-sim-i386.o
102 lipo -create -output $@ $^