summaryrefslogtreecommitdiff
path: root/utils/fpcm/Makefile.fpc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/fpcm/Makefile.fpc')
-rw-r--r--utils/fpcm/Makefile.fpc127
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):