Fix create-file for Mac OS X so that SDAD will work. The r/w fam now maps to "w+...
[pforth] / build / unix / Makefile
CommitLineData
bb6b2dcd 1# makefile for pForth
2# Portable Forth written in 'C'
3# by Phil Burk
4# For more info visit http://www.softsynth.com/pforth/
5
6.SUFFIXES: .c .o
7
8# Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG
9# See "docs/pf_ref.htm" file for more info.
10
11# Note for Mac OS X, use cc instead of gcc
12COMPILER = gcc
13
14PFORTHDIR := $(shell cd ../; pwd)
15CSRCDIR = $(PFORTHDIR)/csrc
16FTHDIR = $(PFORTHDIR)/fth
17
18PFDICAPP = $(FTHDIR)/pforth
19PFORTHDIC = $(FTHDIR)/pforth.dic
20PFDICDAT = ${CSRCDIR}/pfdicdat.h
21PFORTHAPP = $(PFORTHDIR)/pforth
22OBJECTDIR = $(PFORTHDIR)/objects
23TEMPOBJECTDIR = $(PFORTHDIR)/tempobjects
24
25FULL_WARNINGS = \
26 -fsigned-char \
27 -fno-builtin \
28 -fno-unroll-loops \
29 -fpeephole \
30 -fno-keep-inline-functions \
31 -Wcast-qual \
32 -Wall \
33 -Wwrite-strings \
34 -Winline \
35 -Wmissing-prototypes \
36 -Wmissing-declarations
37
38CCOPTS = -DPF_SUPPORT_FP -DPF_POSIX_IO -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
39
40EMBCCOPTS = -DPF_STATIC_DIC
41
42#######################################
43# Build file lists from wildcards.
44PFITEMP = ${wildcard ${CSRCDIR}/*.h}
45PFINCLUDES = ${PFITEMP:${CSRCDIR}/pfdicdat.h=}
46PFSOURCE = ${wildcard ${CSRCDIR}/*.c}
47PFTEMP = ${PFSOURCE:%.c=%.o}
48PFOBJS = ${PFTEMP:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
49PFEMBOBJS = ${PFTEMP:${CSRCDIR}/%=${OBJECTDIR}/%}
50
51COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
52
53${TEMPOBJECTDIR}/%.o: $(PFINCLUDES) ${CSRCDIR}/%.c
54 $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
55
56${OBJECTDIR}/%.o: $(PFINCLUDES) ${CSRCDIR}/%.c ${CSRCDIR}/pfdicdat.h
57 $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c $(EMBCCOPTS)
58
59all: $(PFORTHAPP)
60
61pffiles:
62 @echo "ITEMP FILES -----------------"
63 @echo ${PFITEMP}
64 @echo "INCLUDE FILES -----------------"
65 @echo ${PFINCLUDES}
66 @echo "'C' FILES ---------------------"
67 @echo ${PFSOURCE}
68 @echo "OBJECT FILES ------------------"
69 @echo ${PFOBJS}
70 @echo "EMBEDDED OBJECT FILES ------------------"
71 @echo ${PFEMBOBJS}
72
73# build pforth by compiling 'C' source
74$(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
75 $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
76
77pfdicapp: $(PFDICAPP)
78
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)
82
83$(PFORTHAPP): $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
84 $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
85
86clean:
87 -rm -f $(PFOBJS) $(PFEMBOBJS)
88 -rm $(PFORTHAPP)
89 -rm $(PFDICDAT)
90 -rm $(PFORTHDIC)
91 -rm $(PFDICAPP)