Implement RESIZE-FILE
[pforth] / build / mingw-crossbuild-linux / Makefile
CommitLineData
25962507
HV
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# See "help" target below.
7
8.POSIX:
9
10# Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG
11# See "docs/pf_ref.htm" file for more info.
12
13CC = x86_64-w64-mingw32-gcc
14WINE = wineconsole
15SRCDIR = ../..
16PFORTHDIR = $(SRCDIR)
17CSRCDIR = $(PFORTHDIR)/csrc
18FTHDIR = $(PFORTHDIR)/fth
19
20PFDICAPP = pforth.exe
21PFORTHDIC = pforth.dic
22PFDICDAT = pfdicdat.h
23PFORTHAPP = pforth_standalone.exe
24
25# This is needed to get pForth to build on Snow Leopard and other 64 bit platforms.
26WIDTHOPT=
27
28FULL_WARNINGS = \
29 --std=c89 \
30 -fsigned-char \
31 -fno-builtin \
32 -fno-unroll-loops \
33 -fpeephole \
34 -fno-keep-inline-functions \
35 -pedantic \
36 -Wcast-qual \
37 -Wall \
38 -Wwrite-strings \
39 -Winline \
40 -Wmissing-prototypes \
41 -Wmissing-declarations
42
43DEBUGOPTS = -g
44CCOPTS = $(WIDTHOPT) -x c -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS) $(DEBUGOPTS)
45
46#IO_SOURCE = pf_io_posix.c
47#IO_SOURCE = pf_io_stdio.c
e0701bfb 48IO_SOURCE = pf_io_win32_console.c pf_fileio_stdio.c
25962507
HV
49
50EMBCCOPTS = -DPF_STATIC_DIC
51
52#######################################
53PFINCLUDES = pf_all.h pf_cglue.h pf_clib.h pf_core.h pf_float.h \
54 pf_guts.h pf_host.h pf_inc1.h pf_io.h pf_mem.h pf_save.h \
55 pf_text.h pf_types.h pf_win32.h pf_words.h pfcompfp.h \
56 pfcompil.h pfdicdat_arm.h pfinnrfp.h pforth.h
57PFBASESOURCE = pf_cglue.c pf_clib.c pf_core.c pf_inner.c \
58 pf_io.c pf_io_none.c pf_main.c pf_mem.c pf_save.c \
59 pf_text.c pf_words.c pfcompil.c pfcustom.c
60PFSOURCE = $(PFBASESOURCE) $(IO_SOURCE)
61
62VPATH = .:$(CSRCDIR):$(CSRCDIR)/posix:$(CSRCDIR)/stdio:$(CSRCDIR)/win32_console:$(CSRCDIR)/win32
63
64XCFLAGS = $(CCOPTS)
65#XCPPFLAGS = -DPF_SUPPORT_FP -DWIN32
66XCPPFLAGS = -DWIN32
67XLDFLAGS = $(WIDTHOPT)
68
69CPPFLAGS = -I. $(XCPPFLAGS)
70CFLAGS = $(XCFLAGS)
71LDFLAGS = $(XLDFLAGS)
72
73COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS)
74LINK = $(CC) $(LDFLAGS)
75
76.SUFFIXES: .c .o .eo
77
78PFOBJS = $(PFSOURCE:.c=.o)
79PFEMBOBJS = $(PFSOURCE:.c=.eo)
80
81.c.o: $(PFINCLUDES)
82 $(COMPILE) -c -o $@ $<
83
84.c.eo: $(PFINCLUDES) pfdicdat.h
85 $(COMPILE) $(EMBCCOPTS) -c -o $@ $<
86
87.PHONY: all clean test
88.PHONY: help pffiles pfdicapp pfdicdat pforthapp
89
90all: $(PFORTHAPP)
91
92pffiles:
93 @echo "INCLUDE FILES -----------------"
94 @echo ${PFINCLUDES}
95 @echo "'C' FILES ---------------------"
96 @echo ${PFSOURCE}
97 @echo "OBJECT FILES ------------------"
98 @echo ${PFOBJS}
99 @echo "EMBEDDED OBJECT FILES ------------------"
100 @echo ${PFEMBOBJS}
101
102# Build pforth by compiling 'C' source.
103$(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
104 $(LINK) -o $@ $(PFOBJS) $(LDADD) -lm
105
106# Build basic dictionary image by running newly built pforth and including "system.fth".
107$(PFORTHDIC): $(PFDICAPP)
108 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFDICAPP) -i system.fth)
109 (cd $(FTHDIR); cat pforth.dic; rm -f pforth.dic) > $@
110
111$(PFDICDAT): $(PFORTHDIC) $(PFDICAPP)
112 echo 'include $(FTHDIR)/savedicd.fth SDAD BYE'>load-dict-tmp.fth&& $(WINE) ./$(PFDICAPP) -d $(PFORTHDIC) load-dict-tmp.fth; rm -f load-dict-tmp.fth
113
114$(PFORTHAPP): $(PFDICDAT) $(PFEMBOBJS)
115 $(LINK) -o $@ $(PFEMBOBJS) $(LDADD) -lm
116 @echo ""
117 @echo "Standalone pForth executable written to $(PFORTHAPP)"
118
119
120# target aliases
121pfdicapp: $(PFDICAPP)
122
123pfdicdat: $(PFDICDAT)
124
125pforthapp: $(PFORTHAPP)
126
127help:
128 @echo "Use 'make all' to build standalone pForth executable."
129 @echo "PForth can be built in several stages using these targets:"
130 @echo " pfdicapp = executable pForth with minimal dictionary. All from 'C'."
131 @echo " pfdicdat = image of full dictionary build by compiling Forth code."
132 @echo " pforthapp = executable with embedded dictionary image. DEFAULT 'all' target."
133 @echo ""
134 @echo " The file 'fth/pfdicdat.h' is generated by pForth. It contains a binary image of the Forth dictionary."
135 @echo " It allows pForth to work as a standalone image that does not need to load a dictionary file."
136
137test: $(PFORTHAPP)
138 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_corex.fth)
139 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_strings.fth)
140 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_locals.fth)
141 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_alloc.fth)
142 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_floats.fth)
593eb738 143 wd=$$(pwd); (cd $(FTHDIR); $(WINE) $${wd}/$(PFORTHAPP) -q t_file.fth)
25962507
HV
144
145clean:
146 rm -f $(PFOBJS) $(PFEMBOBJS)
147 rm -f $(PFORTHAPP)
148 rm -f $(PFDICDAT) $(FTHDIR)/$(PFDICDAT)
149 rm -f $(PFORTHDIC) $(FTHDIR)/$(PFORTHDIC)
150 rm -f $(PFDICAPP)