use pattern rules instead of suffix rules in the Makefile
[pforth] / build / unix / Makefile
index bb53402..626d0ce 100644 (file)
@@ -24,11 +24,10 @@ PFORTHAPP    = pforth_standalone
 WIDTHOPT=
 
 FULL_WARNINGS =  \
 WIDTHOPT=
 
 FULL_WARNINGS =  \
-        -c89 \
+        --std=c89 \
         -fsigned-char \
         -fno-builtin \
         -fno-unroll-loops \
         -fsigned-char \
         -fno-builtin \
         -fno-unroll-loops \
-        -fpeephole \
         -fno-keep-inline-functions \
         -pedantic \
         -Wcast-qual \
         -fno-keep-inline-functions \
         -pedantic \
         -Wcast-qual \
@@ -39,12 +38,12 @@ FULL_WARNINGS =  \
         -Wmissing-declarations
 
 DEBUGOPTS = -g
         -Wmissing-declarations
 
 DEBUGOPTS = -g
-CCOPTS = $(WIDTHOPT) -x c -DPF_SUPPORT_FP -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS) $(DEBUGOPTS)
+CCOPTS = $(WIDTHOPT) -x c -O2 $(FULL_WARNINGS) $(EXTRA_CCOPTS) $(DEBUGOPTS)
 
 
-IO_SOURCE = pf_io_posix.c
+IO_SOURCE = pf_io_posix.c pf_fileio_stdio.c
 #IO_SOURCE = pf_io_stdio.c
 
 #IO_SOURCE = pf_io_stdio.c
 
-EMBCCOPTS = -DPF_STATIC_DIC
+EMBCCOPTS = -DPF_STATIC_DIC #-DPF_NO_FILEIO
 
 #######################################
 PFINCLUDES = pf_all.h pf_cglue.h pf_clib.h pf_core.h pf_float.h \
 
 #######################################
 PFINCLUDES = pf_all.h pf_cglue.h pf_clib.h pf_core.h pf_float.h \
@@ -56,32 +55,36 @@ PFBASESOURCE = pf_cglue.c pf_clib.c pf_core.c pf_inner.c \
        pf_text.c pf_words.c pfcompil.c pfcustom.c
 PFSOURCE = $(PFBASESOURCE) $(IO_SOURCE)
 
        pf_text.c pf_words.c pfcompil.c pfcustom.c
 PFSOURCE = $(PFBASESOURCE) $(IO_SOURCE)
 
-VPATH = .:../../csrc:../../csrc/posix:../../csrc/stdio
-VPATH = .:$(SRCDIR)/csrc:$(SRCDIR)/csrc/posix:$(SRCDIR)/csrc/stdio
+VPATH = .:$(CSRCDIR):$(CSRCDIR)/posix:$(CSRCDIR)/stdio:$(CSRCDIR)/win32_console:$(CSRCDIR)/win32
 
 XCFLAGS = $(CCOPTS)
 
 XCFLAGS = $(CCOPTS)
-XCPPFLAGS = $(CDEFS) -I.
+XCPPFLAGS = -DPF_SUPPORT_FP -D_DEFAULT_SOURCE -D_GNU_SOURCE
 XLDFLAGS = $(WIDTHOPT)
 
 XLDFLAGS = $(WIDTHOPT)
 
-COMPILE = $(CC) $(XCFLAGS) $(CFLAGS) $(XCPPFLAGS) $(CPPFLAGS)
-LINK = $(CC) $(XLDFLAGS) $(LDFLAGS)
+CPPFLAGS = -I. $(XCPPFLAGS)
+CFLAGS = $(XCFLAGS)
+LDFLAGS = $(XLDFLAGS)
+
+COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS)
+LINK = $(CC) $(LDFLAGS)
 
 .SUFFIXES: .c .o .eo
 
 PFOBJS     = $(PFSOURCE:.c=.o)
 PFEMBOBJS  = $(PFSOURCE:.c=.eo)
 
 
 .SUFFIXES: .c .o .eo
 
 PFOBJS     = $(PFSOURCE:.c=.o)
 PFEMBOBJS  = $(PFSOURCE:.c=.eo)
 
-.c.o: $(PFINCLUDES)
+%.o: %.c $(PFINCLUDES)
        $(COMPILE) -c -o $@ $<
 
        $(COMPILE) -c -o $@ $<
 
-.c.eo: $(PFINCLUDES) pfdicdat.h
+%.eo: %.c $(PFINCLUDES) pfdicdat.h
        $(COMPILE) $(EMBCCOPTS) -c -o $@ $<
 
        $(COMPILE) $(EMBCCOPTS) -c -o $@ $<
 
+.PHONY: all clean test
+.PHONY: help pffiles pfdicapp pfdicdat pforthapp
+
 all: $(PFORTHAPP)
 
 pffiles:
 all: $(PFORTHAPP)
 
 pffiles:
-       @echo "ITEMP FILES -----------------"
-       @echo ${PFITEMP}
        @echo "INCLUDE FILES -----------------"
        @echo ${PFINCLUDES}
        @echo "'C' FILES ---------------------"
        @echo "INCLUDE FILES -----------------"
        @echo ${PFINCLUDES}
        @echo "'C' FILES ---------------------"
@@ -96,10 +99,12 @@ $(PFDICAPP): $(PFINCLUDES) $(PFOBJS)
        $(LINK) -o $@ $(PFOBJS) $(LDADD) -lm
 
 # Build basic dictionary image by running newly built pforth and including "system.fth".
        $(LINK) -o $@ $(PFOBJS) $(LDADD) -lm
 
 # Build basic dictionary image by running newly built pforth and including "system.fth".
-$(PFDICDAT): $(PFDICAPP)
+$(PFORTHDIC): $(PFDICAPP)
        wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFDICAPP) -i system.fth)
        wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFDICAPP) -i system.fth)
-       (cd $(FTHDIR); cat pforth.dic; rm -f pforth.dic) > pforth.dic
-       (cd $(FTHDIR); cat pfdicdat.h; rm -f pfdicdat.h) > $@
+       (cd $(FTHDIR); cat pforth.dic; rm -f pforth.dic) > $@
+
+$(PFDICDAT): $(PFORTHDIC) $(PFDICAPP)
+       echo 'include $(FTHDIR)/savedicd.fth SDAD BYE' | ./$(PFDICAPP) -d $(PFORTHDIC)
 
 $(PFORTHAPP): $(PFDICDAT) $(PFEMBOBJS)
        $(LINK) -o $@ $(PFEMBOBJS) $(LDADD) -lm
 
 $(PFORTHAPP): $(PFDICDAT) $(PFEMBOBJS)
        $(LINK) -o $@ $(PFEMBOBJS) $(LDADD) -lm
@@ -125,11 +130,12 @@ help:
        @echo "   It allows pForth to work as a standalone image that does not need to load a dictionary file."
 
 test: $(PFORTHAPP)
        @echo "   It allows pForth to work as a standalone image that does not need to load a dictionary file."
 
 test: $(PFORTHAPP)
-       wd=$$(pwd); (cd $(FTHDIR); $${wd}/pforth_standalone -q t_corex.fth)
-       wd=$$(pwd); (cd $(FTHDIR); $${wd}/pforth_standalone -q t_strings.fth)
-       wd=$$(pwd); (cd $(FTHDIR); $${wd}/pforth_standalone -q t_locals.fth)
-       wd=$$(pwd); (cd $(FTHDIR); $${wd}/pforth_standalone -q t_alloc.fth)
-       wd=$$(pwd); (cd $(FTHDIR); $${wd}/pforth_standalone -q t_floats.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_corex.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_strings.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_locals.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_alloc.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_floats.fth)
+       wd=$$(pwd); (cd $(FTHDIR); $${wd}/$(PFORTHAPP) -q t_file.fth)
 
 clean:
        rm -f $(PFOBJS) $(PFEMBOBJS)
 
 clean:
        rm -f $(PFOBJS) $(PFEMBOBJS)