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.
13 PFORTHDIR := $(shell cd ../../; pwd)
14 CSRCDIR = $(PFORTHDIR)/csrc
15 FTHDIR = $(PFORTHDIR)/fth
17 PFDICAPP = $(FTHDIR)/pforth
18 PFORTHDIC = $(FTHDIR)/pforth.dic
19 PFDICDAT = ${CSRCDIR}/pfdicdat.h
20 PFORTHAPP = $(PFORTHDIR)/pforth_standalone
21 OBJECTDIR = $(PFORTHDIR)/objects
22 TEMPOBJECTDIR = $(PFORTHDIR)/tempobjects
29 -fno-keep-inline-functions \
34 -Wmissing-prototypes \
35 -Wmissing-declarations
37 CCOPTS = -DPF_SUPPORT_FP -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
39 IO_SOURCE = ${CSRCDIR}/posix/pf_io_posix.c
40 #IO_SOURCE = ${CSRCDIR}/stdio/pf_io_stdio.c
42 EMBCCOPTS = -DPF_STATIC_DIC
44 #######################################
45 # Build file lists from wildcards.
46 PFITEMP = ${wildcard ${CSRCDIR}/*.h}
47 PFINCLUDES = ${PFITEMP:${CSRCDIR}/pfdicdat.h=}
48 PFSOURCE = ${wildcard ${CSRCDIR}/*.c} ${IO_SOURCE}
49 PFTEMP = ${PFSOURCE:%.c=%.o}
50 PFOBJS = ${PFTEMP:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
51 PFEMBOBJS = ${PFTEMP:${CSRCDIR}/%=${OBJECTDIR}/%}
53 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
55 ${TEMPOBJECTDIR}/%.o: ${TEMPOBJECTDIR} $(PFINCLUDES) ${CSRCDIR}/%.c
56 $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
58 ${OBJECTDIR}/%.o: ${OBJECTDIR} $(PFINCLUDES) ${CSRCDIR}/%.c ${CSRCDIR}/pfdicdat.h
59 $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c $(EMBCCOPTS)
64 @echo "ITEMP FILES -----------------"
66 @echo "INCLUDE FILES -----------------"
68 @echo "'C' FILES ---------------------"
70 @echo "OBJECT FILES ------------------"
72 @echo "EMBEDDED OBJECT FILES ------------------"
76 mkdir -p ${TEMPOBJECTDIR}/posix
77 mkdir -p ${TEMPOBJECTDIR}/stdio
80 mkdir -p ${OBJECTDIR}/posix
81 mkdir -p ${OBJECTDIR}/stdio
83 # build pforth by compiling 'C' source
84 $(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
85 $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
89 # build basic dictionary by running newly built pforth and including system.fth
90 $(PFDICDAT): $(PFDICAPP)
91 cd $(FTHDIR); $(PFDICAPP) -i system.fth ; mv pfdicdat.h $(PFDICDAT)
93 $(PFORTHAPP): ${TEMPOBJECTDIR} $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
94 $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
96 @echo "Standalone pForth executable written to $(PFORTHAPP)"
99 -rm -f $(PFOBJS) $(PFEMBOBJS)