123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #
- # Makefile.fpc for running fpmake
- #
- [require]
- packages=rtl fpmkunit fcl-json fcl-process libtar paszlib
- [install]
- fpcpackage=y
- fpcsubdir=utils
- [default]
- fpcdir=..
- [prerules]
- # Translate INSTALL_UNITDIR to fpmake's --unitinstalldir parameter
- ifdef INSTALL_UNITDIR
- FPMAKE_INSTALL_OPT+=--unitinstalldir=$(INSTALL_UNITDIR)
- endif
- ifdef INSTALL_BINDIR
- FPMAKE_INSTALL_OPT+=--bininstalldir=$(INSTALL_BINDIR)
- endif
- ifdef INSTALL_LIBDIR
- FPMAKE_INSTALL_OPT+=--libinstalldir=$(INSTALL_LIBDIR)
- endif
- # Translate OS_TARGET and CPU_TARGET to fpmake's --os and --cpu parameters
- ifdef OS_TARGET
- FPC_TARGETOPT+=--os=$(OS_TARGET)
- endif
- ifdef CPU_TARGET
- FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
- endif
- FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
- LOCALFPMAKE=./fpmake$(SRCEXEEXT)
- SUB_FPMAKE_SRCS=$(wildcard */fpmake.pp)
- [rules]
- # Do not pass the Makefile's unit and binary target locations. Fpmake uses it's own.
- override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
- override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
- # Do not pass the package-unitdirectories. Fpmake adds those and this way they don't apear in the .fpm
- override FPCOPT:=$(filter-out $(addprefix -Fu,$(COMPILER_UNITDIR)),$(FPCOPT))# Compose general fpmake-parameters
- # Compose general fpmake-parameters
- ifdef FPMAKEOPT
- FPMAKE_OPT+=$(FPMAKEOPT)
- endif
- FPMAKE_OPT+=--localunitdir=..
- FPMAKE_OPT+=--globalunitdir=../packages
- FPMAKE_OPT+=$(FPC_TARGETOPT)
- FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
- FPMAKE_OPT+=--compiler=$(FPC)
- ifndef DISABLE_FPMAKE_BUILD_UNIT
- FPMAKE_OPT+=-bu
- endif
- ifndef BUILDFULLNATIVE
- FPMAKE_OPT+=-scp
- endif
- .NOTPARALLEL:
- fpmake$(SRCEXEEXT): fpmake.pp $(SUB_FPMAKE_SRCS) fpmake_add.inc fpmake_proc.inc
- $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
- all: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) compile $(FPMAKE_OPT)
- smart: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
- release: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
- debug: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
- # If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will
- # most often fail because the dependencies are cleared.
- # In case of a clean, simply do nothing
- ifeq ($(FPMAKE_BIN_CLEAN),)
- clean:
- else
- clean:
- $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
- endif
- CLEAN_TARGET_DIRS=$(subst /Makefile, ,$(wildcard */Makefile))
- %_distclean:
- $(MAKE) -C $* distclean
- # In case of a distclean, perform an 'old'-style distclean. This to avoid problems
- # when the package is compiled using fpcmake prior to running this clean using fpmake
- ifeq ($(FPMAKE_BIN_CLEAN),)
- distclean: fpc_cleanall $(addsuffix _distclean,$(CLEAN_TARGET_DIRS))
- else
- distclean:
- ifdef inUnix
- { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
- else
- $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
- endif
- -$(DEL) $(LOCALFPMAKE)
- -$(DEL) fpmake.o
- -$(DEL) fpmake.dbg
- endif
- cleanall: distclean
- install: fpmake$(SRCEXEEXT)
- ifdef UNIXHier
- $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) $(FPMAKE_INSTALL_OPT)
- else
- $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) $(FPMAKE_INSTALL_OPT)
- endif
- # distinstall also installs the example-sources and omits the location of the source-
- # files from the fpunits.cfg files.
- distinstall: fpmake$(SRCEXEEXT)
- ifdef UNIXHier
- $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) $(FPMAKE_INSTALL_OPT) -ie -fsp 0
- else
- $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) $(FPMAKE_INSTALL_OPT) -ie -fsp 0
- endif
- zipinstall: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX)
- zipdistinstall: fpmake$(SRCEXEEXT)
- $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie -fsp 0
- zipsourceinstall: fpmake$(SRCEXEEXT)
- ifdef UNIXHier
- $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=share/src/fpc-\$$\(PACKAGEVERSION\)/$(INSTALL_FPCSUBDIR)/\$$\(PACKAGEDIRECTORY\)
- else
- $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=source\\$(INSTALL_FPCSUBDIR)\\\$$\(PACKAGEDIRECTORY\)
- endif
- #####################################################################
- # PPU testing targets
- #####################################################################
- PPULIST:=$(wildcard */units/$(TARGETSUFFIX)/*.ppu) $(wildcard units/$(TARGETSUFFIX)/*.ppu)
- PPULOGLIST:=$(subst .ppu,.log-ppu,$(PPULIST))
- RMPPULOGLIST:=$(subst .ppu,.rm-log-ppu,$(PPULIST))
- ALLPPUDIRS:=$(wildcard units/*) $(wildcard */units/*)
- .PHONY : ppulogs cleanppulogs testppudump $(RMPPULOGLIST)
- ppulogs : $(PPULOGLIST)
- # Do not try to recompile ppudump, as this does not work if trying to test cross-compiled units
- %.log-ppu : %.ppu
- ppudump -VA -M $< > $@
- %.rm-log-ppu : %.ppu ../compiler/utils/ppudump$(EXEEXT)
- -$(RMPROG) $<
- ../compiler/utils/ppudump$(EXEEXT):
- $(MAKE) -C $(COMPILERDIR)/utils ppudump$(EXEEXT)
- ppuinfo :
- echo list of PPU directories is "$(ALLPPUDIRS)"
- echo PPU list is "$(PPULIST)"
- echo PPULOG list is "$(PPULOGLIST)"
- cleanppulogs : $(RMPPULOGLIST)
- testppudump :
- $(MAKE) cleanppulogs
- $(MAKE) ppulogs
|