]> git.saurik.com Git - cycript.git/blame - GNUmakefile.in
Add a valueOf to Instance.
[cycript.git] / GNUmakefile.in
CommitLineData
3530897b
DWT
1# @configure_input@
2
9c60689e
DWT
3SHELL := @_BASH@
4VPATH := @srcdir@
5
6ifndef PKG_TARG
7target :=
8else
9target := $(PKG_TARG)-
10endif
11
12srcdir := @srcdir@
13top_builddir := @top_builddir@
14flex := @FLEX@
15libtool := @LIBTOOL@
16cxx := @CXX@
17objcxx := @OBJCXX@
549f29b5
DWT
18cflags := @CPPFLAGS@ @CXXFLAGS@ -DYYDEBUG=1
19ldflags := @LDFLAGS@
20library := @LIBS@ @LTLIBAPR@ @LTLIBICONV@
3530897b 21time := $(shell which @TIME@)
3fd51f51 22gperf := @GPERF@
3530897b
DWT
23
24INSTALL := @INSTALL@
25INSTALL_PROGRAM := @INSTALL_PROGRAM@
26INSTALL_DATA := @INSTALL_DATA@
27
28PACKAGE_TARNAME := @PACKAGE_TARNAME@
29prefix := @prefix@
30exec_prefix := @exec_prefix@
31bindir := @bindir@
32sbindir := @sbindir@
33libexecdir := @libexecdir@
34datarootdir := @datarootdir@
35datadir := @datadir@
36sysconfdir := @sysconfdir@
37sharedstatedir := @sharedstatedir@
38localstatedir := @localstatedir@
39includedir := @includedir@
40oldincludedir := @oldincludedir@
41docdir := @docdir@
42infodir := @infodir@
43htmldir := @htmldir@
44dvidir := @dvidir@
45pdfdir := @pdfdir@
46psdir := @psdir@
47libdir := @libdir@
48localedir := @localedir@
49mandir := @mandir@
9c60689e 50
3fd51f51
DWT
51CY_EXECUTE := @CY_EXECUTE@
52
9c60689e 53paths := $(foreach path,$(paths),$(wildcard $(path)))
549f29b5 54cflags += $(foreach path,$(paths),-I$(path) -L$(path))
9c60689e 55
3530897b 56svn := $(shell svnversion $(srcdir))
9c60689e
DWT
57
58all:
59all := cycript
60
61dpkg_architecture := $(shell which dpkg-architecture 2>/dev/null)
62ifneq ($(dpkg_architecture),)
63arch := $(shell $(dpkg_architecture) -qDEB_HOST_ARCH 2>/dev/null)
64endif
65
66header := Cycript.tab.hh Parser.hpp Pooling.hpp cycript.hpp Internal.hpp Error.hpp String.hpp Exception.hpp Standard.hpp
67
68code :=
549f29b5
DWT
69code += Replace.lo Output.lo
70code += Cycript.tab.lo lex.cy.lo
71code += Network.lo Parser.lo
72code += JavaScriptCore.lo Library.lo
9c60689e
DWT
73
74inject :=
75
76filters := #E4X
77ldid := true
78entitle := $(ldid)
79lib := lib
80dll := so
9c60689e
DWT
81depends :=
82
83restart ?= $(MAKE)
84uname_s ?= $(shell uname -s)
85uname_p ?= $(shell uname -p)
86
3fd51f51
DWT
87ifeq ($(CY_EXECUTE),1)
88cflags += -DCY_EXECUTE
89code += sig/ffi_type.lo sig/parse.lo sig/copy.lo
90code += Execute.lo Bridge.lo
91filters += C
92#ifeq ($(filter ObjectiveC,$(filters)),)
93#ifneq ($(shell which gnustep-config 2>/dev/null),)
94#include GNUstep.mk
95#endif
96#endif
9c60689e
DWT
97endif
98
549f29b5
DWT
99cflags += -Wall -Werror -Wno-parentheses #-Wno-unused
100cflags += -fno-common
9c60689e 101ifneq ($(srcdir),.)
549f29b5 102cflags += -I.
9c60689e 103endif
549f29b5 104cflags += -I$(srcdir) -I$(srcdir)/include
9c60689e 105
549f29b5 106all += $(lib)cycript.la
9c60689e
DWT
107
108filters += $(shell bison <(echo '%code{}%%_:') -o/dev/null 2>/dev/null && echo Bison24 || echo Bison23)
109
110ifdef arch
111deb := $(shell grep ^Package: $(srcdir)/control.in | cut -d ' ' -f 2-)_$(shell grep ^Version: $(srcdir)/control.in | cut -d ' ' -f 2 | sed -e 's/\#/$(svn)/')_$(arch).deb
112
113all:
114
115extra::
116
117ifeq ($(depends)$(dll),dylib)
118control.tmp: control.in cycript $(lib)cycript.dylib
119 sed -e 's/&/'"$$(dpkg-query -S $$(otool -lah cycript *.dylib | grep dylib | grep -v ':$$' | sed -e 's/^ *name //;s/ (offset [0-9]*)$$//' | sort -u) 2>/dev/null | sed -e 's/:.*//; /^cycript$$/ d; s/$$/,/' | sort -u | tr '\n' ' ')"'/;s/, $$//;s/#/$(svn)/;s/%/$(arch)/' $< >$@
120else
121ifeq ($(depends)$(dll),so)
122control.tmp: control.in cycript $(lib)cycript.so
123 sed -e 's/&/'"$$(dpkg-query -S $$(ldd cycript $(lib)cycript.so | sed -e '/:$$/ d; s/^[ \t]*\([^ ]* => \)\?\([^ ]*\) .*/\2/' | sort -u) 2>/dev/null | sed -e 's/:.*//; /^cycript$$/ d; s/$$/,/' | sort -u | tr '\n' ' ')"'/;s/, $$//;s/#/$(svn)/;s/%/$(arch)/' $< >$@
124else
125control.tmp: control.in
126 sed -e 's/&/$(foreach depend,$(depends),$(depend),)/;s/,$$//;s/#/$(svn)/;s/%/$(arch)/' $< >$@
127endif
128endif
129
130control: control.tmp
131 [[ -e control ]] && diff control control.tmp &>/dev/null || cp -pRf control.tmp control
132
133$(deb): $(all) control
134 rm -rf package
135 mkdir -p package/DEBIAN
136 cp -pR control package/DEBIAN
137 mkdir -p package/usr/{bin,lib,sbin}
138 $(restart) extra
139 cp -pR $(lib)cycript.$(dll) package/usr/lib
140 cp -pR cycript package/usr/bin
141 #cp -pR cyrver package/usr/sbin
142 dpkg-deb -b package $(deb)
143endif
144
3fd51f51
DWT
145ifeq ($(CY_EXECUTE),1)
146Bridge.gperf: Bridge.def Bridge.sh
147 $(srcdir)/Bridge.sh $< >$@
148
149Bridge.hpp: Bridge.gperf
150 $(gperf) $< | sed -e 's/defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__/0/' >$@
151
152Bridge.lo: Bridge.hpp
153endif
154
9c60689e
DWT
155all: $(all)
156
157clean::
3fd51f51
DWT
158 rm -rf *.lo *.o .libs $(lib)cycript.$(dll) $(lib)cycript.la $(all) Struct.hpp lex.cy.c Cycript.tab.cc Cycript.tab.hh location.hh position.hh stack.hh cyrver Cycript.yy Cycript.l control Bridge.gperf Bridge.hpp Cycript.output sig/*.lo sig/.libs
159 -rmdir sig
9c60689e
DWT
160
161distclean: clean
162 rm -f GNUmakefile config.log config.status libtool
163
164%.yy: %.yy.in
165 $(srcdir)/Filter.sh <$< >$@ $(filters)
166
167%.l: %.l.in
168 $(srcdir)/Filter.sh <$< >$@ $(filters)
169
170Cycript.tab.cc Cycript.tab.hh location.hh position.hh: Cycript.yy
171 bison -v --report=state $<
172
173lex.cy.c: Cycript.l
174 $(flex) -t $< | sed -e 's/int yyl;/yy_size_t yyl;/;s/int yyleng_r;/yy_size_t yyleng_r;/' >$@
175
176#Parser.hpp: Parser.py Parser.dat
177# ./Parser.py <Parser.dat >$@
178
549f29b5
DWT
179Cycript.tab.lo: Cycript.tab.cc $(header)
180 $(libtool) --mode=compile $(cxx) $(cflags) -c -o $@ $<
9c60689e 181
549f29b5
DWT
182lex.cy.lo: lex.cy.c $(header)
183 $(libtool) --mode=compile $(cxx) $(cflags) -c -o $@ $<
9c60689e 184
549f29b5
DWT
185%.lo: %.cpp $(header)
186 $(libtool) --mode=compile $(cxx) $(cflags) -c -o $@ $<
9c60689e 187
549f29b5
DWT
188%.lo: %.mm $(header)
189 $(libtool) --mode=compile $(objcxx) $(cflags) -c -o $@ $<
9c60689e 190
549f29b5 191$(lib)cycript.la: $(code)
3530897b 192 $(libtool) --mode=link $(cxx) $(ldflags) -o $@ $(filter %.lo,$^) $(library) $(link) -rpath $(libdir)
9c60689e
DWT
193 $(ldid) $@
194
549f29b5 195cycript: Console.lo $(lib)cycript.la $(inject)
3530897b 196 $(libtool) --mode=link $(cxx) $(ldflags) -o $@ $(filter %.lo,$^) $(lib)cycript.la $(link) -rpath $(libdir)
9c60689e
DWT
197 $(entitle) cycript
198
199package: $(deb)
200
201test: $(deb)
202 dpkg -i $(deb)
203 if [[ -e target.cy ]]; then cycript -c target.cy && echo; fi
3530897b 204 if [[ -e jquery.js ]]; then $(time) cycript -c jquery.js >jquery.cyc.js; gzip -9c jquery.cyc.js >jquery.cyc.js.gz; wc -c jquery.{mam,gcc,cyc,bak,yui}.js; wc -c jquery.{cyc,gcc,bak,mam,yui}.js.gz; fi
9c60689e
DWT
205 if [[ -e test.cy ]]; then cycript test.cy; fi
206
207install: cycript $(lib)cycript.$(dll)
208 cp -p cycript /usr/bin
209 cp -p $(lib)cycript.$(dll) /usr/lib
210
211.PHONY: all clean extra package control.tmp