Fixed POSIX IO, (ACCEPT) now emits SPACE at end of line.
[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 COMPILER = gcc
12
13 PFORTHDIR   := $(shell cd ../../; pwd)
14 CSRCDIR      = $(PFORTHDIR)/csrc
15 FTHDIR       = $(PFORTHDIR)/fth
16
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
23
24 FULL_WARNINGS =  \
25         -fsigned-char \
26         -fno-builtin \
27         -fno-unroll-loops \
28         -fpeephole \
29         -fno-keep-inline-functions \
30         -Wcast-qual \
31         -Wall \
32         -Wwrite-strings \
33         -Winline  \
34         -Wmissing-prototypes \
35         -Wmissing-declarations
36         
37 CCOPTS = -DPF_SUPPORT_FP -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
38
39 IO_SOURCE = ${CSRCDIR}/posix/pf_io_posix.c
40 #IO_SOURCE = ${CSRCDIR}/stdio/pf_io_stdio.c
41
42 EMBCCOPTS = -DPF_STATIC_DIC
43
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}/%}
52
53 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
54         
55 ${TEMPOBJECTDIR}/%.o:  ${TEMPOBJECTDIR} $(PFINCLUDES)  ${CSRCDIR}/%.c
56         $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
57         
58 ${OBJECTDIR}/%.o:  ${OBJECTDIR} $(PFINCLUDES) ${CSRCDIR}/%.c ${CSRCDIR}/pfdicdat.h 
59         $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c $(EMBCCOPTS)
60
61 all: $(PFORTHAPP)
62
63 pffiles:
64         @echo "ITEMP FILES -----------------"
65         @echo ${PFITEMP}
66         @echo "INCLUDE FILES -----------------"
67         @echo ${PFINCLUDES}
68         @echo "'C' FILES ---------------------"
69         @echo ${PFSOURCE}
70         @echo "OBJECT FILES ------------------"
71         @echo ${PFOBJS}
72         @echo "EMBEDDED OBJECT FILES ------------------"
73         @echo ${PFEMBOBJS}
74         
75 ${TEMPOBJECTDIR}: 
76         mkdir -p ${TEMPOBJECTDIR}/posix
77         mkdir -p ${TEMPOBJECTDIR}/stdio
78
79 ${OBJECTDIR}: 
80         mkdir -p ${OBJECTDIR}/posix
81         mkdir -p ${OBJECTDIR}/stdio
82
83 # build pforth by compiling 'C' source
84 $(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
85         $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
86
87 pfdicapp: $(PFDICAPP)
88
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)
92
93 $(PFORTHAPP): ${TEMPOBJECTDIR} $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
94         $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
95         @echo ""
96         @echo "Standalone pForth executable written to $(PFORTHAPP)"
97         
98 clean:
99         -rm -f $(PFOBJS) $(PFEMBOBJS)
100         -rm $(PFORTHAPP)
101         -rm $(PFDICDAT)
102         -rm $(PFORTHDIC)
103         -rm $(PFDICAPP)