Forráskód Böngészése

* use new fpcmake Makefile.fpc

peter 24 éve
szülő
commit
9cabdcdfec
4 módosított fájl, 633 hozzáadás és 529 törlés
  1. 67 92
      Makefile.fpc
  2. 543 415
      ide/Makefile
  3. 16 15
      ide/Makefile.fpc
  4. 7 7
      install/man/Makefile

+ 67 - 92
Makefile.fpc

@@ -2,28 +2,18 @@
 #   Makefile.fpc for Free Pascal Source Tree
 #
 
-[targets]
-dirs=compiler rtl utils fcl fv packages ide
-
-[defaults]
-defaultrule=help
+[package]
+name=fpc
+version=1.0.5
 
-[tools]
-toolzip=1
-toolupx=1
-tooldate=1
-
-[sections]
-none=1
-dirs=1
-tools=1
-exts=1
-clean=1
-zipinstall=1
+[target]
+dirs=compiler rtl utils fcl fv packages ide
 
+[default]
+fpcdir=.
+rule=help
 
-[presettings]
-# Force FPCDIR
+[prerules]
 override FPCDIR:=$(BASEDIR)
 export FPCDIR
 
@@ -34,6 +24,13 @@ else
 CVSINSTALL=.
 endif
 
+# Install target
+ifdef SNAPSHOT
+INSTALLTARGET=install
+else
+INSTALLTARGET=distinstall
+endif
+
 # All target
 ifdef SNAPSHOT
 ALLTARGET=all
@@ -77,23 +74,11 @@ PKGPRE=u
 endif
 endif
 
-# Test dir if none specified
-ifndef PREFIXINSTALLDIR
-ifdef UNIXINSTALLDIR
-PREFIXINSTALLDIR=/tmp/pptest
-else
-PREFIXINSTALLDIR=/pptest
-endif
-endif
-
 # Always compile for release
 override RELEASE=1
 export RELEASE
 
 # We want to have the resulting .zips in the current dir
-ifndef DESTZIPDIR
-export DESTZIPDIR:=$(BASEDIR)
-endif
 ifndef DIST_DESTDIR
 export DIST_DESTDIR:=$(BASEDIR)
 endif
@@ -106,7 +91,7 @@ PPNEW=$(BASEDIR)/compiler/ppc386$(EXEEXT)
 
 # Don't use ppufiles for win32 becuase of commandline length problems
 ifneq ($(OS_TARGET),win32)
-PPUFILESNEW=$(BASEDIR)/utils/ppufiles$(EXEEXT)
+PPUFILESNEW=$(BASEDIR)/compiler/utils/ppufiles$(EXEEXT)
 endif
 
 # Build/install options
@@ -131,21 +116,25 @@ endif
 endif
 endif
 
+
 [rules]
 # These values can change
 unexport FPC_VERSION OS_SOURCE
 
+# Only process directories that really exists
+override TARGET_DIRS:=$(wildcard $(TARGET_DIRS))
+
 #####################################################################
 # Main targets
 #####################################################################
 
-.PHONY: help
+.PHONY: help checkfpcdir
 
 help:
         @echo
         @echo Directory targets:
         @echo
-        @echo $(DIROBJECTS)
+        @echo $(TARGET_DIRS)
         @echo
         @echo Packing targets are:
         @echo
@@ -162,14 +151,11 @@ help:
 # Compiler
 #######################################
 
-.PHONY: compiler_cycle compiler_fpcexe
+.PHONY: compiler_cycle
 
 compiler_cycle:
         $(MAKE) -C compiler cycle
 
-compiler_fpcexe:
-        $(MAKE) -C compiler fpcexe
-
 
 #######################################
 # IDE
@@ -182,7 +168,8 @@ ide_comp:
         $(MAKE) -C ide full
 
 # Look if libgdb.a is available then use fullgdb
-ifneq ($(wildcard packages/gdbint/libgdb/$(OS_TARGET)/libgdb.a),)
+LIBGDB:=$(strip $(wildcard packages/gdbint/libgdb/$(OS_TARGET)/libgdb.a))
+ifneq ($(LIBGDB),)
 ide_full:
         $(MAKE) -C compiler ppuclean
         $(MAKE) -C ide fullgdb
@@ -264,7 +251,7 @@ installersrc:
 
 all: build
 
-clean: $(addsuffix _distclean,$(DIROBJECTS))
+clean: $(addsuffix _distclean,$(TARGET_DIRS))
         $(DEL) build-stamp.$(OS_TARGET)
 
 distclean: clean
@@ -280,8 +267,8 @@ else
 endif
 # clean
         $(MAKE) rtl_clean
-        $(MAKE) fcl_clean
         $(MAKE) packages_clean
+        $(MAKE) fcl_clean
         $(MAKE) utils_clean
 ifdef IDE
         $(MAKE) fv_clean
@@ -289,10 +276,9 @@ ifdef IDE
 endif
 # build everything
         $(MAKE) rtl_$(ALLTARGET) $(BUILDOPTS)
-        $(MAKE) fcl_$(ALLTARGET) $(BUILDOPTS)
         $(MAKE) packages_$(ALLTARGET) $(BUILDOPTS)
+        $(MAKE) fcl_$(ALLTARGET) $(BUILDOPTS)
         $(MAKE) utils_all $(BUILDOPTS)
-        $(MAKE) compiler_fpcexe $(BUILDOPTS)
 ifdef IDE
         $(MAKE) ide_full $(BUILDOPTS)
 endif
@@ -300,19 +286,19 @@ endif
 
 installbase: build-stamp.$(OS_TARGET)
 # create dirs
-        $(MKDIR) $(BASEINSTALLDIR)
-        $(MKDIR) $(DOCINSTALLDIR)
-        $(MKDIR) $(BININSTALLDIR)
+        $(MKDIR) $(INSTALL_BASEDIR)
+        $(MKDIR) $(INSTALL_DOCDIR)
+        $(MKDIR) $(INSTALL_BINDIR)
 ifndef SNAPSHOT
 # readme & whatsnew and docs
-        $(COPY) $(CVSINSTALL)/doc/*.txt $(CVSINSTALL)/doc/copying* $(CVSINSTALL)/doc/faq.* $(DOCINSTALLDIR)
+        $(COPY) $(CVSINSTALL)/doc/*.txt $(CVSINSTALL)/doc/copying* $(CVSINSTALL)/doc/faq.* $(INSTALL_DOCDIR)
 # bingo32 (cwsdpmi,wmemu387.dxe)
 ifeq ($(OS_TARGET),go32v2)
-        $(COPY) $(CVSINSTALL)/bingo32/* $(BININSTALLDIR)
+        $(COPY) $(CVSINSTALL)/bingo32/* $(INSTALL_BINDIR)
 endif
 # binw32 (cygwin1.dll)
 ifeq ($(OS_TARGET),win32)
-        $(COPY) $(CVSINSTALL)/binw32/* $(BININSTALLDIR)
+        $(COPY) $(CVSINSTALL)/binw32/* $(INSTALL_BINDIR)
 endif
 # manpages for linux
 ifeq ($(OS_TARGET),linux)
@@ -321,37 +307,27 @@ endif
 ifeq ($(OS_TARGET),freebsd)
         $(MAKE) -C $(CVSINSTALL)/man installman
 endif
-
 endif
 # install generated things
-        $(MAKE) compiler_install $(INSTALLOPTS)
-        $(MAKE) rtl_install $(INSTALLOPTS)
+        $(MAKE) compiler_$(INSTALLTARGET) $(INSTALLOPTS)
+        $(MAKE) rtl_$(INSTALLTARGET) $(INSTALLOPTS)
 
 install: build-stamp.$(OS_TARGET)
         $(MAKE) installbase $(INSTALLOPTS)
-        $(MAKE) utils_install $(INSTALLOPTS)
-        $(MAKE) fcl_install $(INSTALLOPTS)
-        $(MAKE) packages_install $(INSTALLOPTS)
+        $(MAKE) packages_$(INSTALLTARGET) $(INSTALLOPTS)
+        $(MAKE) fcl_$(INSTALLTARGET) $(INSTALLOPTS)
+        $(MAKE) utils_$(INSTALLTARGET) $(INSTALLOPTS)
 ifdef IDE
-        $(NOSTOP)$(MAKE) ide_install $(BUILDOPTS)
-endif
-# install examples
-ifndef SNAPSHOT
-        $(MAKE) fcl_exampleinstall $(INSTALLOPTS)
-        $(MAKE) packages_exampleinstall $(INSTALLOPTS)
+        $(NOSTOP)$(MAKE) ide_$(INSTALLTARGET) $(BUILDOPTS)
 endif
 
 zipinstall: build-stamp.$(OS_TARGET)
-        $(MAKE) fpc_zipinstall ZIPTARGET=installbase PACKAGENAME=base $(INSTALLOPTS)
-        $(MAKE) utils_zipinstall $(INSTALLOPTS)
-        $(MAKE) fcl_zipinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
-        $(MAKE) packages_zipinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
+        $(MAKE) fpc_zipinstall ZIPTARGET=installbase ZIPNAME=base$(ZIPSUFFIX) $(INSTALLOPTS)
+        $(MAKE) packages_zip$(INSTALLTARGET) $(INSTALLOPTS) ZIPPREFIX=$(PKGPRE)
+        $(MAKE) fcl_zip$(INSTALLTARGET) $(INSTALLOPTS) ZIPPREFIX=$(PKGPRE)
+        $(MAKE) utils_zip$(INSTALLTARGET) $(INSTALLOPTS) ZIPNAME=util$(ZIPSUFFIX)
 ifdef IDE
-        $(NOSTOP)$(MAKE) ide_zipinstall $(INSTALLOPTS)
-endif
-ifndef SNAPSHOT
-        $(MAKE) fcl_zipexampleinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
-        $(MAKE) packages_zipexampleinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
+        $(NOSTOP)$(MAKE) ide_zip$(INSTALLTARGET) $(INSTALLOPTS)
 endif
 
 
@@ -369,8 +345,8 @@ docs:
 
 docsrcinstall:
         $(MAKE) -C docs clean
-        $(MKDIR) $(SOURCEINSTALLDIR)
-        $(COPYTREE) docs $(SOURCEINSTALLDIR)
+        $(MKDIR) $(INSTALL_SOURCEDIR)
+        $(COPYTREE) docs $(INSTALL_SOURCEDIR)
 
 docsrc:
         $(MAKE) fpc_zipinstall ZIPTARGET=docsrcinstall ZIPNAME=docsrc
@@ -394,19 +370,19 @@ demozip:
 
 sourcebase:
 # base Makefiles needed for sources
-        $(MKDIR) $(SOURCEINSTALLDIR)
-        $(MKDIR) $(SOURCEINSTALLDIR)/rtl
-        $(MKDIR) $(SOURCEINSTALLDIR)/packages
-        $(COPY) Makefile*  $(SOURCEINSTALLDIR)
-        $(COPY) rtl/Makefile* $(SOURCEINSTALLDIR)/rtl
-        $(COPY) packages/Makefile* $(SOURCEINSTALLDIR)/packages
+        $(MKDIR) $(INSTALL_SOURCEDIR)
+        $(MKDIR) $(INSTALL_SOURCEDIR)/rtl
+        $(MKDIR) $(INSTALL_SOURCEDIR)/packages
+        $(COPY) Makefile*  $(INSTALL_SOURCEDIR)
+        $(COPY) rtl/Makefile* $(INSTALL_SOURCEDIR)/rtl
+        $(COPY) packages/Makefile* $(INSTALL_SOURCEDIR)/packages
 
 sourcezip: distclean
         $(MAKE) fpc_zipinstall ZIPTARGET=sourcebase ZIPNAME=basesrc
         $(MAKE) compiler_zipsourceinstall
         $(MAKE) rtl_zipsourceinstall
-        $(MAKE) fcl_zipsourceinstall
         $(MAKE) packages_zipsourceinstall
+        $(MAKE) fcl_zipsourceinstall
         $(MAKE) utils_zipsourceinstall
         $(MAKE) ide_zipsourceinstall
 #        $(MAKE) installersrc
@@ -419,35 +395,34 @@ sourcezip: distclean
 
 .PHONY: go32v2 win32 linux freebsd os2 go32v2zip win32zip linuxzip freebsdzip os2zip
 
-go32v2:
+go32v2: checkfpcdir
         $(MAKE) install OS_TARGET=go32v2
 
-win32:
+win32: checkfpcdir
         $(MAKE) install OS_TARGET=win32
 
-linux:
+linux: checkfpcdir
         $(MAKE) install OS_TARGET=linux
 
-freebsd:
+freebsd: checkfpcdir
         $(MAKE) install OS_TARGET=freebsd
 
-os2:
+os2: checkfpcdir
         $(MAKE) install OS_TARGET=os2
 
-go32v2zip:
+go32v2zip: checkfpcdir
         $(MAKE) zipinstall OS_TARGET=go32v2
 
-win32zip:
+win32zip: checkfpcdir
         $(MAKE) zipinstall OS_TARGET=win32
 
-linuxzip:
+linuxzip: checkfpcdir
         $(MAKE) zipinstall OS_TARGET=linux
 
-
-freebsdzip :
+freebsdzip : checkfpcdir
         $(MAKE) zipinstall OS_TARGET=freebsd
 
-os2zip:
+os2zip: checkfpcdir
         $(MAKE) zipinstall OS_TARGET=os2
 
 ##########################################################################
@@ -475,7 +450,7 @@ debcopy: distclean
         find $(DEBSRCDIR) -name 'CVS*' | xargs -n1 rm -rf
         chmod 755 $(DEBSRCDIR)/debian/rules
 
-deb:  debcopy
+deb: checkfpcdir debcopy
         cd $(DEBSRCDIR) ; debian/rules binary
 
 
@@ -512,6 +487,6 @@ rpmcopy: distclean
         find $(DOCSRCDIR) -name 'CVS*' | xargs -n1 rm -rf
         cd $(DOCSRCDIR) ; tar cvz * > $(RPMSOURCESDIR)/fpc-docs-$(FPC_VERSION)-src.tar.gz
 
-rpm:  rpmcopy
+rpm: checkfpcdir rpmcopy
         cd $(RPMSPECDIR) ; rpm -ba fpc-$(FPC_VERSION).spec
         cd $(RPMSPECDIR) ; rpm -ba fpc-docs-$(FPC_VERSION).spec

+ 543 - 415
ide/Makefile

@@ -1,38 +1,30 @@
 #
-# Makefile generated by fpcmake v1.00 [2001/04/11]
+# Don't edit, this file is generated by fpcmake v1.99.0 [2001/04/25]
 #
-
-defaultrule: all
-
-#####################################################################
-# Autodetect OS (Linux or Dos or Windows NT or OS/2)
-# define inUnix when running under Unix (Linux,FreeBSD)
-# define inWinNT when running under WinNT
-# define inOS2 when running under OS/2
-#####################################################################
-
-# We need only / in the path
+default: all
 override PATH:=$(subst \,/,$(PATH))
-
-# Search for PWD and determine also if we are under linux
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(subst :, ,$(PATH))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
 ifeq ($(PWD),)
 nopwd:
 	@echo You need the GNU utils package to use this Makefile!
 	@echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
 	@exit
 else
-inUnix=1
 PWD:=$(firstword $(PWD))
+SRCEXEEXT=
 endif
 else
 PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
 endif
-
-# Detect NT - NT sets OS to Windows_NT
-# Detect OS/2 - OS/2 has OS2_SHELL defined
 ifndef inUnix
 ifeq ($(OS),Windows_NT)
 inWinNT=1
@@ -41,16 +33,11 @@ ifdef OS2_SHELL
 inOS2=1
 endif
 endif
-endif
-
-# The extension of executables
-ifdef inUnix
-SRCEXEEXT=
 else
-SRCEXEEXT=.exe
+ifneq ($(findstring cygwin,$(MACH_TYPE)),)
+inCygWin=1
+endif
 endif
-
-# The extension of batch files / scripts
 ifdef inUnix
 BATCHEXT=.sh
 else
@@ -60,36 +47,17 @@ else
 BATCHEXT=.bat
 endif
 endif
-
-# Path Separator, the subst trick is necessary for the \ that can't exists
-# at the end of a line
 ifdef inUnix
 PATHSEP=/
 else
-PATHSEP=$(subst /,\,/)
-endif
-
-# The path which is searched separated by spaces
-ifdef inUnix
-SEARCHPATH=$(subst :, ,$(PATH))
-else
-SEARCHPATH=$(subst ;, ,$(PATH))
+PATHSEP:=$(subst /,\,/)
 endif
-
-# Base dir
 ifdef PWD
 BASEDIR:=$(shell $(PWD))
 else
 BASEDIR=.
 endif
-
-#####################################################################
-# FPC version/target Detection
-#####################################################################
-
-# What compiler to use ?
 ifndef FPC
-# Compatibility with old makefiles
 ifdef PP
 FPC=$(PP)
 else
@@ -98,51 +66,30 @@ endif
 endif
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-
-# Target OS
 ifndef OS_TARGET
 OS_TARGET:=$(shell $(FPC) -iTO)
 endif
-
-# Source OS
 ifndef OS_SOURCE
 OS_SOURCE:=$(shell $(FPC) -iSO)
 endif
-
-# Target CPU
 ifndef CPU_TARGET
 CPU_TARGET:=$(shell $(FPC) -iTP)
 endif
-
-# Source CPU
 ifndef CPU_SOURCE
 CPU_SOURCE:=$(shell $(FPC) -iSP)
 endif
-
-# FPC version
 ifndef FPC_VERSION
 FPC_VERSION:=$(shell $(FPC) -iV)
 endif
-
 export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
-
-#####################################################################
-# FPCDIR Setting
-#####################################################################
-
-# Test FPCDIR to look if the RTL dir exists
 ifdef FPCDIR
 override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(FPCDIR)/rtl),)
-ifeq ($(wildcard $(FPCDIR)/units),)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR=wrong
 endif
-endif
 else
 override FPCDIR=wrong
 endif
-
-# Detect FPCDIR
 ifeq ($(FPCDIR),wrong)
 ifdef inUnix
 override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
@@ -152,96 +99,48 @@ endif
 else
 override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
 override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(FPCDIR)/rtl),)
-ifeq ($(wildcard $(FPCDIR)/units),)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(FPCDIR)/rtl),)
-ifeq ($(wildcard $(FPCDIR)/units),)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR=c:/pp
 endif
 endif
 endif
 endif
-endif
-endif
-
-#####################################################################
-# User Settings
-#####################################################################
-
-
-# Targets
-
-override DIROBJECTS+=$(wildcard fake text)
-
-# Clean
-
-
-# Install
-
-PACKAGENAME=ide
-ZIPTARGET=install
-
-# Defaults
-
-
-# Directories
-
-
-# Packages
-
-
-# Libraries
-
-
-#####################################################################
-# Shell tools
-#####################################################################
-
-# echo
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
+override PACKAGE_NAME=ide
+override PACKAGE_VERSION=1.0.5
+override DEFAULT_DIR=text
+override TARGET_DIRS+=fake text
 ifndef ECHO
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ECHO:=echo
-ECHOE:=echo
 else
 ECHO:=$(firstword $(ECHO))
-ECHOE=$(ECHO) -E
 endif
 else
 ECHO:=$(firstword $(ECHO))
-ECHOE=$(ECHO) -E
 endif
 endif
-
-# To copy pograms
 ifndef COPY
 COPY:=cp -fp
 endif
-
-# Copy a whole tree
 ifndef COPYTREE
 COPYTREE:=cp -rfp
 endif
-
-# To move pograms
 ifndef MOVE
 MOVE:=mv -f
 endif
-
-# Check delete program
 ifndef DEL
 DEL:=rm -f
 endif
-
-# Check deltree program
 ifndef DELTREE
 DELTREE:=rm -rf
 endif
-
-# To install files
 ifndef INSTALL
 ifdef inUnix
 INSTALL:=install -c -m 644
@@ -249,8 +148,6 @@ else
 INSTALL:=$(COPY)
 endif
 endif
-
-# To install programs
 ifndef INSTALLEXE
 ifdef inUnix
 INSTALLEXE:=install -c -m 755
@@ -258,8 +155,6 @@ else
 INSTALLEXE:=$(COPY)
 endif
 endif
-
-# To make a directory.
 ifndef MKDIR
 ifdef inUnix
 MKDIR:=install -m 755 -d
@@ -267,39 +162,78 @@ else
 MKDIR:=ginstall -m 755 -d
 endif
 endif
-
-export ECHO ECHOE COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-
-#####################################################################
-# Default Tools
-#####################################################################
-
-# assembler, redefine it if cross compiling
+export ECHO COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
 ifndef AS
 AS=as
 endif
-
-# linker, but probably not used
 ifndef LD
 LD=ld
 endif
-
-# Resource compiler
 ifndef RC
 RC=rc
 endif
-
-# ppas.bat / ppas.sh
 PPAS=ppas$(BATCHEXT)
-
-# ldconfig to rebuild .so cache
 ifdef inUnix
 LDCONFIG=ldconfig
 else
 LDCONFIG=
 endif
-
-# ZipProg, you can't use Zip as the var name (PFV)
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+export PPUFILES
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEACHPATH))))
+ifeq ($(DATE),)
+DATE=
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
 ifndef ZIPPROG
 ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ZIPPROG),)
@@ -309,11 +243,8 @@ ZIPPROG:=$(firstword $(ZIPPROG))
 endif
 endif
 export ZIPPROG
-
 ZIPOPT=-9
 ZIPEXT=.zip
-
-# Tar
 ifndef TARPROG
 TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(TARPROG),)
@@ -323,7 +254,6 @@ TARPROG:=$(firstword $(TARPROG))
 endif
 endif
 export TARPROG
-
 ifeq ($(USETAR),bz2)
 TAROPT=vI
 TAREXT=.tar.bz2
@@ -331,18 +261,74 @@ else
 TAROPT=vz
 TAREXT=.tar.gz
 endif
-
-
-
-#####################################################################
-# Default Directories
-#####################################################################
-
-# Linux and freebsd use unix dirs with /usr/bin, /usr/lib
-# When zipping use the target as default, when normal install then
-# use the source os as default
-ifdef ZIPNAME
-# Zipinstall
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+LIBPREFIX=lib
+RSTEXT=.rst
+FPCMADE=fpcmade
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+LIBPREFIX=
+FPCMADE=fpcmade.v1
+PACKAGESUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+LIBPREFIX=
+FPCMADE=fpcmade.dos
+ZIPSUFFIX=go32
+endif
+ifeq ($(OS_TARGET),linux)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.lnx
+ZIPSUFFIX=linux
+endif
+ifeq ($(OS_TARGET),freebsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.freebsd
+ZIPSUFFIX=freebsd
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.w32
+ZIPSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.so
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.os2
+ZIPSUFFIX=emx
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
 ifeq ($(OS_TARGET),linux)
 UNIXINSTALLDIR=1
 endif
@@ -350,7 +336,6 @@ ifeq ($(OS_TARGET),freebsd)
 UNIXINSTALLDIR=1
 endif
 else
-# Normal install
 ifeq ($(OS_SOURCE),linux)
 UNIXINSTALLDIR=1
 endif
@@ -358,228 +343,299 @@ ifeq ($(OS_SOURCE),freebsd)
 UNIXINSTALLDIR=1
 endif
 endif
-
-# set the prefix directory where to install everything
-ifndef PREFIXINSTALLDIR
+ifndef INSTALL_PREFIX
 ifdef UNIXINSTALLDIR
-PREFIXINSTALLDIR=/usr/local
+INSTALL_PREFIX=/usr/local
 else
-PREFIXINSTALLDIR=/pp
+INSTALL_PREFIX=/pp
 endif
 endif
-export PREFIXINSTALLDIR
-
-# Where to place the resulting zip files
-ifndef DESTZIPDIR
-DESTZIPDIR:=$(BASEDIR)
+export INSTALL_PREFIX
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
 endif
-export DESTZIPDIR
-
-#####################################################################
-# Install Directories
-#####################################################################
-
-# set the base directory where to install everything
-ifndef BASEINSTALLDIR
+export DIST_DESTDIR
+ifndef INSTALL_BASEDIR
 ifdef UNIXINSTALLDIR
-BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION)
+INSTALL_BASEDIR=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 else
-BASEINSTALLDIR=$(PREFIXINSTALLDIR)
+INSTALL_BASEDIR=$(INSTALL_PREFIX)
 endif
 endif
-
-# set the directory where to install the binaries
-ifndef BININSTALLDIR
+ifndef INSTALL_BINDIR
 ifdef UNIXINSTALLDIR
-BININSTALLDIR=$(PREFIXINSTALLDIR)/bin
+INSTALL_BINDIR=$(INSTALL_PREFIX)/bin
 else
-BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
+INSTALL_BINDIR=$(INSTALL_BASEDIR)/bin/$(OS_TARGET)
 endif
 endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/units/$(OS_TARGET)
-ifdef UNITSUBDIR
-UNITINSTALLDIR:=$(UNITINSTALLDIR)/$(UNITSUBDIR)
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
 endif
 endif
-
-# Where to install shared libraries
-ifndef LIBINSTALLDIR
+ifndef INSTALL_LIBDIR
 ifdef UNIXINSTALLDIR
-LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+INSTALL_LIBDIR=$(INSTALL_PREFIX)/lib
 else
-LIBINSTALLDIR=$(UNITINSTALLDIR)
+INSTALL_LIBDIR=$(INSTALL_UNITDIR)
 endif
 endif
-
-# Where the source files will be stored
-ifndef SOURCEINSTALLDIR
+ifndef INSTALL_SOURCEDIR
 ifdef UNIXINSTALLDIR
-SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+INSTALL_SOURCEDIR=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)
 else
-SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
+INSTALL_SOURCEDIR=$(INSTALL_BASEDIR)/source
 endif
-ifdef SOURCESUBDIR
-SOURCEINSTALLDIR:=$(SOURCEINSTALLDIR)/$(SOURCESUBDIR)
+ifdef PACKAGE_NAME
+INSTALL_SOURCEDIR:=$(INSTALL_SOURCEDIR)/$(PACKAGE_NAME)
 endif
 endif
-
-# Where the doc files will be stored
-ifndef DOCINSTALLDIR
+ifndef INSTALL_DOCDIR
 ifdef UNIXINSTALLDIR
-DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc-$(FPC_VERSION)
+INSTALL_DOCDIR=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)
 else
-DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
+INSTALL_DOCDIR=$(INSTALL_BASEDIR)/doc
 endif
 endif
-
-# Where to install the examples, under linux we use the doc dir
-# because the copytree command will create a subdir itself
-ifndef EXAMPLEINSTALLDIR
+ifndef INSTALL_EXAMPLEDIR
 ifdef UNIXINSTALLDIR
-EXAMPLEINSTALLDIR=$(DOCINSTALLDIR)/examples
+INSTALL_EXAMPLEDIR=$(INSTALL_DOCDIR)/examples
 else
-EXAMPLEINSTALLDIR=$(BASEINSTALLDIR)/examples
+INSTALL_EXAMPLEDIR=$(INSTALL_BASEDIR)/examples
 endif
 ifdef EXAMPLESUBDIR
-EXAMPLEINSTALLDIR:=$(EXAMPLEINSTALLDIR)/$(EXAMPLESUBDIR)
+INSTALL_EXAMPLEDIR:=$(INSTALL_EXAMPLEDIR)/$(EXAMPLESUBDIR)
 endif
 endif
-
-# Where the some extra (data)files will be stored
-ifndef DATAINSTALLDIR
-DATAINSTALLDIR=$(BASEINSTALLDIR)
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
 endif
-
-#####################################################################
-# Redirection
-#####################################################################
-
-ifndef REDIRFILE
-REDIRFILE=log
+override FPCOPTDEF=$(CPU_TARGET)
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
 endif
-
-ifdef REDIR
-ifndef inUnix
-override FPC=redir -eo $(FPC)
-endif
-# set the verbosity to max
-override FPCOPT+=-va
-override REDIR:= >> $(REDIRFILE)
-endif
-
-#####################################################################
-# Standard rules
-#####################################################################
-
-debug: $(addsuffix _debug,$(DIROBJECTS))
-
-smart: $(addsuffix _smart,$(DIROBJECTS))
-
-shared: $(addsuffix _shared,$(DIROBJECTS))
-
-showinstall: $(addsuffix _showinstall,text)
-
-install: $(addsuffix _install,text)
-
-sourceinstall: fpc_sourceinstall
-
-zipinstall: fpc_zipinstall
-
-zipsourceinstall: fpc_zipsourceinstall
-
-clean: $(addsuffix _clean,$(DIROBJECTS))
-
-distclean: $(addsuffix _distclean,$(DIROBJECTS))
-
-cleanall: $(addsuffix _cleanall,$(DIROBJECTS))
-
-require: $(addsuffix _require,$(DIROBJECTS))
-
-.PHONY:  debug smart shared showinstall install sourceinstall zipinstall zipsourceinstall clean distclean cleanall require
-
-#####################################################################
-# SourceInstall rules
-#####################################################################
-
-.PHONY: fpc_sourceinstall
-
-ifndef SOURCETOPDIR
-SOURCETOPDIR=$(BASEDIR)
-endif
-
-fpc_sourceinstall: clean
-	$(MKDIR) $(SOURCEINSTALLDIR)
-	$(COPYTREE) $(SOURCETOPDIR) $(SOURCEINSTALLDIR)
-
-#####################################################################
-# Zip
-#####################################################################
-
-.PHONY: fpc_zipinstall
-
-# Create suffix to add
-ifndef PACKAGESUFFIX
-PACKAGESUFFIX=$(OS_TARGET)
-ifeq ($(OS_TARGET),go32v2)
-PACKAGESUFFIX=go32
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 endif
-ifeq ($(OS_TARGET),win32)
-PACKAGESUFFIX=w32
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
 endif
-ifeq ($(OS_TARGET),os2)
-PACKAGESUFFIX=emx
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+override FPCOPT+=-Xs -OG2p3 -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-OG2p3
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
 endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifeq ($(OS_SOURCE),win32)
+USEENV=1
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(OS_SOURCE),$(OS_TARGET))
+EXECPPAS:=@$(PPAS)
 endif
-
-# Temporary path to pack a file
+endif
+.PHONY: fpc_packages fpc_all fpc_smart fpc_debug
+$(FPCMADE): $(ALLTARGET)
+	@$(ECHO) Compiled > $(FPCMADE)
+fpc_packages: $(COMPILEPACKAGES)
+fpc_all: fpc_packages $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
+override INSTALLPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES)))
+else
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
+endif
+endif
+ifdef INSTALLEXEFILES
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
+endif
+fpc_install: $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+ifdef UPXPROG
+	-$(UPXPROG) $(INSTALLEXEFILES)
+endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+fpc_distinstall: fpc_install fpc_exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
 ifndef PACKDIR
 ifndef inUnix
-PACKDIR=$(BASEDIR)/../pack_tmp
+PACKDIR=$(BASEDIR)/../pack_tmp/$(PACKAGE_NAME)
 else
-PACKDIR=/tmp/fpc-pack
+PACKDIR=/tmp/fpc-pack/$(PACKAGE_NAME)
 endif
 endif
-
-# Maybe create default zipname from packagename
 ifndef ZIPNAME
-ifdef PACKAGENAME
-ZIPNAME=$(PACKAGEPREFIX)$(PACKAGENAME)$(PACKAGESUFFIX)
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(ZIPPREFIX)$(PACKAGE_NAME)$(ZIPSUFFIX)
+endif
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
 endif
 endif
-
-# Use tar by default under linux
 ifndef USEZIP
 ifdef inUnix
 USETAR=1
 endif
 endif
-
-# Use a wrapper script by default for OS/2
 ifdef inOS2
 USEZIPWRAPPER=1
 endif
-
-# Create commands to create the zip/tar file
-ZIPWRAPPER=$(DESTZIPDIR)/fpczip$(BATCHEXT)
+ZIPWRAPPER=$(DIST_DESTDIR)/fpczip$(BATCHEXT)
 ZIPCMD_CDPACK:=cd $(subst /,$(PATHSEP),$(PACKDIR))
 ZIPCMD_CDBASE:=cd $(subst /,$(PATHSEP),$(BASEDIR))
 ifdef USETAR
-ZIPDESTFILE:=$(DESTZIPDIR)/$(ZIPNAME)$(TAREXT)
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(TAREXT)
 ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
 else
-ZIPDESTFILE:=$(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT)
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(ZIPEXT)
 ZIPCMD_ZIP:=$(subst /,$(PATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
 endif
-
 fpc_zipinstall:
-ifndef ZIPNAME
-	@$(ECHO) "Please specify ZIPNAME!"
-	@exit 1
-else
-	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
 	$(DEL) $(ZIPDESTFILE)
 ifdef USEZIPWRAPPER
 ifneq ($(ECHO),echo)
@@ -601,168 +657,240 @@ else
 	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
 endif
 	$(DELTREE) $(PACKDIR)
-endif
-
-.PHONY:  fpc_zipsourceinstall
-
 fpc_zipsourceinstall:
-	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall PACKAGESUFFIX=src
-
-#####################################################################
-# Directories
-#####################################################################
-
-OBJECTDIRFAKE=1
-OBJECTDIRTEXT=1
-
-# Dir fake
-
-ifdef OBJECTDIRFAKE
-.PHONY:  fake_all fake_debug fake_examples fake_test fake_smart fake_shared fake_showinstall fake_install fake_sourceinstall fake_exampleinstall fake_zipinstall fake_zipsourceinstall fake_zipexampleinstall fake_clean fake_distclean fake_cleanall fake_require fake_info
-
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=src
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=exm
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+ifdef PPUFILES
+CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))))
+endif
+override CLEANPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
+fpc_distclean: fpc_clean
+ifdef COMPILER_UNITTARGETDIR
+TARGETDIRCLEAN=fpc_clean
+endif
+fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+.PHONY: fpc_info
+fpc_info:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  Pwd....... $(PWD)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  PPUFiles.. $(PPUFILES)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  Upx....... $(UPXPROG)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders...... $(TARGET_LOADERS)
+	@$(ECHO)  Target Units........ $(TARGET_UNITS)
+	@$(ECHO)  Target Programs..... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs......... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples..... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.. $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)
+	@$(ECHO)  INSTALL_BASEDIR...... $(INSTALL_BASEDIR)
+	@$(ECHO)  INSTALL_BINDIR....... $(INSTALL_BINDIR)
+	@$(ECHO)  INSTALL_LIBDIR....... $(INSTALL_LIBDIR)
+	@$(ECHO)  INSTALL_UNITDIR...... $(INSTALL_UNITDIR)
+	@$(ECHO)  INSTALL_SOURCEDIR.... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  INSTALL_DOCDIR....... $(INSTALL_DOCDIR)
+	@$(ECHO)  INSTALL_DATADIR...... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  DIST_DESTDIR......... $(DIST_DESTDIR)
+	@$(ECHO)  DIST_ZIPNAME......... $(DIST_ZIPNAME)
+	@$(ECHO)
+TARGET_DIRS_FAKE=1
+TARGET_DIRS_TEXT=1
+ifdef TARGET_DIRS_FAKE
 fake_all:
 	$(MAKE) -C fake all
-
 fake_debug:
 	$(MAKE) -C fake debug
-
 fake_examples:
 	$(MAKE) -C fake examples
-
-fake_test:
-	$(MAKE) -C fake test
-
 fake_smart:
 	$(MAKE) -C fake smart
-
 fake_shared:
 	$(MAKE) -C fake shared
-
-fake_showinstall:
-	$(MAKE) -C fake showinstall
-
 fake_install:
 	$(MAKE) -C fake install
-
 fake_sourceinstall:
 	$(MAKE) -C fake sourceinstall
-
 fake_exampleinstall:
 	$(MAKE) -C fake exampleinstall
-
+fake_distinstall:
+	$(MAKE) -C fake distinstall
 fake_zipinstall:
 	$(MAKE) -C fake zipinstall
-
 fake_zipsourceinstall:
 	$(MAKE) -C fake zipsourceinstall
-
 fake_zipexampleinstall:
 	$(MAKE) -C fake zipexampleinstall
-
+fake_zipdistinstall:
+	$(MAKE) -C fake zipdistinstall
 fake_clean:
 	$(MAKE) -C fake clean
-
 fake_distclean:
 	$(MAKE) -C fake distclean
-
 fake_cleanall:
 	$(MAKE) -C fake cleanall
-
-fake_require:
-	$(MAKE) -C fake require
-
 fake_info:
 	$(MAKE) -C fake info
+fake:
+	$(MAKE) -C fake all
+.PHONY: fake_all fake_debug fake_examples fake_smart fake_shared fake_install fake_sourceinstall fake_exampleinstall fake_distinstall fake_zipinstall fake_zipsourceinstall fake_zipexampleinstall fake_zipdistinstall fake_clean fake_distclean fake_cleanall fake_info fake
 endif
-
-# Dir text
-
-ifdef OBJECTDIRTEXT
-.PHONY:  text_all text_debug text_examples text_test text_smart text_shared text_showinstall text_install text_sourceinstall text_exampleinstall text_zipinstall text_zipsourceinstall text_zipexampleinstall text_clean text_distclean text_cleanall text_require text_info
-
+ifdef TARGET_DIRS_TEXT
 text_all:
 	$(MAKE) -C text all
-
 text_debug:
 	$(MAKE) -C text debug
-
 text_examples:
 	$(MAKE) -C text examples
-
-text_test:
-	$(MAKE) -C text test
-
 text_smart:
 	$(MAKE) -C text smart
-
 text_shared:
 	$(MAKE) -C text shared
-
-text_showinstall:
-	$(MAKE) -C text showinstall
-
 text_install:
 	$(MAKE) -C text install
-
 text_sourceinstall:
 	$(MAKE) -C text sourceinstall
-
 text_exampleinstall:
 	$(MAKE) -C text exampleinstall
-
+text_distinstall:
+	$(MAKE) -C text distinstall
 text_zipinstall:
 	$(MAKE) -C text zipinstall
-
 text_zipsourceinstall:
 	$(MAKE) -C text zipsourceinstall
-
 text_zipexampleinstall:
 	$(MAKE) -C text zipexampleinstall
-
+text_zipdistinstall:
+	$(MAKE) -C text zipdistinstall
 text_clean:
 	$(MAKE) -C text clean
-
 text_distclean:
 	$(MAKE) -C text distclean
-
 text_cleanall:
 	$(MAKE) -C text cleanall
-
-text_require:
-	$(MAKE) -C text require
-
 text_info:
 	$(MAKE) -C text info
-endif
-
-#####################################################################
-# Local Makefile
-#####################################################################
-
+text:
+	$(MAKE) -C text all
+.PHONY: text_all text_debug text_examples text_smart text_shared text_install text_sourceinstall text_exampleinstall text_distinstall text_zipinstall text_zipsourceinstall text_zipexampleinstall text_zipdistinstall text_clean text_distclean text_cleanall text_info text
+endif
+debug: fpc_debug $(addsuffix _debug,$(DEFAULT_DIR))
+examples: fpc_examples $(addsuffix _examples,$(DEFAULT_DIR))
+smart: fpc_smart $(addsuffix _smart,$(DEFAULT_DIR))
+shared: fpc_shared $(addsuffix _shared,$(DEFAULT_DIR))
+install: fpc_install $(addsuffix _install,$(DEFAULT_DIR))
+sourceinstall: fpc_sourceinstall $(addsuffix _sourceinstall,$(DEFAULT_DIR))
+exampleinstall: fpc_exampleinstall $(addsuffix _exampleinstall,$(DEFAULT_DIR))
+distinstall: fpc_distinstall $(addsuffix _distinstall,$(DEFAULT_DIR))
+zipinstall: fpc_zipinstall $(addsuffix _zipinstall,$(DEFAULT_DIR))
+zipsourceinstall: fpc_zipsourceinstall $(addsuffix _zipsourceinstall,$(DEFAULT_DIR))
+zipexampleinstall: fpc_zipexampleinstall $(addsuffix _zipexampleinstall,$(DEFAULT_DIR))
+zipdistinstall: fpc_zipdistinstall $(addsuffix _zipdistinstall,$(DEFAULT_DIR))
+cleanall: fpc_cleanall $(addsuffix _cleanall,$(DEFAULT_DIR))
+info: fpc_info $(addsuffix _info,$(DEFAULT_DIR))
+.PHONY: debug examples smart shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall cleanall info
 ifneq ($(wildcard fpcmake.loc),)
 include fpcmake.loc
 endif
-
-#####################################################################
-# Users rules
-#####################################################################
-
 .PHONY: gdb full fullgdb clean_compiler
-
 all:
 	$(MAKE) -C text all
-
 gdb:
-	$(MAKE) -C text all GDB=1
-
+	$(MAKE) -C text gdb
 full:
-	$(MAKE) -C text all FULL=1 "NEEDOPT+=-Sg -dGDB -dBROWSERCOL"
-
+	$(MAKE) -C text full
 fullgdb:
-	$(MAKE) -C text all FULL=1 GDB=1 "NEEDOPT+=-Sg -dGDB -dBROWSERCOL"
-
-#
-# Misc
-#
+	$(MAKE) -C text fullgdb
+clean: fpc_clean fake_clean
+distclean: fpc_distclean fake_distclean
 clean_compiler:
 	$(MAKE) -C ../compiler clean

+ 16 - 15
ide/Makefile.fpc

@@ -2,20 +2,15 @@
 #   Makefile.fpc for FP IDE
 #
 
-[targets]
-dirs=fake text
-
-[install]
-packagename=ide
-sourcesubdirs=0
+[package]
+name=ide
+version=1.0.5
 
-[sections]
-none=1
-zipsourceinstall=1
-
-[defaults]
-defaultinstalldir=text
+[target]
+dirs=fake text
 
+[default]
+dir=text
 
 [rules]
 .PHONY: gdb full fullgdb clean_compiler
@@ -24,13 +19,19 @@ all:
         $(MAKE) -C text all
 
 gdb:
-        $(MAKE) -C text all GDB=1
+        $(MAKE) -C text gdb
 
 full:
-        $(MAKE) -C text all FULL=1 "NEEDOPT+=-Sg -dGDB -dBROWSERCOL"
+        $(MAKE) -C text full
 
 fullgdb:
-        $(MAKE) -C text all FULL=1 GDB=1 "NEEDOPT+=-Sg -dGDB -dBROWSERCOL"
+        $(MAKE) -C text fullgdb
+
+# Also clean the fake dir
+clean: fpc_clean fake_clean
+
+distclean: fpc_distclean fake_distclean
+
 
 #
 # Misc

+ 7 - 7
install/man/Makefile

@@ -2,14 +2,14 @@
 # Man page installation for linux
 #
 
-ifndef PREFIXINSTALLDIR
-PREFIXINSTALLDIR=/usr
+ifndef INSTALL_PREFIX
+INSTALL_PREFIX=/usr/local
 endif
 
-MANINSTALLDIR=$(PREFIXINSTALLDIR)/man
+INSTALL_MANDIR=$(INSTALL_PREFIX)/man
 
 installman:
-	install -d -m 755 $(MANINSTALLDIR)/man1
-	install -d -m 755 $(MANINSTALLDIR)/man5
-	install -m 644 -c man1/*.1 $(MANINSTALLDIR)/man1
-	install -m 644 -c man5/*.5 $(MANINSTALLDIR)/man5
+	install -d -m 755 $(INSTALL_MANDIR)/man1
+	install -d -m 755 $(INSTALL_MANDIR)/man5
+	install -m 644 man1/*.1 $(INSTALL_MANDIR)/man1
+	install -m 644 man5/*.5 $(INSTALL_MANDIR)/man5