1ICK_SPECIFIC_SUBDIR = ick-@PACKAGE_VERSION@ 2ickincludedir = $(includedir)/$(ICK_SPECIFIC_SUBDIR) 3ickdatadir = $(datadir)/$(ICK_SPECIFIC_SUBDIR) 4 5AM_CFLAGS = '-DICKINCLUDEDIR="$(ickincludedir)"' \ 6 '-DICKDATADIR="$(ickdatadir)"' \ 7 '-DICKBINDIR="$(bindir)"' '-DICKLIBDIR="$(libdir)"' \ 8 -DYYDEBUG -DICK_HAVE_STDINT_H=@HAVE_STDINT_H@ 9AM_CPPFLAGS = -I$(srcdir)/src 10 11bin_PROGRAMS = ick convickt 12ick_SOURCES = src/feh2.c src/dekludge.c src/ick_lose.c \ 13 src/fiddle.c src/perpet.c src/uncommon.c 14nodist_ick_SOURCES = parser.y lexer.l 15parser.y : src/parser.y 16 $(LN_S) -f `test -f 'src/parser.y' || echo '$(srcdir)/'`src/parser.y parser.y 17lexer.l : src/lexer.l 18 $(LN_S) -f `test -f 'src/lexer.l' || echo '$(srcdir)/'`src/lexer.l lexer.l 19ick-wrap.c : src/ick-wrap.c 20 $(LN_S) -f `test -f 'src/ick-wrap.c' || echo '$(srcdir)/'`src/ick-wrap.c ick-wrap.c 21pickwrap.c : src/pickwrap.c 22 $(LN_S) -f `test -f 'src/pickwrap.c' || echo '$(srcdir)/'`src/pickwrap.c pickwrap.c 23syslib.i : pit/lib/syslib.i 24 $(LN_S) -f `test -f 'pit/lib/syslib.i' || echo '$(srcdir)/'`pit/lib/syslib.i syslib.i 25syslib3.3i : pit/lib/syslib3.3i 26 $(LN_S) -f `test -f 'pit/lib/syslib.3i' || echo '$(srcdir)/'`pit/lib/syslib3.3i syslib3.3i 27syslib4.4i : pit/lib/syslib4.4i 28 $(LN_S) -f `test -f 'pit/lib/syslib.4i' || echo '$(srcdir)/'`pit/lib/syslib4.4i syslib4.4i 29syslib5.5i : pit/lib/syslib5.5i 30 $(LN_S) -f `test -f 'pit/lib/syslib.5i' || echo '$(srcdir)/'`pit/lib/syslib5.5i syslib5.5i 31syslib6.6i : pit/lib/syslib6.6i 32 $(LN_S) -f `test -f 'pit/lib/syslib.6i' || echo '$(srcdir)/'`pit/lib/syslib6.6i syslib6.6i 33syslib7.7i : pit/lib/syslib7.7i 34 $(LN_S) -f `test -f 'pit/lib/syslib.7i' || echo '$(srcdir)/'`pit/lib/syslib7.7i syslib7.7i 35floatlib.i : pit/lib/floatlib.i 36 $(LN_S) -f `test -f 'pit/lib/floatlib.i' || echo '$(srcdir)/'`pit/lib/floatlib.i floatlib.i 37ecto_b98.c : pit/explib/ecto_b98.c 38 $(LN_S) -f `test -f 'pit/explib/ecto_b98.c' || echo '$(srcdir)/'`pit/explib/ecto_b98.c ecto_b98.c 39ick_ec.h : src/ick_ec.h 40 $(LN_S) -f `test -f 'src/ick_ec.h' || echo '$(srcdir)/'`src/ick_ec.h ick_ec.h 41ick_lose.h : src/ick_lose.h 42 $(LN_S) -f `test -f 'src/ick_lose.h' || echo '$(srcdir)/'`src/ick_lose.h ick_lose.h 43fiddle.h : src/fiddle.h 44 $(LN_S) -f `test -f 'src/fiddle.h' || echo '$(srcdir)/'`src/fiddle.h fiddle.h 45ick_bool.h : src/ick_bool.h 46 $(LN_S) -f `test -f 'src/ick_bool.h' || echo '$(srcdir)/'`src/ick_bool.h ick_bool.h 47yuk.h : src/yuk.h 48 $(LN_S) -f `test -f 'src/ick-ec.h' || echo '$(srcdir)/'`src/yuk.h yuk.h 49ick_LDADD = libidiot.a 50AM_YFLAGS = -d 51# BUILT_SOURCES is used both to make sure parser.h is built early, and to 52# create symlinks used by ick to find files if it's run without first being 53# installed. 54BUILT_SOURCES = parser.h ick-wrap.c pickwrap.c syslib.i syslib3.3i \ 55 syslib4.4i syslib5.5i syslib6.6i syslib7.7i floatlib.i \ 56 ecto_b98.c ick_ec.h fiddle.h ick_bool.h ick_lose.h yuk.h 57noinst_LIBRARIES = libidiot.a 58libidiot_a_SOURCES = src/idiotism.oil 59libidiot.a: src/idiotism.oil oil$(EXEEXT) src/oil.h src/sizes.h src/ick.h \ 60 parser.h src/fiddle.h src/ick_lose.h src/feh.h 61 ./oil$(EXEEXT) < `test -f 'src/idiotism.oil' || echo '$(srcdir)/'`src/idiotism.oil 62 for oo in oilout*.c; do echo $$oo; $(COMPILE) -c $$oo; done 63 $(AR) $(ARFLAGS) libidiot.a oilout*.o 64 $(RANLIB) libidiot.a 65convickt_SOURCES = src/convickt.c src/clc-cset.c src/uncommon.c 66 67@INCLUDE_HIDDEN_FROM_AUTOMAKE@ ./host.mak 68 69noinst_PROGRAMS = oil bin2c 70oil_SOURCES = src/oil.y 71oil_YFLAGS = 72bin2c_SOURCES = src/bin2c.c 73oil$(EXEEXT_FOR_BUILD): src/oil-oil.c bconfig.h 74 $(CC_FOR_BUILD) $(DEFAULT_INCLUDES) $(INCLUDES) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o oil$(EXEEXT_FOR_BUILD) src/oil-oil.c $(LIBS_FOR_BUILD) 75bin2c$(EXEEXT_FOR_BUILD): src/bin2c.c bconfig.h 76 $(CC_FOR_BUILD) $(DEFAULT_INCLUDES) $(INCLUDES) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o bin2c$(EXEEXT_FOR_BUILD) `test -f 'src/bin2c.c' || echo '$(srcdir)/'`src/bin2c.c $(LIBS_FOR_BUILD) 77oil$(EXEEXT): 78bin2c$(EXEEXT): 79 80# Optional libraries are in lib_LIBRARIES, but with a null build rule. 81lib_LIBRARIES = libick.a libickmt.a libickec.a libyuk.a libick_ecto_b98.a 82libick_ecto_b98_a_SOURCES = 83libick_ecto_b98.a: etc/libick_ecto_b98.a 84 -(test -f etc/libick_ecto_b98.a || test -f $(srcdir)/etc/libick_ecto_b98.a) && $(LN_S) -f `test -f 'etc/libick_ecto_b98.a' || echo '$(srcdir)/'`etc/libick_ecto_b98.a libick_ecto_b98.a 85etc/libick_ecto_b98.a: 86libick_a_SOURCES = src/cesspool.c src/numerals.c src/ick_lose.c src/fiddle.c \ 87 src/arrgghh.c src/clc-cset.c src/uncommon.c 88libick_a_LIBADD = atari.o baudot.o ebcdic.o latin1.o 89libickmt_a_SOURCES = src/cesspool.c src/numerals.c src/ick_lose.c src/fiddle.c \ 90 src/arrgghh.c src/clc-cset.c src/uncommon.c src/unravel.c 91libickmt_a_LIBADD = atari.o baudot.o ebcdic.o latin1.o 92libickec_a_SOURCES = src/cesspool.c src/numerals.c src/ick_lose.c src/fiddle.c \ 93 src/arrgghh.c src/clc-cset.c src/uncommon.c src/ick_ec.c 94libickec_a_LIBADD = atari.o baudot.o ebcdic.o latin1.o 95libyuk_a_SOURCES = src/yuk.c 96atari.o: bin2c$(EXEEXT_FOR_BUILD) src/atari.bin 97 ./bin2c$(EXEEXT_FOR_BUILD) ick_clc_cset_atari < `test -f 'src/atari.bin' || echo '$(srcdir)/'`src/atari.bin > atari.c 98 $(COMPILE) -c atari.c 99baudot.o: bin2c$(EXEEXT_FOR_BUILD) src/baudot.bin 100 ./bin2c$(EXEEXT_FOR_BUILD) ick_clc_cset_baudot < `test -f 'src/baudot.bin' || echo '$(srcdir)/'`src/baudot.bin > baudot.c 101 $(COMPILE) -c baudot.c 102ebcdic.o: bin2c$(EXEEXT_FOR_BUILD) src/ebcdic.bin 103 ./bin2c$(EXEEXT_FOR_BUILD) ick_clc_cset_ebcdic < `test -f 'src/ebcdic.bin' || echo '$(srcdir)/'`src/ebcdic.bin > ebcdic.c 104 $(COMPILE) -c ebcdic.c 105latin1.o: bin2c$(EXEEXT_FOR_BUILD) src/latin1.bin 106 ./bin2c$(EXEEXT_FOR_BUILD) ick_clc_cset_latin1 < `test -f 'src/latin1.bin' || echo '$(srcdir)/'`src/latin1.bin > latin1.c 107 $(COMPILE) -c latin1.c 108 109ickinclude_HEADERS = src/ick_ec.h src/fiddle.h src/ick_lose.h src/yuk.h \ 110 src/ick_bool.h 111nodist_ickinclude_HEADERS = config.h abcess.h 112dist_ickdata_DATA = src/atari.bin src/baudot.bin src/ebcdic.bin src/latin1.bin \ 113 src/ick-wrap.c src/pickwrap.c COPYING 114# These necessary pit files are in nodist_ here because they're in EXTRA_DIST 115# later along with the rest of the pit. 116nodist_ickdata_DATA = pit/lib/syslib.i pit/lib/syslib3.3i pit/lib/syslib4.4i \ 117 pit/lib/syslib5.5i pit/lib/syslib6.6i pit/lib/syslib7.7i \ 118 pit/lib/floatlib.i coopt.sh pit/explib/syslibc.c \ 119 pit/explib/compunex.c pit/explib/ecto_b98.c 120dist_man1_MANS = doc/ick.1 doc/convickt.1 121info_TEXINFOS = doc/ick.txi 122 123# How to run splint on this code 124SPLINTOPTS = -I. -I$(top_srcdir)/src +quiet -warnposix -boolops -predboolint 125splint: $(ick_SOURCES) src/parser.h 126 @echo "Running splint on ick..." 127 -(for x in $(ick_SOURCES); do echo $(top_srcdir)/$$x; done) | xargs splint $(SPLINTOPTS) -exportlocal -redef 128 129EXTRA_DIST = pit etc BUGS src/abcessh.in src/feh.h src/fiddle.h src/ick_ec.h \ 130 src/ick.h src/ick_lose.h src/oil.h src/pick1.h src/pick2.h \ 131 src/sizes.h src/uncommon.h src/yuk.h src/parser.y src/lexer.l \ 132 doc/Makefile doc/fdl-1-2.txi doc/fix83.pl doc/fixtoc.pl \ 133 doc/ickstyle.css doc/ick.txt doc/intercal.mm doc/READ.ME \ 134 doc/THEORY.txt doc/tidy.cfg src/parser.c src/parser.h \ 135 src/lexer.c control doc/ick.txi doc/ick.txt doc/chipspec.txt \ 136 HISTORY NEWS README buildaux/buildconfig buildaux/buildconfig.ac \ 137 buildaux/depcomp buildaux/hostmak.in buildaux/install-sh \ 138 buildaux/missing buildaux/ylwrap buildaux/bconfigh.in 139 140# It's ugly to distribute the prebuilt files in the root of the 141# distribution. configure will move these files back again into the 142# root of the /build tree/, which makes a lot more sense than putting 143# them in the root of the source tree. Also, make sure not to 144# distribute executables lying around in the pit from previous tests. 145dist-hook: 146 $(MKDIR_P) $(distdir)/prebuilt 147 mv $(distdir)/src/parser.c $(distdir)/prebuilt 148 mv $(distdir)/src/parser.h $(distdir)/prebuilt 149 mv $(distdir)/src/lexer.c $(distdir)/prebuilt 150 mv $(distdir)/src/oil-oil.c $(distdir)/prebuilt 151 -find $(distdir)/pit -perm -u+x -type f -and -not -name regresscheck | xargs rm 152 touch $(distdir)/MANIFEST 153 (cd $(distdir); find . | sort > MANIFEST) 154 155# N.B. the parser.y, lexer.l, libraries, headers and skeletons are the 156# links made to simplify the build, not the originals 157CLEANFILES = oilout*.c parser.y lexer.l ick-wrap.c pickwrap.c \ 158 atari.c baudot.c ebcdic.c latin1.c ick.dvi \ 159 syslib.i syslib3.3i syslib4.4i syslib5.5i \ 160 syslib6.6i syslib7.7i ick_ec.h fiddle.h \ 161 ick_lose.h yuk.h floatlib.i ecto_b98.c ick_bool.h 162# Distclean deletes the Makefile and thus requires reconfiguring, 163# and therefore this is a safe moment to delete the build tree 164# versions of the prebuilt files. (The source tree versions will 165# be safe in the prebuilt dir, which Automake doesn't even know 166# about.) 167DISTCLEANFILES = src/parser.c src/parser.h src/lexer.c src/oil-oil.c host.mak bconfig.h config.status.build 168 169distclean-local: 170 mkdir -p src 171 rm -rf src/.deps 172 -rmdir src # this should be empty iff out-of-tree 173 174# A veryclean is a distclean that removes /all/ generated files, 175# even the ones that are part of the distributed system 176veryclean: distclean 177 rm -f $(top_srcdir)/buildaux/buildconfig 178 rm -f $(top_srcdir)/buildaux/depcomp 179 rm -f $(top_srcdir)/buildaux/install-sh 180 rm -f $(top_srcdir)/buildaux/missing 181 rm -f $(top_srcdir)/buildaux/ylwrap 182 rm -f $(top_srcdir)/buildaux/ar-lib 183 rm -f $(top_srcdir)/buildaux/compile 184 rm -f $(top_srcdir)/buildaux/Makefile.in 185 rm -f $(top_srcdir)/buildaux/bconfigh.in 186 rm -f $(top_srcdir)/buildaux/configh.in 187 rm -f $(top_srcdir)/aclocal.m4 188 rm -f $(top_srcdir)/configure 189 rm -rf $(top_srcdir)/autom4te.cache 190 rm -rf $(top_srcdir)/buildaux/autom4te.cache 191 192# Clean the pit test binaries on toplevel make clean 193clean-local: 194 if [ -d pit ]; then cd pit; make clean; fi 195 196 197# A subtle yet potentially common issue: ick favours the install location over 198# the build-directory or current-directory locations for its data files; this 199# means that we can easily test against the wrong version of libick. 200# It would be nice to compare the file contents, but this doesn't work in 201# practice; it's possible that the installed version is stripped and the 202# non-installed version is unstripped (yet they match). Instead, we use the 203# crude heuristic of comparing modification times; an old installed version 204# will be older than an uninstalled version, whereas a version installed from 205# the current sources can be no older (and typically is newer) 206verify-libick-version: $(lib_LIBRARIES) 207 @list='$(lib_LIBRARIES)'; \ 208 for p in $$list; do \ 209 test ! -f $(DESTDIR)$(libdir)/$$p || test ! $(DESTDIR)$(libdir)/$$p -ot $$p || \ 210 ( \ 211 echo "Error: You have an old installed version of $$p."; \ 212 echo "This makes it impossible to test ick, as it will look at the"; \ 213 echo "installed version, not the version that was just built."; \ 214 echo "Run make install or make uninstall."; \ 215 false; \ 216 ) || \ 217 exit 1; \ 218 done 219 220# Make self-tests available in the standard way 221# The pit has to be writable for the tests to work, unfortunately... 222check-am: ick$(EXEEXT) verify-libick-version 223 chmod u+w $(top_srcdir)/pit 224 chmod u+w $(top_srcdir)/pit/lib 225 chmod u+w $(top_srcdir)/pit/tests 226 make -f $(top_srcdir)/pit/Makefile ICKENV="" ICK="./ick$(EXEEXT)" ICKOPTS="-b" PIT=$(top_srcdir)/pit test 227 228# Run the fuzztest 229fuzz: ick$(EXEEXT) src/idiotism.oil $(top_srcdir)/etc/interfuzz.pl verify-libick-version 230 ICK="./ick$(EXEEXT)" IDIOTISM="$(top_srcdir)/src/idiotism.oil" perl $(top_srcdir)/etc/interfuzz.pl 231 232# Run regression tests, fuzz tests and build tests 233test: fuzz distcheck 234 235# If a documentation file is needed but not available, invoke the doc 236# makefile to build it. 237doc/ick.txt: doc/ick.txi 238 cd $(top_srcdir)/doc && make ick.txt 239 240echo-version: 241 @echo @PACKAGE_VERSION@ 242echo-repository-url: 243 @echo @REPOSITORY_URL@ 244 245# The build system itself is included in the makefile; tell Automake 246# about the buildaux tweaking. 247$(top_srcdir)/buildaux/buildconfig: $(top_srcdir)/buildaux/buildconfig.ac $(top_srcdir)/buildaux/bconfigh.in 248 cd $(top_srcdir) && $(AUTOCONF) buildaux/buildconfig.ac > buildaux/buildconfig 249 chmod a+x $(top_srcdir)/buildaux/buildconfig 250$(top_srcdir)/buildaux/bconfigh.in: $(top_srcdir)/buildaux/buildconfig.ac 251 cd $(top_srcdir)/buildaux && $(AUTOHEADER) buildconfig.ac 252 rm -f stamp-h1 253 touch $@ 254CONFIG_STATUS_DEPENDENCIES=$(top_srcdir)/buildaux/buildconfig $(top_srcdir)/buildaux/bconfigh.in $(top_srcdir)/src/abcessh.in 255 256# Ship a release 257release: intercal-$(VERSION).tar.gz 258 shipper version=$(VERSION) | sh -e -x 259 cd website; upload 260 261# Refresh the website 262refresh: 263 shipper -N -w version=$(VERSION) | sh -e -x 264 cd website; upload 265