include config.mk GHMAKE=$(GHC) --make GHCXMAKE=ghcxmake GHCFLAGS= -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS) GHCOPTFLAGS=-O2 GHCFUDFLAG= JAVAFLAGS=-target 1.4 -source 1.4 DIST_DIR=GF-$(PACKAGE_VERSION) NOT_IN_DIST= \ grammars \ download \ doc/release2.html \ src/tools/AlphaConvGF.hs BIN_DIST_DIR=$(DIST_DIR)-$(host) SNAPSHOT_DIR=GF-$(shell date +%Y%m%d) ifeq ($(READLINE),readline) GHCFLAGS += -package readline -DUSE_READLINE endif GF_EXE=gf$(EXEEXT) GF_EXE_TMP=gf-bin$(EXEEXT) GF_DOC_EXE=gfdoc$(EXEEXT) .PHONY: all unix jar gfdoc windows install install-gf \ temp install-gfdoc install-editor \ today help clean ifeq ($(ENABLE_JAVA), "yes") BUILD_JAR=jar else BUILD_JAR= endif all: unix gfdoc $(BUILD_JAR) unix: today touch-files opt windows: unix temp: today touch-files noopt # use gf-bin name to not clash with GF/ dir on # case insensitive file systems build: $(GHMAKE) $(GHCFLAGS) GF.hs -o $(GF_EXE_TMP) strip $(GF_EXE_TMP) mv $(GF_EXE_TMP) ../bin/$(GF_EXE) opt: GHCFLAGS += $(GHCOPTFLAGS) opt: build noopt: build ghci: touch-files ghci-nofud fud: $(GHCXMAKE) $(GHCFLAGS) $(GHCFUDFLAG) GF.hs -o fgf strip fgf mv fgf ../bin/ gft: $(GHMAKE) $(GHCFLAGS) -itranslate translate/GFT.hs -o gft-bin strip gft-bin mv gft-bin ../bin/gft api: $(GHMAKE) $(GHCFLAGS) $(GHCOPTFLAGS) GF/API.hs shell: $(GHMAKE) $(GHCFLAGS) $(GHCOPTFLAGS) GF/Shell.hs clean: -rm -rf */*.o */*.hi *.o *.hi */*.ghi *.ghi *~ */*~ -rm -f GF/*.{o,hi,ghi} GF/*/*.{o,hi,ghi} GF/*/*/*.{o,hi,ghi} -rm -f JavaGUI/*.class distclean: clean -rm -f JavaGUI/gf-java.jar jgf -rm -f tools/$(GF_DOC_EXE) -rm -f config.status config.mk config.log -rm -f *.tgz *.zip -rm -rf $(DIST_DIR) $(BIN_DIST_DIR) ghci-nofud: $(GHCI) $(GHCFLAGS) today: tools/mktoday.sh $(PACKAGE_VERSION) javac: $(JAVAC) $(JAVAFLAGS) JavaGUI/*.java jar: javac cd JavaGUI; $(JAR) -cmf manifest.txt gf-java.jar *.class showflags: @echo $(GHCFLAGS) # added by peb: tracing: GHCFLAGS += -DTRACING tracing: temp ghci-trace: GHCFLAGS += -DTRACING ghci-trace: ghci touch-files: rm -f GF/System/Tracing.{hi,o} GF/System/Readline.{hi,o} touch GF/System/Tracing.hs GF/System/Readline.hs # profiling prof: GHCOPTFLAGS += -prof -auto-all -auto-dicts prof: all # # Help file # tools/MkHelpFile: tools/MkHelpFile.hs $(GHMAKE) -o $@ $^ help: GF/Shell/HelpFile.hs GF/Shell/HelpFile.hs: tools/MkHelpFile HelpFile tools/MkHelpFile # # Tools # gfdoc: tools/$(GF_DOC_EXE) tools/$(GF_DOC_EXE): tools/GFDoc.hs $(GHMAKE) $(GHCOPTFLAGS) -o $@ $^ # # Distribution # dist: -rm -rf $(DIST_DIR) mkdir $(DIST_DIR) cvs export -d $(DIST_DIR) -rHEAD GF cd $(DIST_DIR)/src && autoconf && rm -rf autom4te.cache find $(DIST_DIR) -name .cvsignore -exec rm -f {} ';' # cd $(DIST_DIR)/grammars && sh mkLib.sh cd $(DIST_DIR) && rm -rf $(NOT_IN_DIST) gtar -zcf $(DIST_DIR).tgz $(DIST_DIR) rm -rf $(DIST_DIR) snapshot: DIST_DIR=$(SNAPSHOT_DIR) snapshot: dist rpm: dist rpmbuild -ta $(DIST_DIR).tgz binary-dist: rm -rf $(BIN_DIST_DIR) mkdir $(BIN_DIST_DIR) ./configure --host="$(host)" \ CPPFLAGS="`lib__readline -I` `lib__ncurses -I`" \ LDFLAGS="`lib__readline -l` `lib__ncurses -l`" $(MAKE) all $(INSTALL) ../bin/$(GF_EXE)tools/$(GF_DOC_EXE) $(BIN_DIST_DIR) $(INSTALL) -m 0644 JavaGUI/gf-java.jar $(BIN_DIST_DIR) $(INSTALL) configure config.guess config.sub install-sh $(BIN_DIST_DIR) $(INSTALL) -m 0644 config.mk.in jgf.in $(BIN_DIST_DIR) $(INSTALL) -m 0644 ../README ../LICENSE $(BIN_DIST_DIR) $(INSTALL) -m 0644 INSTALL.binary $(BIN_DIST_DIR)/INSTALL $(INSTALL) -m 0644 Makefile.binary $(BIN_DIST_DIR)/Makefile gtar -zcf GF-$(PACKAGE_VERSION)-$(host).tgz $(BIN_DIST_DIR) rm -rf $(BIN_DIST_DIR) # # Installation # install: install-gf install-gfdoc install-editor install-gf: $(INSTALL) -d $(bindir) $(INSTALL) ../bin/$(GF_EXE) $(bindir) install-gfdoc: $(INSTALL) -d $(bindir) $(INSTALL) tools/$(GF_DOC_EXE) $(bindir) install-editor: $(INSTALL) -d $(datadir)/GF-$(PACKAGE_VERSION) $(INSTALL) jgf $(bindir) $(INSTALL) -m 0644 JavaGUI/gf-java.jar $(datadir)/GF-$(PACKAGE_VERSION) install-java: javac -rm -f ../bin/JavaGUI ln -s ../src/JavaGUI ../bin @echo "PLEASE edit GFHOME in bin/jgf"