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
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}
47 PFTEMP = ${PFSOURCE:%.c=%.o}
48 PFOBJS = ${PFTEMP:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
49 PFEMBOBJS = ${PFTEMP:${CSRCDIR}/%=${OBJECTDIR}/%}
51 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
53 ${TEMPOBJECTDIR}/%.o: $(PFINCLUDES) ${CSRCDIR}/%.c
54 $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
56 ${OBJECTDIR}/%.o: $(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 # build pforth by compiling 'C' source
74 $(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
75 $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
79 # build basic dictionary by running newly built pforth and including system.fth
80 $(PFDICDAT): $(PFDICAPP)
81 cd $(FTHDIR); $(PFDICAPP) -i system.fth ; mv pfdicdat.h $(PFDICDAT)
83 $(PFORTHAPP): $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
84 $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
87 -rm -f $(PFOBJS) $(PFEMBOBJS)