145 lines · 4.3 KB · Makefile
RawDownload
# makefile for pForth# Portable Forth written in 'C'# by Phil Burk# For more info visit http://www.softsynth.com/pforth/## See "help" target below. .POSIX: # Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG# See "docs/pf_ref.htm" file for more info. SRCDIR       = ../..PFORTHDIR    = $(SRCDIR)CSRCDIR      = $(PFORTHDIR)/csrcFTHDIR       = $(PFORTHDIR)/fth PFDICAPP     = pforthPFORTHDIC    = pforth.dicPFDICDAT     = pfdicdat.hPFORTHAPP    = pforth_standalone # This is needed to get pForth to build on Snow Leopard and other 64 bit platforms.WIDTHOPT= FULL_WARNINGS =  \        --std=c89 \        -fsigned-char \        -fno-builtin \        -fno-unroll-loops \        -fno-keep-inline-functions \        -pedantic \        -Wcast-qual \        -Wall \        -Wwrite-strings \        -Winline  \        -Wmissing-prototypes \        -Wmissing-declarations DEBUGOPTS = -gCCOPTS = $(WIDTHOPT) -x c -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS) $(DEBUGOPTS) IO_SOURCE = pf_io_posix.c pf_fileio_stdio.c#IO_SOURCE = pf_io_stdio.c EMBCCOPTS = -DPF_STATIC_DIC #-DPF_NO_FILEIO #######################################PFINCLUDES = pf_all.h pf_cglue.h pf_clib.h pf_core.h pf_float.h \	pf_guts.h pf_host.h pf_inc1.h pf_io.h pf_mem.h pf_save.h \	pf_text.h pf_types.h pf_win32.h pf_words.h pfcompfp.h \	pfcompil.h pfdicdat_arm.h pfinnrfp.h pforth.hPFBASESOURCE = pf_cglue.c pf_clib.c pf_core.c pf_inner.c \	pf_io.c pf_io_none.c pf_main.c pf_mem.c pf_save.c \	pf_text.c pf_words.c pfcompil.c pfcustom.cPFSOURCE = $(PFBASESOURCE) $(IO_SOURCE) VPATH = .:$(CSRCDIR):$(CSRCDIR)/posix:$(CSRCDIR)/stdio:$(CSRCDIR)/win32_console:$(CSRCDIR)/win32 XCFLAGS = $(CCOPTS)XCPPFLAGS = -DPF_SUPPORT_FP -D_DEFAULT_SOURCE -D_GNU_SOURCEXLDFLAGS = $(WIDTHOPT) CPPFLAGS = -I. $(XCPPFLAGS)CFLAGS = $(XCFLAGS)LDFLAGS = $(XLDFLAGS) COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS)LINK = $(CC) $(LDFLAGS) .SUFFIXES: .c .o .eo PFOBJS     = $(PFSOURCE:.c=.o)PFEMBOBJS  = $(PFSOURCE:.c=.eo) .c.o: $(PFINCLUDES)	$(COMPILE) -c -o $@ $< .c.eo: $(PFINCLUDES) pfdicdat.h	$(COMPILE) $(EMBCCOPTS) -c -o $@ $< .PHONY: all clean test.PHONY: help pffiles pfdicapp pfdicdat pforthapp all: $(PFORTHAPP) pffiles:	@echo "INCLUDE FILES -----------------"	@echo ${PFINCLUDES}	@echo "'C' FILES ---------------------"	@echo ${PFSOURCE}	@echo "OBJECT FILES ------------------"	@echo ${PFOBJS}	@echo "EMBEDDED OBJECT FILES ------------------"	@echo ${PFEMBOBJS} # Build pforth by compiling 'C' source.$(PFDICAPP): $(PFINCLUDES) $(PFOBJS)	$(LINK) -o $@ $(PFOBJS) $(LDADD) -lm # Build basic dictionary image by running newly built pforth and including "system.fth".$(PFORTHDIC): $(PFDICAPP)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFDICAPP) -i system.fth)	(cd $(FTHDIR); cat pforth.dic; rm -f pforth.dic) > $@ $(PFDICDAT): $(PFORTHDIC) $(PFDICAPP)	echo 'include $(FTHDIR)/savedicd.fth SDAD BYE' | ./$(PFDICAPP) -d $(PFORTHDIC) $(PFORTHAPP): $(PFDICDAT) $(PFEMBOBJS)	$(LINK) -o $@ $(PFEMBOBJS) $(LDADD) -lm	@echo ""	@echo "Standalone pForth executable written to $(PFORTHAPP)"  # target aliasespfdicapp: $(PFDICAPP) pfdicdat: $(PFDICDAT) pforthapp: $(PFORTHAPP) help:	@echo "Use 'make all' to build standalone pForth executable."	@echo "PForth can be built in several stages using these targets:"	@echo "   pfdicapp = executable pForth with minimal dictionary. All from 'C'."	@echo "   pfdicdat = image of full dictionary build by compiling Forth code."	@echo "   pforthapp = executable with embedded dictionary image. DEFAULT 'all' target."	@echo ""	@echo "   The file 'fth/pfdicdat.h' is generated by pForth. It contains a binary image of the Forth dictionary."	@echo "   It allows pForth to work as a standalone image that does not need to load a dictionary file." test: $(PFORTHAPP)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_corex.fth)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_strings.fth)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_locals.fth)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_alloc.fth)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_floats.fth)	wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_file.fth) clean:	rm -f $(PFOBJS) $(PFEMBOBJS)	rm -f $(PFORTHAPP)	rm -f $(PFDICDAT) $(FTHDIR)/$(PFDICDAT)	rm -f $(PFORTHDIC) $(FTHDIR)/$(PFORTHDIC)	rm -f $(PFDICAPP)