fpc/tests/tstunits/Makefile.fpc

228 lines
5.4 KiB
Makefile

#
# Makefile.fpc for Free Pascal units, which participates in the tests
#
[target]
[install]
fpcpackage=y
[clean]
units = erroru popuperr ptest
[compiler]
targetdir=$(TARGETSUFFIX)
[default]
fpcdir=../..
[rules]
.NOTPARALLEL:
.PHONY: rtl extra fpcunit packages all clean distclean clean_ctest
.PHONY: cleanrtl distcleanrtl
.PHONY: cleanfpcunit distcleanfpcunit
.PHONY: cleanpackages distcleanpackages
TESTOPT:=-n -FE$(COMPILER_TARGETDIR) -T$(OS_TARGET) $(OPT)
ifeq ($(CPU_TARGET),armeb)
override TESTOPT+=-Cb
endif
ifneq ($(BINUTILSPREFIX),)
override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
endif
ifeq ($(OS_TARGET),msdos)
override TESTOPT+=-CX
endif
TESTCOMPILER:=$(FPC) $(TESTOPT)
FPCFPMAKE=$(NATIVE_FPC)
ifdef CROSSCOMPILE
override CROSSOPT:=$(OPT)
override OPT=
override BUILDFULLNATIVE=
# Check if there is a native compiler (ppc) which is built during building a cross-compiler.
DEV_FPC=$(wildcard $(CURDIR)/../../compiler/ppc$(SRCEXEEXT))
ifneq ($(DEV_FPC), )
# Use this native compiler to build fpmake, since RTL is already compiled by this compiler
# and using an other native compiler may produce PPU incompatibility errors.
FPCFPMAKE=$(DEV_FPC)
endif
endif
export FPCFPMAKE
#############################
# RTL
#
DUMMYINSTALLDIR=$(BASEDIR)/tmp
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
rtl-stamp.$(FULL_TARGET):
ifneq ($(inOS2),)
$(MAKE) -C ../../rtl all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)" FPC=$(FPC)
else
$(MAKE) -C ../../rtl all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)' FPC=$(FPC)
endif
$(MAKE) -C ../../rtl install $(INSTALLOPT) OPT= CROSSOPT= FPC=$(FPC)
$(ECHO) Compiled > rtl-stamp.$(FULL_TARGET)
cleanrtl:
$(DELTREE) $(COMPILER_TARGETDIR)
$(DELTREE) $(DUMMYINSTALLDIR)
-$(DEL) rtl-stamp.$(FULL_TARGET)
distcleanrtl: cleanrtl
rtl : rtl-stamp.$(FULL_TARGET)
#############################
# FPCUnit
#
DUMMYINSTALLDIR=$(BASEDIR)/tmp
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
FPCUNITDIR=$(FPCDIR)/packages/fcl-fpcunit/src
fpcunit-stamp.$(FULL_TARGET):
ifneq ($(OS_TARGET),msdos)
ifneq ($(CPU_TARGET),avr)
ifneq ($(CPU_TARGET),jvm)
$(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/testutils
$(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/fpcunit
endif
endif
endif
$(ECHO) Compiled > fpcunit-stamp.$(FULL_TARGET)
cleanfpcunit:
$(DELTREE) $(COMPILER_TARGETDIR)
$(DELTREE) $(DUMMYINSTALLDIR)
-$(DEL) fpcunit-stamp.$(FULL_TARGET)
distcleanfpcunit: cleanfpcunit
$(MAKE) -C $(FPCUNITDIR)/.. clean
fpcunit : fpcunit-stamp.$(FULL_TARGET)
#############################
# Packages
#
DUMMYINSTALLDIR=$(BASEDIR)/tmp
INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
PACKAGESDIR=$(FPCDIR)/packages
packages-stamp.$(FULL_TARGET):
ifneq ($(inOS2),)
$(MAKE) -C ../../packages all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)" FPC=$(FPC)
else
$(MAKE) -C ../../packages all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)' FPC=$(FPC)
endif
$(MAKE) -C ../../packages install $(INSTALLOPT) OPT= CROSSOPT= FPC=$(FPC)
$(ECHO) Compiled > packages-stamp.$(FULL_TARGET)
cleanpackages:
$(DELTREE) $(COMPILER_TARGETDIR)
$(DELTREE) $(DUMMYINSTALLDIR)
-$(DEL) packages-stamp.$(FULL_TARGET)
distcleanpackages: cleanpackages
packages : packages-stamp.$(FULL_TARGET)
#############################
# Extra units
#
erroru$(PPUEXT) : erroru.pp
$(TESTCOMPILER) erroru.pp
ptest$(PPUEXT) : ../test/cg/ptest.pp
ifneq ($(OS_TARGET),msdos)
$(TESTCOMPILER) ../test/cg/ptest.pp
endif
popuperr$(PPUEXT) : popuperr.pp
$(TESTCOMPILER) popuperr.pp
ifdef CCOMPILER
ctest: ../test/cg/obj/ctest.c
$(CCOMPILER) -c -o ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o ../test/cg/obj/ctest.c
else
ctest:
@$(ECHO) "No C compiler found"
@exit 1
endif
extra : erroru$(PPUEXT) ptest$(PPUEXT) popuperr$(PPUEXT)
#####################################################################
# PPU testing targets
#####################################################################
PPULIST:=$(wildcard */*.ppu) $(wildcard units/*/*.ppu)
PPULOGLIST:=$(subst .ppu,.log-ppu,$(PPULIST))
RMPPULOGLIST:=$(subst .ppu,.rm-log-ppu,$(PPULIST))
.PHONY : ppulogs cleanppulogs testppudump $(RMPPULOGLIST)
ppulogs : $(PPULOGLIST)
vpath %.ppu $(ALLPPUDIRS)
vpath %.log-ppu $(ALLPPUDIRS)
vpath %.rm-log-ppu $(ALLPPUDIRS)
%.log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
..$(PATHSEP)..$(PATHSEP)compiler$(PATHSEP)utils$(PATHSEP)ppudump -VA -M $< > $@
%.rm-log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
-$(RMPROG) $<
../../compiler/utils/ppudump$(EXEEXT):
$(MAKE) -C $(COMPILERDIR)/utils ppudump$(EXEEXT)
ppuinfo :
echo PPU list is "$(PPULIST)"
echo PPULOG list is "$(PPULOGLIST)"
cleanppulogs : $(RMPPULOGLIST)
testppudump :
$(MAKE) cleanppulogs ppulogs
#############################
# Main rules
#
ifdef QUICKTEST
all : rtl fpcunit extra
else
all : rtl fpcunit packages extra
endif
STAMPFILES=$(wildcard *stamp*)
TEMPDIRS=$(wildcard $(MAKEFILETARGETS) tmp)
clean : cleanrtl cleanall cleanfpcunit cleanpackages
distclean : clean distcleanrtl distcleanfpcunit distcleanpackages
-$(DELTREE) $(TEMPDIRS)
-$(DELTREE) $(BASEDIR)/units
-$(DEL) $(STAMPFILES)
clean_ctest :
-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o