############################################################################### Main = Main Main_TEX = Palindrom ROOT = Palindrom PATHS = . ############################################################################### GHC_OPTIMIZE = O2 GHC_FEATURES = GHC_PROFILING = GHC_PACKAGES = data GHC_PROG = ghc GHC_OPTIONS = GHC_COMMAND = $(GHC_PROG) --make -o $@ \ $(addprefix -,$(GHC_OPTIONS)) \ $(addprefix -,$(GHC_OPTIMIZE)) \ $(addprefix -,$(GHC_PROFILING)) \ $(addprefix -f,$(GHC_FEATURES)) \ $(addprefix -package ,$(GHC_PACKAGES)) GHCI_PROG = ghci GHCI_COMMAND = $(GHCI_PROG) \ $(addprefix -,$(GHC_OPTIONS)) \ $(addprefix -f,$(GHC_FEATURES)) \ $(addprefix -package ,$(GHC_PACKAGES)) HUGS_PROG = hugs HUGS_COMMAND = $(HUGS_PROG) ############################################################################### EXT_HS = lhs EXT_TEX = tex EXT_PS = ps EXT_BIB = bib INPUT_HS = $(wildcard $(addsuffix /*.$(EXT_HS),$(PATHS))) INPUT_TEX = $(wildcard $(addsuffix /*.$(EXT_TEX),$(PATHS))) \ $(wildcard $(addsuffix /*.$(EXT_BIB),$(PATHS))) ############################################################################### PACK = $(INPUT_HS) $(INPUT_TEX) Makefile PACK_NAME = $(ROOT).tgz ############################################################################### LATEX_CMD = latex \\nonstopmode\\input BIBTEX_CMD = bibtex DVIPS_PROG = dvips DVIPS_OPTIONS = D600 DVIPS_CMD = $(DVIPS_PROG) $(addprefix -,$(DVIPS_OPTIONS)) TAR_PROG = tar TAR_OPTIONS = cvz f$(PACK_NAME) C.. TAR_CMD = $(TAR_PROG) $(addprefix -,$(TAR_OPTIONS)) \ $(addprefix $(ROOT)/,$(PACK)) ############################################################################### CLEAN_PATHS = $(PATHS) CLEAN = $(Main) $(PACK_NAME) *.$(EXT_PS) CLEAN_OBJ_EXT = *.{o,hi,dvi} CLEAN_TEX_EXT = *.{log,aux,bbl,blg} CLEAN_BAK_EXT = *~ CLEAN_CMD = rm -f ############################################################################### ############################################################################### .PHONY: default default: $(Main) $(Main_TEX).$(EXT_PS) clean_obj clean_tex ############################################################################### mkLatexBib = $(LATEX_CMD) $(1) ; $(BIBTEX_CMD) $(1) ; \ $(LATEX_CMD) $(1) ; $(LATEX_CMD) $(1) $(Main_TEX).dvi: $(INPUT_TEX) $(INPUT_HS) $(call mkLatexBib,$(Main_TEX)) $(Main_TEX).ps: $(Main_TEX).dvi $(DVIPS_CMD) $< ############################################################################### .PHONY: ghci hugs ghci: $(GHCI_COMMAND) $(Main).$(EXT_HS) hugs: $(HUGS_COMMAND) $(Main).$(EXT_HS) $(Main): $(INPUT_HS) $(GHC_COMMAND) $(Main).$(EXT_HS) ############################################################################### .PHONY: pack pack: $(PACK) $(TAR_CMD) ############################################################################### .PHONY: clean clean_obj clean_bak clean_all clean_tex do_Clean_Ext = $(CLEAN_CMD) $(addsuffix /$(1),$(CLEAN_PATHS)) do_Clean = $(CLEAN_CMD) $(1) clean_obj: $(call do_Clean_Ext,$(CLEAN_OBJ_EXT)) clean_bak: $(call do_Clean_Ext,$(CLEAN_BAK_EXT)) clean_tex: $(call do_Clean_Ext,$(CLEAN_TEX_EXT)) clean: clean_obj clean_tex $(call do_Clean,$(CLEAN)) clean_all: clean clean_bak