diff options
Diffstat (limited to 'utils/fpcm/Makefile.fpc')
-rw-r--r-- | utils/fpcm/Makefile.fpc | 127 |
1 files changed, 72 insertions, 55 deletions
diff --git a/utils/fpcm/Makefile.fpc b/utils/fpcm/Makefile.fpc index 76b9121640..2a95227376 100644 --- a/utils/fpcm/Makefile.fpc +++ b/utils/fpcm/Makefile.fpc @@ -1,17 +1,13 @@ # -# Makefile.fpc for FPCMake +# Makefile.fpc for running fpmake # -[target] -programs=fpcmake -rsts=fpcmmain - -[clean] -units=fpcmmain fpcmdic fpcmwr fpcmpkg +[package] +name=fpcm +version=2.7.1 [require] -packages=fcl-base -tools=data2inc +packages=rtl fpmkunit [install] fpcpackage=y @@ -20,62 +16,83 @@ fpcpackage=y fpcdir=../.. [prerules] -BS_UNITDIR=$(BASEDIR)/units/$(SOURCESUFFIX) - -# Check if revision.inc is present -REVINC:=$(wildcard revision.inc) -ifneq ($(REVINC),) -# File revision.inc is present -# Use it to compile fpcmmain.pp unit -override FPCOPT+=-dREVINC +FPMAKE_BIN_CLEAN=$(wildcard .$(PATHSEP)fpmake$(SRCEXEEXT)) +ifdef OS_TARGET +FPC_TARGETOPT+=--os=$(OS_TARGET) endif -REVINC_FILES=$(wildcard fpcm*.pp fpcmake.ini Makefile.fpc) +ifdef CPU_TARGET +FPC_TARGETOPT+=--cpu=$(CPU_TARGET) +endif +LOCALFPMAKE=.$(PATHSEP)fpmake$(SRCEXEEXT) +BS_UNITDIR=$(BASEDIR)/units/$(SOURCESUFFIX) -SVN:=$(firstword $(wildcard $(addsuffix /svn$(SRCEXEEXT),$(SEARCHPATH)))) -SVNLOG:=svninfo.log -# This one can be overriden on command line for debugging purposes -GETREVEXE:=./getrev$(EXEEXT) [rules] -.NOTPARALLEL: -ifneq ($(DATA2INC),) -fpcmake.inc: fpcmake.ini - $(DATA2INC) -b -s fpcmake.ini fpcmake.inc fpcmakeini +# 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)) +# 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) +FPMAKE_OPT+=-bu +.NOTPARALLEL: - +fpmake: fpmake.pp + $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT) +all: fpmake + $(LOCALFPMAKE) compile $(FPMAKE_OPT) +smart: fpmake + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX +release: fpmake + $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE +debug: fpmake + $(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 +# 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: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall +else +distclean: ifdef inUnix -EnableRevIncRule=1 + { $(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 -ifdef inCygWin -EnableRevIncRule=1 + -$(DEL) $(LOCALFPMAKE) endif - -ifneq (,$(SVN)) -# revision.inc rule -revision.inc : $(REVINC_FILES) - -$(SVN) info $(REVINC_FILES) > $(SVNLOG) - $(MAKE) getrev$(EXEEXT) - $(GETREVEXE) $(SVNLOG) - -$(DEL) getrev$(EXEEXT) +cleanall: distclean +install: fpmake +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) endif - -.PHONY : revision - -# Use -B option to force -# regeneration of revision.inc -revision : - $(MAKE) -B revision.inc - - -fpcmwr$(PPUEXT): fpcmake.inc - -fpcmmain$(PPUEXT): $(REVINC) - -fpcmake$(EXEEXT): $(wildcard fpcm*.pp) fpcmake.inc $(REVINC) - -fpcmake$(EXEEXT): fpcmwr$(PPUEXT) fpcmmain$(PPUEXT) - +# distinstall also installs the example-sources +distinstall: fpmake +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie +endif +zipinstall: fpmake + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) +zipdistinstall: fpmake + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie # Cygwin doesn't like c:/path/ ifndef inCygWin $(BS_UNITDIR): |