Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/cpphs/Makefile.nhc98

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


include Makefile.inc

OBJDIR	= $(BUILDDIR)/$(OBJ)/cpphs
CPPHS	= $(DST)/cpphs$(EXE)
TARGET	= $(CPPHS)
VERSION	= 1.5

SRCS    = Language/Preprocessor/Cpphs.hs \
          Language/Preprocessor/Cpphs/CppIfdef.hs \
          Language/Preprocessor/Cpphs/HashDefine.hs \
          Language/Preprocessor/Cpphs/MacroPass.hs \
          Language/Preprocessor/Cpphs/Options.hs \
          Language/Preprocessor/Cpphs/Position.hs \
          Language/Preprocessor/Cpphs/ReadFirst.hs \
          Language/Preprocessor/Cpphs/RunCpphs.hs \
          Language/Preprocessor/Cpphs/SymTab.hs \
          Language/Preprocessor/Cpphs/Tokenise.hs \
          Language/Preprocessor/Unlit.hs \
          Text/ParserCombinators/HuttonMeijer.hs \
          cpphs.hs

DIRS =	Language/Preprocessor \
	Language/Preprocessor/Cpphs \
	Text/ParserCombinators \
	.

FLATSRCS = $(shell for file in $(SRCS); do basename $$file ; done)

OBJS	= $(patsubst %.hs, $(OBJDIR)/%.$O, $(SRCS))
CFILES	= $(patsubst %.hs, %.$C, $(SRCS))

AUX	= README LICENCE* CHANGELOG cpphs.hugs cpphs.compat cpphs.cabal \
		Setup.hs \
		tests/[A-BD-Z]* tests/[a-np-z]* \
		docs/[a-z]*

HC = $(LOCAL)nhc98	# can be overridden by caller HC=...
HFLAGS = $(shell echo $(BUILDOPTS)) #-$(CFG)

ifeq "nhc98" "$(findstring nhc98, ${HC})"
HEAP = -H4M -package base
endif
ifeq "ghc" "$(findstring ghc, ${HC})"
HFLAGS += $(shell ${LOCAL}fixghc ${GHCSYM} -package base)
endif
ifeq "hbc" "$(findstring hbc, ${HC})"
hbc: $(FLATSRCS)
	sed -e 's/System.IO.Unsafe/IOExts/' CppIfdef.hs >hbc
	mv hbc CppIfdef.hs
	sed -e 's/System.IO.Unsafe/IOExts/' MacroPass.hs >hbc
	cp -a hbc MacroPass.hs
all: hbc
endif

all: $(TARGET)
install: $(TARGET)
cfiles: cleanC $(CFILES)
fromC: $(OBJDIR)
	$(LOCAL)/nhc98 -c -d $(OBJDIR) $(CFILES)
	$(LOCAL)nhc98 -H8M -o $(TARGET) $(OBJS)
	$(STRIP) $(TARGET)

clean: cleanHi cleanO
cleanO:
	rm -f $(OBJS)
cleanHi:
	for dir in $(DIRS); do rm -f $$dir/*.hi; done
cleanC:
	for dir in $(DIRS); do rm -f $$dir/*.hc $$dir/*.c; done
realclean: clean cleanC
	rm -f *.raw *.html haddock.css haskell_icon.gif
	rm -f $(TARGET)
package:
	tar cf tmp.tar $(SRCS) $(AUX)
	mkdir cpphs-$(VERSION)
	cd cpphs-$(VERSION); tar xf ../tmp.tar
	tar zcf cpphs-$(VERSION).tar.gz cpphs-$(VERSION)
	zip -r cpphs-$(VERSION).zip cpphs-$(VERSION)
	rm -r tmp.tar cpphs-$(VERSION)
haddock: $(SRCS)
	mkdir -p docs/cpphs
	for dir in $(DIRS); do mkdir -p docs/cpphs/$$dir; done
	for file in $(SRCS); \
	    do HsColour -anchorHTML $$file \
	         >docs/cpphs/`dirname $$file`/`basename $$file .hs`.html;\
	    done
	haddock --html --title=cpphs --odir=docs/cpphs --package=cpphs \
	    --source-module="%{MODULE/.//}.html" \
	    --source-entity="%{MODULE/.//}.html#%{NAME}" \
	    $(SRCS)

flat:
	@echo $(FLATSRCS)

$(CPPHS): $(OBJDIR) $(OBJS)
	$(HC) $(HFLAGS) $(HEAP) -o $@  $(OBJS)
	$(STRIP) $@

$(OBJDIR):
	mkdir -p $(OBJDIR) || $(TRUE)
	for dir in $(DIRS); do mkdir -p $(OBJDIR)/$$dir || $(TRUE); done
$(OBJS): $(OBJDIR)/%.$O : %.hs
	$(HC) $(HFLAGS) -c -o $@ $<

$(CFILES): %.$C : %.hs
	$(HC) $(HFLAGS) -C $<

#$(FLATSRCS): $(SRCS)
#	-cp $(SRCS) .

# dependencies generated by hmake -Md:
${OBJDIR}/Language/Preprocessor/Cpphs/Options.o:
${OBJDIR}/Language/Preprocessor/Cpphs/RunCpphs.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/CppIfdef.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/MacroPass.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Options.o \
	${OBJDIR}/Language/Preprocessor/Unlit.o
${OBJDIR}/Language/Preprocessor/Cpphs/MacroPass.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/HashDefine.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Tokenise.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/SymTab.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Position.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Options.o 
${OBJDIR}/Language/Preprocessor/Cpphs/HashDefine.o:
${OBJDIR}/Language/Preprocessor/Cpphs/Tokenise.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/HashDefine.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Position.o 
${OBJDIR}/Language/Preprocessor/Cpphs/ReadFirst.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/Position.o
${OBJDIR}/Language/Preprocessor/Cpphs/Position.o:
${OBJDIR}/Language/Preprocessor/Cpphs/ReadFirst.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/Position.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/SymTab.o 
${OBJDIR}/Language/Preprocessor/Cpphs/Position.o:
${OBJDIR}/Text/ParserCombinators/HuttonMeijer.o:
${OBJDIR}/Language/Preprocessor/Cpphs/SymTab.o:
${OBJDIR}/Language/Preprocessor/Cpphs/CppIfdef.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/SymTab.o \
	${OBJDIR}/Text/ParserCombinators/HuttonMeijer.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Position.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/ReadFirst.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Tokenise.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Options.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/HashDefine.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/MacroPass.o
${OBJDIR}/Language/Preprocessor/Cpphs.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs/CppIfdef.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/MacroPass.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/RunCpphs.o \
	${OBJDIR}/Language/Preprocessor/Cpphs/Options.o 
${OBJDIR}/Language/Preprocessor/Unlit.o:
${OBJDIR}/cpphs.o: \
	${OBJDIR}/Language/Preprocessor/Cpphs.o


# C-files dependencies.
Language/Preprocessor/Cpphs/Options.hc:
Language/Preprocessor/Cpphs/RunCpphs.hc: \
	Language/Preprocessor/Cpphs/CppIfdef.hc \
	Language/Preprocessor/Cpphs/MacroPass.hc \
	Language/Preprocessor/Cpphs/Options.hc \
	Language/Preprocessor/Unlit.hc 
Language/Preprocessor/Cpphs/MacroPass.hc: \
	Language/Preprocessor/Cpphs/HashDefine.hc \
	Language/Preprocessor/Cpphs/Tokenise.hc \
	Language/Preprocessor/Cpphs/SymTab.hc \
	Language/Preprocessor/Cpphs/Position.hc \
	Language/Preprocessor/Cpphs/Options.hc 
Language/Preprocessor/Cpphs/HashDefine.hc:
Language/Preprocessor/Cpphs/Tokenise.hc: \
	Language/Preprocessor/Cpphs/HashDefine.hc \
	Language/Preprocessor/Cpphs/Position.hc 
Language/Preprocessor/Cpphs/ReadFirst.hc: \
	Language/Preprocessor/Cpphs/Position.hc
Language/Preprocessor/Cpphs/Position.hc:
Text/ParserCombinators/HuttonMeijer.hc:
Language/Preprocessor/Cpphs/SymTab.hc:
Language/Preprocessor/Cpphs/CppIfdef.hc: \
	Language/Preprocessor/Cpphs/SymTab.hc \
	Text/ParserCombinators/HuttonMeijer.hc \
	Language/Preprocessor/Cpphs/Position.hc \
	Language/Preprocessor/Cpphs/ReadFirst.hc \
	Language/Preprocessor/Cpphs/Tokenise.hc \
	Language/Preprocessor/Cpphs/Options.hc \
	Language/Preprocessor/Cpphs/HashDefine.hc \
	Language/Preprocessor/Cpphs/MacroPass.hc
Language/Preprocessor/Cpphs.hc: \
	Language/Preprocessor/Cpphs/CppIfdef.hc \
	Language/Preprocessor/Cpphs/MacroPass.hc \
	Language/Preprocessor/Cpphs/RunCpphs.hc \
	Language/Preprocessor/Cpphs/Options.hc 
Language/Preprocessor/Unlit.hc:
cpphs.hc: Language/Preprocessor/Cpphs.hc

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].