File: Makefile

package info (click to toggle)
pforth 21-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 816 kB
  • ctags: 873
  • sloc: ansic: 5,050; makefile: 104
file content (87 lines) | stat: -rw-r--r-- 2,375 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# @(#) rlsMakefile 97/12/10 1.1
# makefile for pForth
# Portable Forth written in 'C'
# Phil Burk

.SUFFIXES: .c .o

# Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG
# See "docs/pf_ref.htm" file for more info.

SOURCEDIR = csrc
OBJECTDIR = objects
EMBOBJECTDIR = embobjects

FULL_WARNINGS =  -O2 \
        -fsigned-char \
        -fno-builtin \
        -fno-unroll-loops \
        -fpeephole \
        -fno-keep-inline-functions \
        -x c++ \
        -Wcast-qual \
        -Wall \
        -Wwrite-strings \
        -Winline  \
        -Wmissing-prototypes \
        -Wmissing-declarations
        
CCOPTS = -DPF_SUPPORT_FP $(FULL_WARNINGS)
COMPILER = gcc

EMBCCOPTS = -DPF_NO_INIT -DPF_NO_MALLOC -DPF_NO_FILEIO \
    -DPF_NO_CLIB -DPF_STATIC_DIC

#######################################
# Build file lists from wildcards.
PFITEMP    = ${wildcard ${SOURCEDIR}/*.h}
PFINCLUDES = ${PFITEMP:${SOURCEDIR}/pfdicdat.h=}
PFSOURCE   = ${wildcard ${SOURCEDIR}/*.c}
PFTEMP     = ${PFSOURCE:%.c=%.o}
PFOBJS     = ${PFTEMP:${SOURCEDIR}/%=${OBJECTDIR}/%}
PFEMBOBJS  = ${PFTEMP:${SOURCEDIR}/%=${EMBOBJECTDIR}/%}

COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)

${OBJECTDIR}/%.o:  $(PFINCLUDES)  ${SOURCEDIR}/%.c
	$(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c
	
${EMBOBJECTDIR}/%.o:  $(PFINCLUDES) ${SOURCEDIR}/%.c ${SOURCEDIR}/pfdicdat.h 
	$(COMPILE) -O -o ${EMBOBJECTDIR}/$*.o -c ${SOURCEDIR}/$*.c $(EMBCCOPTS)

all: pforth pforth.dic

pffiles:
	echo "ITEMP FILES -----------------"
	echo ${PFITEMP}
	echo "INCLUDE FILES -----------------"
	echo ${PFINCLUDES}
	echo "'C' FILES ---------------------"
	echo ${PFSOURCE}
	echo "OBJECT FILES ------------------"
	echo ${PFOBJS}
	echo "EMBEDDED OBJECT FILES ------------------"
	echo ${PFEMBOBJS}
	
# build pforth by compiling 'C' source
pforth: $(PFINCLUDES) $(PFOBJS)
	$(COMPILER) $(PFOBJS) -lm -o pforth

# build basic dictionary by running newly built pforth and including system.fth
pforth.dic: pforth
	./pforth -i system.fth

${SOURCEDIR}/pfdicdat.h: pforth pforth.dic
	@(echo 'INCLUDE utils/savedicd.fth'; \
          echo 'SDAD';         \
          echo 'bye')                                 | \
	pforth -dpforth.dic
	cp pfdicdat.h ${SOURCEDIR}


pfemb: $(PFINCLUDES) $(PFEMBOBJS)
	$(COMPILER) $(PFEMBOBJS) -lm -o pfemb
	
clean:
	rm -f $(PFOBJS) $(PFEMBOBJS) pforth *.dic core ${SOURCEDIR}/pfdicdat.h pfemb