MACHINE := $(shell script/harch)
export MACHINE
# This included config is only for the BUILDWITH variable.
include targets/$(MACHINE)/config.cache
#BUILDCOMP = $(shell echo ${BUILDWITH} | cut -c1-3)
BUILDCOMPS := ghc nhc hbc gcc
BUILDCOMP1 := $(shell echo $(notdir ${BUILDWITH}) | cut -c1-3)
BUILDCOMP2 := $(if $(filter $(BUILDCOMP1), $(BUILDCOMPS)),$(BUILDCOMP1),$(shell ${BUILDWITH} 2>&1 | head -1 | cut -c1-3))
BUILDCOMP := $(if $(filter $(BUILDCOMP2), $(BUILDCOMPS)),$(BUILDCOMP2),$(error Cannot find compiler type))
HMAKE = src/hmake/Makefile* src/hmake/*.hs src/hmake/README* \
src/hmake/HISTORY src/hmake/Summary* \
src/interpreter/Makefile* src/interpreter/*.hs \
src/cpphs/*.hs
LIBDIR = lib
TARGDIR = targets
TARGETS = hmake-nhc hmake-hbc hmake-ghc chmake hi-nhc hi-hbc hi-ghc chi
##### compiler build + install scripts
all: all-${BUILDCOMP}
hmake: hmake-${BUILDCOMP}
hi: hi-${BUILDCOMP}
help:
@echo "Common targets include: all install clean realclean config"
@echo "Common targets include: hmake hi"
@echo "For a specific build-compiler: all-hbc all-ghc all-nhc98 all-gcc"
config:
./configure --config
install: all
./configure --install
all-hbc: hmake-hbc hi-hbc
all-ghc: hmake-ghc hi-ghc
all-gcc: chmake chi
all-nhc: hmake-nhc hi-nhc
$(TARGETS): % : $(TARGDIR)/$(MACHINE)/%
$(TARGDIR)/$(MACHINE)/hmake-nhc: $(HMAKE)
cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all config
touch $(TARGDIR)/$(MACHINE)/hmake-nhc
$(TARGDIR)/$(MACHINE)/hmake-hbc: $(HMAKE)
cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all config
touch $(TARGDIR)/$(MACHINE)/hmake-hbc
$(TARGDIR)/$(MACHINE)/hmake-ghc: $(HMAKE)
cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all config
touch $(TARGDIR)/$(MACHINE)/hmake-ghc
$(TARGDIR)/$(MACHINE)/chmake: $(HMAKEC)
@echo "WARNING: hmake might not build correctly from C sources!"
cd src/hmake; $(MAKE) HC=nhc98 BUILDCOMP=$(BUILDCOMP) fromC config
touch $(TARGDIR)/$(MACHINE)/chmake
$(TARGDIR)/$(MACHINE)/hi-nhc: $(HMAKE) hmake-nhc
cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all
touch $(TARGDIR)/$(MACHINE)/hi-nhc98
$(TARGDIR)/$(MACHINE)/hi-hbc: $(HMAKE) hmake-hbc
cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all
touch $(TARGDIR)/$(MACHINE)/hi-hbc
$(TARGDIR)/$(MACHINE)/hi-ghc: $(HMAKE) hmake-ghc
cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=$(BUILDCOMP) all
touch $(TARGDIR)/$(MACHINE)/hi-ghc
$(TARGDIR)/$(MACHINE)/chi: $(HMAKEC) chmake
@echo "WARNING: hi might not build correctly from C sources!"
cd src/interpreter; $(MAKE) HC=nhc98 BUILDCOMP=$(BUILDCOMP) fromC
touch $(TARGDIR)/$(MACHINE)/chi
##### cleanup
clean:
cd src/hmake; $(MAKE) clean
cd src/interpreter; $(MAKE) clean
realclean: clean
cd $(TARGDIR)/$(MACHINE); rm -f $(TARGETS)
cd $(TARGDIR); rm -f hmakeC
rm -f $(LIBDIR)/$(MACHINE)/*
rm -f $(TARGDIR)/$(MACHINE)/config.cache
rm -f $(LIBDIR)/$(MACHINE)/hmakerc
rm -f script/hmake script/hi script/hmake-config
|