2 # Portable Forth written in 'C'
4 # For more info visit http://www.softsynth.com/pforth/
8 # Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG
9 # See "docs/pf_ref.htm" file for more info.
11 # Note for Mac OS X, use cc instead of gcc
14 PFORTHDIR := $(shell cd ../../; pwd)
15 CSRCDIR = $(PFORTHDIR)/csrc
16 FTHDIR = $(PFORTHDIR)/fth
18 PFDICAPP = $(FTHDIR)/pforth
19 PFORTHDIC = $(FTHDIR)/pforth.dic
20 PFDICDAT = ${CSRCDIR}/pfdicdat.h
21 PFORTHAPP = $(PFORTHDIR)/pforth_standalone
22 OBJECTDIR = $(PFORTHDIR)/objects
23 TEMPOBJECTDIR = $(PFORTHDIR)/tempobjects
30 -fno-keep-inline-functions \
35 -Wmissing-prototypes \
36 -Wmissing-declarations
38 CCOPTS = -DPF_SUPPORT_FP -DPF_POSIX_IO -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
40 EMBCCOPTS = -DPF_STATIC_DIC
42 #######################################
43 # Build file lists from wildcards.
44 PFITEMP = ${wildcard ${CSRCDIR}/*.h}
45 PFINCLUDES = ${PFITEMP:${CSRCDIR}/pfdicdat.h=}
46 PFSOURCE = ${wildcard ${CSRCDIR}/*.c} ${CSRCDIR}/posix/pf_io_posix.c
47 PFTEMP = ${PFSOURCE:%.c=%.o}
48 PFOBJS = ${PFTEMP:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
49 PFEMBOBJS = ${PFTEMP:${CSRCDIR}/%=${OBJECTDIR}/%}
51 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
53 ${TEMPOBJECTDIR}/%.o: ${TEMPOBJECTDIR}/posix $(PFINCLUDES) ${CSRCDIR}/%.c
54 $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
56 ${OBJECTDIR}/%.o: ${OBJECTDIR}/posix $(PFINCLUDES) ${CSRCDIR}/%.c ${CSRCDIR}/pfdicdat.h
57 $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c $(EMBCCOPTS)
62 @echo "ITEMP FILES -----------------"
64 @echo "INCLUDE FILES -----------------"
66 @echo "'C' FILES ---------------------"
68 @echo "OBJECT FILES ------------------"
70 @echo "EMBEDDED OBJECT FILES ------------------"
73 ${TEMPOBJECTDIR}/posix:
74 mkdir -p ${TEMPOBJECTDIR}/posix
77 mkdir -p ${OBJECTDIR}/posix
79 # build pforth by compiling 'C' source
80 $(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
81 $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
85 # build basic dictionary by running newly built pforth and including system.fth
86 $(PFDICDAT): $(PFDICAPP)
87 cd $(FTHDIR); $(PFDICAPP) -i system.fth ; mv pfdicdat.h $(PFDICDAT)
89 $(PFORTHAPP): ${TEMPOBJECTDIR}/posix $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
90 $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
92 @echo "Standalone pForth executable written to $(PFORTHAPP)"
95 -rm -f $(PFOBJS) $(PFEMBOBJS)