mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 03:08:00 +02:00
228 lines
5.4 KiB
Makefile
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
|