Initial import.
[debian/pforth] / build / unix / Makefile
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
12 COMPILER = gcc
13
14 PFORTHDIR   := $(shell cd ../; pwd)
15 CSRCDIR      = $(PFORTHDIR)/csrc
16 FTHDIR       = $(PFORTHDIR)/fth
17
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
24
25 FULL_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         
38 CCOPTS = -DPF_SUPPORT_FP -DPF_POSIX_IO -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
39
40 EMBCCOPTS = -DPF_STATIC_DIC
41
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}/%}
50
51 COMPILE = $(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
59 all: $(PFORTHAPP)
60
61 pffiles:
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
77 pfdicapp: $(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         
86 clean:
87         -rm -f $(PFOBJS) $(PFEMBOBJS)
88         -rm $(PFORTHAPP)
89         -rm $(PFDICDAT)
90         -rm $(PFORTHDIC)
91         -rm $(PFDICAPP)