Просмотр исходного кода

--- Merging r20010 into '.':
U packages/fcl-fpcunit/fpmake.pp
U packages/fcl-fpcunit/Makefile.fpc
A packages/fcl-fpcunit/src/consoletestrunner.pas
C packages/fcl-fpcunit/Makefile
--- Merging r20461 into '.':
U rtl/objpas/math.pp
--- Merging r20486 into '.':
U utils/fpcmkcfg/fpccfg.inc
U utils/fpcmkcfg/fpc.cft
--- Merging r20720 into '.':
U packages/fcl-fpcunit/src/consoletestrunner.pas
--- Merging r20771 into '.':
U rtl/inc/variants.pp
--- Merging r20780 into '.':
U rtl/objpas/classes/collect.inc
--- Merging r20781 into '.':
U packages/winunits-base/src/commctrl.pp
--- Merging r20867 into '.':
G rtl/objpas/classes/collect.inc
--- Merging r20880 into '.':
U packages/libxml/src/xml2.inc
A packages/libxml/src/libxmlparser.inc
D packages/libxml/src/parser.inc
--- Merging r20969 into '.':
U packages/fcl-image/src/fpreadpng.pp
Summary of conflicts:
Text conflicts: 1

# revisions: 20010,20461,20486,20720,20771,20780,20781,20867,20880,20969
r20010 | michael | 2012-01-08 16:30:07 +0100 (Sun, 08 Jan 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-fpcunit/Makefile
M /trunk/packages/fcl-fpcunit/Makefile.fpc
M /trunk/packages/fcl-fpcunit/fpmake.pp
A /trunk/packages/fcl-fpcunit/src/consoletestrunner.pas

* Moved consoletestrunner from LCL to fcl
r20461 | marco | 2012-03-01 23:31:20 +0100 (Thu, 01 Mar 2012) | 3 lines
Changed paths:
M /trunk/rtl/objpas/math.pp

* fix for #21199, changing epsilon to 0.0 instead of 0 helps overload selection of the
right precision. Leave mantis item over for compiler testing.
r20486 | jonas | 2012-03-09 22:12:49 +0100 (Fri, 09 Mar 2012) | 4 lines
Changed paths:
M /trunk/utils/fpcmkcfg/fpc.cft
M /trunk/utils/fpcmkcfg/fpccfg.inc

* add /Applications/Xcode.app/Contents/Developer/usr/bin to the default
utilities search path on Darwin (which is where the Xcode 4.3+ utilties
are located by default)
r20720 | michael | 2012-04-06 11:41:12 +0200 (Fri, 06 Apr 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-fpcunit/src/consoletestrunner.pas

* Modified patch from Brainenjii to support multiple testsuites (bug 21655)
r20771 | pierre | 2012-04-09 23:52:47 +0200 (Mon, 09 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/inc/variants.pp

Fix VarEnsureRange use of Result before being set
r20780 | michael | 2012-04-10 10:04:34 +0200 (Tue, 10 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/objpas/classes/collect.inc

* No change when clearing empty collection
r20781 | marco | 2012-04-10 15:40:29 +0200 (Tue, 10 Apr 2012) | 2 lines
Changed paths:
M /trunk/packages/winunits-base/src/commctrl.pp

* fix typing of some macro2procedure conversions. Mantis #21696
r20867 | michael | 2012-04-14 16:52:33 +0200 (Sat, 14 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/objpas/classes/collect.inc

* Applied cleanup patch from Luiz Americo (Bug 21771)
r20880 | michael | 2012-04-15 11:27:53 +0200 (Sun, 15 Apr 2012) | 1 line
Changed paths:
A /trunk/packages/libxml/src/libxmlparser.inc (from /trunk/packages/libxml/src/parser.inc:20879)
D /trunk/packages/libxml/src/parser.inc
M /trunk/packages/libxml/src/xml2.inc

* Solved name conflict parser.inc is used in classes unit
r20969 | marco | 2012-04-22 00:52:58 +0200 (Sun, 22 Apr 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-image/src/fpreadpng.pp

* chunk protected instead of private, Mantis #20543

git-svn-id: branches/fixes_2_6@21388 -

marco 13 лет назад
Родитель
Сommit
5048f62e0d

+ 2 - 1
.gitattributes

@@ -2035,6 +2035,7 @@ packages/fcl-fpcunit/Makefile.fpc svneol=native#text/plain
 packages/fcl-fpcunit/fpmake.pp svneol=native#text/plain
 packages/fcl-fpcunit/src/DUnitCompatibleInterface.inc svneol=native#text/plain
 packages/fcl-fpcunit/src/README.txt svneol=native#text/plain
+packages/fcl-fpcunit/src/consoletestrunner.pas svneol=native#text/plain
 packages/fcl-fpcunit/src/demo/consolerunner/suiteconfig.pp svneol=native#text/plain
 packages/fcl-fpcunit/src/demo/consolerunner/testrunner.pp svneol=native#text/plain
 packages/fcl-fpcunit/src/digesttestreport.pp svneol=native#text/plain
@@ -4959,10 +4960,10 @@ packages/libxml/src/encoding.inc svneol=native#text/plain
 packages/libxml/src/entities.inc svneol=native#text/plain
 packages/libxml/src/globals.inc svneol=native#text/plain
 packages/libxml/src/hash.inc svneol=native#text/plain
+packages/libxml/src/libxmlparser.inc svneol=native#text/plain
 packages/libxml/src/list.inc svneol=native#text/plain
 packages/libxml/src/nanoftp.inc svneol=native#text/plain
 packages/libxml/src/nanohttp.inc svneol=native#text/plain
-packages/libxml/src/parser.inc svneol=native#text/plain
 packages/libxml/src/parserInternals.inc svneol=native#text/plain
 packages/libxml/src/pattern.inc svneol=native#text/plain
 packages/libxml/src/relaxng.inc svneol=native#text/plain

+ 65 - 65
packages/fcl-fpcunit/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/30]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/22]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@@ -289,193 +289,193 @@ endif
 override PACKAGE_NAME=fcl-fpcunit
 override PACKAGE_VERSION=2.6.1
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport
+override TARGET_UNITS+=testregistry testreport testdecorator ubmockobject xmlreporter fpcunitreport latextestreport xmltestreport plaintestreport fpcunit testutils digesttestreport consoletestrunner
 endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
@@ -1480,7 +1480,7 @@ else
 TAROPT=vz
 TAREXT=.tar.gz
 endif
-override REQUIRE_PACKAGES=rtl paszlib fcl-xml
+override REQUIRE_PACKAGES=rtl paszlib fcl-xml fcl-base
 ifeq ($(FULL_TARGET),i386-linux)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_HASH=1

+ 2 - 2
packages/fcl-fpcunit/Makefile.fpc

@@ -9,11 +9,11 @@ version=2.6.1
 [target]
 units=testregistry testreport testdecorator ubmockobject xmlreporter \
       fpcunitreport latextestreport xmltestreport plaintestreport fpcunit \
-      testutils digesttestreport
+      testutils digesttestreport consoletestrunner
 #exampledirs=exampletests
 
 [require]
-packages=paszlib fcl-xml
+packages=paszlib fcl-xml fcl-base
 
 [compiler]
 options=-S2h

+ 10 - 0
packages/fcl-fpcunit/fpmake.pp

@@ -99,6 +99,16 @@ begin
           AddUnit('fpcunitreport');
           AddUnit('testutils');
         end;
+    T:=P.Targets.AddUnit('consoletestrunner.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('fpcunit');
+          AddUnit('fpcunitreport');
+          AddUnit('testutils');
+          AddUnit('xmltestreport.pp');
+          AddUnit('latextestreport.pp');
+          AddUnit('plaintestreport.pp');
+        end;
 
 {$ifndef ALLPACKAGES}
     Run;

+ 370 - 0
packages/fcl-fpcunit/src/consoletestrunner.pas

@@ -0,0 +1,370 @@
+{ This unit contains the TTestRunner class, a base class for the console test
+  runner for fpcunit.
+
+  Copyright (C) 2006 Vincent Snijders
+
+  This library is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Library General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or (at your
+  option) any later version.
+
+  This program is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
+  for more details.
+
+  You should have received a copy of the GNU Library General Public License
+  along with this library; if not, write to the Free Software Foundation,
+  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+}
+unit consoletestrunner;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  custapp, Classes, SysUtils, fpcunit, testregistry, testutils,
+  fpcunitreport, latextestreport, xmltestreport, plaintestreport,
+  dom;
+
+const
+  Version = '0.2';
+
+type
+  TFormat = (fPlain, fLatex, fXML);
+
+var
+  DefaultFormat : TFormat = fXML;
+  DefaultRunAllTests : Boolean = False;
+
+type
+  { TTestRunner }
+
+  TTestRunner = class(TCustomApplication)
+  private
+    FShowProgress: boolean;
+    FFileName: string;
+    FStyleSheet: string;
+    FLongOpts: TStrings;
+    FFormatParam: TFormat;
+  protected
+    property FileName: string read FFileName write FFileName;
+    property LongOpts: TStrings read FLongOpts write FLongOpts;
+    property ShowProgress: boolean read FShowProgress write FShowProgress;
+    property StyleSheet: string read FStyleSheet write FStyleSheet;
+    property FormatParam: TFormat read FFormatParam write FFormatParam;
+    procedure DoRun; override;
+    procedure DoTestRun(ATest: TTest); virtual;
+    function GetShortOpts: string; virtual;
+    procedure AppendLongOpts; virtual;
+    procedure WriteCustomHelp; virtual;
+    procedure ParseOptions; virtual;
+    procedure ExtendXmlDocument(Doc: TXMLDocument); virtual;
+    function GetResultsWriter: TCustomResultsWriter; virtual;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+  end;
+
+implementation
+
+const
+  ShortOpts = 'alhp';
+  DefaultLongOpts: array[1..8] of string =
+     ('all', 'list', 'progress', 'help',
+      'suite:', 'format:', 'file:', 'stylesheet:');
+
+  { TProgressWriter }
+type
+  TProgressWriter= class(TNoRefCountObject, ITestListener)
+  private
+    FSuccess: boolean;
+    procedure WriteChar(c: char);
+  public
+    destructor Destroy; override;
+
+    { ITestListener interface requirements }
+    procedure AddFailure(ATest: TTest; AFailure: TTestFailure);
+    procedure AddError(ATest: TTest; AError: TTestFailure);
+    procedure StartTest(ATest: TTest);
+    procedure EndTest(ATest: TTest);
+    procedure StartTestSuite(ATestSuite: TTestSuite);
+    procedure EndTestSuite(ATestSuite: TTestSuite);
+  end;
+
+procedure TProgressWriter.WriteChar(c: char);
+begin
+  write(c);
+  // flush output, so that we see the char immediately, even it is written to file
+  Flush(output);
+end;
+
+destructor TProgressWriter.Destroy;
+begin
+  // on descruction, just write the missing line ending
+  writeln;
+  inherited Destroy;
+end;
+
+procedure TProgressWriter.AddFailure(ATest: TTest; AFailure: TTestFailure);
+begin
+  FSuccess := false;
+  writechar('F');
+end;
+
+procedure TProgressWriter.AddError(ATest: TTest; AError: TTestFailure);
+begin
+  FSuccess := false;
+  writechar('E');
+end;
+
+procedure TProgressWriter.StartTest(ATest: TTest);
+begin
+  FSuccess := true; // assume success, until proven otherwise
+end;
+
+procedure TProgressWriter.EndTest(ATest: TTest);
+begin
+  if FSuccess then
+    writechar('.');
+end;
+
+procedure TProgressWriter.StartTestSuite(ATestSuite: TTestSuite);
+begin
+  // do nothing
+end;
+
+procedure TProgressWriter.EndTestSuite(ATestSuite: TTestSuite);
+begin
+  // do nothing
+end;
+
+function TTestRunner.GetResultsWriter: TCustomResultsWriter;
+begin
+  case FormatParam of
+    fLatex: Result := TLatexResultsWriter.Create(nil);
+    fPlain: Result := TPlainResultsWriter.Create(nil);
+  else
+    begin
+      Result := TXmlResultsWriter.Create(nil);
+      ExtendXmlDocument(TXMLResultsWriter(Result).Document);
+    end;
+  end;
+end;
+
+procedure TTestRunner.DoTestRun(ATest: TTest);
+var
+  ResultsWriter: TCustomResultsWriter;
+  ProgressWriter: TProgressWriter;
+  TestResult: TTestResult;
+begin
+  ResultsWriter := GetResultsWriter;
+  ResultsWriter.Filename := FileName;
+  TestResult := TTestResult.Create;
+  try
+    if ShowProgress then
+    begin
+      ProgressWriter := TProgressWriter.Create;
+      TestResult.AddListener(ProgressWriter);
+    end
+    else
+      ProgressWriter := nil;
+    TestResult.AddListener(ResultsWriter);
+    ATest.Run(TestResult);
+    ResultsWriter.WriteResult(TestResult);
+  finally
+    TestResult.Free;
+    ResultsWriter.Free;
+    ProgressWriter.Free;
+  end;
+end;
+
+function TTestRunner.GetShortOpts: string;
+begin
+  Result := ShortOpts;
+end;
+
+procedure TTestRunner.AppendLongOpts;
+var
+  i: Integer;
+begin
+  for i := low(DefaultLongOpts) to high(DefaultLongOpts) do
+    LongOpts.Add(DefaultLongOpts[i]);
+end;
+
+procedure TTestRunner.WriteCustomHelp;
+begin
+  // no custom help options in base class;
+end;
+
+procedure TTestRunner.ParseOptions;
+begin
+  if HasOption('h', 'help') or ((ParamCount = 0) and not DefaultRunAllTests) then
+  begin
+    writeln(Title);
+    writeln(Version);
+    writeln;
+    writeln('Usage: ');
+    writeln('  --format=latex            output as latex source (only list implemented)');
+    writeln('  --format=plain            output as plain ASCII source');
+    writeln('  --format=xml              output as XML source (default)');
+    writeln('  --stylesheet=<reference>   add stylesheet reference');
+    writeln('  --file=<filename>         output results to file');
+    writeln;
+    writeln('  -l or --list              show a list of registered tests');
+    writeln('  -a or --all               run all tests');
+    writeln('  -p or --progress          show progress');
+    writeln('  --suite=MyTestSuiteName   run single test suite class');
+    WriteCustomHelp;
+    writeln;
+    writeln('The results can be redirected to an xml file,');
+    writeln('for example: ', ParamStr(0),' --all > results.xml');
+  end;
+
+  //get the format parameter
+  FormatParam := DefaultFormat;
+  if HasOption('format') then
+  begin
+    if CompareText(GetOptionValue('format'),'latex')=0 then
+      FormatParam := fLatex
+    else if CompareText(GetOptionValue('format'),'plain')=0 then
+      FormatParam := fPlain
+    else if CompareText(GetOptionValue('format'),'xml')=0 then
+      FormatParam := fXML;
+  end;
+
+  ShowProgress := HasOption('p', 'progress');
+
+  if HasOption('file') then
+    FileName := GetOptionValue('file');
+  if HasOption('stylesheet') then
+    StyleSheet := GetOptionValue('stylesheet');
+end;
+
+procedure TTestRunner.ExtendXmlDocument(Doc: TXMLDocument);
+var
+  n: TDOMElement;
+begin
+  if StyleSheet<>'' then begin
+    Doc.StylesheetType := 'text/xsl';
+    Doc.StylesheetHRef := StyleSheet;
+  end;
+  n := Doc.CreateElement('Title');
+  n.AppendChild(Doc.CreateTextNode(Title));
+  Doc.FirstChild.AppendChild(n);
+end;
+
+constructor TTestRunner.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FLongOpts := TStringList.Create;
+  AppendLongOpts;
+end;
+
+destructor TTestRunner.Destroy;
+begin
+  FLongOpts.Free;
+  inherited Destroy;
+end;
+
+procedure TTestRunner.DoRun;
+
+  procedure CheckTestRegistry (test:TTest; ATestName:string; res : TTestSuite);
+  var s, c : string;
+      I, p : integer;
+  begin
+    if test is TTestSuite then
+      begin
+      p := pos ('.', ATestName);
+      if p > 0 then
+        begin
+        s := copy (ATestName, 1, p-1);
+        c := copy (ATestName, p+1, maxint);
+        end
+      else
+        begin
+        s := '';
+        c := ATestName;
+        end;
+      if comparetext(c, test.TestName) = 0 then
+        res.AddTest(test)
+      else if (CompareText( s, Test.TestName) = 0) or (s = '') then
+        for I := 0 to TTestSuite(test).Tests.Count - 1 do
+          CheckTestRegistry (TTest(TTestSuite(test).Tests[I]), c, res)
+      end
+    else // if test is TTestCase then
+      begin
+      if comparetext(test.TestName, ATestName) = 0 then
+        res.AddTest(test);
+      end;
+  end;
+
+var
+  I,P : integer;
+  S : string;
+  TS : TTestSuite;
+  
+begin
+  S := CheckOptions(GetShortOpts, LongOpts);
+  if (S <> '') then
+    Writeln(S);
+
+  ParseOptions;
+
+  //get a list of all registed tests
+  if HasOption('l', 'list') then
+    case FormatParam of
+      fLatex: Write(GetSuiteAsLatex(GetTestRegistry));
+      fPlain: Write(GetSuiteAsPlain(GetTestRegistry));
+    else
+      Write(GetSuiteAsLatex(GetTestRegistry));;
+    end;
+
+  //run the tests
+  if HasOption('suite') then
+  begin
+    S := '';
+    S := GetOptionValue('suite');
+    if S = '' then
+      for I := 0 to GetTestRegistry.Tests.Count - 1 do
+        writeln(GetTestRegistry[i].TestName)
+    else
+      begin
+        TS:=TTestSuite.Create('SuiteList');
+        try
+        while Not(S = '') Do
+          begin
+            P:=Pos(',',S);
+            if P = 0 Then
+              begin
+                for I := 0 to GetTestRegistry.Tests.count-1 do
+                  CheckTestRegistry (GetTestregistry[I], S, TS);
+                S := '';
+              end
+            else
+              begin
+                for I := 0 to GetTestRegistry.Tests.count-1 do
+                  CheckTestRegistry (GetTestregistry[I],Copy(S, 1,P - 1), TS);
+                Delete(S, 1, P);
+              end;
+          end;
+          if (TS.CountTestCases>1) then
+            DoTestRun(TS)
+          else if TS.CountTestCases=1 then
+            DoTestRun(TS[0])
+          else
+            Writeln('No tests selected.');  
+        finally
+          TS.Tests.Clear;
+          TS.Free;
+        end;
+      end;
+  end
+  else if HasOption('a', 'all') or (DefaultRunAllTests and Not HasOption('l','list')) then
+    DoTestRun(GetTestRegistry) ;
+  Terminate;
+end;
+
+end.
+

+ 2 - 1
packages/fcl-image/src/fpreadpng.pp

@@ -28,7 +28,7 @@ Type
 
   TFPReaderPNG = class (TFPCustomImageReader)
     private
-      Chunk : TChunk;
+
       FHeader : THeaderChunk;
       ZData : TMemoryStream;  // holds compressed data until all blocks are read
       Decompress : TDeCompressionStream; // decompresses the data
@@ -61,6 +61,7 @@ Type
       function ColorColorAlpha8 (CD:TColorData) : TFPColor;
       function ColorColorAlpha16 (CD:TColorData) : TFPColor;
     protected
+      Chunk : TChunk;
       UseTransparent, EndOfFile : boolean;
       TransparentDataValue : TColorData;
       UsingBitGroup : byte;

+ 0 - 0
packages/libxml/src/parser.inc → packages/libxml/src/libxmlparser.inc


+ 4 - 4
packages/libxml/src/xml2.inc

@@ -22,7 +22,7 @@ type
   {$i pattern.inc}
   {$i schemasInternals.inc}
   {$i valid.inc}
-  {$i parser.inc}
+  {$i libxmlparser.inc}
   {$i parserInternals.inc}
   {$i schematron.inc}
   {$i threads.inc}
@@ -71,7 +71,7 @@ type
   {$i pattern.inc}
   {$i schemasInternals.inc}
   {$i valid.inc}
-  {$i parser.inc}
+  {$i libxmlparser.inc}
   {$i parserInternals.inc}
   {$i schematron.inc}
   {$i threads.inc}
@@ -121,7 +121,7 @@ const
   {$i schemasInternals.inc}
   {$i hash.inc}
   {$i valid.inc}
-  {$i parser.inc}
+  {$i libxmlparser.inc}
   {$i parserInternals.inc}
   {$i schematron.inc}
   {$i threads.inc}
@@ -170,7 +170,7 @@ const
   {$i schemasInternals.inc}
   {$i hash.inc}
   {$i valid.inc}
-  {$i parser.inc}
+  {$i libxmlparser.inc}
   {$i parserInternals.inc}
   {$i schematron.inc}
   {$i threads.inc}

+ 8 - 8
packages/winunits-base/src/commctrl.pp

@@ -6565,11 +6565,11 @@ CONST
          TVM_GETITEMSTATE               = (TV_FIRST + 39);
 
 // Macro 211
-Function TreeView_GetItemState( hwndTV : hwnd; hti : WPARAM; mask : LPARAM):UINT;
+Function TreeView_GetItemState( hwndTV : hwnd; hti : HTreeItem; statemask : UINT):UINT;
 
 
 // Macro 212
-Function TreeView_GetCheckState( hwndTV : hwnd; hti : WPARAM):UINT;
+Function TreeView_GetCheckState( hwndTV : hwnd; hti : HTreeItem):UINT;
 
 
 CONST
@@ -10920,6 +10920,7 @@ end;
 //   SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);\
 // }
 
+
 Procedure ListView_SetItemState(hwndLV :hwnd; i :cint ;data,mask:UINT);
 
 Var _ms_lvi : LV_ITEM;
@@ -12437,27 +12438,26 @@ end;
 
 
 {$ifdef IE5plus}
+
 // Macro 211
 
 //#define TreeView_GetItemState(hwndTV, hti, mask) \
 //    (UINT)SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
 
-Function TreeView_GetItemState( hwndTV : hwnd; hti : WPARAM; mask : LPARAM):UINT;
+Function TreeView_GetItemState( hwndTV : hwnd; hti : HTreeItem; statemask : UINT):UINT;
 
 Begin
- Result:=UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, hti, mask))
+ Result:=UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, WPARAM(hti), LPARAM(statemask)))
 end;
 
-
-
 // Macro 212
 // #define TreeView_GetCheckState(hwndTV, hti) \
 //    ((((UINT)(SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), TVIS_STATEIMAGEMASK))) >> 12) -1)
 
-Function TreeView_GetCheckState( hwndTV : hwnd; hti : WPARAM):UINT;
+Function TreeView_GetCheckState( hwndTV : hwnd; hti : HTreeItem):UINT;
 
 Begin
- Result:=((UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, hti, TVIS_STATEIMAGEMASK) shr 12) -1));
+ Result:=((UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, wparam(hti), TVIS_STATEIMAGEMASK) shr 12) -1));
 end;
 
 

+ 2 - 2
rtl/inc/variants.pp

@@ -3075,9 +3075,9 @@ end;
 
 function VarEnsureRange(const AValue, AMin, AMax: Variant): Variant;
 begin
-  If Result>AMAx then
+  If AValue>AMAx then
     Result:=AMax
-  else If Result<AMin Then
+  else If AValue<AMin Then
     Result:=AMin
   else
     Result:=AValue;

+ 14 - 16
rtl/objpas/classes/collect.inc

@@ -153,10 +153,7 @@ end;
 function TCollection.GetCount: Integer;
 
 begin
-  If Assigned(FItems) Then
-    Result:=FItems.Count
-  else
-    Result:=0;
+  Result:=FItems.Count;
 end;
 
 
@@ -254,11 +251,11 @@ end;
 
 
 function TCollection.GetNamePath: string;
-var o : TObject;
+var o : TPersistent;
 begin
   o:=getowner;
-  if assigned(o) and (propname<>'') and (o IS TPersistent) then 
-     result:=TPersistent(o).getnamepath+'.'+propname
+  if assigned(o) and (propname<>'') then 
+     result:=o.getnamepath+'.'+propname
    else
      result:=classname;
 end;
@@ -304,11 +301,8 @@ end;
 
 destructor TCollection.Destroy;
 begin
-  If Assigned(FItems) Then 
-    begin
-    BeginUpdate; // Prevent OnChange
-    DoClear;
-    end;
+  BeginUpdate; // Prevent OnChange
+  DoClear;
   FItems.Free;
   Inherited Destroy;
 end;
@@ -343,6 +337,8 @@ end;
 
 procedure TCollection.Clear;
 begin
+  if FItems.Count=0 then
+    exit; // Prevent Changed
   BeginUpdate;
   try
     DoClear;
@@ -354,8 +350,7 @@ end;
 
 procedure TCollection.DoClear;
 begin
-  If Assigned(FItems) then
-    While FItems.Count>0 do TCollectionItem(FItems.Last).Free;
+  While FItems.Count>0 do TCollectionItem(FItems.Last).Free;
 end;
 
 
@@ -382,9 +377,12 @@ end;
 
 
 procedure TCollection.Delete(Index: Integer);
+Var
+  Item : TCollectionItem;
 begin
-  Notify(TCollectionItem(FItems[Index]),cnDeleting);
-  TCollectionItem(FItems[Index]).Free;
+  Item:=TCollectionItem(FItems[Index]);
+  Notify(Item,cnDeleting);
+  Item.Free;
 end;
 
 

+ 2 - 2
rtl/objpas/math.pp

@@ -2234,7 +2234,7 @@ end;
 function SameValue(const A, B: Extended): Boolean;inline;
 
 begin
-  Result:=SameValue(A,B,0);
+  Result:=SameValue(A,B,0.0);
 end;
 {$endif FPC_HAS_TYPE_EXTENDED}
 
@@ -2243,7 +2243,7 @@ end;
 function SameValue(const A, B: Double): Boolean;inline;
 
 begin
-  Result:=SameValue(A,B,0);
+  Result:=SameValue(A,B,0.0);
 end;
 
 function SameValue(const A, B: Double; Epsilon: Double): Boolean;

+ 2 - 0
utils/fpcmkcfg/fpc.cft

@@ -38,6 +38,8 @@
 #ifdef darwin
 # use pipes instead of temporary files for assembling
 -ap
+# path to Xcode 4.3+ utilities (no problem if it doesn't exist)
+-FD/Applications/Xcode.app/Contents/Developer/usr/bin
 #endif
 
 # ----------------

+ 234 - 235
utils/fpcmkcfg/fpccfg.inc

@@ -3,252 +3,251 @@ const DefaultConfig : array[0..26] of string[240]=(
 {$else Delphi}
 const DefaultConfig : array[0..26,1..240] of char=(
 {$endif Delphi}
-  '#'#013#010+
-  '# Config file generated by fpcmkcfg on %BUILDDATE% - %BUILDTIME%'#013#010+
-  '# Example fpc.cfg for Free Pascal Compiler'#013#010+
-  '#'#013#010+
-  #013#010+
-  '# ----------------------'#013#010+
-  '# Defines (preprocessor)'#013#010+
-  '# ----------------------'#013#010+
-  #013#010+
-  '#'#013#010+
-  '# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE',', #DEFINE, #UNDEF are allowed'+
-  #013#010+
-  '#'#013#010+
-  '# -d is the same as #DEFINE'#013#010+
-  '# -u is the same as #UNDEF'#013#010+
-  '#'#013#010+
-  #013#010+
-  '#'#013#010+
-  '# Some examples (for switches see below, and the -? helppages)'#013#010+
-  '#'#013#010+
-  '# Try compiling with the -dRELEASE or -dDEBUG on the commandline'#013#010+
-  '#'#013#010+
-  #013#010+
-  '# F','or a release compile with optimizes and strip debuginfo'#013#010+
-  '#IFDEF RELEASE'#013#010+
-  '  -O2'#013#010+
-  '  -Xs'#013#010+
-  '  #WRITE Compiling Release Version'#013#010+
-  '#ENDIF'#013#010+
-  #013#010+
+  '#'#010+
+  '# Config file generated by fpcmkcfg on %BUILDDATE% - %BUILDTIME%'#010+
+  '# Example fpc.cfg for Free Pascal Compiler'#010+
+  '#'#010+
+  #010+
+  '# ----------------------'#010+
+  '# Defines (preprocessor)'#010+
+  '# ----------------------'#010+
+  #010+
+  '#'#010+
+  '# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE,',' #UNDEF are allowed'+
+  #010+
+  '#'#010+
+  '# -d is the same as #DEFINE'#010+
+  '# -u is the same as #UNDEF'#010+
+  '#'#010+
+  #010+
+  '#'#010+
+  '# Some examples (for switches see below, and the -? helppages)'#010+
+  '#'#010+
+  '# Try compiling with the -dRELEASE or -dDEBUG on the commandline'#010+
+  '#'#010+
+  #010+
+  '# For a release compile w','ith optimizes and strip debuginfo'#010+
+  '#IFDEF RELEASE'#010+
+  '  -O2'#010+
+  '  -Xs'#010+
+  '  #WRITE Compiling Release Version'#010+
+  '#ENDIF'#010+
+  #010+
   '# For a debug version compile with debuginfo and all codegeneration ch'+
-  'ecks on'#013#010+
-  '#IFDEF DEBUG'#013#010+
-  '  -gl'#013#010+
-  '  -Crto','i'#013#010+
-  '  #WRITE Compiling Debug Version'#013#010+
-  '#ENDIF'#013#010+
-  #013#010+
-  '# assembling'#013#010+
-  '#ifdef darwin'#013#010+
-  '# use pipes instead of temporary files for assembling'#013#010+
-  '-ap'#013#010+
-  '#endif'#013#010+
-  #013#010+
-  '# ----------------'#013#010+
-  '# Parsing switches'#013#010+
-  '# ----------------'#013#010+
-  #013#010+
-  '# Pascal language mode'#013#010+
-  '#      -','Mfpc      free pascal dialect (default)'#013#010+
-  '#      -Mobjfpc   switch some Delphi 2 extensions on'#013#010+
-  '#      -Mdelphi   tries to be Delphi compatible'#013#010+
-  '#      -Mtp       tries to be TP/BP 7.0 compatible'#013#010+
-  '#      -Mgpc      tries to be gpc compatible',#013#010+
+  'ecks on'#010+
+  '#IFDEF DEBUG'#010+
+  '  -gl'#010+
+  '  -Crtoi'#010+
+  '  #WRITE Compiling Debug Versi','on'#010+
+  '#ENDIF'#010+
+  #010+
+  '# assembling'#010+
+  '#ifdef darwin'#010+
+  '# use pipes instead of temporary files for assembling'#010+
+  '-ap'#010+
+  '# path to Xcode 4.3+ utilities (no problem if it doesn'#039't exist)'#010+
+  '-FD/Applications/Xcode.app/Contents/Developer/usr/bin'#010+
+  '#endif'#010+
+  #010+
+  '# ----------------',#010+
+  '# Parsing switches'#010+
+  '# ----------------'#010+
+  #010+
+  '# Pascal language mode'#010+
+  '#      -Mfpc      free pascal dialect (default)'#010+
+  '#      -Mobjfpc   switch some Delphi 2 extensions on'#010+
+  '#      -Mdelphi   tries to be Delphi compatible'#010+
+  '#      -Mtp       tries to b','e TP/BP 7.0 compatible'#010+
+  '#      -Mgpc      tries to be gpc compatible'#010+
   '#      -Mmacpas   tries to be compatible to the macintosh pascal diale'+
-  'cts'#013#010+
-  '#'#013#010+
-  '# Turn on Object Pascal extensions by default'#013#010+
-  '#-Mobjfpc'#013#010+
-  #013#010+
-  '# Assembler reader mode'#013#010+
-  '#      -Rdefault  use default assembler'#013#010+
-  '#      -Ratt      read AT&T style ','assembler'#013#010+
-  '#      -Rintel    read Intel style assembler'#013#010+
-  '#'#013#010+
-  '# All assembler blocks are AT&T styled by default'#013#010+
-  '#-Ratt'#013#010+
-  #013#010+
-  '# Semantic checking'#013#010+
-  '#      -S2        same as -Mobjfpc'#013#010+
-  '#      -Sc        supports operators like C (*=,+=,/= and -=)'#013,#010+
-  '#      -Sa        include assertion code.'#013#010+
-  '#      -Sd        same as -Mdelphi'#013#010+
+  'cts'#010+
+  '#'#010+
+  '# Turn on Object Pascal extensions by default'#010+
+  '#-Mobjfpc'#010+
+  #010+
+  '# Assembler reader mode'#010+
+  '#      -Rdefaul','t  use default assembler'#010+
+  '#      -Ratt      read AT&T style assembler'#010+
+  '#      -Rintel    read Intel style assembler'#010+
+  '#'#010+
+  '# All assembler blocks are AT&T styled by default'#010+
+  '#-Ratt'#010+
+  #010+
+  '# Semantic checking'#010+
+  '#      -S2        same as -Mobjfpc'#010+
+  '#      -Sc ','       supports operators like C (*=,+=,/= and -=)'#010+
+  '#      -Sa        include assertion code.'#010+
+  '#      -Sd        same as -Mdelphi'#010+
   '#      -Se<x>     error options. <x> is a combination of the following'+
-  ':'#013#010+
-  '#         <n> : compiler stops after <n> errors (default is 1)'#013#010+
-  '#         w   : compile','r stops also after warnings'#013#010+
-  '#         n   : compiler stops also after notes'#013#010+
-  '#         h   : compiler stops also after hints'#013#010+
-  '#      -Sg        allow LABEL and GOTO'#013#010+
-  '#      -Sh        Use ansistrings'#013#010+
-  '#      -Si        support C++ styled I','NLINE'#013#010+
-  '#      -Sk        load fpcylix unit'#013#010+
-  '#      -SI<x>     set interface style to <x>'#013#010+
-  '#         -SIcom    COM compatible interface (default)'#013#010+
-  '#         -SIcorba  CORBA compatible interface'#013#010+
-  '#      -Sm        support macros like C (globa','l)'#013#010+
-  '#      -So        same as -Mtp'#013#010+
-  '#      -Sp        same as -Mgpc'#013#010+
+  ':'#010+
+  '#         <n> : compiler stops after <n>',' errors (default is 1)'#010+
+  '#         w   : compiler stops also after warnings'#010+
+  '#         n   : compiler stops also after notes'#010+
+  '#         h   : compiler stops also after hints'#010+
+  '#      -Sg        allow LABEL and GOTO'#010+
+  '#      -Sh        Use ansistrin','gs'#010+
+  '#      -Si        support C++ styled INLINE'#010+
+  '#      -Sk        load fpcylix unit'#010+
+  '#      -SI<x>     set interface style to <x>'#010+
+  '#         -SIcom    COM compatible interface (default)'#010+
+  '#         -SIcorba  CORBA compatible interface'#010+
+  '#      -Sm','        support macros like C (global)'#010+
+  '#      -So        same as -Mtp'#010+
+  '#      -Sp        same as -Mgpc'#010+
   '#      -Ss        constructor name must be init (destructor must be do'+
-  'ne)'#013#010+
-  '#      -Sx        enable exception keywords (default in Delphi/ObjFPC '+
-  'modes)'#013#010+
-  '#'#013#010+
-  '# Allow goto, i','nline, C-operators, C-vars'#013#010+
-  '-Sgic'#013#010+
-  #013#010+
-  '# ---------------'#013#010+
-  '# Code generation'#013#010+
-  '# ---------------'#013#010+
-  #013#010+
+  'ne)'#010+
+  '#      -Sx        enable exception keywords (default in Delphi/O','bjFP'+
+  'C modes)'#010+
+  '#'#010+
+  '# Allow goto, inline, C-operators, C-vars'#010+
+  '-Sgic'#010+
+  #010+
+  '# ---------------'#010+
+  '# Code generation'#010+
+  '# ---------------'#010+
+  #010+
   '# Uncomment the next line if you always want static/dynamic units by d'+
-  'efault'#013#010+
-  '# (can be overruled with -CD, -CS at the commandline)'#013#010+
-  '#-CS'#013#010+
-  '#-CD'#013,#010+
-  #013#010+
-  '# Set the default heapsize to 8Mb'#013#010+
-  '#-Ch8000000'#013#010+
-  #013#010+
-  '# Set default codegeneration checks (iocheck, overflow, range, stack)'#013+
-  #010+
-  '#-Ci'#013#010+
-  '#-Co'#013#010+
-  '#-Cr'#013#010+
-  '#-Ct'#013#010+
-  #013#010+
-  '# Optimizer switches'#013#010+
-  '# -Os        generate smaller code'#013#010+
-  '# -Oa=N      set alignment to N'#013,#010+
-  '# -O1        level 1 optimizations (quick optimizations, debuggable)'#013+
+  'efault'#010+
+  '# (can be overruled with -CD, -CS at the com','mandline)'#010+
+  '#-CS'#010+
+  '#-CD'#010+
+  #010+
+  '# Set the default heapsize to 8Mb'#010+
+  '#-Ch8000000'#010+
   #010+
+  '# Set default codegeneration checks (iocheck, overflow, range, stack)'#010+
+  '#-Ci'#010+
+  '#-Co'#010+
+  '#-Cr'#010+
+  '#-Ct'#010+
+  #010+
+  '# Optimizer switches'#010+
+  '# -Os        generate smaller code'#010+
+  '# -Oa=N      set alignmen','t to N'#010+
+  '# -O1        level 1 optimizations (quick optimizations, debuggable)'#010+
   '# -O2        level 2 optimizations (-O1 + optimizations which make deb'+
-  'ugging more difficult)'#013#010+
+  'ugging more difficult)'#010+
   '# -O3        level 3 optimizations (-O2 + optimizations which also may'+
-  ' make',' the program slower rather than faster)'#013#010+
+  ' ','make the program slower rather than faster)'#010+
   '# -Oo<x>     switch on optimalization x. See fpc -i for possible value'+
-  's'#013#010+
+  's'#010+
   '# -OoNO<x>   switch off optimalization x. See fpc -i for possible valu'+
-  'es'#013#010+
-  '# -Op<x>     set target cpu for optimizing, see fpc ','-i for possible '+
-  'values'#013#010+
-  #013#010+
-  '#ifdef darwin'#013#010+
-  '#ifdef cpui386'#013#010+
-  '-Cppentiumm'#013#010+
-  '-Oppentiumm'#013#010+
-  '#endif'#013#010+
-  '#endif'#013#010+
-  #013#010+
-  '# -----------------------'#013#010+
-  '# Set Filenames and Paths'#013#010+
-  '# -----------------------'#013#010+
-  #013#010+
-  '# Both slashes and backslashes are allowed in paths'#013#010+
-  #013#010+
-  '#',' path to the messagefile, not necessary anymore but can be used to '+
-  'override'#013#010+
-  '# the default language'#013#010+
-  '#-Fr%basepath%/msg/errore.msg'#013#010+
-  '#-Fr%basepath%/msg/errorn.msg'#013#010+
-  '#-Fr%basepath%/msg/errores.msg'#013#010+
-  '#-Fr%basepath%/msg/errord.msg'#013#010+
-  '#-Fr%basepath%','/msg/errorr.msg'#013#010+
-  #013#010+
-  '# searchpath for units and other system dependent things'#013#010+
-  '-Fu%basepath%/units/$fpctarget'#013#010+
-  '-Fu%basepath%/units/$fpctarget/*'#013#010+
-  '-Fu%basepath%/units/$fpctarget/rtl'#013#010+
-  #013#010+
-  '#IFDEF FPCAPACHE_1_3'#013#010+
-  '-Fu%basepath%/units/$fpctarget/httpd1','3/'#013#010+
-  '#ELSE'#013#010+
-  '#IFDEF FPCAPACHE_2_0'#013#010+
-  '-Fu%basepath%/units/$fpctarget/httpd20'#013#010+
-  '#ELSE'#013#010+
-  '-Fu%basepath%/units/$fpctarget/httpd22'#013#010+
-  '#ENDIF'#013#010+
-  '#ENDIF'#013#010+
-  #013#010+
-  '# searchpath for fppkg user-specific packages'#013#010+
-  '-Fu%localbasepath%/units/$FPCTARGET/*'#013#010+
-  #013#010+
-  '# path to the ','gcclib'#013#010+
-  '%gcclibpath%'#013#010+
-  #013#010+
-  '# searchpath for libraries'#013#010+
-  '#-Fl%basepath%/lib'#013#010+
-  '#-Fl/lib;/usr/lib'#013#010+
-  '-Fl%basepath%/lib/$FPCTARGET'#013#010+
-  #013#010+
-  '# searchpath for tools'#013#010+
-  '-FD%basepath%/bin/$FPCTARGET'#013#010+
-  #013#010+
-  '%NEEDCROSSBINUTILSIFDEF%'#013#010+
-  #013#010+
-  '# binutils prefix for cross compi','ling'#013#010+
-  '#IFDEF FPC_CROSSCOMPILING'#013#010+
-  '#IFDEF NEEDCROSSBINUTILS'#013#010+
-  '  -XP$FPCTARGET-'#013#010+
-  '#ENDIF'#013#010+
-  '#ENDIF'#013#010+
-  #013#010+
-  #013#010+
-  '# -------------'#013#010+
-  '# Linking'#013#010+
-  '# -------------'#013#010+
-  #013#010+
+  'es'#010+
+  '# -Op<x>     set target cpu for optimizing, see fpc',' -i for possible '+
+  'values'#010+
+  #010+
+  '#ifdef darwin'#010+
+  '#ifdef cpui386'#010+
+  '-Cppentiumm'#010+
+  '-Oppentiumm'#010+
+  '#endif'#010+
+  '#endif'#010+
+  #010+
+  '# -----------------------'#010+
+  '# Set Filenames and Paths'#010+
+  '# -----------------------'#010+
+  #010+
+  '# Both slashes and backslashes are allowed in paths'#010+
+  #010+
+  '# path to the m','essagefile, not necessary anymore but can be used to '+
+  'override'#010+
+  '# the default language'#010+
+  '#-Fr%basepath%/msg/errore.msg'#010+
+  '#-Fr%basepath%/msg/errorn.msg'#010+
+  '#-Fr%basepath%/msg/errores.msg'#010+
+  '#-Fr%basepath%/msg/errord.msg'#010+
+  '#-Fr%basepath%/msg/errorr.msg'#010+
+  #010+
+  '# s','earchpath for units and other system dependent things'#010+
+  '-Fu%basepath%/units/$fpctarget'#010+
+  '-Fu%basepath%/units/$fpctarget/*'#010+
+  '-Fu%basepath%/units/$fpctarget/rtl'#010+
+  #010+
+  '#IFDEF FPCAPACHE_1_3'#010+
+  '-Fu%basepath%/units/$fpctarget/httpd13/'#010+
+  '#ELSE'#010+
+  '#IFDEF FPCAPACHE_2_','0'#010+
+  '-Fu%basepath%/units/$fpctarget/httpd20'#010+
+  '#ELSE'#010+
+  '-Fu%basepath%/units/$fpctarget/httpd22'#010+
+  '#ENDIF'#010+
+  '#ENDIF'#010+
+  #010+
+  '# searchpath for fppkg user-specific packages'#010+
+  '-Fu%localbasepath%/units/$FPCTARGET/*'#010+
+  #010+
+  '# path to the gcclib'#010+
+  '%gcclibpath%'#010+
+  #010+
+  '# searchpath for li','braries'#010+
+  '#-Fl%basepath%/lib'#010+
+  '#-Fl/lib;/usr/lib'#010+
+  '-Fl%basepath%/lib/$FPCTARGET'#010+
+  #010+
+  '# searchpath for tools'#010+
+  '-FD%basepath%/bin/$FPCTARGET'#010+
+  #010+
+  '%NEEDCROSSBINUTILSIFDEF%'#010+
+  #010+
+  '# binutils prefix for cross compiling'#010+
+  '#IFDEF FPC_CROSSCOMPILING'#010+
+  '#IFDEF NEEDCROSSBINUTI','LS'#010+
+  '  -XP$FPCTARGET-'#010+
+  '#ENDIF'#010+
+  '#ENDIF'#010+
+  #010+
+  #010+
+  '# -------------'#010+
+  '# Linking'#010+
+  '# -------------'#010+
+  #010+
   '# generate always debugging information for GDB (slows down the compil'+
-  'ing'#013#010+
-  '# process)'#013#010+
-  '#      -g','c        generate checks for pointers'#013#010+
-  '#      -gd        use dbx'#013#010+
-  '#      -gg        use gsym'#013#010+
-  '#      -gh        use heap trace unit (for memory leak debugging)'#013#010+
-  '#      -gl        use line info unit to show more info for backtraces'#013+
-  #010+
-  '#      -','gv        generates programs tracable with valgrind'#013#010+
-  '#      -gw        generate dwarf debugging info'#013#010+
-  '#'#013#010+
-  '# Enable debuginfo and use the line info unit by default'#013#010+
-  '#-gl'#013#010+
-  #013#010+
-  '# always pass an option to the linker'#013#010+
-  '#-k-s'#013#010+
-  #013#010+
-  '# Always strip debugi','nfo from the executable'#013#010+
-  '-Xs'#013#010+
-  #013#010+
-  #013#010+
-  '# -------------'#013#010+
-  '# Miscellaneous'#013#010+
-  '# -------------'#013#010+
-  #013#010+
-  '# Write always a nice FPC logo ;)'#013#010+
-  '-l'#013#010+
-  #013#010+
-  '# Verbosity'#013#010+
-  '#      e : Show errors (default)       d : Show debug info'#013#010+
-  '#      w : Show warnings               ','u : Show unit info'#013#010+
-  '#      n : Show notes                  t : Show tried/used files'#013#010+
-  '#      h : Show hints                  s : Show time stamps'#013#010+
-  '#      i : Show general info           q : Show message numbers'#013#010+
-  '#      l : Show linenumbers ','           c : Show conditionals'#013#010+
-  '#      a : Show everything             0 : Show nothing (except errors'+
-  ')'#013#010+
+  'ing'#010+
+  '# process)'#010+
+  '#      -gc        generate checks for pointers'#010+
+  '#      -gd        use dbx'#010+
+  '#  ','    -gg        use gsym'#010+
+  '#      -gh        use heap trace unit (for memory leak debugging)'#010+
+  '#      -gl        use line info unit to show more info for backtraces'#010+
+  '#      -gv        generates programs tracable with valgrind'#010+
+  '#      -gw        ge','nerate dwarf debugging info'#010+
+  '#'#010+
+  '# Enable debuginfo and use the line info unit by default'#010+
+  '#-gl'#010+
+  #010+
+  '# always pass an option to the linker'#010+
+  '#-k-s'#010+
+  #010+
+  '# Always strip debuginfo from the executable'#010+
+  '-Xs'#010+
+  #010+
+  #010+
+  '# -------------'#010+
+  '# Miscellaneous'#010+
+  '# -------------'#010+
+  #010+
+  '# ','Write always a nice FPC logo ;)'#010+
+  '-l'#010+
+  #010+
+  '# Verbosity'#010+
+  '#      e : Show errors (default)       d : Show debug info'#010+
+  '#      w : Show warnings               u : Show unit info'#010+
+  '#      n : Show notes                  t : Show tried/used files'#010+
+  '#      h :',' Show hints                  s : Show time stamps'#010+
+  '#      i : Show general info           q : Show message numbers'#010+
+  '#      l : Show linenumbers            c : Show conditionals'#010+
+  '#      a : Show everything             0 : Show nothing (except e','rro'+
+  'rs)'#010+
   '#      b : Write file names messages   r : Rhide/GCC compatibility mod'+
-  'e'#013#010+
-  '#          with full path              x : Executable info (','Win32 on'+
-  'ly)'#013#010+
+  'e'#010+
+  '#          with full path              x : Executable info (Win32 only'+
+  ')'#010+
   '#      v : write fpcdebug.txt with     p : Write tree.log with parse t'+
-  'ree'#013#010+
-  '#          lots of debugging info'#013#010+
-  '#'#013#010+
-  '# Display Info, Warnings and Notes'#013#010+
-  '-viwn'#013#010+
-  '# If you don'#039't want so much verbosity use'#013#010+
-  '#-vw'#013#010
+  'ree'#010+
+  '#          lots',' of debugging info'#010+
+  '#'#010+
+  '# Display Info, Warnings and Notes'#010+
+  '-viwn'#010+
+  '# If you don'#039't want so much verbosity use'#010+
+  '#-vw'#010
 );