# Portable Forth written in 'C'
# For more info visit http://www.softsynth.com/pforth/
# Options include: PF_SUPPORT_FP PF_NO_MALLOC PF_NO_INIT PF_DEBUG
# See "docs/pf_ref.htm" file for more info.
# Note for Mac OS X, use cc instead of gcc
PFORTHDIR
:= $(shell cd ..
/; pwd
)
CSRCDIR
= $(PFORTHDIR
)/csrc
FTHDIR
= $(PFORTHDIR
)/fth
PFDICAPP
= $(FTHDIR
)/pforth
PFORTHDIC
= $(FTHDIR
)/pforth.dic
PFDICDAT
= ${CSRCDIR}/pfdicdat.h
PFORTHAPP
= $(PFORTHDIR
)/pforth
OBJECTDIR
= $(PFORTHDIR
)/objects
TEMPOBJECTDIR
= $(PFORTHDIR
)/tempobjects
-fno-keep-inline-functions \
CCOPTS
= -DPF_SUPPORT_FP
-DPF_POSIX_IO
-O2
$(FULL_WARNINGS
) $(EXTRA_CCOPTS
)
EMBCCOPTS
= -DPF_STATIC_DIC
#######################################
# Build file lists from wildcards.
PFITEMP
= ${wildcard ${CSRCDIR}/*.h
}
PFINCLUDES
= ${PFITEMP
:${CSRCDIR}/pfdicdat.h
=}
PFSOURCE
= ${wildcard ${CSRCDIR}/*.c
}
PFTEMP
= ${PFSOURCE
:%.c
=%.o
}
PFOBJS
= ${PFTEMP
:${CSRCDIR}/%=${TEMPOBJECTDIR}/%}
PFEMBOBJS
= ${PFTEMP
:${CSRCDIR}/%=${OBJECTDIR}/%}
COMPILE
= $(COMPILER
) $(CCOPTS
) $(CDEFS
)
${TEMPOBJECTDIR}/%.o
: $(PFINCLUDES
) ${CSRCDIR}/%.c
$(COMPILE
) -O
-o
${TEMPOBJECTDIR}/$*.o
-c
${CSRCDIR}/$*.c
${OBJECTDIR}/%.o
: $(PFINCLUDES
) ${CSRCDIR}/%.c
${CSRCDIR}/pfdicdat.h
$(COMPILE
) -O
-o
${OBJECTDIR}/$*.o
-c
${CSRCDIR}/$*.c
$(EMBCCOPTS
)
@echo
"ITEMP FILES -----------------"
@echo
"INCLUDE FILES -----------------"
@echo
"'C' FILES ---------------------"
@echo
"OBJECT FILES ------------------"
@echo
"EMBEDDED OBJECT FILES ------------------"
# build pforth by compiling 'C' source
$(PFDICAPP
): $(PFINCLUDES
) $(PFOBJS
)
$(COMPILER
) $(PFOBJS
) -lm
-o
$(PFDICAPP
)
# build basic dictionary by running newly built pforth and including system.fth
cd
$(FTHDIR
); $(PFDICAPP
) -i system.fth
; mv pfdicdat.h
$(PFDICDAT
)
$(PFORTHAPP
): $(PFDICDAT
) $(PFINCLUDES
) $(PFEMBOBJS
)
$(COMPILER
) $(PFEMBOBJS
) -lm
-o
$(PFORTHAPP
)
-rm -f
$(PFOBJS
) $(PFEMBOBJS
)