Imported Upstream version 21
[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         -x c++ \
22         -Wcast-qual \
23         -Wall \
24         -Wwrite-strings \
25         -Winline  \
26         -Wmissing-prototypes \
27         -Wmissing-declarations
28         
29 CCOPTS = -DPF_SUPPORT_FP $(FULL_WARNINGS)
30 COMPILER = gcc
31
32 EMBCCOPTS = -DPF_NO_INIT -DPF_NO_MALLOC -DPF_NO_FILEIO \
33     -DPF_NO_CLIB -DPF_STATIC_DIC
34
35 #######################################
36 # Build file lists from wildcards.
37 PFITEMP    = ${wildcard ${SOURCEDIR}/*.h}
38 PFINCLUDES = ${PFITEMP:${SOURCEDIR}/pfdicdat.h=}
39 PFSOURCE   = ${wildcard ${SOURCEDIR}/*.c}
40 PFTEMP     = ${PFSOURCE:%.c=%.o}
41 PFOBJS     = ${PFTEMP:${SOURCEDIR}/%=${OBJECTDIR}/%}
42 PFEMBOBJS  = ${PFTEMP:${SOURCEDIR}/%=${EMBOBJECTDIR}/%}
43
44 COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
45
46 ${OBJECTDIR}/%.o:  $(PFINCLUDES)  ${SOURCEDIR}/%.c
47         $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c
48         
49 ${EMBOBJECTDIR}/%.o:  $(PFINCLUDES) ${SOURCEDIR}/%.c ${SOURCEDIR}/pfdicdat.h 
50         $(COMPILE) -O -o ${EMBOBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c $(EMBCCOPTS)
51
52 all: pforth pforth.dic
53
54 pffiles:
55         echo "ITEMP FILES -----------------"
56         echo ${PFITEMP}
57         echo "INCLUDE FILES -----------------"
58         echo ${PFINCLUDES}
59         echo "'C' FILES ---------------------"
60         echo ${PFSOURCE}
61         echo "OBJECT FILES ------------------"
62         echo ${PFOBJS}
63         echo "EMBEDDED OBJECT FILES ------------------"
64         echo ${PFEMBOBJS}
65         
66 # build pforth by compiling 'C' source
67 pforth: $(PFINCLUDES) $(PFOBJS)
68         $(COMPILER) $(PFOBJS) -lm -o pforth
69
70 # build basic dictionary by running newly built pforth and including system.fth
71 pforth.dic: pforth
72         pforth -i system.fth
73
74 ${SOURCEDIR}/pfdicdat.h: pforth pforth.dic
75         @(echo 'INCLUDE utils/savedicd.fth'; \
76           echo 'SDAD';         \
77           echo 'bye')                                 | \
78         pforth -dpforth.dic
79         cp pfdicdat.h ${SOURCEDIR}
80
81
82 pfemb: $(PFINCLUDES) $(PFEMBOBJS)
83         $(COMPILER) $(PFEMBOBJS) -lm -o pfemb
84         
85 clean:
86         rm -f $(PFOBJS) $(PFEMBOBJS) pforth *.dic core ${SOURCEDIR}/pfdicdat.h pfemb
87