Fix build of posix io on sun.
[pforth] / build / unix / Makefile
CommitLineData
bb6b2dcd 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
bb6b2dcd 11COMPILER = gcc
12
27f1b5b4 13PFORTHDIR := $(shell cd ../../; pwd)
bb6b2dcd 14CSRCDIR = $(PFORTHDIR)/csrc
15FTHDIR = $(PFORTHDIR)/fth
16
17PFDICAPP = $(FTHDIR)/pforth
18PFORTHDIC = $(FTHDIR)/pforth.dic
19PFDICDAT = ${CSRCDIR}/pfdicdat.h
27f1b5b4 20PFORTHAPP = $(PFORTHDIR)/pforth_standalone
bb6b2dcd 21OBJECTDIR = $(PFORTHDIR)/objects
22TEMPOBJECTDIR = $(PFORTHDIR)/tempobjects
23
24FULL_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
6b91cb54 37CCOPTS = -DPF_SUPPORT_FP -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS)
38
39IO_SOURCE = ${CSRCDIR}/posix/pf_io_posix.c
40#IO_SOURCE = ${CSRCDIR}/stdio/pf_io_stdio.c
bb6b2dcd 41
42EMBCCOPTS = -DPF_STATIC_DIC
43
44#######################################
45# Build file lists from wildcards.
46PFITEMP = ${wildcard ${CSRCDIR}/*.h}
47PFINCLUDES = ${PFITEMP:${CSRCDIR}/pfdicdat.h=}
6b91cb54 48PFSOURCE = ${wildcard ${CSRCDIR}/*.c} ${IO_SOURCE}
bb6b2dcd 49PFTEMP = ${PFSOURCE:%.c=%.o}
50PFOBJS = ${PFTEMP:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
51PFEMBOBJS = ${PFTEMP:${CSRCDIR}/%=${OBJECTDIR}/%}
52
53COMPILE = $(COMPILER) $(CCOPTS) $(CDEFS)
27f1b5b4 54
6b91cb54 55${TEMPOBJECTDIR}/%.o: ${TEMPOBJECTDIR} $(PFINCLUDES) ${CSRCDIR}/%.c
bb6b2dcd 56 $(COMPILE) -O -o ${TEMPOBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c
57
6b91cb54 58${OBJECTDIR}/%.o: ${OBJECTDIR} $(PFINCLUDES) ${CSRCDIR}/%.c ${CSRCDIR}/pfdicdat.h
bb6b2dcd 59 $(COMPILE) -O -o ${OBJECTDIR}/$*.o -c ${CSRCDIR}/$*.c $(EMBCCOPTS)
60
61all: $(PFORTHAPP)
62
63pffiles:
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
6b91cb54 75${TEMPOBJECTDIR}:
a741a8b4 76 mkdir -p ${TEMPOBJECTDIR}/posix
6b91cb54 77 mkdir -p ${TEMPOBJECTDIR}/stdio
27f1b5b4 78
6b91cb54 79${OBJECTDIR}:
923c43d0 80 mkdir -p ${OBJECTDIR}/posix
6b91cb54 81 mkdir -p ${OBJECTDIR}/stdio
27f1b5b4 82
bb6b2dcd 83# build pforth by compiling 'C' source
84$(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
85 $(COMPILER) $(PFOBJS) -lm -o $(PFDICAPP)
86
87pfdicapp: $(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
6b91cb54 93$(PFORTHAPP): ${TEMPOBJECTDIR} $(PFDICDAT) $(PFINCLUDES) $(PFEMBOBJS)
bb6b2dcd 94 $(COMPILER) $(PFEMBOBJS) -lm -o $(PFORTHAPP)
27f1b5b4 95 @echo ""
96 @echo "Standalone pForth executable written to $(PFORTHAPP)"
bb6b2dcd 97
98clean:
99 -rm -f $(PFOBJS) $(PFEMBOBJS)
100 -rm $(PFORTHAPP)
101 -rm $(PFDICDAT)
102 -rm $(PFORTHDIC)
103 -rm $(PFDICAPP)