Imported Debian patch 21-11
[debian/pforth] / Makefile
1 # @(#) rlsMakefile 97/12/10 1.1
2 # makefile for pForth
3 # Portable Forth written in 'C'
4 # Phil Burk
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 SOURCEDIR = csrc
12 OBJECTDIR = objects
13 EMBOBJECTDIR = embobjects
14
15 FULL_WARNINGS =  -O2 \
16         -fsigned-char \
17         -fno-builtin \
18         -fno-unroll-loops \
19         -fpeephole \
20         -fno-keep-inline-functions \
21         -Wcast-qual \
22         -Wall \
23         -Wwrite-strings \
24         -Winline  \
25         -Wmissing-prototypes \
26         -Wmissing-declarations
27         
28 CCOPTS = -DPF_SUPPORT_FP $(FULL_WARNINGS)
29 COMPILER = gcc
30
31 EMBCCOPTS = -DPF_NO_INIT -DPF_NO_MALLOC -DPF_NO_FILEIO \
32     -DPF_NO_CLIB -DPF_STATIC_DIC
33
34 #######################################
35 # Build file lists from wildcards.
36 PFITEMP    = ${wildcard ${SOURCEDIR}/*.h}
37 PFINCLUDES = ${PFITEMP:${SOURCEDIR}/pfdicdat.h=}
38 PFSOURCE   = ${wildcard ${SOURCEDIR}/*.c}
39 PFTEMP     = ${PFSOURCE:%.c=%.o}
40 PFOBJS     = ${PFTEMP:${SOURCEDIR}/%=${OBJECTDIR}/%}
41 PFEMBOBJS  = ${PFTEMP:${SOURCEDIR}/%=${EMBOBJECTDIR}/%}
42
43 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
44
45 ${OBJECTDIR}/%.o:  $(PFINCLUDES)  ${SOURCEDIR}/%.c
46         $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c
47         
48 ${EMBOBJECTDIR}/%.o:  $(PFINCLUDES) ${SOURCEDIR}/%.c ${SOURCEDIR}/pfdicdat.h 
49         $(COMPILE) -O -o ${EMBOBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c $(EMBCCOPTS)
50
51 all: pforth pforth.dic
52
53 pffiles:
54         echo "ITEMP FILES -----------------"
55         echo ${PFITEMP}
56         echo "INCLUDE FILES -----------------"
57         echo ${PFINCLUDES}
58         echo "'C' FILES ---------------------"
59         echo ${PFSOURCE}
60         echo "OBJECT FILES ------------------"
61         echo ${PFOBJS}
62         echo "EMBEDDED OBJECT FILES ------------------"
63         echo ${PFEMBOBJS}
64         
65 # build pforth by compiling 'C' source
66 pforth: $(PFINCLUDES) $(PFOBJS)
67         $(COMPILER) $(PFOBJS) -lm -o pforth
68
69 # build basic dictionary by running newly built pforth and including system.fth
70 pforth.dic: pforth
71         ./pforth -i system.fth
72
73 ${SOURCEDIR}/pfdicdat.h: pforth pforth.dic
74         @(echo 'INCLUDE utils/savedicd.fth'; \
75           echo 'SDAD';         \
76           echo 'bye')                                 | \
77         pforth -dpforth.dic
78         cp pfdicdat.h ${SOURCEDIR}
79
80
81 pfemb: $(PFINCLUDES) $(PFEMBOBJS)
82         $(COMPILER) $(PFEMBOBJS) -lm -o pfemb
83         
84 clean:
85         rm -f $(PFOBJS) $(PFEMBOBJS) pforth *.dic core ${SOURCEDIR}/pfdicdat.h pfemb
86