Browse Source

* package dependencies

peter 26 years ago
parent
commit
41c91ed6b3
63 changed files with 7526 additions and 5281 deletions
  1. 354 613
      base/Makefile
  2. 43 297
      base/Makefile.fpc
  3. 95 31
      compiler/Makefile
  4. 95 31
      compiler/new/Makefile
  5. 300 51
      fcl/Makefile
  6. 5 62
      fcl/Makefile.fpc
  7. 286 223
      fcl/db/Makefile
  8. 5 7
      fcl/db/Makefile.fpc
  9. 258 224
      fcl/go32v2/Makefile
  10. 1 4
      fcl/go32v2/Makefile.fpc
  11. 258 224
      fcl/linux/Makefile
  12. 1 3
      fcl/linux/Makefile.fpc
  13. 258 224
      fcl/os2/Makefile
  14. 1 3
      fcl/os2/Makefile.fpc
  15. 303 226
      fcl/shedit/Makefile
  16. 5 4
      fcl/shedit/Makefile.fpc
  17. 268 223
      fcl/tests/Makefile
  18. 3 2
      fcl/tests/Makefile.fpc
  19. 258 224
      fcl/win32/Makefile
  20. 1 3
      fcl/win32/Makefile.fpc
  21. 54 8
      ide/Makefile
  22. 54 8
      ide/fake/Makefile
  23. 92 28
      ide/fake/compiler/Makefile
  24. 92 28
      ide/fake/gdb/Makefile
  25. 16 1
      ide/fake/gdb/gdbint.pas
  26. 131 36
      ide/text/Makefile
  27. 2 2
      ide/text/Makefile.fpc
  28. 223 111
      packages/Makefile
  29. 102 38
      packages/forms/Makefile
  30. 103 39
      packages/gdbint/Makefile
  31. 100 36
      packages/ggi/Makefile
  32. 97 33
      packages/gtk/Makefile
  33. 99 35
      packages/gtk/examples/Makefile
  34. 98 34
      packages/gtk/tutorial/Makefile
  35. 100 36
      packages/ibase/Makefile
  36. 100 36
      packages/inet/Makefile
  37. 100 36
      packages/mysql/Makefile
  38. 100 36
      packages/ncurses/Makefile
  39. 100 36
      packages/opengl/Makefile
  40. 100 36
      packages/paszlib/Makefile
  41. 100 36
      packages/postgres/Makefile
  42. 100 36
      packages/svgalib/Makefile
  43. 100 36
      packages/uncgi/Makefile
  44. 100 36
      packages/utmp/Makefile
  45. 265 156
      rtl/Makefile
  46. 5 197
      rtl/Makefile.fpc
  47. 276 226
      rtl/go32v1/Makefile
  48. 2 2
      rtl/go32v1/Makefile.fpc
  49. 276 226
      rtl/go32v2/Makefile
  50. 2 4
      rtl/go32v2/Makefile.fpc
  51. 159 108
      rtl/linux/Makefile
  52. 5 6
      rtl/linux/Makefile.fpc
  53. 276 226
      rtl/os2/Makefile
  54. 2 3
      rtl/os2/Makefile.fpc
  55. 276 226
      rtl/win32/Makefile
  56. 2 3
      rtl/win32/Makefile.fpc
  57. 126 37
      utils/Makefile
  58. 230 183
      utils/fpcmake.inc
  59. 93 39
      utils/fpcmake.ini
  60. 170 55
      utils/fpcmake.pp
  61. 99 35
      utils/h2pas/Makefile
  62. 99 35
      utils/simulator/Makefile
  63. 102 38
      utils/tply/Makefile

File diff suppressed because it is too large
+ 354 - 613
base/Makefile


+ 43 - 297
base/Makefile.fpc

@@ -2,87 +2,28 @@
 #   Makefile.fpc for Free Pascal Source Tree
 #
 
+[targets]
+dirs=compiler rtl utils packages fcl ide
+
 [defaults]
 defaultrule=info
 
-[rules]
-#####################################################################
-# Config
-#####################################################################
-
-# Try to determine which modules are installed
-MODULES+=$(wildcard compiler)
-MODULES+=$(wildcard rtl)
-MODULES+=$(wildcard utils)
-MODULES+=$(wildcard fcl)
-MODULES+=$(wildcard gtk)
-MODULES+=$(wildcard api)
-MODULES+=$(wildcard fv)
-MODULES+=$(wildcard gdbint)
-MODULES+=$(wildcard ide)
-
-###############################
-# Default paths
-###############################
-
-ifndef RTLDIR
-RTLDIR=rtl/$(OS_TARGET)
-endif
-
-ifndef COMPILERDIR
-COMPILERDIR=compiler
-endif
-
-ifndef UTILSDIR
-UTILSDIR=utils
-endif
-
-ifndef FCLDIR
-FCLDIR=fcl
-endif
-
-ifndef GTKDIR
-GTKDIR=gtk
-endif
-
-ifndef APIDIR
-APIDIR=api
-endif
-
-ifndef FVDIR
-FVDIR=fv
-endif
-
-ifndef GDBDIR
-GDBDIR=gdbint
-endif
-
-ifndef FPINSTDIR
-FPINSTDIR=fpinst
-endif
-
-ifndef IDEDIR
-IDEDIR=ide
-endif
-
-#####################################################################
-# Defaults
-#####################################################################
+[sections]
+none=1
+dirs=1
+tools=1
+exts=1
 
+[postsettings]
 export RELEASE=1
 
 
+[rules]
 #####################################################################
 # Main targets
 #####################################################################
 
-.PHONY: all clean install staticinstall sharedinstall \
-        $(addsuffix _all,$(MODULES)) \
-        $(addsuffix _clean,$(MODULES)) \
-        $(addsuffix _install,$(MODULES)) \
-        $(addsuffix _staticinstall,$(MODULES)) \
-        $(addsuffix _sharedinstall,$(MODULES))\
-        compiler_cycle \
+.PHONY: compiler_cycle \
         idezips ide_allzip ide_gdbzip ide_fullzip ide_fullgdbzip \
         fclzip gtkzip fvzip compilerzip utilszip
 
@@ -90,7 +31,7 @@ info:
         @echo
         @echo Please use one of the following targets:
         @echo
-        @echo $(MODULES)
+        @echo $(DIROBJECTS)
         @echo
         @echo All targets can follow after a _ with:
         @echo all,clean,install,staticinstall,sharedinstall
@@ -98,40 +39,10 @@ info:
         @echo example: make api_staticinstall
         @exit
 
-all: $(addsuffix _all,$(MODULES))
-
-clean: $(addsuffix _clean,$(MODULES))
-
-install: $(addsuffix _install,$(MODULES))
-
-staticinstall: $(addsuffix _staticinstall,$(MODULES))
-
-sharedinstall: $(addsuffix _sharedinstall,$(MODULES))
-
 #####################################################################
 # Dependencies
 #####################################################################
 
-#######################################
-# RTL
-#######################################
-
-rtl_all:
-        $(MAKE) -C $(RTLDIR) all
-
-rtl_clean:
-        $(MAKE) -C $(RTLDIR) clean
-
-rtl_install:
-        $(MAKE) -C $(RTLDIR) install
-
-rtl_staticinstall:
-        $(MAKE) -C $(RTLDIR) staticlibinstall
-
-rtl_sharedinstall:
-        $(MAKE) -C $(RTLDIR) sharedlibinstall
-
-
 #######################################
 # Compiler
 #######################################
@@ -139,173 +50,11 @@ rtl_sharedinstall:
 compiler_cycle:
         $(MAKE) -C $(COMPILERDIR) cycle
 
-compiler_all: rtl_all
-        $(MAKE) -C $(COMPILERDIR) all
-
-compiler_clean:
-        $(MAKE) -C $(COMPILERDIR) distclean
-
-compiler_install:
-        $(MAKE) -C $(COMPILERDIR) install
-
-compiler_installlib:
-        $(MAKE) -C $(COMPILERDIR) installlib
-
-compiler_staticinstall:
-
-compiler_sharedinstall:
-
-
-#######################################
-# Utils
-#######################################
-
-utils_all: rtl_all fcl_all
-        $(MAKE) -C $(UTILSDIR) all
-
-utils_clean:
-        $(MAKE) -C $(UTILSDIR) clean
-
-utils_install:
-        $(MAKE) -C $(UTILSDIR) install
-
-utils_installlib:
-        $(MAKE) -C $(UTILSDIR) installlib
-
-utils_staticinstall:
-
-utils_sharedinstall:
-
-
-#######################################
-# FCL
-#######################################
-
-override FCLDIR:=$(FCLDIR)/$(OS_TARGET)
-
-fcl_all: rtl_all
-        $(MAKE) -C $(FCLDIR) all
-
-fcl_clean:
-        $(MAKE) -C $(FCLDIR) clean
-
-fcl_install:
-        $(MAKE) -C $(FCLDIR) install
-
-fcl_staticinstall:
-        $(MAKE) -C $(FCLDIR) staticlibinstall
-
-fcl_sharedinstall:
-        $(MAKE) -C $(FCLDIR) sharedlibinstall
-
-
-#######################################
-# GTK
-#######################################
-
-gtk_all: rtl_all
-        $(MAKE) -C $(GTKDIR) all
-
-gtk_clean:
-        $(MAKE) -C $(GTKDIR) clean
-
-gtk_install:
-        $(MAKE) -C $(GTKDIR) install
-
-gtk_staticinstall:
-        $(MAKE) -C $(GTKDIR) staticlibinstall
-
-gtk_sharedinstall:
-        $(MAKE) -C $(GTKDIR) sharedlibinstall
-
-
-
-#######################################
-# API
-#######################################
-
-api_all: rtl_all
-        $(MAKE) -C $(APIDIR) all
-
-api_clean:
-        $(MAKE) -C $(APIDIR) clean
-
-api_install:
-        $(MAKE) -C $(APIDIR) install
-
-api_staticinstall:
-        $(MAKE) -C $(APIDIR) staticlibinstall
-
-api_sharedinstall:
-        $(MAKE) -C $(APIDIR) sharedlibinstall
-
-
-#######################################
-# FV
-#######################################
-
-fv_all: rtl_all api_all
-        $(MAKE) -C $(FVDIR) all
-
-fv_clean:
-        $(MAKE) -C $(FVDIR) clean
-
-fv_install:
-        $(MAKE) -C $(FVDIR) install
-
-fv_staticinstall:
-        $(MAKE) -C $(FVDIR) staticlibinstall
-
-fv_sharedinstall:
-        $(MAKE) -C $(FVDIR) sharedlibinstall
-
-
-#######################################
-# GDB
-#######################################
-
-gdbint_all: rtl_all
-        $(MAKE) -C $(GDBDIR) all
-
-gdbint_clean:
-        $(MAKE) -C $(GDBDIR) clean
-
-gdbint_install:
-        $(MAKE) -C $(GDBDIR) install
-
-gdbint_staticinstall:
-        $(MAKE) -C $(GDBDIR) staticlibinstall
-
-gdbint_sharedinstall:
-        $(MAKE) -C $(GDBDIR) sharedlibinstall
-
-
-#######################################
-# FPC fpinst
-#######################################
-
-fpinst_all: rtl_all api_all fv_all
-        $(MAKE) -C $(FPINSTDIR) all
-
-fpinst_clean:
-        $(MAKE) -C $(FPINSTDIR) clean
-
-fpinst_install:
-        $(MAKE) -C $(FPINSTDIR) install
-
-fpinst_staticinstall:
-        $(MAKE) -C $(FPINSTDIR) staticlibinstall
-
-fpinst_sharedinstall:
-        $(MAKE) -C $(FPINSTDIR) sharedlibinstall
-
-
 #######################################
 # IDE
 #######################################
 
-ide_all: rtl_all api_all fv_all
-        $(MAKE) -C $(IDEDIR) all
+IDEDIR=ide
 
 ide_gdb: rtl_all api_all fv_all gdbnt_all
         $(MAKE) -C $(IDEDIR) gdb
@@ -316,18 +65,6 @@ ide_full: rtl_all api_all fv_all
 ide_fullgdb: rtl_all api_all fv_all gdbint_all
         $(MAKE) -C $(IDEDIR) fullgdb
 
-ide_clean:
-        $(MAKE) -C $(IDEDIR) clean
-
-ide_install:
-        $(MAKE) -C $(IDEDIR) install
-
-ide_staticinstall:
-        $(MAKE) -C $(IDEDIR) staticlibinstall
-
-ide_sharedinstall:
-        $(MAKE) -C $(IDEDIR) sharedlibinstall
-
 
 #######################################
 # Install targets
@@ -353,46 +90,55 @@ ZIPTARGET=install
 endif
 
 export ZIPTARGET
-export PACKAGEDIR=$(BASEDIR)
+export DESTZIPDIR:=$(BASEDIR)
 
 idezips: clean ide_allzip ide_gdbzip ide_fullzip ide_fullgdbzip
 
 ide_allzip:
         $(MAKE) ide_clean
         $(MAKE) ide_all
-        $(MAKE) -C $(IDEDIR)/text fpc_zipinstall ZIPNAME=ide-fake-$(PACKAGESUFFIX)
+        $(MAKE) -C ide/text zipinstall ZIPNAME=ide-fake-$(PACKAGESUFFIX)
 ide_gdbzip:
         $(MAKE) ide_clean
         $(MAKE) ide_gdb
-        $(MAKE) -C $(IDEDIR)/text fpc_zipinstall ZIPNAME=ide-gdb-$(PACKAGESUFFIX)
+        $(MAKE) -C ide/text zipinstall ZIPNAME=ide-gdb-$(PACKAGESUFFIX)
 ide_fullzip:
         $(MAKE) ide_clean
         $(MAKE) ide_full
-        $(MAKE) -C $(IDEDIR)/text fpc_zipinstall ZIPNAME=ide-comp-$(PACKAGESUFFIX)
+        $(MAKE) -C ide/text zipinstall ZIPNAME=ide-comp-$(PACKAGESUFFIX)
 ide_fullgdbzip:
         $(MAKE) ide_clean
         $(MAKE) ide_fullgdb
-        $(MAKE) -C $(IDEDIR)/text fpc_zipinstall ZIPNAME=ide-full-$(PACKAGESUFFIX)
+        $(MAKE) -C ide/text zipinstall ZIPNAME=ide-full-$(PACKAGESUFFIX)
+
+fvzip: rtl_clean
+        $(MAKE) rtl_all
+        $(MAKE) -C packages api_clean
+        $(MAKE) -C packages api_all
+        $(MAKE) -C packages api_zipinstall ZIPNAME=fv-$(PACKAGESUFFIX)
+        $(MAKE) -C packages fv_clean
+        $(MAKE) -C packages fv_all
+        $(MAKE) -C packages fv_zipinstalladd ZIPNAME=fv-$(PACKAGESUFFIX)
+
+gtkzip: rtl_clean
+        $(MAKE) rtl_all
+        $(MAKE) -C packages gtk_clean
+        $(MAKE) -C packages gtk_all
+        $(MAKE) -C packages gtk_zipinstall ZIPNAME=gtk-$(PACKAGESUFFIX)
 
-fvzip: rtl_clean api_clean fv_clean
-        $(MAKE) api_all
-        $(MAKE) -C $(APIDIR) fpc_zipinstall ZIPNAME=fv-$(PACKAGESUFFIX)
-        $(MAKE) fv_all
-        $(MAKE) -C $(FVDIR) fpc_zipinstalladd ZIPNAME=fv-$(PACKAGESUFFIX)
+compilerzip: compiler_clean rtl_clean
+        $(MAKE) rtl_all
+        $(MAKE) compiler_all
+        $(MAKE) compiler_zipinstall ZIPTARGET=quickinstall ZIPNAME=compiler-$(PACKAGESUFFIX)
+        $(MAKE) rtl_zipinstalladd ZIPNAME=compiler-$(PACKAGESUFFIX)
 
 fclzip: rtl_clean fcl_clean
+        $(MAKE) rtl_all
         $(MAKE) fcl_all
-        $(MAKE) -C $(FCLDIR) fpc_zipinstall ZIPNAME=fcl-$(PACKAGESUFFIX)
-
-gtkzip: rtl_clean gtk_clean
-        $(MAKE) gtk_all
-        $(MAKE) -C $(GTKDIR) fpc_zipinstall ZIPNAME=gtk-$(PACKAGESUFFIX)
-
-compilerzip: compiler_clean rtl_clean
-        $(MAKE) compiler_all
-        $(MAKE) -C $(COMPILERDIR) fpc_zipinstall ZIPTARGET=quickinstall ZIPNAME=compiler-$(PACKAGESUFFIX)
-        $(MAKE) -C $(RTLDIR) fpc_zipinstalladd ZIPNAME=compiler-$(PACKAGESUFFIX)
+        $(MAKE) fcl_zipinstall ZIPNAME=fcl-$(PACKAGESUFFIX)
 
 utilszip: utils_clean rtl_clean
+        $(MAKE) rtl_all
+        $(MAKE) fcl_all
         $(MAKE) utils_all
-        $(MAKE) -C $(UTILSDIR) fpc_zipinstall ZIPNAME=utils-$(PACKAGESUFFIX)
+        $(MAKE) utils_zipinstall ZIPNAME=utils-$(PACKAGESUFFIX)

+ 95 - 31
compiler/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:07
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -170,6 +183,7 @@ MSGFILES=$(wildcard error*.msg)
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -195,7 +209,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -244,6 +258,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -320,12 +343,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Target dirs
@@ -365,6 +388,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -381,6 +409,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -427,6 +460,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -660,13 +698,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 debug: fpc_debug
 
 smart: fpc_smart
@@ -675,6 +709,8 @@ shared: fpc_shared
 
 showinstall: fpc_showinstall
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -683,13 +719,32 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  debug smart shared showinstall sourceinstall zipinstall zipinstalladd cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # General compile rules
 #####################################################################
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -757,6 +812,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -803,6 +860,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -819,8 +886,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -830,11 +897,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -843,11 +905,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -858,12 +920,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -881,6 +943,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -897,15 +961,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -914,7 +978,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 95 - 31
compiler/new/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:08
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -187,6 +200,7 @@ endif
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -214,7 +228,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -263,6 +277,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -339,12 +362,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -393,6 +416,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -409,6 +437,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -455,6 +488,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -688,13 +726,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 debug: fpc_debug
 
 smart: fpc_smart
@@ -703,6 +737,8 @@ shared: fpc_shared
 
 showinstall: fpc_showinstall
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -711,13 +747,32 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  debug smart shared showinstall sourceinstall zipinstall zipinstalladd cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # General compile rules
 #####################################################################
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -785,6 +840,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -831,6 +888,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -847,8 +914,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -858,11 +925,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -871,11 +933,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -886,12 +948,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -909,6 +971,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -925,15 +989,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -942,7 +1006,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 300 - 51
fcl/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:58
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,105 +131,341 @@ endif
 
 # Targets
 
+override DIROBJECTS+=$(wildcard go32v2 linux win32 os2 tests)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
 
 # Directories
 
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
+
+# Packages
+
 
 # Libraries
 
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
+all: $(OS_TARGET)_all
+
+debug: $(OS_TARGET)_debug
+
+examples: $(OS_TARGET)_examples
+
+test: $(OS_TARGET)_test
+
+smart: $(OS_TARGET)_smart
+
+shared: $(OS_TARGET)_shared
 
-showinstall: fpc_showinstall
+showinstall: $(OS_TARGET)_showinstall
 
-zipinstall: fpc_zipinstall
+install: $(OS_TARGET)_install
 
-zipinstalladd: fpc_zipinstalladd
+sourceinstall: $(OS_TARGET)_sourceinstall
 
-clean_all: fpc_clean_all
+zipinstall: $(OS_TARGET)_zipinstall
 
-depend: fpc_depend
+zipinstalladd: $(OS_TARGET)_zipinstalladd
 
-info: fpc_info
+clean: $(OS_TARGET)_clean
+
+cleanall: $(OS_TARGET)_cleanall
+
+depend: $(OS_TARGET)_depend
+
+info: $(OS_TARGET)_info
+
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
 
 #####################################################################
-# Users rules
+# Package depends
 #####################################################################
 
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
+
+# Target Dirs
+
+OBJECTDIRGO32V2=1
+OBJECTDIRLINUX=1
+OBJECTDIRWIN32=1
+OBJECTDIROS2=1
+OBJECTDIRTESTS=1
+
+# Dir go32v2
+
+ifdef OBJECTDIRGO32V2
+.PHONY:  go32v2_all go32v2_debug go32v2_examples go32v2_test go32v2_smart go32v2_shared go32v2_showinstall go32v2_install go32v2_sourceinstall go32v2_zipinstall go32v2_zipinstalladd go32v2_clean go32v2_cleanall go32v2_depend go32v2_info
+
+go32v2_all:
+	$(MAKE) -C go32v2 all
 
-all:
-	$(MAKE) -C $(OS_TARGET) all
+go32v2_debug:
+	$(MAKE) -C go32v2 debug
 
-clean:
+go32v2_examples:
+	$(MAKE) -C go32v2 examples
+
+go32v2_test:
+	$(MAKE) -C go32v2 test
+
+go32v2_smart:
+	$(MAKE) -C go32v2 smart
+
+go32v2_shared:
+	$(MAKE) -C go32v2 shared
+
+go32v2_showinstall:
+	$(MAKE) -C go32v2 showinstall
+
+go32v2_install:
+	$(MAKE) -C go32v2 install
+
+go32v2_sourceinstall:
+	$(MAKE) -C go32v2 sourceinstall
+
+go32v2_zipinstall:
+	$(MAKE) -C go32v2 zipinstall
+
+go32v2_zipinstalladd:
+	$(MAKE) -C go32v2 zipinstalladd
+
+go32v2_clean:
 	$(MAKE) -C go32v2 clean
+
+go32v2_cleanall:
+	$(MAKE) -C go32v2 cleanall
+
+go32v2_depend:
+	$(MAKE) -C go32v2 depend
+
+go32v2_info:
+	$(MAKE) -C go32v2 info
+endif
+
+# Dir linux
+
+ifdef OBJECTDIRLINUX
+.PHONY:  linux_all linux_debug linux_examples linux_test linux_smart linux_shared linux_showinstall linux_install linux_sourceinstall linux_zipinstall linux_zipinstalladd linux_clean linux_cleanall linux_depend linux_info
+
+linux_all:
+	$(MAKE) -C linux all
+
+linux_debug:
+	$(MAKE) -C linux debug
+
+linux_examples:
+	$(MAKE) -C linux examples
+
+linux_test:
+	$(MAKE) -C linux test
+
+linux_smart:
+	$(MAKE) -C linux smart
+
+linux_shared:
+	$(MAKE) -C linux shared
+
+linux_showinstall:
+	$(MAKE) -C linux showinstall
+
+linux_install:
+	$(MAKE) -C linux install
+
+linux_sourceinstall:
+	$(MAKE) -C linux sourceinstall
+
+linux_zipinstall:
+	$(MAKE) -C linux zipinstall
+
+linux_zipinstalladd:
+	$(MAKE) -C linux zipinstalladd
+
+linux_clean:
 	$(MAKE) -C linux clean
+
+linux_cleanall:
+	$(MAKE) -C linux cleanall
+
+linux_depend:
+	$(MAKE) -C linux depend
+
+linux_info:
+	$(MAKE) -C linux info
+endif
+
+# Dir win32
+
+ifdef OBJECTDIRWIN32
+.PHONY:  win32_all win32_debug win32_examples win32_test win32_smart win32_shared win32_showinstall win32_install win32_sourceinstall win32_zipinstall win32_zipinstalladd win32_clean win32_cleanall win32_depend win32_info
+
+win32_all:
+	$(MAKE) -C win32 all
+
+win32_debug:
+	$(MAKE) -C win32 debug
+
+win32_examples:
+	$(MAKE) -C win32 examples
+
+win32_test:
+	$(MAKE) -C win32 test
+
+win32_smart:
+	$(MAKE) -C win32 smart
+
+win32_shared:
+	$(MAKE) -C win32 shared
+
+win32_showinstall:
+	$(MAKE) -C win32 showinstall
+
+win32_install:
+	$(MAKE) -C win32 install
+
+win32_sourceinstall:
+	$(MAKE) -C win32 sourceinstall
+
+win32_zipinstall:
+	$(MAKE) -C win32 zipinstall
+
+win32_zipinstalladd:
+	$(MAKE) -C win32 zipinstalladd
+
+win32_clean:
 	$(MAKE) -C win32 clean
-	$(MAKE) -C os2 clean
-	$(MAKE) -C tests clean
 
-install:
-	$(MAKE) -C $(OS_TARGET) install
+win32_cleanall:
+	$(MAKE) -C win32 cleanall
 
-staticlib:
-	$(MAKE) -C $(OS_TARGET) staticlib
+win32_depend:
+	$(MAKE) -C win32 depend
 
-sharedlib:
-	$(MAKE) -C $(OS_TARGET) sharedlib
+win32_info:
+	$(MAKE) -C win32 info
+endif
 
-libsclean:
-	$(MAKE) -C $(OS_TARGET) libsclean
+# Dir os2
 
-staticinstall:
-	$(MAKE) -C $(OS_TARGET) staticinstall
+ifdef OBJECTDIROS2
+.PHONY:  os2_all os2_debug os2_examples os2_test os2_smart os2_shared os2_showinstall os2_install os2_sourceinstall os2_zipinstall os2_zipinstalladd os2_clean os2_cleanall os2_depend os2_info
 
-sharedinstall:
-	$(MAKE) -C $(OS_TARGET) sharedinstall
+os2_all:
+	$(MAKE) -C os2 all
 
-libinstall:
-	$(MAKE) -C $(OS_TARGET) libinstall
+os2_debug:
+	$(MAKE) -C os2 debug
 
+os2_examples:
+	$(MAKE) -C os2 examples
 
-#####################################################################
-# Dependencies
-#####################################################################
+os2_test:
+	$(MAKE) -C os2 test
 
-.PHONY: tests examples go32v2 linux os win32
+os2_smart:
+	$(MAKE) -C os2 smart
 
-#
-# Examples
-#
-examples: tests
+os2_shared:
+	$(MAKE) -C os2 shared
+
+os2_showinstall:
+	$(MAKE) -C os2 showinstall
 
-tests: all
+os2_install:
+	$(MAKE) -C os2 install
+
+os2_sourceinstall:
+	$(MAKE) -C os2 sourceinstall
+
+os2_zipinstall:
+	$(MAKE) -C os2 zipinstall
+
+os2_zipinstalladd:
+	$(MAKE) -C os2 zipinstalladd
+
+os2_clean:
+	$(MAKE) -C os2 clean
+
+os2_cleanall:
+	$(MAKE) -C os2 cleanall
+
+os2_depend:
+	$(MAKE) -C os2 depend
+
+os2_info:
+	$(MAKE) -C os2 info
+endif
+
+# Dir tests
+
+ifdef OBJECTDIRTESTS
+.PHONY:  tests_all tests_debug tests_examples tests_test tests_smart tests_shared tests_showinstall tests_install tests_sourceinstall tests_zipinstall tests_zipinstalladd tests_clean tests_cleanall tests_depend tests_info
+
+tests_all:
 	$(MAKE) -C tests all
 
+tests_debug:
+	$(MAKE) -C tests debug
 
-#
-# Specific OS
-#
-go32v2:
-	$(MAKE) -C go32v2
+tests_examples:
+	$(MAKE) -C tests examples
+
+tests_test:
+	$(MAKE) -C tests test
+
+tests_smart:
+	$(MAKE) -C tests smart
+
+tests_shared:
+	$(MAKE) -C tests shared
+
+tests_showinstall:
+	$(MAKE) -C tests showinstall
+
+tests_install:
+	$(MAKE) -C tests install
+
+tests_sourceinstall:
+	$(MAKE) -C tests sourceinstall
 
-linux:
-	$(MAKE) -C linux
+tests_zipinstall:
+	$(MAKE) -C tests zipinstall
 
-os2:
-	$(MAKE) -C os2
+tests_zipinstalladd:
+	$(MAKE) -C tests zipinstalladd
+
+tests_clean:
+	$(MAKE) -C tests clean
+
+tests_cleanall:
+	$(MAKE) -C tests cleanall
+
+tests_depend:
+	$(MAKE) -C tests depend
+
+tests_info:
+	$(MAKE) -C tests info
+endif
 
-win32:
-	$(MAKE) -C win32

+ 5 - 62
fcl/Makefile.fpc

@@ -2,68 +2,11 @@
 #   Makefile.fpc for Free Component Library
 #
 
+[targets]
+dirs=go32v2 linux win32 os2 tests
+
 [sections]
 none=1
 
-[rules]
-all:
-        $(MAKE) -C $(OS_TARGET) all
-
-clean:
-        $(MAKE) -C go32v2 clean
-        $(MAKE) -C linux clean
-        $(MAKE) -C win32 clean
-        $(MAKE) -C os2 clean
-        $(MAKE) -C tests clean
-
-install:
-        $(MAKE) -C $(OS_TARGET) install
-
-staticlib:
-        $(MAKE) -C $(OS_TARGET) staticlib
-
-sharedlib:
-        $(MAKE) -C $(OS_TARGET) sharedlib
-
-libsclean:
-        $(MAKE) -C $(OS_TARGET) libsclean
-
-staticinstall:
-        $(MAKE) -C $(OS_TARGET) staticinstall
-
-sharedinstall:
-        $(MAKE) -C $(OS_TARGET) sharedinstall
-
-libinstall:
-        $(MAKE) -C $(OS_TARGET) libinstall
-
-
-#####################################################################
-# Dependencies
-#####################################################################
-
-.PHONY: tests examples go32v2 linux os win32
-
-#
-# Examples
-#
-examples: tests
-
-tests: all
-        $(MAKE) -C tests all
-
-
-#
-# Specific OS
-#
-go32v2:
-        $(MAKE) -C go32v2
-
-linux:
-        $(MAKE) -C linux
-
-os2:
-        $(MAKE) -C os2
-
-win32:
-        $(MAKE) -C win32
+[defaults]
+defaultdir=$(OS_TARGET)

+ 286 - 223
fcl/db/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:00
 #
 
 defaultrule: all
@@ -108,6 +108,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -117,6 +121,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -124,17 +137,18 @@ endif
 
 # Targets
 
-UNITOBJECTS=db ddg_ds ddg_rec
-EXEOBJECTS=testds createds tested
+override UNITOBJECTS+=db ddg_ds ddg_rec mysqldb
+override EXAMPLEOBJECTS+=testds createds mtest
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
-# DEFAULTUNITS=1
+
 override NEEDOPT=-S2
 
 # Directories
@@ -142,18 +156,24 @@ override NEEDOPT=-S2
 ifndef FPCDIR
 FPCDIR=../..
 endif
-override NEEDUNITDIR=../$(OS_TARGET)
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+override NEEDUNITDIR+=$(FPCDIR)/fcl/$(OS_TARGET)
+
 # Libraries
 
 override NEEDGCCLIB=1
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -166,6 +186,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -175,25 +200,13 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
 endif
 
 # On linux, try to find where libgcc.a is.
@@ -203,15 +216,8 @@ export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 }
 endif
 endif
 
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -223,16 +229,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -242,15 +238,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
 endif
 
-# Where the .msg files will be stored
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
+endif
+
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -261,42 +270,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -312,17 +288,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -340,8 +315,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -366,6 +346,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -382,6 +367,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -428,6 +418,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -438,16 +433,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -483,6 +468,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -621,28 +636,26 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+examples: fpc_examples
 
-showinstall: fpc_showinstall
+test: fpc_test
 
-install: fpc_install
+smart: fpc_smart
+
+shared: fpc_shared
 
-staticinstall: fpc_staticinstall
+showinstall: fpc_showinstall
 
-sharedinstall: fpc_sharedinstall
+install: fpc_install
 
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -650,41 +663,80 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+ifneq ($(wildcard $(FCLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(FCLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=fcl
+fcl_package:
+	$(MAKE) -C $(FCLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Units
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Examples
+#####################################################################
+
+.PHONY: fpc_examples fpc_test
+
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+
+override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
+
+fpc_examples: all $(EXAMPLEFILES)
+
+fpc_test: examples
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -701,25 +753,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -734,56 +782,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -800,8 +870,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -811,11 +881,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -824,11 +889,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -839,12 +904,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -853,48 +918,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -903,7 +962,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -916,6 +975,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -928,33 +1001,23 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
-vpath %$(PASEXT) $(INC) $(XML)
-
-INCFILES=
-
 db$(PPUEXT): db.pp fields.inc dataset.inc dbs.inc
 
 ddg_ds$(PPUEXT): db$(PPUEXT) ddg_rec$(PPUEXT) ddg_ds$(PASEXT)
 
 testds$(EXEEXT): ddg_ds$(PPUEXT) testds$(PASEXT)
 
-tested$(EXEEXT): ddg_ds$(PPUEXT) tested$(PASEXT)
-
 createds$(EXEEXT): createds$(PASEXT) ddg_rec$(PPUEXT)
 
 mysqldb$(PPUEXT): db$(PPUEXT) mysqldb$(PASEXT)

+ 5 - 7
fcl/db/Makefile.fpc

@@ -4,26 +4,24 @@
 
 [targets]
 units=db ddg_ds ddg_rec mysqldb
-programs=testds createds mtest
+examples=testds createds mtest
+
+[packages]
+fcl=1
 
 [dirs]
 fpcdir=../..
-unitdir=../$(OS_TARGET)
 targetdir=.
 
 [libs]
 libgcc=1
 
 [defaults]
-defaultunits=1
 defaultcpu=i386
 defaultoptions=-S2
 
-[rules]
-vpath %$(PASEXT) $(INC) $(XML)
-
-INCFILES=
 
+[rules]
 db$(PPUEXT): db.pp fields.inc dataset.inc dbs.inc
 
 ddg_ds$(PPUEXT): db$(PPUEXT) ddg_rec$(PPUEXT) ddg_ds$(PASEXT)

+ 258 - 224
fcl/go32v2/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:59
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -136,35 +149,42 @@ include $(XML)/Makefile.inc
 
 # Targets
 
-UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS)
+override UNITOBJECTS+=classes $(INCUNITS) $(XMLUNITS)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 override NEEDOPT=-S2
 
 # Directories
 
+vpath %$(PASEXT) $(INC) $(XML)
 ifndef FPCDIR
 FPCDIR=../..
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -177,6 +197,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -186,43 +211,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -234,16 +233,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -253,15 +242,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
 endif
 
-# Where the .msg files will be stored
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
+endif
+
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -272,42 +274,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -323,17 +292,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -347,8 +315,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -373,6 +346,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -389,6 +367,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -435,6 +418,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -445,16 +433,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -490,6 +468,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -628,28 +636,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -657,41 +659,58 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Units
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -708,25 +727,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -741,56 +756,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
-endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -807,8 +844,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -818,11 +855,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -831,11 +863,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -846,12 +878,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -860,48 +892,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -910,7 +936,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -923,6 +949,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -935,23 +975,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 1 - 4
fcl/go32v2/Makefile.fpc

@@ -3,7 +3,6 @@
 #
 
 [defaults]
-defaultunits=1
 defaulttarget=go32v2
 defaultcpu=i386
 defaultoptions=-S2
@@ -12,6 +11,7 @@ defaultoptions=-S2
 fpcdir=../..
 targetdir=.
 incdir=$(INC)
+sourcesdir=$(INC) $(XML)
 
 [targets]
 units=classes $(INCUNITS) $(XMLUNITS)
@@ -29,8 +29,6 @@ include $(XML)/Makefile.inc
 
 
 [rules]
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)
@@ -38,4 +36,3 @@ classes$(PPUEXT): $(INCFILES) classes$(PASEXT)
 inifiles$(PPUEXT): classes$(PPUEXT) inifiles$(PASEXT)
 
 ezcgi$(PPUEXT): ezcgi$(PASEXT) ezcgi.inc
-

+ 258 - 224
fcl/linux/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:59
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -136,35 +149,42 @@ include $(XML)/Makefile.inc
 
 # Targets
 
-UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS)
+override UNITOBJECTS+=classes $(INCUNITS) $(XMLUNITS)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 override NEEDOPT=-S2
 
 # Directories
 
+vpath %$(PASEXT) $(INC) $(XML)
 ifndef FPCDIR
 FPCDIR=../..
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -177,6 +197,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -186,43 +211,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -234,16 +233,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -253,15 +242,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
 endif
 
-# Where the .msg files will be stored
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
+endif
+
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -272,42 +274,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -323,17 +292,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -347,8 +315,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -373,6 +346,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -389,6 +367,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -435,6 +418,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -445,16 +433,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -490,6 +468,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -628,28 +636,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -657,41 +659,58 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Units
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -708,25 +727,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -741,56 +756,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
-endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -807,8 +844,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -818,11 +855,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -831,11 +863,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -846,12 +878,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -860,48 +892,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -910,7 +936,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -923,6 +949,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -935,23 +975,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 1 - 3
fcl/linux/Makefile.fpc

@@ -3,7 +3,6 @@
 #
 
 [defaults]
-defaultunits=1
 defaulttarget=linux
 defaultcpu=i386
 defaultoptions=-S2
@@ -12,6 +11,7 @@ defaultoptions=-S2
 fpcdir=../..
 targetdir=.
 incdir=$(INC)
+sourcesdir=$(INC) $(XML)
 
 [targets]
 units=classes $(INCUNITS) $(XMLUNITS)
@@ -29,8 +29,6 @@ include $(XML)/Makefile.inc
 
 
 [rules]
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 258 - 224
fcl/os2/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:00
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -136,35 +149,42 @@ include $(XML)/Makefile.inc
 
 # Targets
 
-UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS)
+override UNITOBJECTS+=classes $(INCUNITS) $(XMLUNITS)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 override NEEDOPT=-S2
 
 # Directories
 
+vpath %$(PASEXT) $(INC) $(XML)
 ifndef FPCDIR
 FPCDIR=../..
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -177,6 +197,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -186,43 +211,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -234,16 +233,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -253,15 +242,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
 endif
 
-# Where the .msg files will be stored
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
+endif
+
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -272,42 +274,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -323,17 +292,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -347,8 +315,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -373,6 +346,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -389,6 +367,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -435,6 +418,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -445,16 +433,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -490,6 +468,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -628,28 +636,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -657,41 +659,58 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Units
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -708,25 +727,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -741,56 +756,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
-endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -807,8 +844,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -818,11 +855,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -831,11 +863,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -846,12 +878,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -860,48 +892,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -910,7 +936,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -923,6 +949,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -935,23 +975,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 1 - 3
fcl/os2/Makefile.fpc

@@ -3,7 +3,6 @@
 #
 
 [defaults]
-defaultunits=1
 defaulttarget=os2
 defaultcpu=i386
 defaultoptions=-S2
@@ -12,6 +11,7 @@ defaultoptions=-S2
 fpcdir=../..
 targetdir=.
 incdir=$(INC)
+sourcesdir=$(INC) $(XML)
 
 [targets]
 units=classes $(INCUNITS) $(XMLUNITS)
@@ -29,8 +29,6 @@ include $(XML)/Makefile.inc
 
 
 [rules]
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 303 - 226
fcl/shedit/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:59
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,12 +131,12 @@ endif
 
 # Targets
 
-UNITOBJECTS=doc_text shedit sh_pas sh_xml
+override UNITOBJECTS+=doc_text shedit sh_pas sh_xml
 ifeq ($(OS_TARGET),linux)
-EXEOBJECTS+=gtkdemo
+override EXEOBJECTS+=gtkdemo
 endif
 ifeq ($(OS_TARGET),win32)
-EXEOBJECTS+=gtkdemo
+override EXEOBJECTS+=gtkdemo
 endif
 
 # Clean
@@ -131,27 +144,40 @@ endif
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
 ifndef FPCDIR
 FPCDIR=../..
 endif
-override NEEDUNITDIR=$(FPCDIR)/gtk ../$(OS_TARGET)
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+ifeq ($(OS_TARGET),linux)
+override PACKAGES+=gtk
+endif
+ifeq ($(OS_TARGET),win32)
+override PACKAGES+=gtk
+endif
+override NEEDUNITDIR+=$(FPCDIR)/fcl/$(OS_TARGET)
+override NEEDUNITDIR+=$(addprefix $(PACKAGEDIR)/,$(PACKAGES))
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -164,6 +190,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -173,43 +204,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -221,16 +226,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -240,15 +235,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -259,42 +267,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -310,17 +285,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -333,8 +303,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -359,6 +334,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -375,6 +355,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -421,6 +406,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -431,16 +421,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -476,6 +456,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -614,28 +624,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
+
+smart: fpc_smart
 
-sharedlib: fpc_sharedlib
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -643,41 +647,96 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+ifneq ($(wildcard $(FCLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(FCLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=fcl
+fcl_package:
+	$(MAKE) -C $(FCLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+ifeq ($(OS_TARGET),linux)
+PACKAGEGTK=1
+endif
+ifeq ($(OS_TARGET),win32)
+PACKAGEGTK=1
+endif
+ifdef PACKAGEGTK
+ifneq ($(wildcard $(PACKAGEDIR)/gtk),)
+ifeq ($(wildcard $(PACKAGEDIR)/gtk/$(FPCMAKED)),)
+override COMPILEPACKAGES+=gtk
+gtk_package:
+	$(MAKE) -C $(PACKAGEDIR)/gtk all
+endif
+endif
+endif
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY:  $(OS_TARGET)_package $(OS_TARGET)_package gtk_package
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+#####################################################################
+# Units
+#####################################################################
 
-fpc_loaders: $(LOADEROFILES)
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
+
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
+#####################################################################
+# Exes
+#####################################################################
+
+.PHONY: fpc_exes
+
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
+
 fpc_exes: $(EXEFILES)
 
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
+
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -694,25 +753,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -727,56 +782,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -793,8 +870,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -804,11 +881,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -817,11 +889,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -832,12 +904,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -846,48 +918,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
+endif
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -896,7 +962,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -909,6 +975,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -921,13 +1001,10 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 

+ 5 - 4
fcl/shedit/Makefile.fpc

@@ -7,11 +7,12 @@ units=doc_text shedit sh_pas sh_xml
 programs_win32=gtkdemo
 programs_linux=gtkdemo
 
+[packages]
+fcl=1
+packages_win32=gtk
+packages_linux=gtk
+
 [dirs]
 fpcdir=../..
-unitdir=$(FPCDIR)/gtk ../$(OS_TARGET)
 targetdir=.
 
-[defaults]
-defaultunits=1
-

+ 268 - 223
fcl/tests/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:59
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,17 +131,18 @@ endif
 
 # Targets
 
-EXEOBJECTS=stringl dparser fstream mstream list threads testrtf cfgtest xmldump htdump testcgi tidea b64test b64test2 b64enc b64dec restest
+override EXEOBJECTS+=stringl dparser fstream mstream list threads testrtf cfgtest xmldump htdump testcgi tidea b64test b64test2 b64enc b64dec restest
 ifeq ($(OS_TARGET),win32)
-EXEOBJECTS+=testz testz2
+override EXEOBJECTS+=testz testz2
 endif
 
 # Clean
 
-EXTRACLEANFILES=restest.rst
+override EXTRACLEANFILES+=restest.rst
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -139,17 +153,23 @@ override NEEDOPT=-S2
 ifndef FPCDIR
 FPCDIR=../..
 endif
-override NEEDUNITDIR=../$(OS_TARGET)
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+override NEEDUNITDIR+=$(FPCDIR)/fcl/$(OS_TARGET)
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -162,6 +182,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -171,43 +196,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -219,16 +218,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -238,15 +227,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -257,42 +259,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -308,17 +277,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -331,8 +299,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -357,6 +330,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -373,6 +351,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -419,6 +402,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -429,16 +417,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -474,6 +452,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -612,28 +620,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
+
+smart: fpc_smart
 
-sharedlib: fpc_sharedlib
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -641,41 +643,66 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+ifneq ($(wildcard $(FCLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(FCLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=fcl
+fcl_package:
+	$(MAKE) -C $(FCLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Exes
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_exes
 
-fpc_loaders: $(LOADEROFILES)
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
-fpc_units: $(UNITPPUFILES)
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
 
 fpc_exes: $(EXEFILES)
 
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
+
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -692,25 +719,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -725,56 +748,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
+endif
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -791,8 +836,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -802,11 +847,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -815,11 +855,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -830,12 +870,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -844,48 +884,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -894,7 +928,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -907,6 +941,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -919,13 +967,10 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 

+ 3 - 2
fcl/tests/Makefile.fpc

@@ -11,11 +11,12 @@ programs_win32=testz testz2
 [clean]
 files=restest.rst
 
+[packages]
+fcl=1
+
 [dirs]
 fpcdir=../..
-unitdir=../$(OS_TARGET)
 targetdir=.
 
 [defaults]
 defaultoptions=-S2
-

+ 258 - 224
fcl/win32/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:52
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:58
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -136,35 +149,42 @@ include $(XML)/Makefile.inc
 
 # Targets
 
-UNITOBJECTS=classes $(INCUNITS) $(XMLUNITS) zlib zstream
+override UNITOBJECTS+=classes $(INCUNITS) $(XMLUNITS) zlib zstream
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 override NEEDOPT=-S2
 
 # Directories
 
+vpath %$(PASEXT) $(INC) $(XML)
 ifndef FPCDIR
 FPCDIR=../..
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -177,6 +197,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -186,43 +211,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -234,16 +233,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -253,15 +242,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
 endif
 
-# Where the .msg files will be stored
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
+endif
+
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -272,42 +274,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -323,17 +292,16 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
 ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -347,8 +315,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -373,6 +346,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -389,6 +367,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -435,6 +418,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -445,16 +433,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -490,6 +468,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -628,28 +636,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -657,41 +659,58 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.PHONY:  $(OS_TARGET)_package
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+#####################################################################
+# Units
+#####################################################################
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+.PHONY: fpc_units
+
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -708,25 +727,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -741,56 +756,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
+endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
+endif
 endif
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
-endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -807,8 +844,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -818,11 +855,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -831,11 +863,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -846,12 +878,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -860,48 +892,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
+endif
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
-
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -910,7 +936,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -923,6 +949,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -935,23 +975,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 1 - 3
fcl/win32/Makefile.fpc

@@ -3,7 +3,6 @@
 #
 
 [defaults]
-defaultunits=1
 defaulttarget=win32
 defaultcpu=i386
 defaultoptions=-S2
@@ -12,6 +11,7 @@ defaultoptions=-S2
 fpcdir=../..
 targetdir=.
 incdir=$(INC)
+sourcesdir=$(INC) $(XML)
 
 [targets]
 units=classes $(INCUNITS) $(XMLUNITS) zlib zstream
@@ -29,8 +29,6 @@ include $(XML)/Makefile.inc
 
 
 [rules]
-vpath %$(PASEXT) $(INC) $(XML)
-
 INCFILES=$(addprefix $(INC)/,$(INCNAMES))
 
 classes$(PPUEXT): $(INCFILES) classes$(PASEXT)

+ 54 - 8
ide/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:13
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:01
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-DIROBJECTS+=$(wildcard fake text)
+override DIROBJECTS+=$(wildcard fake text)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -142,13 +156,9 @@ endif
 
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 debug: $(addsuffix _debug,$(DIROBJECTS))
 
 examples: $(addsuffix _examples,$(DIROBJECTS))
@@ -163,6 +173,8 @@ showinstall: $(addsuffix _showinstall,$(DIROBJECTS))
 
 install: $(addsuffix _install,$(DIROBJECTS))
 
+sourceinstall: $(addsuffix _sourceinstall,$(DIROBJECTS))
+
 zipinstall: $(addsuffix _zipinstall,$(DIROBJECTS))
 
 zipinstalladd: $(addsuffix _zipinstalladd,$(DIROBJECTS))
@@ -175,9 +187,33 @@ depend: $(addsuffix _depend,$(DIROBJECTS))
 
 info: $(addsuffix _info,$(DIROBJECTS))
 
+.PHONY:  debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
+
+# Target Dirs
+
+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_zipinstall fake_zipinstalladd fake_clean fake_cleanall fake_depend fake_info
+
 fake_all:
 	$(MAKE) -C fake all
 
@@ -202,6 +238,9 @@ fake_showinstall:
 fake_install:
 	$(MAKE) -C fake install
 
+fake_sourceinstall:
+	$(MAKE) -C fake sourceinstall
+
 fake_zipinstall:
 	$(MAKE) -C fake zipinstall
 
@@ -219,10 +258,13 @@ fake_depend:
 
 fake_info:
 	$(MAKE) -C fake info
-
+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_zipinstall text_zipinstalladd text_clean text_cleanall text_depend text_info
+
 text_all:
 	$(MAKE) -C text all
 
@@ -247,6 +289,9 @@ text_showinstall:
 text_install:
 	$(MAKE) -C text install
 
+text_sourceinstall:
+	$(MAKE) -C text sourceinstall
+
 text_zipinstall:
 	$(MAKE) -C text zipinstall
 
@@ -264,6 +309,7 @@ text_depend:
 
 text_info:
 	$(MAKE) -C text info
+endif
 
 #####################################################################
 # Users rules

+ 54 - 8
ide/fake/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:13
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:01
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-DIROBJECTS+=$(wildcard compiler gdb)
+override DIROBJECTS+=$(wildcard compiler gdb)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -142,13 +156,9 @@ endif
 
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: $(addsuffix _all,$(DIROBJECTS))
 
 debug: $(addsuffix _debug,$(DIROBJECTS))
@@ -165,6 +175,8 @@ showinstall: $(addsuffix _showinstall,$(DIROBJECTS))
 
 install: $(addsuffix _install,$(DIROBJECTS))
 
+sourceinstall: $(addsuffix _sourceinstall,$(DIROBJECTS))
+
 zipinstall: $(addsuffix _zipinstall,$(DIROBJECTS))
 
 zipinstalladd: $(addsuffix _zipinstalladd,$(DIROBJECTS))
@@ -177,9 +189,33 @@ depend: $(addsuffix _depend,$(DIROBJECTS))
 
 info: $(addsuffix _info,$(DIROBJECTS))
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
+
+# Target Dirs
+
+OBJECTDIRCOMPILER=1
+OBJECTDIRGDB=1
 
 # Dir compiler
 
+ifdef OBJECTDIRCOMPILER
+.PHONY:  compiler_all compiler_debug compiler_examples compiler_test compiler_smart compiler_shared compiler_showinstall compiler_install compiler_sourceinstall compiler_zipinstall compiler_zipinstalladd compiler_clean compiler_cleanall compiler_depend compiler_info
+
 compiler_all:
 	$(MAKE) -C compiler all
 
@@ -204,6 +240,9 @@ compiler_showinstall:
 compiler_install:
 	$(MAKE) -C compiler install
 
+compiler_sourceinstall:
+	$(MAKE) -C compiler sourceinstall
+
 compiler_zipinstall:
 	$(MAKE) -C compiler zipinstall
 
@@ -221,10 +260,13 @@ compiler_depend:
 
 compiler_info:
 	$(MAKE) -C compiler info
-
+endif
 
 # Dir gdb
 
+ifdef OBJECTDIRGDB
+.PHONY:  gdb_all gdb_debug gdb_examples gdb_test gdb_smart gdb_shared gdb_showinstall gdb_install gdb_sourceinstall gdb_zipinstall gdb_zipinstalladd gdb_clean gdb_cleanall gdb_depend gdb_info
+
 gdb_all:
 	$(MAKE) -C gdb all
 
@@ -249,6 +291,9 @@ gdb_showinstall:
 gdb_install:
 	$(MAKE) -C gdb install
 
+gdb_sourceinstall:
+	$(MAKE) -C gdb sourceinstall
+
 gdb_zipinstall:
 	$(MAKE) -C gdb zipinstall
 
@@ -266,4 +311,5 @@ gdb_depend:
 
 gdb_info:
 	$(MAKE) -C gdb info
+endif
 

+ 92 - 28
ide/fake/compiler/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:14
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:01
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-UNITOBJECTS+=browcol compiler systems version comphook globtype tokens
+override UNITOBJECTS+=browcol compiler systems version comphook globtype tokens
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -143,7 +157,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -170,6 +184,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -274,6 +297,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -290,6 +318,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -336,6 +369,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -549,13 +587,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -568,6 +602,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -578,6 +614,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -586,7 +638,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -598,7 +650,10 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -666,6 +721,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -712,6 +769,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -728,8 +795,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -739,11 +806,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -752,11 +814,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -767,12 +829,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -790,6 +852,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -806,15 +870,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -823,7 +887,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 92 - 28
ide/fake/gdb/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:14
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:01
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-UNITOBJECTS+=gdbcon gdbint
+override UNITOBJECTS+=gdbcon gdbint
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -143,7 +157,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -170,6 +184,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -274,6 +297,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -290,6 +318,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -336,6 +369,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -549,13 +587,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -568,6 +602,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -578,6 +614,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -586,7 +638,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -598,7 +650,10 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -666,6 +721,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -712,6 +769,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -728,8 +795,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -739,11 +806,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -752,11 +814,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -767,12 +829,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -790,6 +852,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -806,15 +870,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -823,7 +887,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 16 - 1
ide/fake/gdb/gdbint.pas

@@ -86,6 +86,8 @@ type
     { functions }
     function  error:boolean;
     function  error_num:longint;
+    procedure DebuggerScreen;
+    procedure UserScreen;
     { Hooks }
     procedure DoSelectSourceline(const fn:string;line:longint);virtual;
     procedure DoStartSession;virtual;
@@ -138,6 +140,16 @@ begin
 end;
 
 
+procedure TGDBInterface.DebuggerScreen;
+begin
+end;
+
+
+procedure TGDBInterface.UserScreen;
+begin
+end;
+
+
 procedure TGDBInterface.DoSelectSourceline(const fn:string;line:longint);
 begin
 end;
@@ -274,7 +286,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.5  1999-09-10 08:44:20  peter
+  Revision 1.6  1999-11-25 20:22:59  peter
+    * package dependencies
+
+  Revision 1.5  1999/09/10 08:44:20  peter
     * updated
 
   Revision 1.4  1999/08/17 13:25:17  peter

+ 131 - 36
ide/text/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:10
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:01
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -132,7 +145,7 @@ GDBINT=gdbint
 endif
 
 ifeq ($(GDB),1)
-override GDBUNITDIR+=$(PACKAGEDIR)/$(GDBINT)
+GDBUNITDIR+=$(PACKAGEDIR)/$(GDBINT)
 GDBLIBDIR+=$(PACKAGEDIR)/$(GDBINT)/libgdb/$(OS_TARGET)
 GDBOBJDIR+=$(PACKAGEDIR)/$(GDBINT)/libgdb/$(OS_TARGET)
 ifeq ($(OS_TARGET),go32v2)
@@ -146,13 +159,14 @@ endif
 
 # Targets
 
-EXEOBJECTS+=fp
+override EXEOBJECTS+=fp
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -171,7 +185,7 @@ override NEEDOBJDIR=$(GDBOBJDIR)
 
 # Packages
 
-PACKAGES=api fv
+override PACKAGES+=api fv gdbint
 override NEEDUNITDIR+=$(addprefix $(PACKAGEDIR)/,$(PACKAGES))
 
 # Libraries
@@ -180,7 +194,7 @@ override NEEDGCCLIB=1
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -207,6 +221,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 # On linux, try to find where libgcc.a is.
 ifdef inlinux
 ifndef GCCLIBDIR
@@ -286,12 +309,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -343,6 +366,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -359,6 +387,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -405,6 +438,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -618,13 +656,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -635,6 +669,8 @@ shared: fpc_shared
 
 showinstall: fpc_showinstall
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -643,14 +679,61 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall sourceinstall zipinstall zipinstalladd cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+PACKAGEAPI=1
+PACKAGEFV=1
+PACKAGEGDBINT=1
+ifdef PACKAGEAPI
+ifneq ($(wildcard $(PACKAGEDIR)/api),)
+ifeq ($(wildcard $(PACKAGEDIR)/api/$(FPCMAKED)),)
+override COMPILEPACKAGES+=api
+api_package:
+	$(MAKE) -C $(PACKAGEDIR)/api all
+endif
+endif
+endif
+ifdef PACKAGEFV
+ifneq ($(wildcard $(PACKAGEDIR)/fv),)
+ifeq ($(wildcard $(PACKAGEDIR)/fv/$(FPCMAKED)),)
+override COMPILEPACKAGES+=fv
+fv_package:
+	$(MAKE) -C $(PACKAGEDIR)/fv all
+endif
+endif
+endif
+ifdef PACKAGEGDBINT
+ifneq ($(wildcard $(PACKAGEDIR)/gdbint),)
+ifeq ($(wildcard $(PACKAGEDIR)/gdbint/$(FPCMAKED)),)
+override COMPILEPACKAGES+=gdbint
+gdbint_package:
+	$(MAKE) -C $(PACKAGEDIR)/gdbint all
+endif
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package api_package fv_package gdbint_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -664,7 +747,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -732,6 +818,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -778,6 +866,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -794,8 +892,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -805,11 +903,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -818,11 +911,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -833,12 +926,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -856,6 +949,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -872,15 +967,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -889,7 +984,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 2 - 2
ide/text/Makefile.fpc

@@ -12,7 +12,7 @@ objdir=$(GDBOBJDIR)
 libdir=$(GDBLIBDIR)
 
 [packages]
-packages=api fv
+packages=api fv gdbint
 
 [libs]
 libgcc=1
@@ -33,7 +33,7 @@ GDBINT=gdbint
 endif
 
 ifeq ($(GDB),1)
-override GDBUNITDIR+=$(PACKAGEDIR)/$(GDBINT)
+GDBUNITDIR+=$(PACKAGEDIR)/$(GDBINT)
 GDBLIBDIR+=$(PACKAGEDIR)/$(GDBINT)/libgdb/$(OS_TARGET)
 GDBOBJDIR+=$(PACKAGEDIR)/$(GDBINT)/libgdb/$(OS_TARGET)
 ifeq ($(OS_TARGET),go32v2)

+ 223 - 111
packages/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:14
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,12 +131,12 @@ endif
 
 # Targets
 
-DIROBJECTS+=$(wildcard ibase mysql uncgi paszlib gdbint api fv)
+override DIROBJECTS+=$(wildcard ibase mysql uncgi paszlib gdbint api fv)
 ifeq ($(OS_TARGET),linux)
-DIROBJECTS+=$(wildcard gtk opengl utmp inet postgres ncurses forms svgalib ggi)
+override DIROBJECTS+=$(wildcard gtk opengl utmp inet postgres ncurses forms svgalib ggi)
 endif
 ifeq ($(OS_TARGET),win32)
-DIROBJECTS+=$(wildcard gtk opengl)
+override DIROBJECTS+=$(wildcard gtk opengl)
 endif
 
 # Clean
@@ -131,6 +144,7 @@ endif
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -148,19 +162,17 @@ endif
 
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: $(addsuffix _all,$(DIROBJECTS))
 
 debug: $(addsuffix _debug,$(DIROBJECTS))
 
 examples: $(addsuffix _examples,$(DIROBJECTS))
 
+test: $(addsuffix _test,$(DIROBJECTS))
+
 smart: $(addsuffix _smart,$(DIROBJECTS))
 
 shared: $(addsuffix _shared,$(DIROBJECTS))
@@ -169,6 +181,8 @@ showinstall: $(addsuffix _showinstall,$(DIROBJECTS))
 
 install: $(addsuffix _install,$(DIROBJECTS))
 
+sourceinstall: $(addsuffix _sourceinstall,$(DIROBJECTS))
+
 zipinstall: $(addsuffix _zipinstall,$(DIROBJECTS))
 
 zipinstalladd: $(addsuffix _zipinstalladd,$(DIROBJECTS))
@@ -181,9 +195,53 @@ depend: $(addsuffix _depend,$(DIROBJECTS))
 
 info: $(addsuffix _info,$(DIROBJECTS))
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
+
+# Target Dirs
+
+OBJECTDIRIBASE=1
+OBJECTDIRMYSQL=1
+OBJECTDIRUNCGI=1
+OBJECTDIRPASZLIB=1
+OBJECTDIRGDBINT=1
+OBJECTDIRAPI=1
+OBJECTDIRFV=1
+ifeq ($(OS_TARGET),linux)
+OBJECTDIRGTK=1
+OBJECTDIROPENGL=1
+OBJECTDIRUTMP=1
+OBJECTDIRINET=1
+OBJECTDIRPOSTGRES=1
+OBJECTDIRNCURSES=1
+OBJECTDIRFORMS=1
+OBJECTDIRSVGALIB=1
+OBJECTDIRGGI=1
+endif
+ifeq ($(OS_TARGET),win32)
+OBJECTDIRGTK=1
+OBJECTDIROPENGL=1
+endif
 
 # Dir ibase
 
+ifdef OBJECTDIRIBASE
+.PHONY:  ibase_all ibase_debug ibase_examples ibase_test ibase_smart ibase_shared ibase_showinstall ibase_install ibase_sourceinstall ibase_zipinstall ibase_zipinstalladd ibase_clean ibase_cleanall ibase_depend ibase_info
+
 ibase_all:
 	$(MAKE) -C ibase all
 
@@ -193,6 +251,9 @@ ibase_debug:
 ibase_examples:
 	$(MAKE) -C ibase examples
 
+ibase_test:
+	$(MAKE) -C ibase test
+
 ibase_smart:
 	$(MAKE) -C ibase smart
 
@@ -205,6 +266,9 @@ ibase_showinstall:
 ibase_install:
 	$(MAKE) -C ibase install
 
+ibase_sourceinstall:
+	$(MAKE) -C ibase sourceinstall
+
 ibase_zipinstall:
 	$(MAKE) -C ibase zipinstall
 
@@ -222,10 +286,13 @@ ibase_depend:
 
 ibase_info:
 	$(MAKE) -C ibase info
-
+endif
 
 # Dir mysql
 
+ifdef OBJECTDIRMYSQL
+.PHONY:  mysql_all mysql_debug mysql_examples mysql_test mysql_smart mysql_shared mysql_showinstall mysql_install mysql_sourceinstall mysql_zipinstall mysql_zipinstalladd mysql_clean mysql_cleanall mysql_depend mysql_info
+
 mysql_all:
 	$(MAKE) -C mysql all
 
@@ -235,6 +302,9 @@ mysql_debug:
 mysql_examples:
 	$(MAKE) -C mysql examples
 
+mysql_test:
+	$(MAKE) -C mysql test
+
 mysql_smart:
 	$(MAKE) -C mysql smart
 
@@ -247,6 +317,9 @@ mysql_showinstall:
 mysql_install:
 	$(MAKE) -C mysql install
 
+mysql_sourceinstall:
+	$(MAKE) -C mysql sourceinstall
+
 mysql_zipinstall:
 	$(MAKE) -C mysql zipinstall
 
@@ -264,10 +337,13 @@ mysql_depend:
 
 mysql_info:
 	$(MAKE) -C mysql info
-
+endif
 
 # Dir uncgi
 
+ifdef OBJECTDIRUNCGI
+.PHONY:  uncgi_all uncgi_debug uncgi_examples uncgi_test uncgi_smart uncgi_shared uncgi_showinstall uncgi_install uncgi_sourceinstall uncgi_zipinstall uncgi_zipinstalladd uncgi_clean uncgi_cleanall uncgi_depend uncgi_info
+
 uncgi_all:
 	$(MAKE) -C uncgi all
 
@@ -277,6 +353,9 @@ uncgi_debug:
 uncgi_examples:
 	$(MAKE) -C uncgi examples
 
+uncgi_test:
+	$(MAKE) -C uncgi test
+
 uncgi_smart:
 	$(MAKE) -C uncgi smart
 
@@ -289,6 +368,9 @@ uncgi_showinstall:
 uncgi_install:
 	$(MAKE) -C uncgi install
 
+uncgi_sourceinstall:
+	$(MAKE) -C uncgi sourceinstall
+
 uncgi_zipinstall:
 	$(MAKE) -C uncgi zipinstall
 
@@ -306,10 +388,13 @@ uncgi_depend:
 
 uncgi_info:
 	$(MAKE) -C uncgi info
-
+endif
 
 # Dir paszlib
 
+ifdef OBJECTDIRPASZLIB
+.PHONY:  paszlib_all paszlib_debug paszlib_examples paszlib_test paszlib_smart paszlib_shared paszlib_showinstall paszlib_install paszlib_sourceinstall paszlib_zipinstall paszlib_zipinstalladd paszlib_clean paszlib_cleanall paszlib_depend paszlib_info
+
 paszlib_all:
 	$(MAKE) -C paszlib all
 
@@ -319,6 +404,9 @@ paszlib_debug:
 paszlib_examples:
 	$(MAKE) -C paszlib examples
 
+paszlib_test:
+	$(MAKE) -C paszlib test
+
 paszlib_smart:
 	$(MAKE) -C paszlib smart
 
@@ -331,6 +419,9 @@ paszlib_showinstall:
 paszlib_install:
 	$(MAKE) -C paszlib install
 
+paszlib_sourceinstall:
+	$(MAKE) -C paszlib sourceinstall
+
 paszlib_zipinstall:
 	$(MAKE) -C paszlib zipinstall
 
@@ -348,10 +439,13 @@ paszlib_depend:
 
 paszlib_info:
 	$(MAKE) -C paszlib info
-
+endif
 
 # Dir gdbint
 
+ifdef OBJECTDIRGDBINT
+.PHONY:  gdbint_all gdbint_debug gdbint_examples gdbint_test gdbint_smart gdbint_shared gdbint_showinstall gdbint_install gdbint_sourceinstall gdbint_zipinstall gdbint_zipinstalladd gdbint_clean gdbint_cleanall gdbint_depend gdbint_info
+
 gdbint_all:
 	$(MAKE) -C gdbint all
 
@@ -361,6 +455,9 @@ gdbint_debug:
 gdbint_examples:
 	$(MAKE) -C gdbint examples
 
+gdbint_test:
+	$(MAKE) -C gdbint test
+
 gdbint_smart:
 	$(MAKE) -C gdbint smart
 
@@ -373,6 +470,9 @@ gdbint_showinstall:
 gdbint_install:
 	$(MAKE) -C gdbint install
 
+gdbint_sourceinstall:
+	$(MAKE) -C gdbint sourceinstall
+
 gdbint_zipinstall:
 	$(MAKE) -C gdbint zipinstall
 
@@ -390,10 +490,13 @@ gdbint_depend:
 
 gdbint_info:
 	$(MAKE) -C gdbint info
-
+endif
 
 # Dir api
 
+ifdef OBJECTDIRAPI
+.PHONY:  api_all api_debug api_examples api_test api_smart api_shared api_showinstall api_install api_sourceinstall api_zipinstall api_zipinstalladd api_clean api_cleanall api_depend api_info
+
 api_all:
 	$(MAKE) -C api all
 
@@ -403,6 +506,9 @@ api_debug:
 api_examples:
 	$(MAKE) -C api examples
 
+api_test:
+	$(MAKE) -C api test
+
 api_smart:
 	$(MAKE) -C api smart
 
@@ -415,6 +521,9 @@ api_showinstall:
 api_install:
 	$(MAKE) -C api install
 
+api_sourceinstall:
+	$(MAKE) -C api sourceinstall
+
 api_zipinstall:
 	$(MAKE) -C api zipinstall
 
@@ -432,10 +541,13 @@ api_depend:
 
 api_info:
 	$(MAKE) -C api info
-
+endif
 
 # Dir fv
 
+ifdef OBJECTDIRFV
+.PHONY:  fv_all fv_debug fv_examples fv_test fv_smart fv_shared fv_showinstall fv_install fv_sourceinstall fv_zipinstall fv_zipinstalladd fv_clean fv_cleanall fv_depend fv_info
+
 fv_all:
 	$(MAKE) -C fv all
 
@@ -445,6 +557,9 @@ fv_debug:
 fv_examples:
 	$(MAKE) -C fv examples
 
+fv_test:
+	$(MAKE) -C fv test
+
 fv_smart:
 	$(MAKE) -C fv smart
 
@@ -457,6 +572,9 @@ fv_showinstall:
 fv_install:
 	$(MAKE) -C fv install
 
+fv_sourceinstall:
+	$(MAKE) -C fv sourceinstall
+
 fv_zipinstall:
 	$(MAKE) -C fv zipinstall
 
@@ -474,11 +592,13 @@ fv_depend:
 
 fv_info:
 	$(MAKE) -C fv info
-
-ifeq ($(OS_TARGET),linux)
+endif
 
 # Dir gtk
 
+ifdef OBJECTDIRGTK
+.PHONY:  gtk_all gtk_debug gtk_examples gtk_test gtk_smart gtk_shared gtk_showinstall gtk_install gtk_sourceinstall gtk_zipinstall gtk_zipinstalladd gtk_clean gtk_cleanall gtk_depend gtk_info
+
 gtk_all:
 	$(MAKE) -C gtk all
 
@@ -488,6 +608,9 @@ gtk_debug:
 gtk_examples:
 	$(MAKE) -C gtk examples
 
+gtk_test:
+	$(MAKE) -C gtk test
+
 gtk_smart:
 	$(MAKE) -C gtk smart
 
@@ -500,6 +623,9 @@ gtk_showinstall:
 gtk_install:
 	$(MAKE) -C gtk install
 
+gtk_sourceinstall:
+	$(MAKE) -C gtk sourceinstall
+
 gtk_zipinstall:
 	$(MAKE) -C gtk zipinstall
 
@@ -517,10 +643,13 @@ gtk_depend:
 
 gtk_info:
 	$(MAKE) -C gtk info
-
+endif
 
 # Dir opengl
 
+ifdef OBJECTDIROPENGL
+.PHONY:  opengl_all opengl_debug opengl_examples opengl_test opengl_smart opengl_shared opengl_showinstall opengl_install opengl_sourceinstall opengl_zipinstall opengl_zipinstalladd opengl_clean opengl_cleanall opengl_depend opengl_info
+
 opengl_all:
 	$(MAKE) -C opengl all
 
@@ -530,6 +659,9 @@ opengl_debug:
 opengl_examples:
 	$(MAKE) -C opengl examples
 
+opengl_test:
+	$(MAKE) -C opengl test
+
 opengl_smart:
 	$(MAKE) -C opengl smart
 
@@ -542,6 +674,9 @@ opengl_showinstall:
 opengl_install:
 	$(MAKE) -C opengl install
 
+opengl_sourceinstall:
+	$(MAKE) -C opengl sourceinstall
+
 opengl_zipinstall:
 	$(MAKE) -C opengl zipinstall
 
@@ -559,10 +694,13 @@ opengl_depend:
 
 opengl_info:
 	$(MAKE) -C opengl info
-
+endif
 
 # Dir utmp
 
+ifdef OBJECTDIRUTMP
+.PHONY:  utmp_all utmp_debug utmp_examples utmp_test utmp_smart utmp_shared utmp_showinstall utmp_install utmp_sourceinstall utmp_zipinstall utmp_zipinstalladd utmp_clean utmp_cleanall utmp_depend utmp_info
+
 utmp_all:
 	$(MAKE) -C utmp all
 
@@ -572,6 +710,9 @@ utmp_debug:
 utmp_examples:
 	$(MAKE) -C utmp examples
 
+utmp_test:
+	$(MAKE) -C utmp test
+
 utmp_smart:
 	$(MAKE) -C utmp smart
 
@@ -584,6 +725,9 @@ utmp_showinstall:
 utmp_install:
 	$(MAKE) -C utmp install
 
+utmp_sourceinstall:
+	$(MAKE) -C utmp sourceinstall
+
 utmp_zipinstall:
 	$(MAKE) -C utmp zipinstall
 
@@ -601,10 +745,13 @@ utmp_depend:
 
 utmp_info:
 	$(MAKE) -C utmp info
-
+endif
 
 # Dir inet
 
+ifdef OBJECTDIRINET
+.PHONY:  inet_all inet_debug inet_examples inet_test inet_smart inet_shared inet_showinstall inet_install inet_sourceinstall inet_zipinstall inet_zipinstalladd inet_clean inet_cleanall inet_depend inet_info
+
 inet_all:
 	$(MAKE) -C inet all
 
@@ -614,6 +761,9 @@ inet_debug:
 inet_examples:
 	$(MAKE) -C inet examples
 
+inet_test:
+	$(MAKE) -C inet test
+
 inet_smart:
 	$(MAKE) -C inet smart
 
@@ -626,6 +776,9 @@ inet_showinstall:
 inet_install:
 	$(MAKE) -C inet install
 
+inet_sourceinstall:
+	$(MAKE) -C inet sourceinstall
+
 inet_zipinstall:
 	$(MAKE) -C inet zipinstall
 
@@ -643,10 +796,13 @@ inet_depend:
 
 inet_info:
 	$(MAKE) -C inet info
-
+endif
 
 # Dir postgres
 
+ifdef OBJECTDIRPOSTGRES
+.PHONY:  postgres_all postgres_debug postgres_examples postgres_test postgres_smart postgres_shared postgres_showinstall postgres_install postgres_sourceinstall postgres_zipinstall postgres_zipinstalladd postgres_clean postgres_cleanall postgres_depend postgres_info
+
 postgres_all:
 	$(MAKE) -C postgres all
 
@@ -656,6 +812,9 @@ postgres_debug:
 postgres_examples:
 	$(MAKE) -C postgres examples
 
+postgres_test:
+	$(MAKE) -C postgres test
+
 postgres_smart:
 	$(MAKE) -C postgres smart
 
@@ -668,6 +827,9 @@ postgres_showinstall:
 postgres_install:
 	$(MAKE) -C postgres install
 
+postgres_sourceinstall:
+	$(MAKE) -C postgres sourceinstall
+
 postgres_zipinstall:
 	$(MAKE) -C postgres zipinstall
 
@@ -685,10 +847,13 @@ postgres_depend:
 
 postgres_info:
 	$(MAKE) -C postgres info
-
+endif
 
 # Dir ncurses
 
+ifdef OBJECTDIRNCURSES
+.PHONY:  ncurses_all ncurses_debug ncurses_examples ncurses_test ncurses_smart ncurses_shared ncurses_showinstall ncurses_install ncurses_sourceinstall ncurses_zipinstall ncurses_zipinstalladd ncurses_clean ncurses_cleanall ncurses_depend ncurses_info
+
 ncurses_all:
 	$(MAKE) -C ncurses all
 
@@ -698,6 +863,9 @@ ncurses_debug:
 ncurses_examples:
 	$(MAKE) -C ncurses examples
 
+ncurses_test:
+	$(MAKE) -C ncurses test
+
 ncurses_smart:
 	$(MAKE) -C ncurses smart
 
@@ -710,6 +878,9 @@ ncurses_showinstall:
 ncurses_install:
 	$(MAKE) -C ncurses install
 
+ncurses_sourceinstall:
+	$(MAKE) -C ncurses sourceinstall
+
 ncurses_zipinstall:
 	$(MAKE) -C ncurses zipinstall
 
@@ -727,10 +898,13 @@ ncurses_depend:
 
 ncurses_info:
 	$(MAKE) -C ncurses info
-
+endif
 
 # Dir forms
 
+ifdef OBJECTDIRFORMS
+.PHONY:  forms_all forms_debug forms_examples forms_test forms_smart forms_shared forms_showinstall forms_install forms_sourceinstall forms_zipinstall forms_zipinstalladd forms_clean forms_cleanall forms_depend forms_info
+
 forms_all:
 	$(MAKE) -C forms all
 
@@ -740,6 +914,9 @@ forms_debug:
 forms_examples:
 	$(MAKE) -C forms examples
 
+forms_test:
+	$(MAKE) -C forms test
+
 forms_smart:
 	$(MAKE) -C forms smart
 
@@ -752,6 +929,9 @@ forms_showinstall:
 forms_install:
 	$(MAKE) -C forms install
 
+forms_sourceinstall:
+	$(MAKE) -C forms sourceinstall
+
 forms_zipinstall:
 	$(MAKE) -C forms zipinstall
 
@@ -769,10 +949,13 @@ forms_depend:
 
 forms_info:
 	$(MAKE) -C forms info
-
+endif
 
 # Dir svgalib
 
+ifdef OBJECTDIRSVGALIB
+.PHONY:  svgalib_all svgalib_debug svgalib_examples svgalib_test svgalib_smart svgalib_shared svgalib_showinstall svgalib_install svgalib_sourceinstall svgalib_zipinstall svgalib_zipinstalladd svgalib_clean svgalib_cleanall svgalib_depend svgalib_info
+
 svgalib_all:
 	$(MAKE) -C svgalib all
 
@@ -782,6 +965,9 @@ svgalib_debug:
 svgalib_examples:
 	$(MAKE) -C svgalib examples
 
+svgalib_test:
+	$(MAKE) -C svgalib test
+
 svgalib_smart:
 	$(MAKE) -C svgalib smart
 
@@ -794,6 +980,9 @@ svgalib_showinstall:
 svgalib_install:
 	$(MAKE) -C svgalib install
 
+svgalib_sourceinstall:
+	$(MAKE) -C svgalib sourceinstall
+
 svgalib_zipinstall:
 	$(MAKE) -C svgalib zipinstall
 
@@ -811,10 +1000,13 @@ svgalib_depend:
 
 svgalib_info:
 	$(MAKE) -C svgalib info
-
+endif
 
 # Dir ggi
 
+ifdef OBJECTDIRGGI
+.PHONY:  ggi_all ggi_debug ggi_examples ggi_test ggi_smart ggi_shared ggi_showinstall ggi_install ggi_sourceinstall ggi_zipinstall ggi_zipinstalladd ggi_clean ggi_cleanall ggi_depend ggi_info
+
 ggi_all:
 	$(MAKE) -C ggi all
 
@@ -824,6 +1016,9 @@ ggi_debug:
 ggi_examples:
 	$(MAKE) -C ggi examples
 
+ggi_test:
+	$(MAKE) -C ggi test
+
 ggi_smart:
 	$(MAKE) -C ggi smart
 
@@ -836,6 +1031,9 @@ ggi_showinstall:
 ggi_install:
 	$(MAKE) -C ggi install
 
+ggi_sourceinstall:
+	$(MAKE) -C ggi sourceinstall
+
 ggi_zipinstall:
 	$(MAKE) -C ggi zipinstall
 
@@ -853,91 +1051,5 @@ ggi_depend:
 
 ggi_info:
 	$(MAKE) -C ggi info
-
 endif
-ifeq ($(OS_TARGET),win32)
-
-# Dir gtk
-
-gtk_all:
-	$(MAKE) -C gtk all
-
-gtk_debug:
-	$(MAKE) -C gtk debug
-
-gtk_examples:
-	$(MAKE) -C gtk examples
-
-gtk_smart:
-	$(MAKE) -C gtk smart
-
-gtk_shared:
-	$(MAKE) -C gtk shared
-
-gtk_showinstall:
-	$(MAKE) -C gtk showinstall
-
-gtk_install:
-	$(MAKE) -C gtk install
-
-gtk_zipinstall:
-	$(MAKE) -C gtk zipinstall
-
-gtk_zipinstalladd:
-	$(MAKE) -C gtk zipinstalladd
-
-gtk_clean:
-	$(MAKE) -C gtk clean
-
-gtk_cleanall:
-	$(MAKE) -C gtk cleanall
-
-gtk_depend:
-	$(MAKE) -C gtk depend
-
-gtk_info:
-	$(MAKE) -C gtk info
-
-
-# Dir opengl
-
-opengl_all:
-	$(MAKE) -C opengl all
-
-opengl_debug:
-	$(MAKE) -C opengl debug
-
-opengl_examples:
-	$(MAKE) -C opengl examples
-
-opengl_smart:
-	$(MAKE) -C opengl smart
-
-opengl_shared:
-	$(MAKE) -C opengl shared
 
-opengl_showinstall:
-	$(MAKE) -C opengl showinstall
-
-opengl_install:
-	$(MAKE) -C opengl install
-
-opengl_zipinstall:
-	$(MAKE) -C opengl zipinstall
-
-opengl_zipinstalladd:
-	$(MAKE) -C opengl zipinstalladd
-
-opengl_clean:
-	$(MAKE) -C opengl clean
-
-opengl_cleanall:
-	$(MAKE) -C opengl cleanall
-
-opengl_depend:
-	$(MAKE) -C opengl depend
-
-opengl_info:
-	$(MAKE) -C opengl info
-
-endif

+ 102 - 38
packages/forms/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:53
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -124,16 +137,17 @@ FORMSVERSION=88
 
 # Targets
 
-UNITOBJECTS+=x xresource xlib xutil forms
-EXEOBJECTS+=fd2pascal
+override UNITOBJECTS+=x xresource xlib xutil forms
+override EXEOBJECTS+=fd2pascal
 
 # Clean
 
-EXTRACLEANUNITS+=forms-88 forms-86
-EXTRACLEANFILES+=forms$(PASEXT)
+override EXTRACLEANUNITS+=forms-88 forms-86
+override EXTRACLEANFILES+=forms$(PASEXT)
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -155,7 +169,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -182,6 +196,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -254,12 +277,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -294,6 +317,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -310,6 +338,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -356,6 +389,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -569,13 +607,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -588,6 +622,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -598,6 +634,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -606,7 +658,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -618,8 +670,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -633,7 +685,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -701,6 +756,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -747,6 +804,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -763,8 +830,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -774,11 +841,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -787,11 +849,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -802,12 +864,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -825,6 +887,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -841,15 +905,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -858,7 +922,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 103 - 39
packages/gdbint/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,15 +131,16 @@ endif
 
 # Targets
 
-UNITOBJECTS+=gdbint gdbcon
-EXEOBJECTS+=symify
-EXAMPLEOBJECTS+=testgdb
+override UNITOBJECTS+=gdbint gdbcon
+override EXEOBJECTS+=symify
+override EXAMPLEOBJECTS+=testgdb
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -154,7 +168,7 @@ override NEEDGCCLIB=1
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -181,6 +195,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 # On linux, try to find where libgcc.a is.
 ifdef inlinux
 ifndef GCCLIBDIR
@@ -260,12 +283,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDLIBDIR
@@ -318,6 +341,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -334,6 +362,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -380,6 +413,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -593,13 +631,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -614,6 +648,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -624,6 +660,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -632,7 +684,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -644,8 +696,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -659,8 +711,8 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -674,7 +726,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -742,6 +797,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -788,6 +845,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -804,8 +871,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -815,11 +882,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -828,11 +890,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -843,12 +905,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -866,6 +928,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -882,15 +946,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -899,7 +963,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/ggi/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=gii ggi ggi2d
-EXAMPLEOBJECTS+=ggi1
+override UNITOBJECTS+=gii ggi ggi2d
+override EXAMPLEOBJECTS+=ggi1
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 97 - 33
packages/gtk/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-UNITOBJECTS+=glib gmodule gdk gtk
+override UNITOBJECTS+=glib gmodule gdk gtk
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -151,7 +165,7 @@ LIBNAME=fpgtk
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -178,6 +192,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -250,12 +273,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Target dirs
@@ -295,6 +318,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -311,6 +339,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -357,6 +390,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -570,13 +608,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -589,6 +623,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -597,6 +633,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -605,7 +657,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -617,7 +669,10 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -685,6 +740,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -731,6 +788,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -747,8 +814,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -758,11 +825,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -771,11 +833,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -786,12 +848,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -809,6 +871,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -825,15 +889,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -842,7 +906,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 99 - 35
packages/gtk/examples/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-EXEOBJECTS+=entry notebook scribble-simple clist ttt_test pixmap list progressbar
+override EXEOBJECTS+=entry notebook scribble-simple clist ttt_test pixmap list progressbar
 
 # Clean
 
-EXTRACLEANUNITS+=tictactoe
+override EXTRACLEANUNITS+=tictactoe
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -153,7 +167,7 @@ override NEEDOTHERLIB=1
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -180,6 +194,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 # On linux, try to find where libgcc.a is.
 ifdef inlinux
 ifndef GCCLIBDIR
@@ -266,12 +289,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -325,6 +348,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -341,6 +369,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -387,6 +420,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -600,13 +638,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -619,6 +653,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -629,14 +665,30 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -650,7 +702,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -718,6 +773,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -764,6 +821,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -780,8 +847,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -791,11 +858,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -804,11 +866,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -819,12 +881,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -842,6 +904,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -858,15 +922,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -875,7 +939,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 98 - 34
packages/gtk/tutorial/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:55
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,13 +131,14 @@ endif
 
 # Targets
 
-EXEOBJECTS+=$(subst $(PASEXT),,$(wildcard tut*$(PASEXT)))
+override EXEOBJECTS+=$(subst $(PASEXT),,$(wildcard tut*$(PASEXT)))
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -152,7 +166,7 @@ override NEEDOTHERLIB=1
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -179,6 +193,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 # On linux, try to find where libgcc.a is.
 ifdef inlinux
 ifndef GCCLIBDIR
@@ -265,12 +288,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -324,6 +347,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -340,6 +368,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -386,6 +419,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -599,13 +637,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -618,6 +652,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -628,14 +664,30 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -649,7 +701,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -717,6 +772,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -763,6 +820,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -779,8 +846,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -790,11 +857,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -803,11 +865,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -818,12 +880,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -841,6 +903,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -857,15 +921,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -874,7 +938,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/ibase/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:56
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=ibase
-EXAMPLEOBJECTS+=testib
+override UNITOBJECTS+=ibase
+override EXAMPLEOBJECTS+=testib
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/inet/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:56
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=inet
-EXAMPLEOBJECTS+=testinet pfinger
+override UNITOBJECTS+=inet
+override EXAMPLEOBJECTS+=testinet pfinger
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/mysql/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:56
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=mysql_com mysql_version mysql
-EXAMPLEOBJECTS+=testdb
+override UNITOBJECTS+=mysql_com mysql_version mysql
+override EXAMPLEOBJECTS+=testdb
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/ncurses/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:58
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=ncurses ncrt
-EXAMPLEOBJECTS+=firework testn ncrt_demo
+override UNITOBJECTS+=ncurses ncrt
+override EXAMPLEOBJECTS+=firework testn ncrt_demo
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/opengl/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=xlib gl glut
-EXAMPLEOBJECTS+=glutdemo
+override UNITOBJECTS+=xlib gl glut
+override EXAMPLEOBJECTS+=glutdemo
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -148,7 +162,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -175,6 +189,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -251,12 +274,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -291,6 +314,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -307,6 +335,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -353,6 +386,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -566,13 +604,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -589,6 +623,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -599,6 +635,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -607,7 +659,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -619,8 +671,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -634,7 +686,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -702,6 +757,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -748,6 +805,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -764,8 +831,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -775,11 +842,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -788,11 +850,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -803,12 +865,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -826,6 +888,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -842,15 +906,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -859,7 +923,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/paszlib/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=adler crc crcasm gzio infblock infcodes inffast inftrees infutil strutils trees zcompres zdeflate zinflate zlib zuncompr zutil
-EXAMPLEOBJECTS+=example minigzip
+override UNITOBJECTS+=adler crc crcasm gzio infblock infcodes inffast inftrees infutil strutils trees zcompres zdeflate zinflate zlib zuncompr zutil
+override EXAMPLEOBJECTS+=example minigzip
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -148,7 +162,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -175,6 +189,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -251,12 +274,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -291,6 +314,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -307,6 +335,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -353,6 +386,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -566,13 +604,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -589,6 +623,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -599,6 +635,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -607,7 +659,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -619,8 +671,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -634,7 +686,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -702,6 +757,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -748,6 +805,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -764,8 +831,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -775,11 +842,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -788,11 +850,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -803,12 +865,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -826,6 +888,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -842,15 +906,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -859,7 +923,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/postgres/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:56
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:05
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=dllist postgres
-EXAMPLEOBJECTS+=testpg testemail
+override UNITOBJECTS+=dllist postgres
+override EXAMPLEOBJECTS+=testpg testemail
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/svgalib/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:55
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:06
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=svgalib vgamouse
-EXAMPLEOBJECTS+=testvga vgatest
+override UNITOBJECTS+=svgalib vgamouse
+override EXAMPLEOBJECTS+=testvga vgatest
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/uncgi/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:54
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:06
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=uncgi
-EXAMPLEOBJECTS+=testcgi
+override UNITOBJECTS+=uncgi
+override EXAMPLEOBJECTS+=testcgi
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 100 - 36
packages/utmp/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 22:55
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:06
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-UNITOBJECTS+=utmp
-EXAMPLEOBJECTS+=testu
+override UNITOBJECTS+=utmp
+override EXAMPLEOBJECTS+=testu
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -584,6 +618,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -594,6 +630,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -602,7 +654,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -614,8 +666,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -629,7 +681,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -697,6 +752,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -743,6 +800,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -759,8 +826,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -770,11 +837,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -783,11 +845,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -798,12 +860,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -821,6 +883,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -837,15 +901,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -854,7 +918,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 265 - 156
rtl/Makefile

@@ -1,8 +1,8 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-14 16:40
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:58
 #
 
-defaultrule: native
+defaultrule: all
 
 #####################################################################
 # Autodetect OS (Linux or Dos or Windows NT)
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,252 +115,357 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
-#####################################################################
-# User Settings
-#####################################################################
-
-
-# Pre Settings
-
-# Set redir to YES if you want a log file to be kept.
-ifndef REDIR
-REDIR=NO
-endif
-
-# Set NODEBUG to YES if you DON'T want debugging
-ifndef NODEBUG
-NODEBUG=YES
-endif
-
-# Optional : Specify the place of the log file.
-# default is 'log' in the source directory
-ifndef REDIRFILE
-REDIRFILE=
-endif
-
-# Optional: Error definitions file you want the compiler to use.
-# !! If you specify a path, specify an absolute path. !!
-ifndef ERRORFILE
-ERRORFILE=
-endif
-
-#######################################################################
-# Fix options
-#######################################################################
-
-# Check debugging.
-ifneq ($(NODEBUG),YES)
-override FPCOPT+=-g
-endif
-
-# Check error definitions file.
-ifdef ERRORFILE
-override FPCOPT+=-Fr$(ERRORFILE)
-endif
-
-# Check logfile.
-ifeq ($(REDIR),YES)
+ifdef REDIR
 ifndef inlinux
-override FPC=redir -eo $(PP)
+override FPC=redir -eo $(FPC)
 endif
 # set the verbosity to max
-override FPCOPT+=-va
-ifdef REDIRFILE
+override OPT+=-va
 override REDIR:= >> $(REDIRFILE)
-else
-override REDIR:= >> log
-endif
-else
-override REDIR:=
 endif
 
-# Variables to export
-export REDIR REDIRFILE ERRORFILE
+#####################################################################
+# User Settings
+#####################################################################
+
 
 # Targets
 
+override DIROBJECTS+=$(wildcard go32v2 linux win32 os2 go32v1)
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
 
 # Directories
 
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
+
+# Packages
+
 
 # Libraries
 
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
+all: $(OS_TARGET)_all
 
-all: fpc_all
+debug: $(OS_TARGET)_debug
 
-staticlib: fpc_staticlib
+examples: $(OS_TARGET)_examples
 
-sharedlib: fpc_sharedlib
+test: $(OS_TARGET)_test
 
-showinstall: fpc_showinstall
+smart: $(OS_TARGET)_smart
 
-staticinstall: fpc_staticinstall
+shared: $(OS_TARGET)_shared
 
-sharedinstall: fpc_sharedinstall
+showinstall: $(OS_TARGET)_showinstall
 
-zipinstall: fpc_zipinstall
+install: $(OS_TARGET)_install
 
-zipinstalladd: fpc_zipinstalladd
+sourceinstall: $(OS_TARGET)_sourceinstall
 
-clean_all: fpc_clean_all
+zipinstall: $(OS_TARGET)_zipinstall
 
-depend: fpc_depend
+zipinstalladd: $(OS_TARGET)_zipinstalladd
 
-info: fpc_info
+clean: $(OS_TARGET)_clean
+
+cleanall: $(OS_TARGET)_cleanall
+
+depend: $(OS_TARGET)_depend
+
+info: $(OS_TARGET)_info
+
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
 
 #####################################################################
-# Users rules
+# Package depends
 #####################################################################
 
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
 
-############################################################################
-# RTLs
-############################################################################
+.PHONY:  $(OS_TARGET)_package
 
-.PHONY: native rtls rtlgo32v1 rtlgo32v2 rtllinux rtlos2 rtlwin32 rtlamiga
 
-native: rtl$(OS_SOURCE)
+# Target Dirs
 
-rtls: rtlgo32v1 rtlgo32v2 rtllinux rtlos2 rtlwin32
+OBJECTDIRGO32V2=1
+OBJECTDIRLINUX=1
+OBJECTDIRWIN32=1
+OBJECTDIROS2=1
+OBJECTDIRGO32V1=1
 
-rtlgo32v1:
-	$(MAKE) -C go32v1
+# Dir go32v2
 
-rtlgo32v2:
-	$(MAKE) -C go32v2
+ifdef OBJECTDIRGO32V2
+.PHONY:  go32v2_all go32v2_debug go32v2_examples go32v2_test go32v2_smart go32v2_shared go32v2_showinstall go32v2_install go32v2_sourceinstall go32v2_zipinstall go32v2_zipinstalladd go32v2_clean go32v2_cleanall go32v2_depend go32v2_info
 
-rtllinux:
-	$(MAKE) -C linux
+go32v2_all:
+	$(MAKE) -C go32v2 all
 
-rtlos2:
-	$(MAKE) -C os2
+go32v2_debug:
+	$(MAKE) -C go32v2 debug
 
-rtlwin32:
-	$(MAKE) -C win32
+go32v2_examples:
+	$(MAKE) -C go32v2 examples
 
-rtlamiga:
-	$(MAKE) -C amiga
+go32v2_test:
+	$(MAKE) -C go32v2 test
 
+go32v2_smart:
+	$(MAKE) -C go32v2 smart
 
-############################################################################
-# Libs
-############################################################################
+go32v2_shared:
+	$(MAKE) -C go32v2 shared
 
-.PHONY: nativelibs libs libgo32v1 libgo32v2 liblinux libos2 libwin32
+go32v2_showinstall:
+	$(MAKE) -C go32v2 showinstall
 
-nativelibs : $(OS_SOURCE)libs
+go32v2_install:
+	$(MAKE) -C go32v2 install
 
-libs: go32v1libs go32v2libs linuxlibs os2libs win32libs
+go32v2_sourceinstall:
+	$(MAKE) -C go32v2 sourceinstall
 
-go32v1libs:
-	$(MAKE) -C go32v1 libs
+go32v2_zipinstall:
+	$(MAKE) -C go32v2 zipinstall
 
-go32v2libs:
-	$(MAKE) -C go32v2 libs
+go32v2_zipinstalladd:
+	$(MAKE) -C go32v2 zipinstalladd
 
-linuxlibs:
-	$(MAKE) -C linux libs
+go32v2_clean:
+	$(MAKE) -C go32v2 clean
 
-os2libs:
-	$(MAKE) -C os2 libs
+go32v2_cleanall:
+	$(MAKE) -C go32v2 cleanall
 
-win32libs:
-	$(MAKE) -C win32 libs
+go32v2_depend:
+	$(MAKE) -C go32v2 depend
 
+go32v2_info:
+	$(MAKE) -C go32v2 info
+endif
 
-############################################################################
-# Install
-############################################################################
+# Dir linux
 
-.PHONY: install native_install install_go32v1 install_go32v2 install_linux \
-	install_os2 install_win32
+ifdef OBJECTDIRLINUX
+.PHONY:  linux_all linux_debug linux_examples linux_test linux_smart linux_shared linux_showinstall linux_install linux_sourceinstall linux_zipinstall linux_zipinstalladd linux_clean linux_cleanall linux_depend linux_info
 
-install: install_linux install_go32v1 install_go32v2 install_os2 install_win32
+linux_all:
+	$(MAKE) -C linux all
 
-native_install: install_$(OS_SOURCE)
+linux_debug:
+	$(MAKE) -C linux debug
 
-install_go32v1:
-	$(MAKE) -C go32v1 install
+linux_examples:
+	$(MAKE) -C linux examples
 
-install_go32v2:
-	$(MAKE) -C go32v2 install
+linux_test:
+	$(MAKE) -C linux test
 
-install_linux:
+linux_smart:
+	$(MAKE) -C linux smart
+
+linux_shared:
+	$(MAKE) -C linux shared
+
+linux_showinstall:
+	$(MAKE) -C linux showinstall
+
+linux_install:
 	$(MAKE) -C linux install
 
-install_os2:
-	$(MAKE) -C os2 install
+linux_sourceinstall:
+	$(MAKE) -C linux sourceinstall
+
+linux_zipinstall:
+	$(MAKE) -C linux zipinstall
+
+linux_zipinstalladd:
+	$(MAKE) -C linux zipinstalladd
 
-install_win32:
+linux_clean:
+	$(MAKE) -C linux clean
+
+linux_cleanall:
+	$(MAKE) -C linux cleanall
+
+linux_depend:
+	$(MAKE) -C linux depend
+
+linux_info:
+	$(MAKE) -C linux info
+endif
+
+# Dir win32
+
+ifdef OBJECTDIRWIN32
+.PHONY:  win32_all win32_debug win32_examples win32_test win32_smart win32_shared win32_showinstall win32_install win32_sourceinstall win32_zipinstall win32_zipinstalladd win32_clean win32_cleanall win32_depend win32_info
+
+win32_all:
+	$(MAKE) -C win32 all
+
+win32_debug:
+	$(MAKE) -C win32 debug
+
+win32_examples:
+	$(MAKE) -C win32 examples
+
+win32_test:
+	$(MAKE) -C win32 test
+
+win32_smart:
+	$(MAKE) -C win32 smart
+
+win32_shared:
+	$(MAKE) -C win32 shared
+
+win32_showinstall:
+	$(MAKE) -C win32 showinstall
+
+win32_install:
 	$(MAKE) -C win32 install
 
+win32_sourceinstall:
+	$(MAKE) -C win32 sourceinstall
 
-############################################################################
-# LibInstall
-############################################################################
+win32_zipinstall:
+	$(MAKE) -C win32 zipinstall
 
-.PHONY: native_libinstall libinstall libinstall_go32v1 libinstall_go32v2 \
-	libinstall_linux libinstall_os2 libinstall_win32
+win32_zipinstalladd:
+	$(MAKE) -C win32 zipinstalladd
 
-libinstall: libinstall_linux libinstall_go32v1 libinstall_go32v2 \
-	    libinstall_os2 libinstall_win32
+win32_clean:
+	$(MAKE) -C win32 clean
 
-native_libinstall: libinstall_$(OS_SOURCE)
+win32_cleanall:
+	$(MAKE) -C win32 cleanall
 
-libinstall_go32v1:
-	$(MAKE) -C go32v1 libinstall
+win32_depend:
+	$(MAKE) -C win32 depend
 
-libinstall_go32v2:
-	$(MAKE) -C go32v2 libinstall
+win32_info:
+	$(MAKE) -C win32 info
+endif
 
-libinstall_linux:
-	$(MAKE) -C linux libinstall
+# Dir os2
 
-libinstall_os2:
-	$(MAKE) -C os2 libinstall
+ifdef OBJECTDIROS2
+.PHONY:  os2_all os2_debug os2_examples os2_test os2_smart os2_shared os2_showinstall os2_install os2_sourceinstall os2_zipinstall os2_zipinstalladd os2_clean os2_cleanall os2_depend os2_info
 
-libinstall_win32:
-	$(MAKE) -C win32 libinstall
+os2_all:
+	$(MAKE) -C os2 all
 
-############################################################################
-# Clean
-############################################################################
+os2_debug:
+	$(MAKE) -C os2 debug
 
-.PHONY: clean native_clean clean_go32v1 clean_go32v2 clean_linux \
-	clean_os2 clean_win32
+os2_examples:
+	$(MAKE) -C os2 examples
 
-clean: clean_linux clean_go32v1 clean_go32v2 clean_os2 clean_win32
+os2_test:
+	$(MAKE) -C os2 test
 
-native_clean: clean_$(OS_SOURCE)
+os2_smart:
+	$(MAKE) -C os2 smart
 
-clean_go32v1:
-	$(MAKE) -C go32v1 clean
+os2_shared:
+	$(MAKE) -C os2 shared
 
-clean_go32v2:
-	$(MAKE) -C go32v2 clean
+os2_showinstall:
+	$(MAKE) -C os2 showinstall
 
-clean_linux:
-	$(MAKE) -C linux clean
+os2_install:
+	$(MAKE) -C os2 install
+
+os2_sourceinstall:
+	$(MAKE) -C os2 sourceinstall
+
+os2_zipinstall:
+	$(MAKE) -C os2 zipinstall
+
+os2_zipinstalladd:
+	$(MAKE) -C os2 zipinstalladd
 
-clean_os2:
+os2_clean:
 	$(MAKE) -C os2 clean
 
-clean_win32:
-	$(MAKE) -C win32 clean
+os2_cleanall:
+	$(MAKE) -C os2 cleanall
+
+os2_depend:
+	$(MAKE) -C os2 depend
+
+os2_info:
+	$(MAKE) -C os2 info
+endif
+
+# Dir go32v1
+
+ifdef OBJECTDIRGO32V1
+.PHONY:  go32v1_all go32v1_debug go32v1_examples go32v1_test go32v1_smart go32v1_shared go32v1_showinstall go32v1_install go32v1_sourceinstall go32v1_zipinstall go32v1_zipinstalladd go32v1_clean go32v1_cleanall go32v1_depend go32v1_info
+
+go32v1_all:
+	$(MAKE) -C go32v1 all
+
+go32v1_debug:
+	$(MAKE) -C go32v1 debug
+
+go32v1_examples:
+	$(MAKE) -C go32v1 examples
+
+go32v1_test:
+	$(MAKE) -C go32v1 test
+
+go32v1_smart:
+	$(MAKE) -C go32v1 smart
+
+go32v1_shared:
+	$(MAKE) -C go32v1 shared
+
+go32v1_showinstall:
+	$(MAKE) -C go32v1 showinstall
+
+go32v1_install:
+	$(MAKE) -C go32v1 install
+
+go32v1_sourceinstall:
+	$(MAKE) -C go32v1 sourceinstall
+
+go32v1_zipinstall:
+	$(MAKE) -C go32v1 zipinstall
+
+go32v1_zipinstalladd:
+	$(MAKE) -C go32v1 zipinstalladd
+
+go32v1_clean:
+	$(MAKE) -C go32v1 clean
+
+go32v1_cleanall:
+	$(MAKE) -C go32v1 cleanall
+
+go32v1_depend:
+	$(MAKE) -C go32v1 depend
+
+go32v1_info:
+	$(MAKE) -C go32v1 info
+endif
+

+ 5 - 197
rtl/Makefile.fpc

@@ -1,205 +1,13 @@
 #
-#   Makefile.fpc for Free Component Library
+#   Makefile.fpc for Free Pascal Runtime Library
 #
 
+[targets]
+dirs=go32v2 linux win32 os2 go32v1
+
 [defaults]
-defaultrule=native
+defaultdir=$(OS_TARGET)
 
 [sections]
 none=1
 
-
-[presettings]
-# Set redir to YES if you want a log file to be kept.
-ifndef REDIR
-REDIR=NO
-endif
-
-# Set NODEBUG to YES if you DON'T want debugging
-ifndef NODEBUG
-NODEBUG=YES
-endif
-
-# Optional : Specify the place of the log file.
-# default is 'log' in the source directory
-ifndef REDIRFILE
-REDIRFILE=
-endif
-
-# Optional: Error definitions file you want the compiler to use.
-# !! If you specify a path, specify an absolute path. !!
-ifndef ERRORFILE
-ERRORFILE=
-endif
-
-#######################################################################
-# Fix options
-#######################################################################
-
-# Check debugging.
-ifneq ($(NODEBUG),YES)
-override FPCOPT+=-g
-endif
-
-# Check error definitions file.
-ifdef ERRORFILE
-override FPCOPT+=-Fr$(ERRORFILE)
-endif
-
-# Check logfile.
-ifeq ($(REDIR),YES)
-ifndef inlinux
-override FPC=redir -eo $(PP)
-endif
-# set the verbosity to max
-override FPCOPT+=-va
-ifdef REDIRFILE
-override REDIR:= >> $(REDIRFILE)
-else
-override REDIR:= >> log
-endif
-else
-override REDIR:=
-endif
-
-# Variables to export
-export REDIR REDIRFILE ERRORFILE
-
-
-[rules]
-############################################################################
-# RTLs
-############################################################################
-
-.PHONY: native rtls rtlgo32v1 rtlgo32v2 rtllinux rtlos2 rtlwin32 rtlamiga
-
-native: rtl$(OS_SOURCE)
-
-rtls: rtlgo32v1 rtlgo32v2 rtllinux rtlos2 rtlwin32
-
-rtlgo32v1:
-        $(MAKE) -C go32v1
-
-rtlgo32v2:
-        $(MAKE) -C go32v2
-
-rtllinux:
-        $(MAKE) -C linux
-
-rtlos2:
-        $(MAKE) -C os2
-
-rtlwin32:
-        $(MAKE) -C win32
-
-rtlamiga:
-        $(MAKE) -C amiga
-
-
-############################################################################
-# Libs
-############################################################################
-
-.PHONY: nativelibs libs libgo32v1 libgo32v2 liblinux libos2 libwin32
-
-nativelibs : $(OS_SOURCE)libs
-
-libs: go32v1libs go32v2libs linuxlibs os2libs win32libs
-
-go32v1libs:
-        $(MAKE) -C go32v1 libs
-
-go32v2libs:
-        $(MAKE) -C go32v2 libs
-
-linuxlibs:
-        $(MAKE) -C linux libs
-
-os2libs:
-        $(MAKE) -C os2 libs
-
-win32libs:
-        $(MAKE) -C win32 libs
-
-
-############################################################################
-# Install
-############################################################################
-
-.PHONY: install native_install install_go32v1 install_go32v2 install_linux \
-        install_os2 install_win32
-
-install: install_linux install_go32v1 install_go32v2 install_os2 install_win32
-
-native_install: install_$(OS_SOURCE)
-
-install_go32v1:
-        $(MAKE) -C go32v1 install
-
-install_go32v2:
-        $(MAKE) -C go32v2 install
-
-install_linux:
-        $(MAKE) -C linux install
-
-install_os2:
-        $(MAKE) -C os2 install
-
-install_win32:
-        $(MAKE) -C win32 install
-
-
-############################################################################
-# LibInstall
-############################################################################
-
-.PHONY: native_libinstall libinstall libinstall_go32v1 libinstall_go32v2 \
-        libinstall_linux libinstall_os2 libinstall_win32
-
-libinstall: libinstall_linux libinstall_go32v1 libinstall_go32v2 \
-            libinstall_os2 libinstall_win32
-
-native_libinstall: libinstall_$(OS_SOURCE)
-
-libinstall_go32v1:
-        $(MAKE) -C go32v1 libinstall
-
-libinstall_go32v2:
-        $(MAKE) -C go32v2 libinstall
-
-libinstall_linux:
-        $(MAKE) -C linux libinstall
-
-libinstall_os2:
-        $(MAKE) -C os2 libinstall
-
-libinstall_win32:
-        $(MAKE) -C win32 libinstall
-
-############################################################################
-# Clean
-############################################################################
-
-.PHONY: clean native_clean clean_go32v1 clean_go32v2 clean_linux \
-        clean_os2 clean_win32
-
-clean: clean_linux clean_go32v1 clean_go32v2 clean_os2 clean_win32
-
-native_clean: clean_$(OS_SOURCE)
-
-clean_go32v1:
-        $(MAKE) -C go32v1 clean
-
-clean_go32v2:
-        $(MAKE) -C go32v2 clean
-
-clean_linux:
-        $(MAKE) -C linux clean
-
-clean_os2:
-        $(MAKE) -C os2 clean
-
-clean_win32:
-        $(MAKE) -C win32 clean
-
-

+ 276 - 226
rtl/go32v1/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:53
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:57
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -140,35 +153,41 @@ SYSTEMUNIT=system
 
 # Targets
 
-LOADEROBJECTS=prt0
-UNITOBJECTS=$(SYSTEMUNIT) objpas strings go32 dos crt objects printer sysutils math typinfo cpu mmx getopts heaptrc msmouse
+override LOADEROBJECTS+=prt0
+override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings go32 dos crt objects printer sysutils math typinfo cpu mmx getopts heaptrc msmouse
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
 ifndef FPCDIR
 FPCDIR=.
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC) $(PROCINC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -200,6 +219,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -209,43 +233,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -257,16 +255,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -276,15 +264,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -295,42 +296,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -346,17 +314,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -370,8 +333,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -396,6 +364,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -412,6 +385,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -458,6 +436,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -468,16 +451,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -513,6 +486,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -651,28 +654,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -680,41 +677,77 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+#####################################################################
+# Units
+#####################################################################
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY: fpc_units
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Loaders
+#####################################################################
+
+.PHONY: fpc_loaders
+
+%$(OEXT): %$(LOADEREXT)
+	$(AS) -o $*$(OEXT) $<
+
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override SHOWINSTALLTARGET+=fpc_loaders_showinstall
+override INSTALLTARGET+=fpc_loaders_install
+
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+
+fpc_loaders: $(LOADEROFILES)
+
+fpc_loaders_clean:
+	-$(DEL) $(LOADEROFILES)
+
+fpc_loaders_showinstall:
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+
+fpc_loaders_install:
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -731,25 +764,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -764,56 +793,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
+endif
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -830,8 +881,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -841,11 +892,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -854,11 +900,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -869,12 +915,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -883,48 +929,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -933,7 +973,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -946,6 +986,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -958,21 +1012,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
 vpath %$(PASEXT) $(INC) $(PROCINC)
 
 #

+ 2 - 2
rtl/go32v1/Makefile.fpc

@@ -11,13 +11,13 @@ units=$(SYSTEMUNIT) objpas strings \
       cpu mmx getopts heaptrc \
       msmouse
 
+[packages]
+rtl=0
 
 [defaults]
-defaultunits=1
 defaulttarget=go32v1
 defaultcpu=i386
 
-
 [dirs]
 fpcdir=.
 incdir=$(INC) $(PROCINC)

+ 276 - 226
rtl/go32v2/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:53
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:56
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -140,35 +153,41 @@ SYSTEMUNIT=system
 
 # Targets
 
-LOADEROBJECTS=prt0 exceptn fpu
-UNITOBJECTS=$(SYSTEMUNIT) objpas strings go32 initc dpmiexcp profile dxeload emu387 dos crt objects printer graph sysutils math typinfo cpu mmx getopts heaptrc msmouse ports
+override LOADEROBJECTS+=prt0 exceptn fpu
+override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings go32 initc dpmiexcp profile dxeload emu387 dos crt objects printer graph sysutils math typinfo cpu mmx getopts heaptrc msmouse ports
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
 ifndef FPCDIR
 FPCDIR=.
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC) $(PROCINC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -200,6 +219,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -209,43 +233,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -257,16 +255,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -276,15 +264,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -295,42 +296,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -346,17 +314,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -370,8 +333,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -396,6 +364,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -412,6 +385,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -458,6 +436,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -468,16 +451,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -513,6 +486,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -651,28 +654,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -680,41 +677,77 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+#####################################################################
+# Units
+#####################################################################
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY: fpc_units
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Loaders
+#####################################################################
+
+.PHONY: fpc_loaders
+
+%$(OEXT): %$(LOADEREXT)
+	$(AS) -o $*$(OEXT) $<
+
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override SHOWINSTALLTARGET+=fpc_loaders_showinstall
+override INSTALLTARGET+=fpc_loaders_install
+
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+
+fpc_loaders: $(LOADEROFILES)
+
+fpc_loaders_clean:
+	-$(DEL) $(LOADEROFILES)
+
+fpc_loaders_showinstall:
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+
+fpc_loaders_install:
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -731,25 +764,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -764,56 +793,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
+endif
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -830,8 +881,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -841,11 +892,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -854,11 +900,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -869,12 +915,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -883,48 +929,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -933,7 +973,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -946,6 +986,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -958,21 +1012,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
 vpath %$(PASEXT) $(INC) $(PROCINC)
 
 #

+ 2 - 4
rtl/go32v2/Makefile.fpc

@@ -11,15 +11,13 @@ units=$(SYSTEMUNIT) objpas strings \
       cpu mmx getopts heaptrc \
       msmouse ports
 
-programs=
-
+[packages]
+rtl=0
 
 [defaults]
-defaultunits=1
 defaulttarget=go32v2
 defaultcpu=i386
 
-
 [dirs]
 fpcdir=.
 incdir=$(INC) $(PROCINC)

+ 159 - 108
rtl/linux/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-23 09:32
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:56
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -138,10 +151,10 @@ GRAPHDIR=$(INC)/graph
 # Define Go32v2 Units
 SYSTEMUNIT=syslinux
 
-# Use new graph unit ? 
+# Use new graph unit ?
 # NEWGRAPH=YES
 # Use LibGGI ?
-# Use 
+# Use
 #
 ifndef USELIBGGI
 USELIBGGI=NO
@@ -149,18 +162,18 @@ endif
 
 # Targets
 
-LOADEROBJECTS=prt0 cprt0 gprt0 cprt21 gprt21
-UNITOBJECTS=$(SYSTEMUNIT) objpas strings linux ports dos crt objects printer graph sysutils typinfo math cpu mmx getopts heaptrc errors sockets gpm ipc
+override LOADEROBJECTS+=prt0 cprt0 gprt0 cprt21 gprt21
+override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings linux ports dos crt objects printer graph sysutils typinfo math cpu mmx getopts heaptrc errors sockets gpm ipc
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
@@ -185,7 +198,7 @@ SHAREDLIBOBJECTUNITS=$(SYSTEMUNIT) objpas strings linux ports dos crt objects pr
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -231,6 +244,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -303,17 +325,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -331,6 +348,11 @@ ifdef SMARTLINK
 override FPCOPT+=-CX
 endif
 
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
+endif
+
 # Add commandline options
 ifdef OPT
 override FPCOPT+=$(OPT)
@@ -353,6 +375,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -369,6 +396,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -415,6 +447,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -628,15 +665,13 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
+debug: fpc_debug
+
 smart: fpc_smart
 
 shared: fpc_shared
@@ -645,6 +680,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -653,43 +690,75 @@ clean: fpc_clean
 
 cleanall: fpc_cleanall
 
-depend: fpc_depend
-
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
 
-# Create Filenames
-ifdef LOADEROBJECTS
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-endif
-ifdef EXEOBJECTS
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-endif
-ifdef UNITOBJECTS
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-endif
+#####################################################################
+# Units
+#####################################################################
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY: fpc_units
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Loaders
+#####################################################################
+
+.PHONY: fpc_loaders
+
+%$(OEXT): %$(LOADEREXT)
+	$(AS) -o $*$(OEXT) $<
+
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override SHOWINSTALLTARGET+=fpc_loaders_showinstall
+override INSTALLTARGET+=fpc_loaders_install
+
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+
+fpc_loaders: $(LOADEROFILES)
+
+fpc_loaders_clean:
+	-$(DEL) $(LOADEROFILES)
+
+fpc_loaders_showinstall:
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+
+fpc_loaders_install:
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -706,9 +775,6 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
@@ -740,9 +806,6 @@ endif
 
 .PHONY: fpc_showinstall fpc_install
 
-ifdef UNITPPUFILES
-override INSTALLPPUFILES:=$(UNITPPUFILES)
-endif
 ifdef EXTRAINSTALLUNITS
 override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
@@ -755,17 +818,14 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
-fpc_showinstall:
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
-endif
-endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
 endif
 ifdef INSTALLPPUFILES
 	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
@@ -780,21 +840,15 @@ ifdef EXTRAINSTALLFILES
 	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
-endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
-endif
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-ifdef LOADEROBJECTS
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
 ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
@@ -812,6 +866,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -828,8 +892,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -839,11 +903,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -852,11 +911,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -867,12 +926,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -883,47 +942,40 @@ endif
 
 .PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITPPUFILES
-override CLEANPPUFILES=$(UNITPPUFILES)
-endif
 ifdef EXTRACLEANUNITS
 override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
+endif
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 ifdef CLEANPPUFILES
 	-$(DEL) $(CLEANPPUFILES)
-ifdef PPUFILES
-	-$(DEL) $(shell $(PPUFILES) $(CLEANPPUFILES))
 endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -932,7 +984,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -982,7 +1034,6 @@ endif
 # Users rules
 #####################################################################
 
-
 vpath %$(PASEXT) $(INC) $(PROCINC)
 
 #

+ 5 - 6
rtl/linux/Makefile.fpc

@@ -10,21 +10,19 @@ units=$(SYSTEMUNIT) objpas strings \
       sysutils typinfo math \
       cpu mmx getopts heaptrc \
       errors sockets gpm ipc
-programs=
 
+[packages]
+rtl=0
 
 [defaults]
-defaultunits=1
 defaulttarget=linux
 defaultcpu=i386
 
-
 [dirs]
 fpcdir=.
 incdir=$(INC) $(PROCINC)
 targetdir=.
 
-
 [libs]
 libname=fprtl
 libunits=$(SYSTEMUNIT) objpas strings \
@@ -34,6 +32,7 @@ libunits=$(SYSTEMUNIT) objpas strings \
       cpu mmx getopts heaptrc \
       errors sockets gpm ipc
 
+
 [presettings]
 RTL=..
 INC=$(RTL)/inc
@@ -48,10 +47,10 @@ GRAPHDIR=$(INC)/graph
 # Define Go32v2 Units
 SYSTEMUNIT=syslinux
 
-# Use new graph unit ? 
+# Use new graph unit ?
 # NEWGRAPH=YES
 # Use LibGGI ?
-# Use 
+# Use
 #
 ifndef USELIBGGI
 USELIBGGI=NO

+ 276 - 226
rtl/os2/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:53
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:57
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -140,35 +153,41 @@ SYSTEMUNIT=sysos2
 
 # Targets
 
-LOADEROBJECTS=prt0 prt1 code2 code3
-UNITOBJECTS=$(SYSTEMUNIT) objpas strings os2def doscalls moncalls kbdcalls viocalls dos crt objects printer sysutils math typinfo cpu mmx getopts heaptrc
+override LOADEROBJECTS+=prt0 prt1 code2 code3
+override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings os2def doscalls moncalls kbdcalls viocalls dos crt objects printer sysutils math typinfo cpu mmx getopts heaptrc
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
 ifndef FPCDIR
 FPCDIR=.
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC) $(PROCINC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -200,6 +219,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -209,43 +233,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -257,16 +255,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -276,15 +264,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -295,42 +296,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -346,17 +314,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -370,8 +333,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -396,6 +364,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -412,6 +385,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -458,6 +436,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -468,16 +451,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -513,6 +486,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -651,28 +654,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -680,41 +677,77 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+#####################################################################
+# Units
+#####################################################################
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY: fpc_units
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Loaders
+#####################################################################
+
+.PHONY: fpc_loaders
+
+%$(OEXT): %$(LOADEREXT)
+	$(AS) -o $*$(OEXT) $<
+
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override SHOWINSTALLTARGET+=fpc_loaders_showinstall
+override INSTALLTARGET+=fpc_loaders_install
+
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+
+fpc_loaders: $(LOADEROFILES)
+
+fpc_loaders_clean:
+	-$(DEL) $(LOADEROFILES)
+
+fpc_loaders_showinstall:
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+
+fpc_loaders_install:
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -731,25 +764,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -764,56 +793,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
+endif
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -830,8 +881,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -841,11 +892,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -854,11 +900,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -869,12 +915,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -883,48 +929,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -933,7 +973,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -946,6 +986,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -958,21 +1012,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
 vpath %.pas $(INC) $(PROCINC)
 vpath %.pp $(INC) $(PROCINC)
 

+ 2 - 3
rtl/os2/Makefile.fpc

@@ -9,15 +9,14 @@ units=$(SYSTEMUNIT) objpas strings \
       dos crt objects printer \
       sysutils math typinfo \
       cpu mmx getopts heaptrc
-programs=
 
+[packages]
+rtl=0
 
 [defaults]
-defaultunits=1
 defaulttarget=os2
 defaultcpu=i386
 
-
 [dirs]
 fpcdir=.
 incdir=$(INC) $(PROCINC)

+ 276 - 226
rtl/win32/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-10 23:53
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 19:57
 #
 
 defaultrule: all
@@ -109,6 +109,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -118,6 +122,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -145,35 +158,41 @@ WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 
 # Targets
 
-LOADEROBJECTS=wprt0 wdllprt0
-UNITOBJECTS=$(SYSTEMUNIT) objpas strings windows ole2 opengl32 winsock sockets initc dos crt objects graph sysutils typinfo math cpu mmx getopts heaptrc
+override LOADEROBJECTS+=wprt0 wdllprt0
+override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings windows ole2 opengl32 winsock sockets initc dos crt objects graph sysutils typinfo math cpu mmx getopts heaptrc
 
 # Clean
 
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
-DEFAULTUNITS=1
 
 # Directories
 
 ifndef FPCDIR
 FPCDIR=.
 endif
+ifndef PACKAGEDIR
+PACKAGEDIR=$(FPCDIR)/packages
+endif
 override NEEDINCDIR=$(INC) $(PROCINC)
 ifndef TARGETDIR
 TARGETDIR=.
 endif
 
+# Packages
+
+
 # Libraries
 
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 # Post Settings
 
@@ -205,6 +224,11 @@ else
 BASEDIR=.
 endif
 
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+endif
+
 # set the prefix directory where to install everything
 ifndef PREFIXINSTALLDIR
 ifdef inlinux
@@ -214,43 +238,17 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
-# set the directory to the rtl base
-ifndef RTLDIR
-ifdef RTL
-RTLDIR:=$(RTL)/$(OS_TARGET)
-else
-RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
-endif
-endif
-
-# specify where units are.
-ifndef UNITDIR
-ifdef UNITS
-UNITDIR=$(UNITS)/$(OS_TARGET)
-else
-UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
-endif
-endif
-ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
-UNITDIR=
-endif
-
-# On linux, try to find where libgcc.a is.
-ifdef inlinux
-ifndef GCCLIBDIR
-export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
-endif
-endif
-
-# Where to find other libraries
-ifdef inlinux
-ifndef OTHERLIBDIR
-export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
 endif
 endif
 
 #####################################################################
-# Install Directories based on BASEINSTALLDIR
+# Install Directories
 #####################################################################
 
 # set the base directory where to install everything
@@ -262,16 +260,6 @@ BASEINSTALLDIR=$(PREFIXINSTALLDIR)
 endif
 endif
 
-
-# Linux binary really goes to baseinstalldir
-ifndef LIBINSTALLDIR
-ifdef inlinux
-LIBINSTALLDIR=$(BASEINSTALLDIR)
-else
-LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
-endif
-endif
-
 # set the directory where to install the binaries
 ifndef BININSTALLDIR
 ifdef inlinux
@@ -281,15 +269,28 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
 endif
 endif
 
-# Where the .msg files will be stored
-ifndef MSGINSTALLDIR
-MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+endif
+
+# Where to install shared libraries
+ifndef LIBINSTALLDIR
+ifdef inlinux
+LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+else
+LIBINSTALLDIR=$(UNITINSTALLDIR)
+endif
 endif
 
-# Where the .msg files will be stored
+# Where the source files will be stored
 ifndef SOURCEINSTALLDIR
+ifdef inlinux
+SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
+else
 SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
 endif
+endif
 
 # Where the doc files will be stored
 ifndef DOCINSTALLDIR
@@ -300,42 +301,9 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
 endif
 endif
 
-########################
-# Unit Directories
-########################
-
-# this can be set to 'rtl' when the RTL units are installed
-ifndef UNITPREFIX
-UNITPREFIX=units
-endif
-
-# set the directory where to install the units.
-ifndef UNITINSTALLDIR
-UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
-endif
-
-# set the directory where to install the units.
-ifndef STATIC_UNITINSTALLDIR
-STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
-endif
-
-# set the directory where to install the units.
-ifndef SHARED_UNITINSTALLDIR
-SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef STATIC_LIBINSTALLDIR
-STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
-endif
-
-# set the directory where to install the libs (must exist)
-ifndef SHARED_LIBINSTALLDIR
-ifdef inlinux
-SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
-else
-SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
-endif
+# Where the some extra (data)files will be stored
+ifndef EXTRAINSTALLDIR
+EXTRAINSTALLDIR=$(BASEINSTALLDIR)
 endif
 
 
@@ -351,17 +319,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-
-ifdef NEEDOPT
-override FPCOPT+=$(NEEDOPT)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
-endif
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDINCDIR
@@ -375,8 +338,13 @@ override FPCOPT+=-FE$(TARGETDIR)
 endif
 
 # Smartlinking
-ifeq ($(SMARTLINK),YES)
-override FPCOPT+=-Cx
+ifdef SMARTLINK
+override FPCOPT+=-CX
+endif
+
+# Debug
+ifdef DEBUG
+override FPCOPT+=-g
 endif
 
 # Add commandline options
@@ -401,6 +369,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -417,6 +390,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -463,6 +441,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -473,16 +456,6 @@ ifndef LD
 LD=ld
 endif
 
-# Where is the ppumove program ?
-ifndef PPUMOVE
-PPUMOVE=ppumove
-endif
-
-# Where is the ppdep program ?
-ifndef PPDEP
-PPDEP=ppdep
-endif
-
 # ppas.bat / ppas.sh
 ifdef inlinux
 PPAS=ppas.sh
@@ -518,6 +491,36 @@ export ECHO:=$(firstword $(ECHO))
 endif
 endif
 
+# ppdep
+ifndef PPDEP
+PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPDEP),)
+PPDEP=
+else
+export PPDEP:=$(firstword $(PPDEP))
+endif
+endif
+
+# ppumove
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+export PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+
+# ppufiles
+ifndef PPUFILES
+PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUFILES),)
+PPUFILES=
+else
+export PPUFILES:=$(firstword $(PPUFILES))
+endif
+endif
+
 # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
 # upx uses that one itself (PFV)
 ifndef UPXPROG
@@ -656,28 +659,22 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all staticlib sharedlib showinstall install \
-	staticinstall sharedinstall libinstall zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
-staticlib: fpc_staticlib
+debug: fpc_debug
 
-sharedlib: fpc_sharedlib
+smart: fpc_smart
+
+shared: fpc_shared
 
 showinstall: fpc_showinstall
 
 install: fpc_install
 
-staticinstall: fpc_staticinstall
-
-sharedinstall: fpc_sharedinstall
-
-libinstall: fpc_libinstall
+sourceinstall: fpc_sourceinstall
 
 zipinstall: fpc_zipinstall
 
@@ -685,41 +682,77 @@ zipinstalladd: fpc_zipinstalladd
 
 clean: fpc_clean
 
-clean_all: fpc_clean_all
-
-depend: fpc_depend
+cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
 #####################################################################
-# General compile rules
+# Package depends
 #####################################################################
 
-.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
 
-# Create Filenames
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
-UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
-UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+#####################################################################
+# Units
+#####################################################################
 
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+.PHONY: fpc_units
 
-ifdef DEFAULTUNITS
-fpc_all: fpc_loaders fpc_units
-else
-fpc_all: fpc_loaders fpc_units fpc_exes
-endif
+override ALLTARGET+=fpc_units
 
-fpc_loaders: $(LOADEROFILES)
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
 
 fpc_units: $(UNITPPUFILES)
 
-fpc_exes: $(EXEFILES)
+#####################################################################
+# Loaders
+#####################################################################
+
+.PHONY: fpc_loaders
+
+%$(OEXT): %$(LOADEREXT)
+	$(AS) -o $*$(OEXT) $<
+
+override ALLTARGET+=fpc_loaders
+override CLEANTARGET+=fpc_loaders_clean
+override SHOWINSTALLTARGET+=fpc_loaders_showinstall
+override INSTALLTARGET+=fpc_loaders_install
+
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+
+fpc_loaders: $(LOADEROFILES)
+
+fpc_loaders_clean:
+	-$(DEL) $(LOADEROFILES)
+
+fpc_loaders_showinstall:
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+
+fpc_loaders_install:
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+
+#####################################################################
+# General compile rules
+#####################################################################
+
+.PHONY: fpc_all fpc_debug
+
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
+
+fpc_debug:
+	$(MAKE) all DEBUG=1
 
 # General compile rules, available for both possible PASEXT
+
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+
 %$(PPUEXT): %.pp
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
@@ -736,25 +769,21 @@ fpc_exes: $(EXEFILES)
 	$(COMPILER) $< $(REDIR)
 	$(EXECPASS)
 
-%$(OEXT): %$(LOADEREXT)
-	$(AS) -o $*$(OEXT) $<
-
 #####################################################################
 # Library
 #####################################################################
 
-.PHONY: fpc_staticlib fpc_sharedlib
+.PHONY: fpc_smart fpc_shared
 
 # Default sharedlib units are all unit objects
 ifndef SHAREDLIBUNITOBJECTS
 SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
 endif
 
-fpc_staticlib:
-	$(MAKE) libsclean
-	$(MAKE) all SMARTLINK=YES
+fpc_smart:
+	$(MAKE) all SMARTLINK=1
 
-fpc_sharedlib: all
+fpc_shared: all
 ifdef inlinux
 ifndef LIBNAME
 	@$(ECHO) LIBNAME not set
@@ -769,56 +798,78 @@ endif
 # Install rules
 #####################################################################
 
-.PHONY: fpc_showinstallfiles fpc_install
+.PHONY: fpc_showinstall fpc_install
 
-ifdef UNITOBJECTS
-override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRAINSTALLUNITS
-override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
 endif
 
-fpc_showinstallfiles : all
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
-	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef INSTALLPPUFILES
+ifdef PPUFILES
+ifdef inlinux
+INSTALLPPULINKFILES=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
+INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
+else
+INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
 endif
-ifdef UNITINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+
+fpc_showinstall: $(SHOWINSTALLTARGET)
+ifdef INSTALLEXEFILES
+	@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
+endif
+ifdef INSTALLPPUFILES
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
+ifneq ($(INSTALLPPULINKFILES),)
+	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	@$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES))
+endif
 endif
 ifdef EXTRAINSTALLFILES
-	@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+	@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
 endif
 
-fpc_install:
+fpc_install: $(INSTALLTARGET)
 # Create UnitInstallFiles
-ifndef DEFAULTUNITS
-ifdef EXEOBJECTS
+ifdef INSTALLEXEFILES
 	$(MKDIR) $(BININSTALLDIR)
 # Compress the exes if upx is defined
 ifdef UPXPROG
-	-$(UPXPROG) $(EXEFILES)
+	-$(UPXPROG) $(INSTALLEXEFILES)
 endif
-	$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
 endif
-endif
-ifdef LOADEROBJECTS
+ifdef INSTALLPPUFILES
 	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
+endif
+ifneq ($(INSTALLPPULIBFILES),)
+	$(MKDIR) $(LIBINSTALLDIR)
+	$(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)
 endif
-ifdef UNITINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
 endif
 ifdef EXTRAINSTALLFILES
-	$(MKDIR) $(UNITINSTALLDIR)
-	$(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+	$(MKDIR) $(EXTRAINSTALLDIR)
+	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -835,8 +886,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -846,11 +897,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -859,11 +905,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -874,12 +920,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -888,48 +934,42 @@ endif
 # Clean rules
 #####################################################################
 
-.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+.PHONY: fpc_clean fpc_cleanall
 
-ifdef UNITOBJECTS
-override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
-endif
 ifdef EXTRACLEANUNITS
-override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
 endif
 
-fpc_clean:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES) $(EXEOFILES)
+ifdef CLEANPPUFILES
+ifdef PPUFILES
+CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
-ifdef LOADEROBJECTS
-	-$(DEL) $(LOADEROFILES)
 endif
-ifdef UNITCLEANFILES
-	-$(DEL) $(UNITCLEANFILES)
+
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
 endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_libsclean: clean
-	-$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-
-fpc_cleanall:
-ifdef EXEOBJECTS
-	-$(DEL) $(EXEFILES)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-
-#####################################################################
-# Depend rules
-#####################################################################
-
-.PHONY: fpc_depend
-
-fpc_depend:
-	$(PPDEP) $(UNITOBJECTS)
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -938,7 +978,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -951,6 +991,20 @@ fpc_infocfg:
 	@$(ECHO)  Target.... $(OS_TARGET)
 	@$(ECHO)
 
+fpc_infoobjects:
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  LoaderObjects..... $(LOADEROBJECTS)
+	@$(ECHO)  UnitObjects....... $(UNITOBJECTS)
+	@$(ECHO)  ExeObjects........ $(EXEOBJECTS)
+	@$(ECHO)
+	@$(ECHO)  ExtraCleanUnits... $(EXTRACLEANUNITS)
+	@$(ECHO)  ExtraCleanFiles... $(EXTRACLEANFILES)
+	@$(ECHO)
+	@$(ECHO)  ExtraInstallUnits. $(EXTRAINSTALLUNITS)
+	@$(ECHO)  ExtraInstallFiles. $(EXTRAINSTALLFILES)
+	@$(ECHO)
 
 fpc_infoinstall:
 	@$(ECHO)
@@ -963,21 +1017,17 @@ endif
 	@$(ECHO)
 	@$(ECHO)  BaseInstallDir....... $(BASEINSTALLDIR)
 	@$(ECHO)  BinInstallDir........ $(BININSTALLDIR)
-	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
-	@$(ECHO)  StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
-	@$(ECHO)  SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
 	@$(ECHO)  LibInstallDir........ $(LIBINSTALLDIR)
-	@$(ECHO)  StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
-	@$(ECHO)  SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
-	@$(ECHO)  MsgInstallDir........ $(MSGINSTALLDIR)
+	@$(ECHO)  UnitInstallDir....... $(UNITINSTALLDIR)
+	@$(ECHO)  SourceInstallDir..... $(SOURCEINSTALLDIR)
 	@$(ECHO)  DocInstallDir........ $(DOCINSTALLDIR)
+	@$(ECHO)  ExtraInstallDir...... $(EXTRAINSTALLDIR)
 	@$(ECHO)
 
 #####################################################################
 # Users rules
 #####################################################################
 
-
 vpath %$(PASEXT) $(INC) $(PROCINC)
 
 #

+ 2 - 3
rtl/win32/Makefile.fpc

@@ -10,15 +10,14 @@ units=$(SYSTEMUNIT) objpas strings \
       dos crt objects graph \
       sysutils typinfo math \
       cpu mmx getopts heaptrc
-programs=
 
+[packages]
+rtl=0
 
 [defaults]
-defaultunits=1
 defaulttarget=win32
 defaultcpu=i386
 
-
 [dirs]
 fpcdir=.
 incdir=$(INC) $(PROCINC)

+ 126 - 37
utils/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:10
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,15 +131,16 @@ endif
 
 # Targets
 
-DIROBJECTS+=$(wildcard tply h2pas)
-EXEOBJECTS+=ppufiles ppudump ppumove ppdep ptop rstconv data2inc fpcmake
+override DIROBJECTS+=$(wildcard tply h2pas)
+override EXEOBJECTS+=ppufiles ppudump ppumove ppdep ptop rstconv data2inc fpcmake
 
 # Clean
 
-EXTRACLEANUNITS+=ppu ptopu
+override EXTRACLEANUNITS+=ppu ptopu
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -152,7 +166,7 @@ override NEEDUNITDIR+=$(FPCDIR)/fcl/$(OS_TARGET)
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -179,6 +193,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -251,12 +274,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 ifdef NEEDUNITDIR
@@ -300,6 +323,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -316,6 +344,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -362,6 +395,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -585,13 +623,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all $(addsuffix _all,$(DIROBJECTS))
 
 debug: fpc_debug $(addsuffix _debug,$(DIROBJECTS))
@@ -608,6 +642,8 @@ showinstall: fpc_showinstall $(addsuffix _showinstall,$(DIROBJECTS))
 
 install: fpc_install $(addsuffix _install,$(DIROBJECTS))
 
+sourceinstall: fpc_sourceinstall $(addsuffix _sourceinstall,$(DIROBJECTS))
+
 zipinstall: fpc_zipinstall $(addsuffix _zipinstall,$(DIROBJECTS))
 
 zipinstalladd: fpc_zipinstalladd $(addsuffix _zipinstalladd,$(DIROBJECTS))
@@ -620,14 +656,37 @@ depend: $(addsuffix _depend,$(DIROBJECTS))
 
 info: fpc_info $(addsuffix _info,$(DIROBJECTS))
 
+.PHONY:  all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall depend info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+ifneq ($(wildcard $(FCLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(FCLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=fcl
+fcl_package:
+	$(MAKE) -C $(FCLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package $(OS_TARGET)_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -641,7 +700,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -709,6 +771,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -755,6 +819,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -771,8 +845,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -782,11 +856,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -795,11 +864,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -810,12 +879,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -833,6 +902,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -849,15 +920,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -866,7 +937,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)
@@ -913,8 +984,16 @@ endif
 	@$(ECHO)
 
 
+# Target Dirs
+
+OBJECTDIRTPLY=1
+OBJECTDIRH2PAS=1
+
 # Dir tply
 
+ifdef OBJECTDIRTPLY
+.PHONY:  tply_all tply_debug tply_examples tply_test tply_smart tply_shared tply_showinstall tply_install tply_sourceinstall tply_zipinstall tply_zipinstalladd tply_clean tply_cleanall tply_depend tply_info
+
 tply_all:
 	$(MAKE) -C tply all
 
@@ -939,6 +1018,9 @@ tply_showinstall:
 tply_install:
 	$(MAKE) -C tply install
 
+tply_sourceinstall:
+	$(MAKE) -C tply sourceinstall
+
 tply_zipinstall:
 	$(MAKE) -C tply zipinstall
 
@@ -956,10 +1038,13 @@ tply_depend:
 
 tply_info:
 	$(MAKE) -C tply info
-
+endif
 
 # Dir h2pas
 
+ifdef OBJECTDIRH2PAS
+.PHONY:  h2pas_all h2pas_debug h2pas_examples h2pas_test h2pas_smart h2pas_shared h2pas_showinstall h2pas_install h2pas_sourceinstall h2pas_zipinstall h2pas_zipinstalladd h2pas_clean h2pas_cleanall h2pas_depend h2pas_info
+
 h2pas_all:
 	$(MAKE) -C h2pas all
 
@@ -984,6 +1069,9 @@ h2pas_showinstall:
 h2pas_install:
 	$(MAKE) -C h2pas install
 
+h2pas_sourceinstall:
+	$(MAKE) -C h2pas sourceinstall
+
 h2pas_zipinstall:
 	$(MAKE) -C h2pas zipinstall
 
@@ -1001,6 +1089,7 @@ h2pas_depend:
 
 h2pas_info:
 	$(MAKE) -C h2pas info
+endif
 
 #####################################################################
 # Users rules

File diff suppressed because it is too large
+ 230 - 183
utils/fpcmake.inc


+ 93 - 39
utils/fpcmake.ini

@@ -111,6 +111,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -120,6 +124,14 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
 
 [usersettings]
 #####################################################################
@@ -153,6 +165,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 
 [dir_install]
 #####################################################################
@@ -252,13 +273,15 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-[command_fpcdir]
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+[command_rtldir]
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+
+[command_unitsdir]
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 [command_needunit]
@@ -337,6 +360,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -355,6 +383,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -403,6 +436,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -668,16 +706,15 @@ PASEXT=.pas
 endif
 endif
 
-
-[defaultrules]
+[standardrules]
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-        showinstall install zipinstall zipinstalladd \
-        clean cleanall depend info
-
+[packagedependrules]
+#####################################################################
+# Package depends
+#####################################################################
 
 [loaderrules]
 #####################################################################
@@ -694,7 +731,7 @@ override CLEANTARGET+=fpc_loaders_clean
 override SHOWINSTALLTARGET+=fpc_loaders_showinstall
 override INSTALLTARGET+=fpc_loaders_install
 
-LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+override LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
 
 fpc_loaders: $(LOADEROFILES)
 
@@ -718,7 +755,7 @@ fpc_loaders_install:
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -733,8 +770,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -750,8 +787,8 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_examples fpc_test
 
-EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
-EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
+override EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
 
 override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
 
@@ -760,6 +797,7 @@ fpc_examples: all $(EXAMPLEFILES)
 fpc_test: examples
 
 
+
 [compilerules]
 #####################################################################
 # General compile rules
@@ -767,7 +805,10 @@ fpc_test: examples
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+        @$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
         $(MAKE) all DEBUG=1
@@ -839,6 +880,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -886,6 +929,17 @@ ifdef EXTRAINSTALLFILES
 endif
 
 
+[sourceinstallrules]
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+        $(MKDIR) $(SOURCEINSTALLDIR)
+        $(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 [zipinstallrules]
 #####################################################################
 # Zip
@@ -903,8 +957,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -914,11 +968,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -927,11 +976,11 @@ ifndef ZIPNAME
 else
         $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-        gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-        cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-        gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+        gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+        cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+        gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-        cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+        cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
         $(DELTREE) $(PACKDIR)
 endif
@@ -942,12 +991,12 @@ ifndef ZIPNAME
         @$(ECHO) Please specify ZIPNAME!
         @exit
 else
-        $(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+        $(DEL) $(DESTZIPDIR)/$(ZIPNAME)
         $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-        cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+        cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-        cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+        cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
         $(DELTREE) $(PACKDIR)
 endif
@@ -967,6 +1016,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -983,15 +1034,15 @@ endif
 ifdef EXTRACLEANFILES
         -$(DEL) $(EXTRACLEANFILES)
 endif
-        -$(DEL) $(PPAS) link.res log
+        -$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
         -$(DEL) $(CLEANEXEFILES)
 endif
         -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
         -$(DELTREE) *$(SMARTEXT)
-        -$(DEL) $(PPAS) link.res log
+        -$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 
 [dependrules]
@@ -1013,7 +1064,7 @@ fpc_depend:
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
         fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 [info_cfg]
 fpc_infocfg:
@@ -1128,7 +1179,10 @@ endif
 [end]
 ;
 ; $Log$
-; Revision 1.8  1999-11-24 23:53:00  peter
+; Revision 1.9  1999-11-25 20:23:01  peter
+;   * package dependencies
+;
+; Revision 1.8  1999/11/24 23:53:00  peter
 ;   * packages
 ;   * lot of other changes
 ;

+ 170 - 55
utils/fpcmake.pp

@@ -31,8 +31,8 @@ const
 
 type
   tsections=(sec_none,
-    sec_units,sec_exes,sec_loaders,sec_examples,
-    sec_compile,sec_depend,sec_install,sec_zipinstall,
+    sec_units,sec_exes,sec_loaders,sec_examples,sec_package,
+    sec_compile,sec_depend,sec_install,sec_sourceinstall,sec_zipinstall,
     sec_clean,sec_libs,sec_command,sec_exts,sec_dirs,sec_tools,sec_info
   );
 
@@ -41,14 +41,14 @@ const
   TimeFormat='yyyy/mm/dd hh:nn';
 
   sectionstr : array[tsections] of string=('none',
-    'units','exes','loaders','examples',
-    'compile','depend','install','zipinstall',
+    'units','exes','loaders','examples','package',
+    'compile','depend','install','sourceinstall','zipinstall',
     'clean','libs','command','exts','dirs','tools','info'
   );
 
   sectiondef : array[tsections] of boolean=(false,
-    true,true,false,false,
-    true,false,true,true,
+    true,true,false,false,false,
+    true,false,true,true,true,
     true,true,true,true,true,true,true
   );
 
@@ -57,12 +57,12 @@ const
     'linux','go32v2','win32','os2'
   );
 
-  rules=14;
+  rules=15;
   rulestr : array[1..rules] of string=(
     'all','debug',
     'examples','test',
     'smart','shared',
-    'showinstall','install','zipinstall','zipinstalladd',
+    'showinstall','install','sourceinstall','zipinstall','zipinstalladd',
     'clean','cleanall',
     'depend','info'
   );
@@ -71,7 +71,7 @@ const
     sec_compile,sec_compile,
     sec_examples,sec_examples,
     sec_libs,sec_libs,
-    sec_install,sec_install,sec_zipinstall,sec_zipinstall,
+    sec_install,sec_install,sec_sourceinstall,sec_zipinstall,sec_zipinstall,
     sec_clean,sec_clean,
     sec_depend,sec_info
   );
@@ -79,6 +79,7 @@ const
 { Sections in Makefile.fpc }
   ini_sections='sections';
   ini_install='install';
+  ini_zip='zip';
   ini_clean='clean';
   ini_dirs='dirs';
   ini_packages='packages';
@@ -95,12 +96,17 @@ type
     TargetLoaders,
     TargetUnits,
     TargetPrograms,
-    TargetExamples,
+    TargetExamples : TTargetsString;
+    InstallPrefix,
+    InstallBase    : string;
     InstallUnits,
-    InstallFiles,
+    InstallFiles   : TTargetsString;
     CleanUnits,
     CleanFiles     : TTargetsString;
+    ZipName,
+    ZipTarget      : string;
     DefaultRule,
+    DefaultDir,
     DefaultTarget,
     DefaultCPU,
     DefaultOptions : string;
@@ -113,8 +119,9 @@ type
     DirUnitTarget,
     DirSources,
     DirInc         : string;
+    PackageRTL,
     PackageFCL     : boolean;
-    Packages       : string;
+    Packages       : TTargetsString;
     LibName,
     LibUnits       : string;
     LibGCC,
@@ -146,8 +153,8 @@ type
   end;
 
 var
-  userini : TFpcMake;
-  fpcini  : TIniFile;
+  userini   : TFpcMake;
+  fpcini    : TIniFile;
   IniStream : TMyMemoryStream;
 
 
@@ -238,15 +245,22 @@ begin
      ReadTargetsString(CleanUnits,ini_clean,'units','');
      ReadTargetsString(CleanFiles,ini_clean,'files','');
    { install }
+     InstallPrefix:=ReadString(ini_install,'dirprefix','');
+     InstallBase:=ReadString(ini_install,'dirbase','');
      ReadTargetsString(InstallUnits,ini_install,'units','');
      ReadTargetsString(InstallFiles,ini_install,'files','');
+   { zip }
+     ZipName:=ReadString(ini_zip,'zipname','');
+     ZipTarget:=ReadString(ini_zip,'ziptarget','install');
    { defaults }
+     DefaultDir:=ReadString(ini_defaults,'defaultdir','');
      DefaultRule:=ReadString(ini_defaults,'defaultrule','all');
      DefaultTarget:=ReadString(ini_defaults,'defaulttarget','');
      DefaultCPU:=ReadString(ini_defaults,'defaultcpu','');
      DefaultOptions:=ReadString(ini_defaults,'defaultoptions','');
    { packages }
-     Packages:=Readstring(ini_packages,'packages','');
+     ReadTargetsString(Packages,ini_packages,'packages','');
+     PackageRTL:=ReadBool(ini_packages,'rtl',true);
      PackageFCL:=ReadBool(ini_packages,'fcl',false);
    { dirs }
      DirFpc:=ReadString(ini_dirs,'fpcdir','');
@@ -284,13 +298,13 @@ begin
       Section[sec]:=ReadBool(ini_sections,sectionstr[sec],section[sec]);
      { turn on needed sections }
      if not TargetStringEmpty(TargetLoaders) then
-      userini.section[sec_loaders]:=true;
+      section[sec_loaders]:=true;
      if not TargetStringEmpty(TargetUnits) then
-      userini.section[sec_units]:=true;
+      section[sec_units]:=true;
      if not TargetStringEmpty(TargetPrograms) then
-      userini.section[sec_exes]:=true;
+      section[sec_exes]:=true;
      if not TargetStringEmpty(TargetExamples) then
-      userini.section[sec_examples]:=true;
+      section[sec_examples]:=true;
    { info }
      InfoCfg:=ReadBool(ini_info,'infoconfig',true);
      InfoDirs:=ReadBool(ini_info,'infodirs',false);
@@ -359,6 +373,7 @@ function WriteMakefile:boolean;
 var
   mf : TStringList;
   ss : TStringList;
+  Phony : string;
 
   procedure FixTab(sl:TStringList);
   var
@@ -433,9 +448,9 @@ var
      begin
        if (length(userini.rules[i])>length(rulestr[rule])) and
           (userini.rules[i][1]=rulestr[rule][1]) and
-	  ((userini.rules[i][length(rulestr[rule])+1]=':') or
-	   ((length(userini.rules[i])>length(rulestr[rule])+1) and
-	    (userini.rules[i][length(rulestr[rule])+2]=':'))) and
+          ((userini.rules[i][length(rulestr[rule])+1]=':') or
+           ((length(userini.rules[i])>length(rulestr[rule])+1) and
+            (userini.rules[i][length(rulestr[rule])+2]=':'))) and
           (Copy(userini.rules[i],1,length(rulestr[rule]))=rulestr[rule]) then
          exit;
        inc(i);
@@ -443,10 +458,14 @@ var
     hs:='';
     if userini.section[rule2sec[rule]] then
      hs:=hs+' fpc_'+rulestr[rule];
-    if not TargetStringEmpty(userini.targetdirs) then
-     hs:=hs+' $(addsuffix _'+rulestr[rule]+',$(DIROBJECTS))';
+    if userini.DefaultDir<>'' then
+     hs:=hs+' '+userini.defaultdir+'_'+rulestr[rule]
+    else
+     if not TargetStringEmpty(userini.targetdirs) then
+      hs:=hs+' $(addsuffix _'+rulestr[rule]+',$(DIROBJECTS))';
     if hs<>'' then
      begin
+       Phony:=Phony+' '+rulestr[rule];
        mf.Add(rulestr[rule]+':'+hs);
        mf.Add('');
      end;
@@ -464,9 +483,9 @@ var
         if t[i]<>'' then
          begin
            if wildcard then
-            mf.Add(pre+'+=$(wildcard '+t[i]+')')
+            mf.Add('override '+pre+'+=$(wildcard '+t[i]+')')
            else
-            mf.Add(pre+'+='+t[i]);
+            mf.Add('override '+pre+'+='+t[i]);
          end;
         if i<>0 then
          mf.Add('endif');
@@ -475,20 +494,73 @@ var
 
   procedure AddTargetDir(const s:string);
   var
-    j : integer;
+    j  : integer;
+    hs : string;
   begin
     AddHead('Dir '+s);
+    mf.Add('ifdef OBJECTDIR'+Uppercase(s));
+    hs:='.PHONY: ';
+    for j:=1to rules do
+     hs:=hs+' '+s+'_'+rulestr[j];
+    mf.Add(hs);
+    mf.Add('');
     for j:=1to rules do
      begin
        mf.Add(s+'_'+rulestr[j]+':');
        mf.Add(#9+'$(MAKE) -C '+s+' '+rulestr[j]);
-       mf.Add('');
+       if j<rules then
+        mf.Add('');
      end;
+    mf.Add('endif');
+  end;
+
+  procedure AddPackageDep(const packagedir,s,s2:string;ifdefneed:boolean);
+  begin
+    if ifdefneed then
+     mf.Add('ifdef PACKAGE'+Uppercase(s));
+    mf.Add('ifneq ($(wildcard '+packagedir+'/'+s+'),)');
+    mf.Add('ifeq ($(wildcard '+packagedir+'/'+s+'/$(FPCMAKED)),)');
+    mf.Add('override COMPILEPACKAGES+='+s2);
+    mf.Add(s2+'_package:');
+    mf.Add(#9'$(MAKE) -C '+packagedir+'/'+s+' all');
+    mf.Add('endif');
+    mf.Add('endif');
+    if ifdefneed then
+     mf.Add('endif');
+    Phony:=Phony+' '+s+'_package';
+  end;
+
+  function AddTargetDefines(const ts:TTargetsString;const prefix:string):string;
+  var
+    j,i : integer;
+    hs,hs2 : string;
+  begin
+    hs2:='';
+    for j:=0 to targets do
+     if (ts[j]<>'') then
+      begin
+        if j<>0 then
+         mf.Add('ifeq ($(OS_TARGET),'+targetstr[j]+')');
+        hs:=ts[j];
+        repeat
+          i:=pos(' ',hs);
+          if i=0 then
+           i:=length(hs)+1;
+          mf.Add(prefix+Uppercase(Copy(hs,1,i-1))+'=1');
+          { add to the list of dirs without duplicates }
+          if pos(Copy(hs,1,i-1),hs2)=0 then
+           hs2:=hs2+Copy(hs,1,i-1)+' ';
+          system.delete(hs,1,i);
+        until hs='';
+        if j<>0 then
+         mf.Add('endif');
+      end;
+     AddTargetDefines:=hs2;
   end;
 
 var
-  hs : string;
-  i,j : integer;
+  hs  : string;
+  i : integer;
 begin
 { Open the Makefile }
   Verbose('Creating Makefile');
@@ -549,6 +621,16 @@ begin
      AddHead('Install');
      AddTargets('EXTRAINSTALLUNITS',userini.installunits,false);
      AddTargets('EXTRAINSTALLFILES',userini.installfiles,false);
+     if userini.installprefix<>'' then
+      Add('PREFIXINSTALLDIR='+userini.installprefix);
+     if userini.installbase<>'' then
+      Add('BASEINSTALLDIR='+userini.installbase);
+
+   { Zip }
+     if userini.zipname<>'' then
+      Add('ZIPNAME='+userini.zipname);
+     if userini.ziptarget<>'' then
+      Add('ZIPTARGET='+userini.ziptarget);
 
    { Defaults }
      AddHead('Defaults');
@@ -596,11 +678,10 @@ begin
 
    { Packages }
      AddHead('Packages');
-     if userini.Packages<>'' then
-      Add('PACKAGES='+userini.Packages);
+     AddTargets('PACKAGES',userini.packages,false);
      if userini.PackageFCL then
       Add('override NEEDUNITDIR+=$(FPCDIR)/fcl/$(OS_TARGET)');
-     if userini.Packages<>'' then
+     if not TargetStringEmpty(userini.Packages) then
       Add('override NEEDUNITDIR+=$(addprefix $(PACKAGEDIR)/,$(PACKAGES))');
 
    { Libs }
@@ -629,7 +710,7 @@ begin
          hs:=hs+'fpc_infoobjects ';
         if userini.infoinstall then
          hs:=hs+'fpc_infoinstall ';
-        Add('FPCINFO='+hs);
+        Add('INFOTARGET='+hs);
       end;
 
    { Post Settings }
@@ -638,7 +719,6 @@ begin
         AddHead('Post Settings');
         AddStrings(userini.PostSettings);
       end;
-
      Add('');
 
    { write dirs }
@@ -656,8 +736,12 @@ begin
         Add('');
         AddSection(true,'command_begin');
         AddSection((userini.defaultoptions<>''),'command_needopt');
-        AddSection((userini.dirfpc<>''),'command_fpcdir');
-        AddSection((userini.dirunit<>'') or (userini.packages<>'') or (userini.packagefcl),'command_needunit');
+        AddSection((userini.dirfpc<>''),'command_rtldir');
+        AddSection((userini.dirfpc<>''),'command_unitsdir');
+        AddSection((userini.dirunit<>'') or
+                   (userini.packagefcl) or
+                   (not TargetStringEmpty(userini.packages))
+                   ,'command_needunit');
         AddSection((userini.dirlib<>''),'command_needlib');
         AddSection((userini.dirobj<>''),'command_needobj');
         AddSection((userini.dirinc<>''),'command_needinc');
@@ -691,19 +775,53 @@ begin
       AddSection(true,'extensions');
 
    { add default rules }
-     AddSection(true,'defaultrules');
+     AddSection(true,'standardrules');
+     Phony:='';
      for i:=1 to rules do
       AddRule(i);
+     if Phony<>'' then
+      begin
+        Add('.PHONY: '+Phony);
+        Add('');
+      end;
+
+   { Package depends, must be before the other rules so it's done first! }
+     AddSection(true,'packagedependrules');
+     Phony:='';
+     if userini.packagertl then
+      AddPackageDep('$(RTLDIR)','$(OS_TARGET)','rtl',false);
+     if userini.packagefcl then
+      AddPackageDep('$(FCLDIR)','$(OS_TARGET)','fcl',false);
+     Add('');
+     if not TargetStringEmpty(userini.Packages) then
+      begin
+        hs:=AddTargetDefines(userini.Packages,'PACKAGE');
+        repeat
+          i:=pos(' ',hs);
+          if i=0 then
+           i:=length(hs)+1;
+          AddPackageDep('$(PACKAGEDIR)',Copy(hs,1,i-1),Copy(hs,1,i-1),true);
+          system.delete(hs,1,i);
+        until hs='';
+        Add('');
+      end;
+     if Phony<>'' then
+      begin
+        Add('.PHONY: '+Phony);
+        Add('');
+      end;
 
    { compile rules for making units/loaders/exes/examples }
      AddSection(not TargetStringEmpty(userini.targetunits),'unitrules');
      AddSection(not TargetStringEmpty(userini.targetprograms),'exerules');
      AddSection(not TargetStringEmpty(userini.targetloaders),'loaderrules');
      AddSection(not TargetStringEmpty(userini.targetexamples),'examplerules');
+
    { default fpc_ rules }
      AddSection(userini.Section[sec_Compile],'compilerules');
      AddSection(userini.Section[sec_Libs],'libraryrules');
      AddSection(userini.Section[sec_Install],'installrules');
+     AddSection(userini.Section[sec_SourceInstall],'sourceinstallrules');
      AddSection(userini.Section[sec_ZipInstall],'zipinstallrules');
      AddSection(userini.Section[sec_Clean],'cleanrules');
      AddSection(userini.Section[sec_Depend],'dependrules');
@@ -720,22 +838,16 @@ begin
    { Target dirs }
      if not TargetStringEmpty(userini.targetdirs) then
       begin
-        for j:=0 to targets do
-         if (userini.targetdirs[j]<>'') then
-          begin
-            if j<>0 then
-             mf.Add('ifeq ($(OS_TARGET),'+targetstr[j]+')');
-            hs:=userini.targetdirs[j];
-            repeat
-              i:=pos(' ',hs);
-              if i=0 then
-               i:=length(hs)+1;
-              AddTargetDir(Copy(hs,1,i-1));
-              system.delete(hs,1,i);
-            until hs='';
-            if j<>0 then
-             mf.Add('endif');
-          end;
+        AddHead('Target Dirs');
+        hs:=AddTargetDefines(userini.targetdirs,'OBJECTDIR');
+        repeat
+          i:=pos(' ',hs);
+          if i=0 then
+           i:=length(hs)+1;
+          AddTargetDir(Copy(hs,1,i-1));
+          system.delete(hs,1,i);
+        until hs='';
+        Add('');
       end;
 
    { insert users rules }
@@ -774,7 +886,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.8  1999-11-24 23:53:00  peter
+  Revision 1.9  1999-11-25 20:23:01  peter
+    * package dependencies
+
+  Revision 1.8  1999/11/24 23:53:00  peter
     * packages
     * lot of other changes
 

+ 99 - 35
utils/h2pas/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:10
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-EXEOBJECTS+=h2pas
+override EXEOBJECTS+=h2pas
 
 # Clean
 
-EXTRACLEANUNITS+=options lexlib scan yacclib converu
+override EXTRACLEANUNITS+=options lexlib scan yacclib converu
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -148,7 +162,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -175,6 +189,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -251,12 +274,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -291,6 +314,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -307,6 +335,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -353,6 +386,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -566,13 +604,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -585,6 +619,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -595,14 +631,30 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -616,7 +668,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -684,6 +739,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -730,6 +787,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -746,8 +813,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -757,11 +824,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -770,11 +832,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -785,12 +847,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -808,6 +870,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -824,15 +888,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -841,7 +905,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 99 - 35
utils/simulator/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:10
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -118,14 +131,15 @@ endif
 
 # Targets
 
-EXEOBJECTS+=alphasim
+override EXEOBJECTS+=alphasim
 
 # Clean
 
-EXTRACLEANUNITS+=mm64 fastmm64 simlib simbase
+override EXTRACLEANUNITS+=mm64 fastmm64 simlib simbase
 
 # Install
 
+ZIPTARGET=install
 
 # Defaults
 
@@ -147,7 +161,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -174,6 +188,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -246,12 +269,12 @@ ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -286,6 +309,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -302,6 +330,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -348,6 +381,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -561,13 +599,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -580,6 +614,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -590,14 +626,30 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Exes
 #####################################################################
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -611,7 +663,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -679,6 +734,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -725,6 +782,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -741,8 +808,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -752,11 +819,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -765,11 +827,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -780,12 +842,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -803,6 +865,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -819,15 +883,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -836,7 +900,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

+ 102 - 38
utils/tply/Makefile

@@ -1,5 +1,5 @@
 #
-# Makefile generated by fpcmake v0.99.13 on 1999-11-24 23:15
+# Makefile generated by fpcmake v0.99.13 on 1999-11-25 20:10
 #
 
 defaultrule: all
@@ -102,6 +102,10 @@ endif
 #####################################################################
 
 # Release ? Then force OPT and don't use extra opts via commandline
+ifndef REDIRFILE
+REDIRFILE=log
+endif
+
 ifdef RELEASE
 override OPT:=-Xs -OG2p3 -n
 endif
@@ -111,6 +115,15 @@ ifdef VERBOSE
 override OPT+=-vwni
 endif
 
+ifdef REDIR
+ifndef inlinux
+override FPC=redir -eo $(FPC)
+endif
+# set the verbosity to max
+override OPT+=-va
+override REDIR:= >> $(REDIRFILE)
+endif
+
 #####################################################################
 # User Settings
 #####################################################################
@@ -126,16 +139,17 @@ endif
 
 # Targets
 
-UNITOBJECTS+=lexlib yacclib
-EXEOBJECTS+=plex pyacc
+override UNITOBJECTS+=lexlib yacclib
+override EXEOBJECTS+=plex pyacc
 
 # Clean
 
-EXTRACLEANUNITS+=lexbase lexopt lexdfa lexpos lexlist lexrules lexmsgs lextable yaccbase yaccmsgs yaccclos yaccpars yacclook yaccsem yacclr0 yacctabl
+override EXTRACLEANUNITS+=lexbase lexopt lexdfa lexpos lexlist lexrules lexmsgs lextable yaccbase yaccmsgs yaccclos yaccpars yacclook yaccsem yacclr0 yacctabl
 
 # Install
 
-EXTRAINSTALLFILES+=yylex.cod yyparse.cod
+override EXTRAINSTALLFILES+=yylex.cod yyparse.cod
+ZIPTARGET=install
 
 # Defaults
 
@@ -158,7 +172,7 @@ endif
 
 # Info
 
-FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall 
+INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall 
 
 #####################################################################
 # Default Directories
@@ -185,6 +199,15 @@ export PREFIXINSTALLDIR=/pp
 endif
 endif
 
+# create fcldir,rtldir,unitdir
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override RTLDIR=$(FPCDIR)/rtl
+override FCLDIR=$(FPCDIR)/fcl
+override UNITDIR=$(FPCDIR)/units
+endif
+endif
+
 #####################################################################
 # Install Directories
 #####################################################################
@@ -261,12 +284,12 @@ ifdef NEEDOPT
 override FPCOPT+=$(NEEDOPT)
 endif
 
-# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
-# dirs if fpcdir=. which can be used for the rtl makefiles
-ifdef FPCDIR
-ifneq ($(FPCDIR),.)
-override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+ifdef RTLDIR
+override FPCOPT+=-Fu$(RTLDIR)
 endif
+
+ifdef UNITSDIR
+override FPCOPT+=-Fu$(UNITSDIR)
 endif
 
 # Smartlinking
@@ -301,6 +324,11 @@ ifdef FPCOPTDEF
 override FPCOPT+=$(FPCOPTDEF)
 endif
 
+# Error file ?
+ifdef ERRORFILE
+override FPCOPT+=-Fr$(ERRORFILE)
+endif
+
 # Was a config file specified ?
 ifdef CFGFILE
 override FPCOPT+=@$(CFGFILE)
@@ -317,6 +345,11 @@ ifndef COPY
 export COPY:=cp -fp
 endif
 
+# Copy a whole tree
+ifndef COPYTREE
+export COPYTREE:=cp -rfp
+endif
+
 # To move pograms
 ifndef MOVE
 export MOVE:=mv -f
@@ -363,6 +396,11 @@ endif
 # Default Tools
 #####################################################################
 
+# file used to check if a package is compiled
+ifndef FPCMAKED
+FPCMAKED=fpcmaked
+endif
+
 # assembler, redefine it if cross compiling
 ifndef AS
 AS=as
@@ -576,13 +614,9 @@ endif
 endif
 
 #####################################################################
-# Default rules
+# Standard rules
 #####################################################################
 
-.PHONY: defaultrule all debug examples test smart shared \
-	showinstall install zipinstall zipinstalladd \
-	clean cleanall depend info
-
 all: fpc_all
 
 debug: fpc_debug
@@ -595,6 +629,8 @@ showinstall: fpc_showinstall
 
 install: fpc_install
 
+sourceinstall: fpc_sourceinstall
+
 zipinstall: fpc_zipinstall
 
 zipinstalladd: fpc_zipinstalladd
@@ -605,6 +641,22 @@ cleanall: fpc_cleanall
 
 info: fpc_info
 
+.PHONY:  all debug smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall info
+
+#####################################################################
+# Package depends
+#####################################################################
+
+ifneq ($(wildcard $(RTLDIR)/$(OS_TARGET)),)
+ifeq ($(wildcard $(RTLDIR)/$(OS_TARGET)/$(FPCMAKED)),)
+override COMPILEPACKAGES+=rtl
+rtl_package:
+	$(MAKE) -C $(RTLDIR)/$(OS_TARGET) all
+endif
+endif
+
+.PHONY:  $(OS_TARGET)_package
+
 #####################################################################
 # Units
 #####################################################################
@@ -613,7 +665,7 @@ info: fpc_info
 
 override ALLTARGET+=fpc_units
 
-UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
 override INSTALLPPUFILES+=$(UNITPPUFILES)
 override CLEANPPUFILES+=$(UNITPPUFILES)
 
@@ -625,8 +677,8 @@ fpc_units: $(UNITPPUFILES)
 
 .PHONY: fpc_exes
 
-EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
-EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+override EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+override EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
 
 override ALLTARGET+=fpc_exes
 override INSTALLEXEFILES+=$(EXEFILES)
@@ -640,7 +692,10 @@ fpc_exes: $(EXEFILES)
 
 .PHONY: fpc_all fpc_debug
 
-fpc_all: $(ALLTARGET)
+$(FPCMAKED):
+	@$(ECHO) Compiled > $(FPCMAKED)
+
+fpc_all: $(addsuffix _package,$(COMPILEPACKAGES)) $(ALLTARGET) $(FPCMAKED)
 
 fpc_debug:
 	$(MAKE) all DEBUG=1
@@ -708,6 +763,8 @@ INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))
 else
 INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))
 endif
+else
+INSTALLPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))
 endif
 endif
 
@@ -754,6 +811,16 @@ ifdef EXTRAINSTALLFILES
 	$(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)
 endif
 
+#####################################################################
+# Source install rules
+#####################################################################
+
+.PHONY: fpc_sourceinstall
+
+fpc_sourceinstall: clean
+	$(MKDIR) $(SOURCEINSTALLDIR)
+	$(COPYTREE) $(BASEDIR) $(SOURCEINSTALLDIR)
+
 #####################################################################
 # Zip
 #####################################################################
@@ -770,8 +837,8 @@ endif
 endif
 
 # Test dir if none specified
-ifndef PACKAGEDIR
-PACKAGEDIR=$(BASEDIR)
+ifndef DESTZIPDIR
+DESTZIPDIR=$(BASEDIR)
 endif
 
 # Add .zip/.tar.gz extension
@@ -781,11 +848,6 @@ override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
 endif
 endif
 
-# Default target which is call before zipping
-ifndef ZIPTARGET
-ZIPTARGET=install
-endif
-
 # Note: This will not remove the zipfile first
 fpc_zipinstalladd:
 ifndef ZIPNAME
@@ -794,11 +856,11 @@ ifndef ZIPNAME
 else
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
-	cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
-	gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+	gzip -d $(DESTZIPDIR)/$(ZIPNAME).tar.gz
+	cd $(PACKDIR) ; tar rv --file $(DESTZIPDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+	gzip $(DESTZIPDIR)/$(ZIPNAME).tar
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -809,12 +871,12 @@ ifndef ZIPNAME
 	@$(ECHO) Please specify ZIPNAME!
 	@exit
 else
-	$(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+	$(DEL) $(DESTZIPDIR)/$(ZIPNAME)
 	$(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
 ifdef inlinux
-	cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; tar cvz --file $(DESTZIPDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
 else
-	cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+	cd $(PACKDIR) ; $(ZIPPROG) $(DESTZIPDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
 endif
 	$(DELTREE) $(PACKDIR)
 endif
@@ -832,6 +894,8 @@ endif
 ifdef CLEANPPUFILES
 ifdef PPUFILES
 CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
+else
+CLEANPPULINKFILES=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))
 endif
 endif
 
@@ -848,15 +912,15 @@ endif
 ifdef EXTRACLEANFILES
 	-$(DEL) $(EXTRACLEANFILES)
 endif
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
-fpc_cleanall:
+fpc_cleanall: $(CLEANTARGET)
 ifdef CLEANEXEFILES
 	-$(DEL) $(CLEANEXEFILES)
 endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) $(PPAS) link.res log
+	-$(DEL) $(FPCMAKED) $(PPAS) link.res $(REDIRFILE)
 
 #####################################################################
 # Info rules
@@ -865,7 +929,7 @@ endif
 .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
 	fpc_dirinfo
 
-fpc_info: $(FPCINFO)
+fpc_info: $(INFOTARGET)
 
 fpc_infocfg:
 	@$(ECHO)

Some files were not shown because too many files changed in this diff