diff options
Diffstat (limited to 'packages/fcl-db')
60 files changed, 10599 insertions, 7564 deletions
diff --git a/packages/fcl-db/Makefile b/packages/fcl-db/Makefile index 9d35c2541f..2c822e9ab8 100644 --- a/packages/fcl-db/Makefile +++ b/packages/fcl-db/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -320,7 +326,7 @@ FPCFPMAKE=$(FPC) endif endif override PACKAGE_NAME=fcl-db -override PACKAGE_VERSION=2.7.1 +override PACKAGE_VERSION=3.1.1 FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT)) ifdef OS_TARGET FPC_TARGETOPT+=--os=$(OS_TARGET) @@ -572,6 +578,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -617,6 +629,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1153,6 +1170,14 @@ REQUIRE_PACKAGES_HASH=1 REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1385,6 +1410,14 @@ REQUIRE_PACKAGES_HASH=1 REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1529,6 +1562,14 @@ REQUIRE_PACKAGES_HASH=1 REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1902,7 +1943,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -1932,17 +1973,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif ifdef TARGET_RSTS override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) override CLEANRSTFILES+=$(RSTFILES) @@ -2289,12 +2336,10 @@ examples: shared: sourceinstall: fpc_sourceinstall exampleinstall: fpc_exampleinstall -zipsourceinstall: fpc_zipsourceinstall zipexampleinstall: fpc_zipexampleinstall -zipdistinstall: fpc_zipdistinstall info: fpc_info makefiles: fpc_makefiles -.PHONY: units examples shared sourceinstall exampleinstall zipsourceinstall zipexampleinstall zipdistinstall info makefiles +.PHONY: units examples shared sourceinstall exampleinstall zipexampleinstall info makefiles ifneq ($(wildcard fpcmake.loc),) include fpcmake.loc endif @@ -2310,15 +2355,15 @@ FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT)) FPMAKE_OPT+=--compiler=$(FPC) FPMAKE_OPT+=-bu .NOTPARALLEL: -fpmake: fpmake.pp +fpmake$(SRCEXEEXT): fpmake.pp $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT) -all: fpmake +all: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -smart: fpmake +smart: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX -release: fpmake +release: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE -debug: fpmake +debug: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG ifeq ($(FPMAKE_BIN_CLEAN),) clean: @@ -2338,17 +2383,25 @@ endif -$(DEL) $(LOCALFPMAKE) endif cleanall: distclean -install: fpmake +install: fpmake$(SRCEXEEXT) ifdef UNIXHier $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) else - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) +endif +distinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +else + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 endif -distinstall: fpmake +zipinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) +zipdistinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie -fsp 0 +zipsourceinstall: fpmake$(SRCEXEEXT) ifdef UNIXHier - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=share/src/fpc-\$$\(PACKAGEVERSION\)/$(INSTALL_FPCSUBDIR)/\$$\(PACKAGEDIRECTORY\) else - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=source\\$(INSTALL_FPCSUBDIR)\\\$$\(PACKAGEDIRECTORY\) endif -zipinstall: fpmake - $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) diff --git a/packages/fcl-db/Makefile.fpc b/packages/fcl-db/Makefile.fpc index e861774c7c..a4c3d8acba 100644 --- a/packages/fcl-db/Makefile.fpc +++ b/packages/fcl-db/Makefile.fpc @@ -4,7 +4,7 @@ [package] name=fcl-db -version=2.7.1 +version=3.1.1 [require] packages=rtl fpmkunit @@ -41,15 +41,15 @@ FPMAKE_OPT+=--compiler=$(FPC) FPMAKE_OPT+=-bu .NOTPARALLEL: -fpmake: fpmake.pp +fpmake$(SRCEXEEXT): fpmake.pp $(FPCFPMAKE) fpmake.pp $(FPMAKE_SKIP_CONFIG) $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT) -all: fpmake +all: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -smart: fpmake +smart: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX -release: fpmake +release: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE -debug: fpmake +debug: fpmake$(SRCEXEEXT) $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG # If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will # most often fail because the dependencies are cleared. @@ -74,18 +74,27 @@ endif -$(DEL) $(LOCALFPMAKE) endif cleanall: distclean -install: fpmake +install: fpmake$(SRCEXEEXT) ifdef UNIXHier $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) else - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) endif -# distinstall also installs the example-sources -distinstall: fpmake +# distinstall also installs the example-sources and omits the location of the source- +# files from the fpunits.cfg files. +distinstall: fpmake$(SRCEXEEXT) ifdef UNIXHier - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 else - $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie + $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0 +endif +zipinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) +zipdistinstall: fpmake$(SRCEXEEXT) + $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) -ie -fsp 0 +zipsourceinstall: fpmake$(SRCEXEEXT) +ifdef UNIXHier + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=share/src/fpc-\$$\(PACKAGEVERSION\)/$(INSTALL_FPCSUBDIR)/\$$\(PACKAGEDIRECTORY\) +else + $(LOCALFPMAKE) archive $(FPMAKE_OPT) --zipprefix=$(DIST_DESTDIR)/$(ZIPPREFIX) --prefix=source\\$(INSTALL_FPCSUBDIR)\\\$$\(PACKAGEDIRECTORY\) endif -zipinstall: fpmake - $(LOCALFPMAKE) zipinstall $(FPMAKE_OPT) diff --git a/packages/fcl-db/Makefile.fpc.fpcmake b/packages/fcl-db/Makefile.fpc.fpcmake index 21c858ed66..028c5ee9c5 100644 --- a/packages/fcl-db/Makefile.fpc.fpcmake +++ b/packages/fcl-db/Makefile.fpc.fpcmake @@ -4,7 +4,7 @@ [package] name=fcl-db -version=2.7.1 +version=3.1.1 [target] dirs=src/sdf src/memds src/sqldb src/base src/sql src/json @@ -17,6 +17,7 @@ dirs_iphonesim=src/dbase src/sqlite dirs_solaris=src/dbase src/sqlite dirs_netbsd=src/dbase src/sqlite src/paradox dirs_openbsd=src/dbase src/sqlite src/paradox +dirs_os2=src/dbase src/export dirs_win32=src/dbase src/paradox src/sqlite src/export src/datadict src/codegen dirs_win64=src/dbase src/sqlite src/export src/datadict src/codegen dirs_wince=src/dbase src/sqlite src/export src/datadict src/codegen diff --git a/packages/fcl-db/examples/dbftool.lpi b/packages/fcl-db/examples/dbftool.lpi index f2d6ba0627..3674cb838c 100644 --- a/packages/fcl-db/examples/dbftool.lpi +++ b/packages/fcl-db/examples/dbftool.lpi @@ -35,7 +35,6 @@ <Unit0> <Filename Value="dbftool.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="dbftool"/> </Unit0> </Units> </ProjectOptions> @@ -49,12 +48,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff --git a/packages/fcl-db/examples/dbftool.lpr b/packages/fcl-db/examples/dbftool.lpr index a6327ab3c8..250737b4b7 100644 --- a/packages/fcl-db/examples/dbftool.lpr +++ b/packages/fcl-db/examples/dbftool.lpr @@ -1,6 +1,8 @@ program dbftool; -{ Reads and exports DBF files. Can create a demo DBF file to test with. +{ +Reads and exports DBF files. +Can create a set of 2 demo DBF files in current directory to test with. Demonstrates creating DBF tables, filling it with data, and exporting datasets. @@ -36,7 +38,10 @@ type TDBFTool = class(TCustomApplication) private + // Exports recordset to specified format procedure ExportDBF(var MyDbf: TDbf; ExportFormat: string); + // Executable name without path + function GetExeName: string; protected procedure DoRun; override; public @@ -45,18 +50,26 @@ type procedure WriteHelp; virtual; end; + // Creates 2 demonstration DBFs in Directory + // with dbase compatibility level TableLevel procedure CreateDemoDBFs(Directory: string; TableLevel: integer); - // Creates 2 demonstration DBFs in Directory with dbase compatibility level - // TableLevel + // Data structure and data adapted from Firebird employee sample database that + // are also used in the SQLDB tutorials on Lazarus wiki/demo directory. var + CurDir: string; //current directory NewDBF: TDBF; i: integer; begin + // Get current working directory (need not be application directory): + CurDir := ''; + GetDir(0,CurDir); NewDBF := TDBF.Create(nil); try if Directory = '' then - NewDBF.FilePath := '' { application directory} + begin + NewDBF.FilePathFull := ExpandFileName(CurDir); + end else NewDBF.FilePathFull := ExpandFileName(Directory) {full absolute path}; if TableLevel <= 0 then @@ -65,8 +78,8 @@ type NewDBF.TableLevel := TableLevel; NewDBF.TableName := 'customer.dbf'; - writeln('Creating ', NewDBF.TableName, ' with table level ', NewDBF.TableLevel); - if TableLevel >= 30 then + writeln('Creating ', NewDBF.TableName, ' with table level ', NewDBF.TableLevel); + if TableLevel >= 30 {Visual FoxPro} then begin NewDBF.FieldDefs.Add('CUST_NO', ftAutoInc); end @@ -90,7 +103,7 @@ type NewDBF.FieldByName('CITY').AsString := 'San Diego'; NewDBF.FieldByName('COUNTRY').AsString := 'USA'; end; - 2: + 2: //Let's try a duplicate row begin NewDBF.FieldByName('CUSTOMER').AsString := 'Michael Design'; NewDBF.FieldByName('CITY').AsString := 'San Diego'; @@ -125,7 +138,7 @@ type NewDBF := TDBF.Create(nil); try if Directory = '' then - NewDBF.FilePath := '' {application directory} + NewDBF.FilePathFull := ExpandFileName(CurDir) else NewDBF.FilePathFull := ExpandFileName(Directory) {full absolute path}; if TableLevel <= 0 then @@ -135,7 +148,7 @@ type NewDBF.TableName := 'employee.dbf'; writeln('Creating ', NewDBF.TableName, ' with table level ', NewDBF.TableLevel); - if TableLevel >= 30 then + if TableLevel >= 30 {Visual FoxPro} then begin NewDBF.FieldDefs.Add('EMP_NO', ftAutoInc); end @@ -216,31 +229,34 @@ type end; end; + // Gets list of all .dbf files in current directory and its subdirectories. procedure GetDBFList(Results: TStringList); - // Gets list of all .dbf files in a directory and its subdirectories. var r: TSearchRec; begin results.Clear; - if FindFirst('*.dbf', faAnyFile - + if FindFirst('*', faAnyFile - faDirectory - {$WARNINGS OFF} faVolumeID - faSymLink {$WARNINGS ON} , r) = 0 then begin repeat - if (r.Attr and faDirectory) <> faDirectory then - begin + begin + // Cater for both case-sensitive and case-insensitive filesystems + // ignore any directories + if ((r.Attr and faDirectory) <> faDirectory) and + (LowerCase(ExtractFileExt(r.Name))='.dbf') then results.add(expandfilename(r.Name)); - end; + end; until (FindNext(r) <> 0); findclose(r); end; end; + // Convert binary field contents to strings with hexadecimal representation. + // Useful for displaying binary field contents. function BinFieldToHex(BinarySource: TField): string; - // Convert binary field contents to strings with hexadecimal representation. - // Useful for displaying binary field contents. var HexValue: PChar; begin @@ -261,8 +277,8 @@ type end; end; + // Writes contents of available records to screen procedure PrintRecords(DBf: TDBf); - // Prints contents of available records to screen var i: integer; RecordCount: integer; @@ -291,7 +307,6 @@ type { TDBFTool } procedure TDBFTool.ExportDBF(var MyDbf: TDbf; ExportFormat: string); - // Exports recordset to specified format var ExportSettings: TCustomExportFormatSettings; Exporter: TCustomFileExporter; @@ -326,7 +341,7 @@ type //todo: delimiter? Exporter.FileName := MyDBF.FilePathFull + ChangeFileExt(MyDBF.TableName, '.csv'); end; - 'CSV', 'CSVRFC4180', 'CSVLIBRE', 'CSVLIBREOFFICE': + 'CSV', 'CSVRFC4180', 'CSVLIBRE', 'CSVLIBREOFFICE', 'CSVOPENOFFICE': begin Exporter := TCSVExporter.Create(nil); ExportSettings := TCSVFormatSettings.Create(true); @@ -417,6 +432,11 @@ type end; end; + function TDBFTool.GetExeName: string; + begin + result := ExtractFileName(ExeName); + end; + procedure TDBFTool.DoRun; var DBFs: TStringList; @@ -472,15 +492,17 @@ type GetDBFList(DBFs); if DBFs.Count = 0 then - writeln('Could not find any dbf files'); + begin + writeln('Could not find any dbf files.'); + writeln('Use ' + GetExeName + ' --createdemo to create some test DBF files.'); + end; for FileNo := 0 to DBFs.Count - 1 do begin if not (fileexists(DBFs[FileNo])) then begin - // for some reason, fpc trunk suddenly returns the directory as well... - //writeln('Sorry, file ',DBFs[FileNo],' does not exist.'); - break; + writeln('Sorry, file ',DBFs[FileNo],' does not exist. Ignoring it.'); + continue; end; MyDbf := TDbf.Create(nil); try @@ -539,18 +561,21 @@ type procedure TDBFTool.WriteHelp; begin - writeln('Usage: ', ExeName, ' -h'); - writeln(' --createdemo create demo database'); - writeln(' --tablelevel=<n> optional: desired tablelevel for demo db'); + writeln('Read/print all dbfs in current directory'); + writeln('Usage info: ', GetExeName, ' -h'); + writeln(''); + writeln('--createdemo create demo database in current directory'); + writeln('--tablelevel=<n> optional: desired tablelevel for demo db'); writeln(' 3 DBase III'); - writeln(' 4 DBase IV'); + writeln(' 4 DBase IV (default if no tablelevel given)'); writeln(' 7 Visual DBase 7'); writeln(' 25 FoxPro 2.x'); writeln(' 30 Visual FoxPro'); - writeln(' --exportformat=<text> export dbfs to format. Format can be:'); + writeln('--exportformat=<text> export dbfs to format. Format can be:'); writeln(' access Microsoft Access XML'); writeln(' adonet ADO.Net dataset XML'); - writeln(' csvexcel Excel/Creativyst format CSV text file (with locale dependent output)'); + writeln(' csvexcel Excel/Creativyst format CSV text file '); + writeln(' (with locale dependent output)'); writeln(' csvRFC4180 LibreOffice/RFC4180 format CSV text file'); writeln(' dataset Delphi dataset XML'); writeln(' excel Microsoft Excel XML'); diff --git a/packages/fcl-db/fpmake.pp b/packages/fcl-db/fpmake.pp index 398be1ca4b..c15d22db32 100644 --- a/packages/fcl-db/fpmake.pp +++ b/packages/fcl-db/fpmake.pp @@ -8,12 +8,12 @@ uses fpmkunit; procedure add_fcl_db(const ADirectory: string); const - ParadoxOSes = [beos,haiku,linux,freebsd,netbsd,openbsd,win32]; - DatadictOSes = [aix,beos,darwin,haiku,linux,freebsd,win32,win64,wince,android]; - SqldbConnectionOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android]; - SqliteOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android]; - DBaseOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android]; - MSSQLOSes = [beos,haiku,linux,freebsd,netbsd,openbsd,solaris,win32,win64,android]; + ParadoxOSes = [beos,haiku,linux,freebsd,netbsd,openbsd,win32,dragonfly]; + DatadictOSes = [aix,beos,darwin,haiku,linux,freebsd,win32,win64,wince,android,dragonfly]; + SqldbConnectionOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly]; + SqliteOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android,dragonfly]; + DBaseOSes = [aix,beos,haiku,linux,freebsd,darwin,iphonesim,netbsd,openbsd,solaris,win32,win64,wince,android,os2,dragonfly]; + MSSQLOSes = [beos,haiku,linux,freebsd,netbsd,openbsd,solaris,win32,win64,android,dragonfly]; SqldbWithoutOracleOSes = [win64]; @@ -25,6 +25,7 @@ begin With Installer do begin P:=AddPackage('fcl-db'); + P.ShortName:='fcld'; P.Author := '<various>'; P.License := 'LGPL with modification, '; @@ -35,7 +36,7 @@ begin P.OSes:=AllOSes-[embedded,msdos]; P.Directory:=ADirectory; - P.Version:='2.7.1'; + P.Version:='3.1.1'; P.SourcePath.Add('src'); P.SourcePath.Add('src/base'); P.SourcePath.Add('src/paradox', ParadoxOSes); @@ -305,6 +306,8 @@ begin with T.Dependencies do begin AddInclude('dbf_common.inc'); + AddInclude('dbf_wnix.inc', AllOSes-AllWindowsOSes-[os2]); + AddInclude('dbf_wos2.inc', [os2]); end; T:=P.Targets.AddUnit('fpcgcreatedbf.pp', DatadictOSes); with T.Dependencies do diff --git a/packages/fcl-db/src/base/Makefile b/packages/fcl-db/src/base/Makefile index df8b2d5ad6..d465c2dfff 100644 --- a/packages/fcl-db/src/base/Makefile +++ b/packages/fcl-db/src/base/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -320,7 +326,7 @@ FPCFPMAKE=$(FPC) endif endif override PACKAGE_NAME=fcl-db -override PACKAGE_VERSION=2.7.1 +override PACKAGE_VERSION=3.1.1 PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR)))))) ifeq ($(FULL_TARGET),i386-linux) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader @@ -391,6 +397,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif @@ -478,6 +487,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif @@ -532,6 +544,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader endif @@ -613,6 +628,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif @@ -700,6 +718,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif @@ -754,6 +775,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=dbconst dbcoll sqlscript xmldatapacketreader endif @@ -836,6 +860,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2h endif @@ -923,6 +950,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2h endif @@ -977,6 +1007,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2h endif @@ -1058,6 +1091,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_UNITDIR+=../dbase endif @@ -1145,6 +1181,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_UNITDIR+=../dbase endif @@ -1199,6 +1238,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_UNITDIR+=../dbase endif @@ -1453,6 +1495,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1498,6 +1546,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -2080,6 +2133,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2370,6 +2433,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2550,6 +2623,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -3007,7 +3090,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -3037,17 +3120,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/base/Makefile.fpc b/packages/fcl-db/src/base/Makefile.fpc index b3bb92cffa..f509e5405a 100644 --- a/packages/fcl-db/src/base/Makefile.fpc +++ b/packages/fcl-db/src/base/Makefile.fpc @@ -4,7 +4,7 @@ [package] main=fcl-db -version=2.7.1 +version=3.1.1 [target] units=dbconst db dbwhtml bufdataset_parser bufdataset dbcoll sqlscript xmldatapacketreader diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas index 59cbe1758d..f2a1c5b53c 100644 --- a/packages/fcl-db/src/base/bufdataset.pas +++ b/packages/fcl-db/src/base/bufdataset.pas @@ -504,7 +504,6 @@ type procedure SetIndexFieldNames(const AValue: String); procedure SetIndexName(AValue: String); procedure SetMaxIndexesCount(const AValue: Integer); - procedure SetPacketRecords(aValue : integer); procedure SetBufUniDirectional(const AValue: boolean); // indexes handling procedure InitDefaultIndexes; @@ -513,6 +512,7 @@ type procedure RemoveRecordFromIndexes(const ABookmark : TBufBookmark); protected // abstract & virtual methods of TDataset + procedure SetPacketRecords(aValue : integer); virtual; procedure UpdateIndexDefs; override; procedure SetRecNo(Value: Longint); override; function GetRecNo: Longint; override; @@ -546,7 +546,7 @@ type procedure SetFilterText(const Value: String); override; {virtual;} procedure SetFiltered(Value: Boolean); override; {virtual;} procedure InternalRefresh; override; - procedure DataEvent(Event: TDataEvent; Info: Ptrint); override; + procedure DataEvent(Event: TDataEvent; Info: PtrInt); override; // virtual or methods, which can be used by descendants function GetNewBlobBuffer : PBlobBuffer; function GetNewWriteBlobBuffer : PBlobBuffer; @@ -558,6 +558,7 @@ type procedure SetReadOnly(AValue: Boolean); virtual; function IsReadFromPacket : Boolean; function getnextpacket : integer; + procedure ActiveBufferToRecord; // abstracts, must be overidden by descendents function Fetch : boolean; virtual; function LoadField(FieldDef : TFieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; virtual; @@ -2103,9 +2104,10 @@ end; function TCustomBufDataset.GetCurrentBuffer: TRecordBuffer; begin case State of - dsFilter: Result := FFilterBuffer; - dsCalcFields: Result := CalcBuffer; - else Result := ActiveBuffer; + dsFilter: Result := FFilterBuffer; + dsCalcFields: Result := CalcBuffer; + dsRefreshFields: Result := FCurrentIndex.CurrentBuffer + else Result := ActiveBuffer; end; end; @@ -2143,7 +2145,7 @@ begin begin if GetFieldIsNull(pbyte(CurrBuff),Field.FieldNo-1) then Exit; - if assigned(buffer) then + if assigned(Buffer) then begin inc(CurrBuff,FFieldBufPositions[Field.FieldNo-1]); Move(CurrBuff^, Buffer^, GetFieldSize(FieldDefs[Field.FieldNo-1])); @@ -2154,7 +2156,7 @@ begin begin Inc(CurrBuff, GetRecordSize + Field.Offset); Result := Boolean(CurrBuff^); - if result and assigned(Buffer) then + if Result and assigned(Buffer) then begin inc(CurrBuff); Move(CurrBuff^, Buffer^, Field.DataSize); @@ -2179,7 +2181,7 @@ begin CurrBuff := GetCurrentBuffer; If Field.FieldNo > 0 then // If =-1, then calculated/lookup field or =0 unbound field begin - if Field.ReadOnly and not (State in [dsSetKey, dsFilter]) then + if Field.ReadOnly and not (State in [dsSetKey, dsFilter, dsRefreshFields]) then DatabaseErrorFmt(SReadOnlyField, [Field.DisplayName]); if State in [dsEdit, dsInsert, dsNewValue] then Field.Validate(Buffer); @@ -2203,7 +2205,7 @@ begin Move(Buffer^, CurrBuff^, Field.DataSize); end; if not (State in [dsCalcFields, dsFilter, dsNewValue]) then - DataEvent(deFieldChange, Ptrint(Field)); + DataEvent(deFieldChange, PtrInt(Field)); end; procedure TCustomBufDataset.InternalDelete; @@ -2355,7 +2357,7 @@ var r : Integer; FailedCount : integer; Response : TResolverResponse; StoreCurrRec : TBufBookmark; - AUpdateErr : EUpdateError; + AUpdateError : EUpdateError; begin CheckBrowseMode; @@ -2373,7 +2375,7 @@ begin if not ((FUpdateBuffer[r].UpdateKind=ukDelete) and not (assigned(FUpdateBuffer[r].OldValuesBuffer))) then begin FCurrentIndex.GotoBookmark(@FUpdateBuffer[r].BookmarkData); - // Synchronise the Currentbuffer to the ActiveBuffer + // Synchronise the CurrentBuffer to the ActiveBuffer CurrentRecordToBuffer(ActiveBuffer); Response := rrApply; try @@ -2382,18 +2384,23 @@ begin on E: EDatabaseError do begin Inc(FailedCount); - if FailedCount > word(MaxErrors) then Response := rrAbort - else Response := rrSkip; + if FailedCount > word(MaxErrors) then + Response := rrAbort + else + Response := rrSkip; if assigned(FOnUpdateError) then begin - AUpdateErr := PSGetUpdateException(Exception(AcquireExceptionObject), nil); - FOnUpdateError(Self,Self,AUpdateErr,FUpdateBuffer[r].UpdateKind,Response); - AUpdateErr.Free; + AUpdateError := PSGetUpdateException(Exception(AcquireExceptionObject), nil); + FOnUpdateError(Self, Self, AUpdateError, FUpdateBuffer[r].UpdateKind, Response); + AUpdateError.Free; if Response in [rrApply, rrIgnore] then dec(FailedCount); if Response = rrApply then dec(r); end else if Response = rrAbort then - Raise EUpdateError.Create(SOnUpdateError,E.Message,0,0,Exception(AcquireExceptionObject)); + begin + AUpdateError := PSGetUpdateException(Exception(AcquireExceptionObject), nil); + raise AUpdateError; + end; end else raise; @@ -2535,8 +2542,7 @@ begin FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil; end; end; - - move(ActiveBuffer^,FCurrentIndex.CurrentBuffer^,FRecordSize); + ActiveBufferToRecord; // new data are now in current record so reorder current record if needed for i := 1 to FIndexesCount-1 do @@ -2544,6 +2550,12 @@ begin FIndexes[i].OrderCurrentRecord; end; +procedure TCustomBufDataset.ActiveBufferToRecord; + +begin + move(ActiveBuffer^,FCurrentIndex.CurrentBuffer^,FRecordSize); +end; + procedure TCustomBufDataset.CalcRecordSize; var x : longint; @@ -3236,7 +3248,7 @@ begin // Do nothing end; -procedure TCustomBufDataset.DataEvent(Event: TDataEvent; Info: Ptrint); +procedure TCustomBufDataset.DataEvent(Event: TDataEvent; Info: PtrInt); begin if Event = deUpdateState then // Save DataSet.State set by DataSet.SetState (filter out State set by DataSet.SetTempState) diff --git a/packages/fcl-db/src/base/database.inc b/packages/fcl-db/src/base/database.inc index 9b3dd4523f..716f5eb7e3 100644 --- a/packages/fcl-db/src/base/database.inc +++ b/packages/fcl-db/src/base/database.inc @@ -379,15 +379,27 @@ begin DatabaseError(SErrNoDatabaseAvailable,Self) end; +Function TDBTransaction.AllowClose(DS : TDBDataset) : Boolean; + +begin + Result:=Assigned(DS); +end; + procedure TDBTransaction.CloseDataSets; -Var I : longint; +Var + I : longint; + DS : TDBDataset; begin If Assigned(FDatasets) then begin For I:=FDatasets.Count-1 downto 0 do - TDBDataset(FDatasets[i]).Close; + begin + DS:=TDBDataset(FDatasets[i]); + If AllowClose(DS) then + DS.Close; + end; end; end; diff --git a/packages/fcl-db/src/base/dataset.inc b/packages/fcl-db/src/base/dataset.inc index 6a7869ebe4..507db5143d 100644 --- a/packages/fcl-db/src/base/dataset.inc +++ b/packages/fcl-db/src/base/dataset.inc @@ -2060,9 +2060,9 @@ end; procedure TDataSet.Post; begin + UpdateRecord; if State in [dsEdit,dsInsert] then begin - DataEvent(deUpdateRecord,0); DataEvent(deCheckBrowseMode,0); {$ifdef dsdebug} writeln ('Post: checking required fields'); @@ -2083,7 +2083,7 @@ begin {$endif} DoAfterPost; end - else + else if State<>dsSetKey then DatabaseErrorFmt(SNotEditing, [Name], Self); end; diff --git a/packages/fcl-db/src/base/datasource.inc b/packages/fcl-db/src/base/datasource.inc index c63afb518b..6dee4bb6e5 100644 --- a/packages/fcl-db/src/base/datasource.inc +++ b/packages/fcl-db/src/base/datasource.inc @@ -36,7 +36,7 @@ Var B : Boolean; begin - B:=Assigned(DataSource) and (DataSource.State<>dsInactive); + B:=Assigned(DataSource) and Not (DataSource.State in [dsInactive,dsOpening]); If B<>FActive then begin FActive:=B; diff --git a/packages/fcl-db/src/base/db.pas b/packages/fcl-db/src/base/db.pas index 32c13a7e26..0f20d4afb5 100644 --- a/packages/fcl-db/src/base/db.pas +++ b/packages/fcl-db/src/base/db.pas @@ -48,7 +48,7 @@ type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, - dsInternalCalc, dsOpening); + dsInternalCalc, dsOpening, dsRefreshFields); TDataEvent = (deFieldChange, deRecordChange, deDataSetChange, deDataSetScroll, deLayoutChange, deUpdateRecord, deUpdateState, @@ -61,7 +61,7 @@ type TUpdateMode = (upWhereAll, upWhereChanged, upWhereKeyOnly); TResolverResponse = (rrSkip, rrAbort, rrMerge, rrApply, rrIgnore); - TProviderFlag = (pfInUpdate, pfInWhere, pfInKey, pfHidden); + TProviderFlag = (pfInUpdate, pfInWhere, pfInKey, pfHidden, pfRefreshOnInsert,pfRefreshOnUpdate); TProviderFlags = set of TProviderFlag; { Forward declarations } @@ -79,6 +79,7 @@ type { Exception classes } EDatabaseError = class(Exception); + EUpdateError = class(EDatabaseError) private FContext : String; @@ -1231,6 +1232,19 @@ type end; TParamClass = Class of TParam; + { TParamsEnumerator } + + TParamsEnumerator = class + private + FPosition: Integer; + FParams: TParams; + function GetCurrent: TParam; + public + constructor Create(AParams: TParams); + function MoveNext: Boolean; + property Current: TParam read GetCurrent; + end; + { TParams } TParams = class(TCollection) @@ -1255,6 +1269,7 @@ type Function FindParam(const Value: string): TParam; Procedure GetParamList(List: TList; const ParamNames: string); Function IsEqual(Value: TParams): Boolean; + Function GetEnumerator: TParamsEnumerator; Function ParamByName(const Value: string): TParam; Function ParseSQL(SQL: String; DoCreate: Boolean): String; overload; Function ParseSQL(SQL: String; DoCreate, EscapeSlash, EscapeRepeat : Boolean; ParameterStyle : TParamStyle): String; overload; @@ -1607,7 +1622,7 @@ type function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual; procedure CursorPosChanged; procedure DataConvert(aField: TField; aSource, aDest: Pointer; aToNative: Boolean); virtual; - procedure Delete; + procedure Delete; virtual; procedure DisableControls; procedure Edit; procedure EnableControls; @@ -1878,6 +1893,7 @@ type procedure RemoveDataSets; procedure SetActive(Value : boolean); Protected + Function AllowClose(DS: TDBDataset): Boolean; virtual; Procedure SetDatabase (Value : TDatabase); virtual; procedure CloseTrans; procedure openTrans; @@ -2141,7 +2157,7 @@ const dsEditModes = [dsEdit, dsInsert, dsSetKey]; dsWriteModes = [dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, - dsNewValue, dsInternalCalc]; + dsNewValue, dsInternalCalc, dsRefreshFields]; // Correct list of all field types that are BLOB types. // Please use this instead of checking TBlobType which will give // incorrect results @@ -2214,6 +2230,7 @@ begin Pos:=i; end; + { EUpdateError } constructor EUpdateError.Create(NativeError, Context : String; ErrCode, PrevError : integer; E: Exception); diff --git a/packages/fcl-db/src/base/dbconst.pas b/packages/fcl-db/src/base/dbconst.pas index f8f4a27817..35d129a314 100644 --- a/packages/fcl-db/src/base/dbconst.pas +++ b/packages/fcl-db/src/base/dbconst.pas @@ -105,13 +105,22 @@ Resourcestring SStreamNotRecognised = 'The data-stream format is not recognized'; SNoReaderClassRegistered = 'There is no TDatapacketReaderClass registered for this kind of data-stream'; SErrCircularDataSourceReferenceNotAllowed = 'Circular datasource references are not allowed.'; - SCommitting = 'Committing transaction'; - SRollingBack = 'Rolling back transaction'; - SCommitRetaining = 'Commit and retaining transaction'; - SRollBackRetaining = 'Rollback and retaining transaction'; - SErrNoFieldsDefined = 'Can not create a dataset when there are no fielddefinitions or fields defined'; - SErrApplyUpdBeforeRefresh= 'Must apply updates before refreshing data'; - SErrNoDataset = 'Missing (compatible) underlying dataset, can not open'; + SCommitting = 'Committing transaction'; + SRollingBack = 'Rolling back transaction'; + SCommitRetaining = 'Commit and retaining transaction'; + SRollBackRetaining = 'Rollback and retaining transaction'; + SErrNoFieldsDefined = 'Can not create a dataset when there are no fielddefinitions or fields defined'; + SErrApplyUpdBeforeRefresh = 'Must apply updates before refreshing data'; + SErrNoDataset = 'Missing (compatible) underlying dataset, can not open'; + SErrDisconnectedPacketRecords = 'For disconnected TSQLQuery instances, packetrecords must be -1'; + SErrImplicitNoRollBack = 'Implicit use of transactions does not allow rollback.'; + SErrNoImplicitTransaction = 'Connection %s does not allow implicit transactions.'; + SErrImplictTransactionStart = 'Error: attempt to implicitly start a transaction on Connection "%s", transaction "%s".'; + SErrImplicitConnect = 'Error: attempt to implicitly activate connection "%s".'; + SErrFailedToUpdateRecord = 'Failed to apply record updates: %d rows updated.'; + SErrRefreshNotSingleton = 'Refresh SQL resulted in multiple records: %d.'; + SErrRefreshEmptyResult = 'Refresh SQL resulted in empty result set.'; + SErrNoKeyFieldForRefreshClause = 'No key field found to construct refresh SQL WHERE clause'; Implementation diff --git a/packages/fcl-db/src/base/dsparams.inc b/packages/fcl-db/src/base/dsparams.inc index e261c0b7cb..54654a1449 100644 --- a/packages/fcl-db/src/base/dsparams.inc +++ b/packages/fcl-db/src/base/dsparams.inc @@ -22,29 +22,49 @@ begin until notRepeatEscaped; end; +{ TParamsEnumerator } + +function TParamsEnumerator.GetCurrent: TParam; +begin + Result := FParams[FPosition]; +end; + +constructor TParamsEnumerator.Create(AParams: TParams); +begin + inherited Create; + FParams := AParams; + FPosition := -1; +end; + +function TParamsEnumerator.MoveNext: Boolean; +begin + inc(FPosition); + Result := FPosition < FParams.Count; +end; + { TParams } -function TParams.GetItem(Index: Integer): TParam; +Function TParams.GetItem(Index: Integer): TParam; begin Result:=(Inherited GetItem(Index)) as TParam; end; -function TParams.GetParamValue(const ParamName: string): Variant; +Function TParams.GetParamValue(const ParamName: string): Variant; begin Result:=ParamByName(ParamName).Value; end; -procedure TParams.SetItem(Index: Integer; Value: TParam); +Procedure TParams.SetItem(Index: Integer; Value: TParam); begin Inherited SetItem(Index,Value); end; -procedure TParams.SetParamValue(const ParamName: string; const Value: Variant); +Procedure TParams.SetParamValue(const ParamName: string; const Value: Variant); begin ParamByName(ParamName).Value:=Value; end; -procedure TParams.AssignTo(Dest: TPersistent); +Procedure TParams.AssignTo(Dest: TPersistent); begin if (Dest is TParams) then TParams(Dest).Assign(Self) @@ -52,7 +72,7 @@ begin inherited AssignTo(Dest); end; -function TParams.GetDataSet: TDataSet; +Function TParams.GetDataSet: TDataSet; begin If (FOwner is TDataset) Then Result:=TDataset(FOwner) @@ -60,17 +80,17 @@ begin Result:=Nil; end; -function TParams.GetOwner: TPersistent; +Function TParams.GetOwner: TPersistent; begin Result:=FOwner; end; -class function TParams.ParamClass: TParamClass; +Class Function TParams.ParamClass: TParamClass; begin Result:=TParam; end; -constructor TParams.Create(AOwner: TPersistent; AItemClass: TCollectionItemClass +Constructor TParams.Create(AOwner: TPersistent; AItemClass: TCollectionItemClass ); begin Inherited Create(AItemClass); @@ -78,22 +98,22 @@ begin end; -constructor TParams.Create(AOwner: TPersistent); +Constructor TParams.Create(AOwner: TPersistent); begin Create(AOwner,ParamClass); end; -constructor TParams.Create; +Constructor TParams.Create; begin Create(TPersistent(Nil)); end; -procedure TParams.AddParam(Value: TParam); +Procedure TParams.AddParam(Value: TParam); begin Value.Collection:=Self; end; -procedure TParams.AssignValues(Value: TParams); +Procedure TParams.AssignValues(Value: TParams); Var I : Integer; @@ -109,7 +129,7 @@ begin end; end; -function TParams.CreateParam(FldType: TFieldType; const ParamName: string; +Function TParams.CreateParam(FldType: TFieldType; const ParamName: string; ParamType: TParamType): TParam; begin @@ -119,7 +139,7 @@ begin Result.ParamType:=ParamType; end; -function TParams.FindParam(const Value: string): TParam; +Function TParams.FindParam(const Value: string): TParam; Var I : Integer; @@ -134,7 +154,7 @@ begin Dec(i); end; -procedure TParams.GetParamList(List: TList; const ParamNames: string); +Procedure TParams.GetParamList(List: TList; const ParamNames: string); Var P: TParam; @@ -152,7 +172,7 @@ begin until StrPos > Length(ParamNames); end; -function TParams.IsEqual(Value: TParams): Boolean; +Function TParams.IsEqual(Value: TParams): Boolean; Var I : Integer; @@ -167,14 +187,19 @@ begin end; end; -function TParams.ParamByName(const Value: string): TParam; +Function TParams.GetEnumerator: TParamsEnumerator; +begin + Result:=TParamsEnumerator.Create(Self); +end; + +Function TParams.ParamByName(const Value: string): TParam; begin Result:=FindParam(Value); If (Result=Nil) then DatabaseErrorFmt(SParameterNotFound,[Value],Dataset); end; -function TParams.ParseSQL(SQL: String; DoCreate: Boolean): String; +Function TParams.ParseSQL(SQL: String; DoCreate: Boolean): String; var pb : TParamBinding; rs : string; @@ -183,7 +208,7 @@ begin Result := ParseSQL(SQL,DoCreate,True,True,psInterbase, pb, rs); end; -function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, +Function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, EscapeRepeat: Boolean; ParameterStyle: TParamStyle): String; var pb : TParamBinding; @@ -193,7 +218,7 @@ begin Result := ParseSQL(SQL,DoCreate,EscapeSlash,EscapeRepeat,ParameterStyle,pb, rs); end; -function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, +Function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, EscapeRepeat: Boolean; ParameterStyle: TParamStyle; out ParamBinding: TParambinding): String; @@ -246,7 +271,7 @@ begin end; {case} end; -function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, +Function TParams.ParseSQL(SQL: String; DoCreate, EscapeSlash, EscapeRepeat: Boolean; ParameterStyle: TParamStyle; out ParamBinding: TParambinding; out ReplaceString: string): String; @@ -435,7 +460,7 @@ begin end; -procedure TParams.RemoveParam(Value: TParam); +Procedure TParams.RemoveParam(Value: TParam); begin Value.Collection:=Nil; end; @@ -1123,7 +1148,7 @@ begin end; -procedure TParams.CopyParamValuesFromDataset(ADataset: TDataset; +Procedure TParams.CopyParamValuesFromDataset(ADataset: TDataset; CopyBound: Boolean); Var diff --git a/packages/fcl-db/src/base/fields.inc b/packages/fcl-db/src/base/fields.inc index def9b0b8d0..893ad21435 100644 --- a/packages/fcl-db/src/base/fields.inc +++ b/packages/fcl-db/src/base/fields.inc @@ -1331,7 +1331,7 @@ end; procedure TNumericField.RangeError(AValue, Min, Max: Double); begin - DatabaseErrorFMT(SRangeError,[AValue,Min,Max,FieldName]); + DatabaseErrorFmt(SRangeError,[AValue,Min,Max,FieldName]); end; procedure TNumericField.SetDisplayFormat(const AValue: string); @@ -1474,12 +1474,15 @@ begin end; procedure TLongintField.SetAsInteger(AValue: Longint); - +var Min, Max: Longint; begin If CheckRange(AValue) then SetData(@AValue) else - RangeError(AValue,FMinRange,FMaxRange); + if (FMinValue<>0) or (FMaxValue<>0) then + RangeError(AValue,FMinValue,FMaxValue) + else + RangeError(AValue,FMinRange,FMaxRange); end; procedure TLongintField.SetVarValue(const AValue: Variant); @@ -1500,27 +1503,17 @@ begin If Code=0 then SetAsInteger(L) else - DatabaseErrorFMT(SNotAnInteger,[AValue]); + DatabaseErrorFmt(SNotAnInteger,[AValue]); end; end; Function TLongintField.CheckRange(AValue : longint) : Boolean; begin - result := true; - if (FMaxValue=0) then - begin - if (AValue>FMaxRange) Then result := false; - end + if (FMinValue<>0) or (FMaxValue<>0) then + Result := (AValue>=FMinValue) and (AValue<=FMaxValue) else - if AValue>FMaxValue then result := false; - - if (FMinValue=0) then - begin - if (AValue<FMinRange) Then result := false; - end - else - if AValue<FMinValue then result := false; + Result := (AValue>=FMinRange) and (AValue<=FMaxRange); end; Procedure TLongintField.SetMaxValue (AValue : longint); @@ -1645,7 +1638,7 @@ begin If CheckRange(AValue) then SetData(@AValue) else - RangeError(AValue,FMinRange,FMaxRange); + RangeError(AValue,FMinValue,FMaxValue); end; procedure TLargeintField.SetAsInteger(AValue: Longint); @@ -1668,7 +1661,7 @@ begin If Code=0 then SetAsLargeint(L) else - DatabaseErrorFMT(SNotAnInteger,[AValue]); + DatabaseErrorFmt(SNotAnInteger,[AValue]); end; end; @@ -1680,20 +1673,10 @@ end; Function TLargeintField.CheckRange(AValue : largeint) : Boolean; begin - result := true; - if (FMaxValue=0) then - begin - if (AValue>FMaxRange) Then result := false; - end - else - if AValue>FMaxValue then result := false; - - if (FMinValue=0) then - begin - if (AValue<FMinRange) Then result := false; - end + if (FMinValue<>0) or (FMaxValue<>0) then + Result := (AValue>=FMinValue) and (AValue<=FMaxValue) else - if AValue<FMinValue then result := false; + Result := (AValue>=FMinRange) and (AValue<=FMaxRange); end; Procedure TLargeintField.SetMaxValue (AValue : largeint); @@ -2393,7 +2376,7 @@ class procedure TBCDField.CheckTypeSize(AValue: Longint); begin If not (AValue in [0..4]) then - DatabaseErrorfmt(SInvalidFieldSize,[AValue]); + DatabaseErrorFmt(SInvalidFieldSize,[AValue]); end; function TBCDField.GetAsBCD: TBCD; @@ -2504,7 +2487,7 @@ procedure TBCDField.SetAsCurrency(AValue: Currency); begin If CheckRange(AValue) then - setdata(@AValue) + SetData(@AValue) else RangeError(AValue,FMinValue,FMaxValue); end; @@ -2564,7 +2547,7 @@ end; class procedure TFMTBCDField.CheckTypeSize(AValue: Longint); begin If AValue > MAXFMTBcdFractionSize then - DatabaseErrorfmt(SInvalidFieldSize,[AValue]); + DatabaseErrorFmt(SInvalidFieldSize,[AValue]); end; constructor TFMTBCDField.Create(AOwner: TComponent); diff --git a/packages/fcl-db/src/codegen/Makefile b/packages/fcl-db/src/codegen/Makefile index 110914d420..c4b2938642 100644 --- a/packages/fcl-db/src/codegen/Makefile +++ b/packages/fcl-db/src/codegen/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=fpddcodegen fpcgcreatedbf fpcgdbcoll fpcgsqlconst fpcgtiopf fpddpopcode endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=fpddcodegen fpcgsqlconst fpddpopcode endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2h endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2h endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2h endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1834,6 +1878,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2095,6 +2148,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2257,6 +2319,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2672,7 +2743,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2702,17 +2773,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/datadict/Makefile b/packages/fcl-db/src/datadict/Makefile index aee3ca6ab4..05e3b866c3 100644 --- a/packages/fcl-db/src/datadict/Makefile +++ b/packages/fcl-db/src/datadict/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=fpdatadict fpdddiff fpdddbf fpddsqldb endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff fpddfb fpddmysql40 fpddmysql41 fpddmysql50 fpddodbc fpddpq fpddoracle fpddsqlite3 fpddregstd fpddmysql51 fpddmysql55 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=fpdatadict fpddfb fpddsqldb fpdddiff endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2h endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2h endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2h endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1905,6 +1949,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2287,6 +2341,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2521,6 +2585,16 @@ REQUIRE_PACKAGES_SQLITE=1 REQUIRE_PACKAGES_ODBC=1 REQUIRE_PACKAGES_POSTGRES=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -3206,7 +3280,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -3236,17 +3310,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/dbase/Makefile b/packages/fcl-db/src/dbase/Makefile index 849698672d..dc614c1276 100644 --- a/packages/fcl-db/src/dbase/Makefile +++ b/packages/fcl-db/src/dbase/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -398,6 +404,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=dbf endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=dbf +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=dbf endif @@ -485,6 +494,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=dbf endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=dbf +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=dbf endif @@ -539,6 +551,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=dbf endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=dbf +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=dbf endif @@ -620,6 +635,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_EXAMPLES+=testdbf endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_EXAMPLES+=testdbf +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_EXAMPLES+=testdbf endif @@ -707,6 +725,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_EXAMPLES+=testdbf endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_EXAMPLES+=testdbf +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_EXAMPLES+=testdbf endif @@ -761,6 +782,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_EXAMPLES+=testdbf endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_EXAMPLES+=testdbf +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_EXAMPLES+=testdbf endif @@ -842,6 +866,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),i386-aros) +override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),m68k-linux) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -929,6 +956,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),arm-linux) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -983,6 +1013,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),mipsel-android) override CLEAN_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -1064,6 +1097,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),i386-aros) +override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),m68k-linux) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -1151,6 +1187,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),arm-linux) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -1205,6 +1244,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str +endif ifeq ($(FULL_TARGET),mipsel-android) override INSTALL_UNITS+=dbf_collate dbf_common dbf_cursor dbf_dbffile dbf_fields dbf_idxcur dbf_idxfile dbf_lang dbf_memo dbf_parser dbf_pgfile dbf_prscore dbf_prsdef dbf_prssupp dbf_str endif @@ -1287,6 +1329,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 -Sh endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 -Sh +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 -Sh endif @@ -1374,6 +1419,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 -Sh endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 -Sh +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 -Sh endif @@ -1428,6 +1476,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 -Sh endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 -Sh +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 -Sh endif @@ -1682,6 +1733,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1727,6 +1784,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -2286,6 +2348,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2547,6 +2618,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2709,6 +2789,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -3124,7 +3213,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -3154,17 +3243,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/dbase/dbf_dbffile.pas b/packages/fcl-db/src/dbase/dbf_dbffile.pas index 89b8a71cb6..78dc606c6f 100644 --- a/packages/fcl-db/src/dbase/dbf_dbffile.pas +++ b/packages/fcl-db/src/dbase/dbf_dbffile.pas @@ -228,12 +228,14 @@ implementation uses {$ifndef WINDOWS} -{$ifndef FPC} + {$IFNDEF OS2} + {$ifndef FPC} RTLConsts, -{$else} + {$else FPC} BaseUnix, -{$endif} -{$endif} + {$endif FPC} + {$ENDIF OS2} +{$endif WINDOWS} {$ifdef SUPPORT_MATH_UNIT} Math, {$endif} @@ -3155,8 +3157,10 @@ end; procedure TDbfGlobals.InitUserName; {$ifdef FPC} {$ifndef WINDOWS} + {$IFNDEF OS2} var TempName: UTSName; + {$ENDIF OS2} {$endif} {$endif} begin @@ -3176,8 +3180,12 @@ begin {$endif wince} {$else} {$ifdef FPC} + {$IFDEF OS2} + FUserName := GetEnvironmentVariable ('HOSTNAME'); + {$ELSE OS2} FpUname(TempName); FUserName := TempName.machine; + {$ENDIF OS2} FUserNameLen := Length(FUserName); {$endif} {$endif} diff --git a/packages/fcl-db/src/dbase/dbf_wnix.inc b/packages/fcl-db/src/dbase/dbf_wnix.inc new file mode 100644 index 0000000000..d8a26def51 --- /dev/null +++ b/packages/fcl-db/src/dbase/dbf_wnix.inc @@ -0,0 +1,368 @@ +{$ifdef FPC} +uses + unix; +{$endif} + +(* +NAME + fcntl - manipulate file descriptor + +SYNOPSIS + #include <unistd.h> + #include <fcntl.h> + + int fcntl(int fd, int cmd); + int fcntl(int fd, int cmd, long arg); + int fcntl(int fd, int cmd, struct flock * lock); + +DESCRIPTION + fcntl performs one of various miscellaneous operations on + fd. The operation in question is determined by cmd: + + F_GETLK, F_SETLK and F_SETLKW are used to manage discreð + tionary file locks. The third argument lock is a pointer + to a struct flock (that may be overwritten by this call). + + F_GETLK + Return the flock structure that prevents us from + obtaining the lock, or set the l_type field of the + lock to F_UNLCK if there is no obstruction. + + F_SETLK + The lock is set (when l_type is F_RDLCK or F_WRLCK) + or cleared (when it is F_UNLCK). If the lock is + held by someone else, this call returns -1 and sets + errno to EACCES or EAGAIN. + + F_SETLKW + Like F_SETLK, but instead of returning an error we + wait for the lock to be released. If a signal that + is to be caught is received while fcntl is waiting, + it is interrupted and (after the signal handler has + returned) returns immediately (with return value -1 + and errno set to EINTR). + + Using these mechanisms, a program can implement fully + asynchronous I/O without using select(2) or poll(2) most + of the time. + + The use of O_ASYNC, F_GETOWN, F_SETOWN is specific to BSD + and Linux. F_GETSIG and F_SETSIG are Linux-specific. + POSIX has asynchronous I/O and the aio_sigevent structure + to achieve similar things; these are also available in + Linux as part of the GNU C Library (Glibc). + +RETURN VALUE + For a successful call, the return value depends on the + operation: + + F_GETFD Value of flag. + + F_GETFL Value of flags. + + F_GETOWN Value of descriptor owner. + + F_GETSIG Value of signal sent when read or write becomes + possible, or zero for traditional SIGIO + behaviour. + + All other commands + Zero. + + On error, -1 is returned, and errno is set appropriately. + +ERRORS + EACCES Operation is prohibited by locks held by other + processes. + + EAGAIN Operation is prohibited because the file has been + memory-mapped by another process. + + EBADF fd is not an open file descriptor. + + EDEADLK It was detected that the specified F_SETLKW comð + mand would cause a deadlock. + + EFAULT lock is outside your accessible address space. + + EINTR For F_SETLKW, the command was interrupted by a + signal. For F_GETLK and F_SETLK, the command was + interrupted by a signal before the lock was + checked or acquired. Most likely when locking a + remote file (e.g. locking over NFS), but can + sometimes happen locally. + + EINVAL For F_DUPFD, arg is negative or is greater than + the maximum allowable value. For F_SETSIG, arg + is not an allowable signal number. + + EMFILE For F_DUPFD, the process already has the maximum + number of file descriptors open. + + ENOLCK Too many segment locks open, lock table is full, + or a remote locking protocol failed (e.g. locking + over NFS). + + EPERM Attempted to clear the O_APPEND flag on a file + that has the append-only attribute set. + +typedef long __kernel_off_t; +typedef int __kernel_pid_t; + +struct flock { + short l_type; + short l_whence; + off_t l_start; + off_t l_len; + pid_t l_pid; +}; + +whence: +-------- +const + SEEK_SET = 0; { Seek from beginning of file. } + SEEK_CUR = 1; { Seek from current position. } + SEEK_END = 2; { Seek from end of file. } + +{ Old BSD names for the same constants; just for compatibility. } + L_SET = SEEK_SET; + L_INCR = SEEK_CUR; + L_XTND = SEEK_END; +*) + + +{$ifdef FPC} +const + F_RDLCK = 0; + F_WRLCK = 1; + F_UNLCK = 2; + F_EXLCK = 4; + F_SHLCK = 8; + + LOCK_SH = 1; + LOCK_EX = 2; + LOCK_NB = 4; + LOCK_UN = 8; + + LOCK_MAND = 32; + LOCK_READ = 64; + LOCK_WRITE = 128; + LOCK_RW = 192; + + EACCES = ESysEACCES; + EAGAIN = ESysEAGAIN; +{$endif} + +function LockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD): BOOL; +var + FLockInfo: {$ifdef FPC}BaseUnix.FLock{$else}TFLock{$endif}; + FLastError: Cardinal; +begin + FLockInfo.l_type := F_WRLCK; + FLockInfo.l_whence := SEEK_SET; + FLockInfo.l_start := dwFileOffsetLow; + FLockInfo.l_len := nNumberOfBytesToLockLow; + FLockInfo.l_pid := {$ifdef FPC}fpgetpid{$else}getpid{$endif}(); + Result := {$ifdef FPC}fpfcntl{$else}fcntl{$endif}(hFile, F_SETLK, FLockInfo) <> -1; + if not Result then + begin + FLastError := GetLastError(); + if (FLastError = EACCES) or (FLastError = EAGAIN) then + SetLastError(ERROR_LOCK_VIOLATION) + else + Result := True; // If errno is ENOLCK or EINVAL + end; +end; + +function UnlockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh: DWORD): BOOL; +var + FLockInfo: {$ifdef FPC}BaseUnix.FLock{$else}TFLock{$endif}; +begin + FLockInfo.l_type := F_UNLCK; + FLockInfo.l_whence := SEEK_SET; + FLockInfo.l_start := dwFileOffsetLow; + FLockInfo.l_len := nNumberOfBytesToUnLockLow; + FLockInfo.l_pid := {$ifdef FPC}fpgetpid{$else}getpid{$endif}(); + Result := {$ifdef FPC}fpfcntl{$else}fcntl{$endif}(hFile, F_SETLK, FLockInfo) <> -1; +end; + +function GetOEMCP: Cardinal; +begin +{$ifdef HUNGARIAN} + Result := 852; +{$else} + Result := $FFFFFFFF; +{$endif} +end; + +function GetACP: Cardinal; +begin +{$ifdef HUNGARIAN} + Result := 1250; +{$else} + Result := 1252; +{$endif} +end; + +{$ifdef HUNGARIAN} + +procedure OemHunHun(AnsiDst: PChar; cchDstLength: DWORD); +var + Count: DWORD; +begin + if Assigned(AnsiDst) and (cchDstLength<>0) then + begin + for Count:=0 to Pred(cchDstLength) do + begin + case AnsiDst^ of + #160: AnsiDst^:= #225; {á} + #143,#181: AnsiDst^:= #193; {Á} + #130: AnsiDst^:= #233; {é} + #144: AnsiDst^:= #201; {É} + #161: AnsiDst^:= #237; {í} + #141,#214: AnsiDst^:= #205; {Í} + #162: AnsiDst^:= #243; {ó} + #149,#224: AnsiDst^:= #211; {Ó} + #148: AnsiDst^:= #246; {ö} + #153: AnsiDst^:= #214; {Ö} + #147,#139: AnsiDst^:= #245; {õ} + #167,#138: AnsiDst^:= #213; {Õ} + #163: AnsiDst^:= #250; {ú} + #151,#233: AnsiDst^:= #218; {Ú} + #129: AnsiDst^:= #252; {ü} + #154: AnsiDst^:= #220; {Ü} + #150,#251: AnsiDst^:= #251; {û} + #152,#235: AnsiDst^:= #219; {Û} + end; + Inc(AnsiDst); + end; + end; +end; + +procedure AnsiHunHun(AnsiDst: PChar; cchDstLength: DWORD); +var + Count: DWORD; +begin + if Assigned(AnsiDst) and (cchDstLength<>0) then + begin + for Count:=0 to Pred(cchDstLength) do + begin + case AnsiDst^ of + #225: AnsiDst^:= #160; {á} + #193: AnsiDst^:= #181; {Á} + #233: AnsiDst^:= #130; {é} + #201: AnsiDst^:= #144; {É} + #237: AnsiDst^:= #161; {í} + #205: AnsiDst^:= #214; {Í} + #243: AnsiDst^:= #162; {ó} + #211: AnsiDst^:= #224; {Ó} + #246: AnsiDst^:= #148; {ö} + #214: AnsiDst^:= #153; {Ö} + #245: AnsiDst^:= #139; {õ} + #213: AnsiDst^:= #138; {Õ} + #250: AnsiDst^:= #163; {ú} + #218: AnsiDst^:= #233; {Ú} + #252: AnsiDst^:= #129; {ü} + #220: AnsiDst^:= #154; {Ü} + #251: AnsiDst^:= #251; {û} + #219: AnsiDst^:= #235; {Û} + end; + Inc(AnsiDst); + end; + end; +end; + +{$endif} + +function OemToChar(lpszSrc: PChar; lpszDst: PChar): BOOL; +begin + if lpszDst <> lpszSrc then + StrCopy(lpszDst, lpszSrc); + Result := true; +end; + +function CharToOem(lpszSrc: PChar; lpszDst: PChar): BOOL; +begin + if lpszDst <> lpszSrc then + StrCopy(lpszDst, lpszSrc); + Result := true; +end; + +function OemToCharBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; +begin + if lpszDst <> lpszSrc then + StrLCopy(lpszDst, lpszSrc, cchDstLength); +{$ifdef HUNGARIAN} + OemHunHun(lpszDst, cchDstLength); +{$endif} + Result := true; +end; + +function CharToOemBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; +begin + if lpszDst <> lpszSrc then + StrLCopy(lpszDst, lpszSrc, cchDstLength); +{$ifdef HUNGARIAN} + AnsiHunHun(lpszDst, cchDstLength); +{$endif} + Result := true; +end; + +function MultiByteToWideChar(CodePage: DWORD; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; +var + TempA: AnsiString; + TempW: WideString; +begin + TempA := String(lpMultiByteStr^); + TempW := TempA; + Result := Length(TempW); + System.Move(TempW, lpWideCharStr^, Result); +end; + +function WideCharToMultiByte(CodePage: DWORD; dwFlags: DWORD; lpWideCharStr: LPWSTR; cchWideChar: Integer; lpMultiByteStr: LPSTR; cchMultiByte: Integer; lpDefaultChar: LPCSTR; lpUsedDefaultChar: PBOOL): Integer; +var + TempA: AnsiString; + TempW: WideString; +begin + TempW := WideString(lpWideCharStr^); + TempA := TempW; + Result := Length(TempA); + System.Move(TempA, lpMultiByteStr^, Result); +end; + +function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: PChar; cchCount1: Integer; lpString2: PChar; cchCount2: Integer): Integer; +begin + Result := StrLComp(lpString1, lpString2, cchCount1) + 2; + if Result > 2 then Result := 3; + if Result < 2 then Result := 1; +end; + +function EnumSystemCodePages(lpCodePageEnumProc: TFNCodepageEnumProc; dwFlags: DWORD): BOOL; +begin + Result := True; +end; + +function EnumSystemLocales(lpLocaleEnumProc: TFNLocaleEnumProc; dwFlags: DWORD): BOOL; +begin + Result := True; +end; + +function GetUserDefaultLCID: LCID; +begin +{$WARNING Probably shall be implemented by parsing environment variable LANG} + Result := LANG_ENGLISH or (SUBLANG_ENGLISH_UK shl 10); +end; + +{$ifdef FPC} + +function GetLastError: Integer; +begin + Result := FpGetErrno; +end; + +procedure SetLastError(Value: Integer); +begin + FpSetErrno(Value); +end; + +{$endif} diff --git a/packages/fcl-db/src/dbase/dbf_wos2.inc b/packages/fcl-db/src/dbase/dbf_wos2.inc new file mode 100644 index 0000000000..03d6dca664 --- /dev/null +++ b/packages/fcl-db/src/dbase/dbf_wos2.inc @@ -0,0 +1,305 @@ +uses + DosCalls, DosCall2; + +(* +NAME + fcntl - manipulate file descriptor + +SYNOPSIS + #include <unistd.h> + #include <fcntl.h> + + int fcntl(int fd, int cmd); + int fcntl(int fd, int cmd, long arg); + int fcntl(int fd, int cmd, struct flock * lock); + +DESCRIPTION + fcntl performs one of various miscellaneous operations on + fd. The operation in question is determined by cmd: + + F_GETLK, F_SETLK and F_SETLKW are used to manage discreð + tionary file locks. The third argument lock is a pointer + to a struct flock (that may be overwritten by this call). + + F_GETLK + Return the flock structure that prevents us from + obtaining the lock, or set the l_type field of the + lock to F_UNLCK if there is no obstruction. + + F_SETLK + The lock is set (when l_type is F_RDLCK or F_WRLCK) + or cleared (when it is F_UNLCK). If the lock is + held by someone else, this call returns -1 and sets + errno to EACCES or EAGAIN. + + F_SETLKW + Like F_SETLK, but instead of returning an error we + wait for the lock to be released. If a signal that + is to be caught is received while fcntl is waiting, + it is interrupted and (after the signal handler has + returned) returns immediately (with return value -1 + and errno set to EINTR). + + Using these mechanisms, a program can implement fully + asynchronous I/O without using select(2) or poll(2) most + of the time. + + The use of O_ASYNC, F_GETOWN, F_SETOWN is specific to BSD + and Linux. F_GETSIG and F_SETSIG are Linux-specific. + POSIX has asynchronous I/O and the aio_sigevent structure + to achieve similar things; these are also available in + Linux as part of the GNU C Library (Glibc). + +RETURN VALUE + For a successful call, the return value depends on the + operation: + + F_GETFD Value of flag. + + F_GETFL Value of flags. + + F_GETOWN Value of descriptor owner. + + F_GETSIG Value of signal sent when read or write becomes + possible, or zero for traditional SIGIO + behaviour. + + All other commands + Zero. + + On error, -1 is returned, and errno is set appropriately. + +ERRORS + EACCES Operation is prohibited by locks held by other + processes. + + EAGAIN Operation is prohibited because the file has been + memory-mapped by another process. + + EBADF fd is not an open file descriptor. + + EDEADLK It was detected that the specified F_SETLKW comð + mand would cause a deadlock. + + EFAULT lock is outside your accessible address space. + + EINTR For F_SETLKW, the command was interrupted by a + signal. For F_GETLK and F_SETLK, the command was + interrupted by a signal before the lock was + checked or acquired. Most likely when locking a + remote file (e.g. locking over NFS), but can + sometimes happen locally. + + EINVAL For F_DUPFD, arg is negative or is greater than + the maximum allowable value. For F_SETSIG, arg + is not an allowable signal number. + + EMFILE For F_DUPFD, the process already has the maximum + number of file descriptors open. + + ENOLCK Too many segment locks open, lock table is full, + or a remote locking protocol failed (e.g. locking + over NFS). + + EPERM Attempted to clear the O_APPEND flag on a file + that has the append-only attribute set. + +typedef long __kernel_off_t; +typedef int __kernel_pid_t; + +struct flock { + short l_type; + short l_whence; + off_t l_start; + off_t l_len; + pid_t l_pid; +}; + +whence: +-------- +const + SEEK_SET = 0; { Seek from beginning of file. } + SEEK_CUR = 1; { Seek from current position. } + SEEK_END = 2; { Seek from end of file. } + +{ Old BSD names for the same constants; just for compatibility. } + L_SET = SEEK_SET; + L_INCR = SEEK_CUR; + L_XTND = SEEK_END; +*) + +(* +const + F_RDLCK = 0; + F_WRLCK = 1; + F_UNLCK = 2; + F_EXLCK = 4; + F_SHLCK = 8; + + LOCK_SH = 1; + LOCK_EX = 2; + LOCK_NB = 4; + LOCK_UN = 8; + + LOCK_MAND = 32; + LOCK_READ = 64; + LOCK_WRITE = 128; + LOCK_RW = 192; + + EACCES = ESysEACCES; + EAGAIN = ESysEAGAIN; +*) +{$PACKRECORDS 1} +const + LastErr: cardinal = 0; + +type + TQRecL = record + L1, L2: longint; + end; + + TQRecC = record + C1, C2: cardinal; + end; + +function LockFile (hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; + nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD): BOOL; +var + FLock, FUnlock: TFileLockL; + RC: Cardinal; +begin + FillChar (FUnlock, SizeOf (FUnlock), 0); + TQRecC (FLock.Offset).C2 := dwFileOffsetHigh; + TQRecC (FLock.Offset).C1 := dwFileOffsetLow; + TQRecC (FLock.Range).C2 := nNumberOfBytesToLockHigh; + TQRecC (FLock.Range).C1 := nNumberOfBytesToLockLow; + RC := DosSetFileLocksL (hFile, FLock, FUnlock, 50, 0); + if RC <> 0 then + begin + LastErr := RC; + Result := false; + end + else + Result := true; +end; + +function UnlockFile (hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; + nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh: DWORD): BOOL; +var + FLock, FUnlock: TFileLockL; + RC: Cardinal; +begin + FillChar (FLock, SizeOf (FLock), 0); + TQRecC (FUnlock.Offset).C2 := dwFileOffsetHigh; + TQRecC (FUnlock.Offset).C1 := dwFileOffsetLow; + TQRecC (FUnlock.Range).C2 := nNumberOfBytesToUnlockHigh; + TQRecC (FUnlock.Range).C1 := nNumberOfBytesToUnlockLow; + RC := DosSetFileLocksL (hFile, FLock, FUnlock, 50, 0); + if RC <> 0 then + begin + LastErr := RC; + Result := false; + end + else + Result := true; +end; + +function GetOEMCP: Cardinal; +begin + Result := DefaultSystemCodePage; +end; + +function GetACP: Cardinal; +begin + Result := DefaultSystemCodePage; +end; + +function OemToChar(lpszSrc: PChar; lpszDst: PChar): BOOL; +begin + if lpszDst <> lpszSrc then + StrCopy(lpszDst, lpszSrc); + Result := true; +end; + +function CharToOem(lpszSrc: PChar; lpszDst: PChar): BOOL; +begin + if lpszDst <> lpszSrc then + StrCopy(lpszDst, lpszSrc); + Result := true; +end; + +function OemToCharBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; +begin + if lpszDst <> lpszSrc then + StrLCopy(lpszDst, lpszSrc, cchDstLength); + Result := true; +end; + +function CharToOemBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; +begin + if lpszDst <> lpszSrc then + StrLCopy(lpszDst, lpszSrc, cchDstLength); + Result := true; +end; + +function MultiByteToWideChar(CodePage: DWORD; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; +var + TempA: AnsiString; + TempW: WideString; +begin +{$WARNING To be rewritten using the UnicodeStringManager functionality!} + TempA := String(lpMultiByteStr^); + TempW := TempA; + Result := Length(TempW); + System.Move(TempW, lpWideCharStr^, Result); +end; + +function WideCharToMultiByte(CodePage: DWORD; dwFlags: DWORD; lpWideCharStr: LPWSTR; cchWideChar: Integer; lpMultiByteStr: LPSTR; cchMultiByte: Integer; lpDefaultChar: LPCSTR; lpUsedDefaultChar: PBOOL): Integer; +var + TempA: AnsiString; + TempW: WideString; +begin +{$WARNING To be rewritten using the UnicodeStringManager functionality!} + TempW := WideString(lpWideCharStr^); + TempA := TempW; + Result := Length(TempA); + System.Move(TempA, lpMultiByteStr^, Result); +end; + +function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: PChar; cchCount1: Integer; lpString2: PChar; cchCount2: Integer): Integer; +begin +{$WARNING To be rewritten using the UnicodeStringManager functionality!} + Result := StrLComp(lpString1, lpString2, cchCount1) + 2; + if Result > 2 then Result := 3; + if Result < 2 then Result := 1; +end; + +function EnumSystemCodePages(lpCodePageEnumProc: TFNCodepageEnumProc; dwFlags: DWORD): BOOL; +begin +{$WARNING To be rewritten using the LIBUNI.DLL functionality!} + Result := True; +end; + +function EnumSystemLocales(lpLocaleEnumProc: TFNLocaleEnumProc; dwFlags: DWORD): BOOL; +begin +{$WARNING To be rewritten using the LIBUNI.DLL functionality!} +(* http://compgroups.net/comp.os.os2.programmer.misc/how-to-obtain-current-locale-lang/2524034 *) + Result := True; +end; + +function GetUserDefaultLCID: LCID; +begin +{$WARNING To be rewritten using the LIBUNI.DLL functionality!} +(* http://compgroups.net/comp.os.os2.programmer.misc/how-to-obtain-current-locale-lang/2524034 *) + Result := LANG_ENGLISH or (SUBLANG_ENGLISH_UK shl 10); +end; + +function GetLastError: Integer; +begin + Result := Integer (LastErr); +end; + +procedure SetLastError (Value: Integer); +begin + LastErr := cardinal (Value); +end; diff --git a/packages/fcl-db/src/dbase/dbf_wtil.pas b/packages/fcl-db/src/dbase/dbf_wtil.pas index df612dbdcd..9b1fc32cf3 100644 --- a/packages/fcl-db/src/dbase/dbf_wtil.pas +++ b/packages/fcl-db/src/dbase/dbf_wtil.pas @@ -6,11 +6,15 @@ interface {$ifndef WINDOWS} uses -{$ifdef FPC} + {$IFDEF OS2} + OS2Def, + {$ELSE OS2} + {$ifdef FPC} BaseUnix, -{$else} + {$else} Libc, -{$endif} + {$endif} + {$ENDIF OS2} Types, SysUtils, Classes; const @@ -200,11 +204,15 @@ const (* Error const of File Locking *) -{$ifdef FPC} +{$IFDEF OS2} + ERROR_LOCK_VIOLATION = OS2Def.ERROR_LOCK_VIOLATION; +{$ELSE OS2} + {$ifdef FPC} ERROR_LOCK_VIOLATION = ESysEACCES; -{$else} + {$else} ERROR_LOCK_VIOLATION = EACCES; -{$endif} + {$endif} +{$ENDIF OS2} { MBCS and Unicode Translation Flags. } MB_PRECOMPOSED = 1; { use precomposed chars } @@ -271,195 +279,13 @@ procedure SetLastError(Value: Integer); implementation {$ifndef WINDOWS} -{$ifdef FPC} -uses - unix; -{$endif} - -(* -NAME - fcntl - manipulate file descriptor - -SYNOPSIS - #include <unistd.h> - #include <fcntl.h> - - int fcntl(int fd, int cmd); - int fcntl(int fd, int cmd, long arg); - int fcntl(int fd, int cmd, struct flock * lock); - -DESCRIPTION - fcntl performs one of various miscellaneous operations on - fd. The operation in question is determined by cmd: - - F_GETLK, F_SETLK and F_SETLKW are used to manage discreð - tionary file locks. The third argument lock is a pointer - to a struct flock (that may be overwritten by this call). - - F_GETLK - Return the flock structure that prevents us from - obtaining the lock, or set the l_type field of the - lock to F_UNLCK if there is no obstruction. - - F_SETLK - The lock is set (when l_type is F_RDLCK or F_WRLCK) - or cleared (when it is F_UNLCK). If the lock is - held by someone else, this call returns -1 and sets - errno to EACCES or EAGAIN. - - F_SETLKW - Like F_SETLK, but instead of returning an error we - wait for the lock to be released. If a signal that - is to be caught is received while fcntl is waiting, - it is interrupted and (after the signal handler has - returned) returns immediately (with return value -1 - and errno set to EINTR). - - Using these mechanisms, a program can implement fully - asynchronous I/O without using select(2) or poll(2) most - of the time. - - The use of O_ASYNC, F_GETOWN, F_SETOWN is specific to BSD - and Linux. F_GETSIG and F_SETSIG are Linux-specific. - POSIX has asynchronous I/O and the aio_sigevent structure - to achieve similar things; these are also available in - Linux as part of the GNU C Library (Glibc). - -RETURN VALUE - For a successful call, the return value depends on the - operation: - - F_GETFD Value of flag. - - F_GETFL Value of flags. - - F_GETOWN Value of descriptor owner. - - F_GETSIG Value of signal sent when read or write becomes - possible, or zero for traditional SIGIO - behaviour. - - All other commands - Zero. - - On error, -1 is returned, and errno is set appropriately. - -ERRORS - EACCES Operation is prohibited by locks held by other - processes. - - EAGAIN Operation is prohibited because the file has been - memory-mapped by another process. - - EBADF fd is not an open file descriptor. - - EDEADLK It was detected that the specified F_SETLKW comð - mand would cause a deadlock. - - EFAULT lock is outside your accessible address space. - - EINTR For F_SETLKW, the command was interrupted by a - signal. For F_GETLK and F_SETLK, the command was - interrupted by a signal before the lock was - checked or acquired. Most likely when locking a - remote file (e.g. locking over NFS), but can - sometimes happen locally. - - EINVAL For F_DUPFD, arg is negative or is greater than - the maximum allowable value. For F_SETSIG, arg - is not an allowable signal number. - - EMFILE For F_DUPFD, the process already has the maximum - number of file descriptors open. - - ENOLCK Too many segment locks open, lock table is full, - or a remote locking protocol failed (e.g. locking - over NFS). - - EPERM Attempted to clear the O_APPEND flag on a file - that has the append-only attribute set. + {$IFDEF OS2} + {$I dbf_wos2.inc} + {$ELSE OS2} + {$I dbf_wnix.inc} + {$ENDIF OS2} -typedef long __kernel_off_t; -typedef int __kernel_pid_t; - -struct flock { - short l_type; - short l_whence; - off_t l_start; - off_t l_len; - pid_t l_pid; -}; - -whence: --------- -const - SEEK_SET = 0; { Seek from beginning of file. } - SEEK_CUR = 1; { Seek from current position. } - SEEK_END = 2; { Seek from end of file. } - -{ Old BSD names for the same constants; just for compatibility. } - L_SET = SEEK_SET; - L_INCR = SEEK_CUR; - L_XTND = SEEK_END; -*) - - -{$ifdef FPC} -const - F_RDLCK = 0; - F_WRLCK = 1; - F_UNLCK = 2; - F_EXLCK = 4; - F_SHLCK = 8; - - LOCK_SH = 1; - LOCK_EX = 2; - LOCK_NB = 4; - LOCK_UN = 8; - - LOCK_MAND = 32; - LOCK_READ = 64; - LOCK_WRITE = 128; - LOCK_RW = 192; - - EACCES = ESysEACCES; - EAGAIN = ESysEAGAIN; -{$endif} - -function LockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD): BOOL; -var - FLockInfo: {$ifdef FPC}BaseUnix.FLock{$else}TFLock{$endif}; - FLastError: Cardinal; -begin - FLockInfo.l_type := F_WRLCK; - FLockInfo.l_whence := SEEK_SET; - FLockInfo.l_start := dwFileOffsetLow; - FLockInfo.l_len := nNumberOfBytesToLockLow; - FLockInfo.l_pid := {$ifdef FPC}fpgetpid{$else}getpid{$endif}(); - Result := {$ifdef FPC}fpfcntl{$else}fcntl{$endif}(hFile, F_SETLK, FLockInfo) <> -1; - if not Result then - begin - FLastError := GetLastError(); - if (FLastError = EACCES) or (FLastError = EAGAIN) then - SetLastError(ERROR_LOCK_VIOLATION) - else - Result := True; // If errno is ENOLCK or EINVAL - end; -end; - -function UnlockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh: DWORD): BOOL; -var - FLockInfo: {$ifdef FPC}BaseUnix.FLock{$else}TFLock{$endif}; -begin - FLockInfo.l_type := F_UNLCK; - FLockInfo.l_whence := SEEK_SET; - FLockInfo.l_start := dwFileOffsetLow; - FLockInfo.l_len := nNumberOfBytesToUnLockLow; - FLockInfo.l_pid := {$ifdef FPC}fpgetpid{$else}getpid{$endif}(); - Result := {$ifdef FPC}fpfcntl{$else}fcntl{$endif}(hFile, F_SETLK, FLockInfo) <> -1; -end; - -procedure DateTimeToSystemTime(const DateTime: TDateTime; var SystemTime: TSystemTime); +procedure DateTimeToSystemTime(const DateTime: System.TDateTime; var SystemTime: TSystemTime); begin with SystemTime do begin @@ -469,7 +295,7 @@ begin end; end; -function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime; +function SystemTimeToDateTime(const SystemTime: TSystemTime): System.TDateTime; begin with SystemTime do begin @@ -486,185 +312,6 @@ begin DateTimeToSystemTime(NOW, lpSystemTime); end; -function GetOEMCP: Cardinal; -begin -{$ifdef HUNGARIAN} - Result := 852; -{$else} - Result := $FFFFFFFF; -{$endif} -end; - -function GetACP: Cardinal; -begin -{$ifdef HUNGARIAN} - Result := 1250; -{$else} - Result := 1252; -{$endif} -end; - -{$ifdef HUNGARIAN} - -procedure OemHunHun(AnsiDst: PChar; cchDstLength: DWORD); -var - Count: DWORD; -begin - if Assigned(AnsiDst) and (cchDstLength<>0) then - begin - for Count:=0 to Pred(cchDstLength) do - begin - case AnsiDst^ of - #160: AnsiDst^:= #225; {á} - #143,#181: AnsiDst^:= #193; {Á} - #130: AnsiDst^:= #233; {é} - #144: AnsiDst^:= #201; {É} - #161: AnsiDst^:= #237; {í} - #141,#214: AnsiDst^:= #205; {Í} - #162: AnsiDst^:= #243; {ó} - #149,#224: AnsiDst^:= #211; {Ó} - #148: AnsiDst^:= #246; {ö} - #153: AnsiDst^:= #214; {Ö} - #147,#139: AnsiDst^:= #245; {õ} - #167,#138: AnsiDst^:= #213; {Õ} - #163: AnsiDst^:= #250; {ú} - #151,#233: AnsiDst^:= #218; {Ú} - #129: AnsiDst^:= #252; {ü} - #154: AnsiDst^:= #220; {Ü} - #150,#251: AnsiDst^:= #251; {û} - #152,#235: AnsiDst^:= #219; {Û} - end; - Inc(AnsiDst); - end; - end; -end; - -procedure AnsiHunHun(AnsiDst: PChar; cchDstLength: DWORD); -var - Count: DWORD; -begin - if Assigned(AnsiDst) and (cchDstLength<>0) then - begin - for Count:=0 to Pred(cchDstLength) do - begin - case AnsiDst^ of - #225: AnsiDst^:= #160; {á} - #193: AnsiDst^:= #181; {Á} - #233: AnsiDst^:= #130; {é} - #201: AnsiDst^:= #144; {É} - #237: AnsiDst^:= #161; {í} - #205: AnsiDst^:= #214; {Í} - #243: AnsiDst^:= #162; {ó} - #211: AnsiDst^:= #224; {Ó} - #246: AnsiDst^:= #148; {ö} - #214: AnsiDst^:= #153; {Ö} - #245: AnsiDst^:= #139; {õ} - #213: AnsiDst^:= #138; {Õ} - #250: AnsiDst^:= #163; {ú} - #218: AnsiDst^:= #233; {Ú} - #252: AnsiDst^:= #129; {ü} - #220: AnsiDst^:= #154; {Ü} - #251: AnsiDst^:= #251; {û} - #219: AnsiDst^:= #235; {Û} - end; - Inc(AnsiDst); - end; - end; -end; - -{$endif} - -function OemToChar(lpszSrc: PChar; lpszDst: PChar): BOOL; -begin - if lpszDst <> lpszSrc then - StrCopy(lpszDst, lpszSrc); - Result := true; -end; - -function CharToOem(lpszSrc: PChar; lpszDst: PChar): BOOL; -begin - if lpszDst <> lpszSrc then - StrCopy(lpszDst, lpszSrc); - Result := true; -end; - -function OemToCharBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; -begin - if lpszDst <> lpszSrc then - StrLCopy(lpszDst, lpszSrc, cchDstLength); -{$ifdef HUNGARIAN} - OemHunHun(lpszDst, cchDstLength); -{$endif} - Result := true; -end; - -function CharToOemBuffA(lpszSrc: PChar; lpszDst: PChar; cchDstLength: DWORD): BOOL; -begin - if lpszDst <> lpszSrc then - StrLCopy(lpszDst, lpszSrc, cchDstLength); -{$ifdef HUNGARIAN} - AnsiHunHun(lpszDst, cchDstLength); -{$endif} - Result := true; -end; - -function MultiByteToWideChar(CodePage: DWORD; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; -var - TempA: AnsiString; - TempW: WideString; -begin - TempA := String(lpMultiByteStr^); - TempW := TempA; - Result := Length(TempW); - System.Move(TempW, lpWideCharStr^, Result); -end; - -function WideCharToMultiByte(CodePage: DWORD; dwFlags: DWORD; lpWideCharStr: LPWSTR; cchWideChar: Integer; lpMultiByteStr: LPSTR; cchMultiByte: Integer; lpDefaultChar: LPCSTR; lpUsedDefaultChar: PBOOL): Integer; -var - TempA: AnsiString; - TempW: WideString; -begin - TempW := WideString(lpWideCharStr^); - TempA := TempW; - Result := Length(TempA); - System.Move(TempA, lpMultiByteStr^, Result); -end; - -function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: PChar; cchCount1: Integer; lpString2: PChar; cchCount2: Integer): Integer; -begin - Result := StrLComp(lpString1, lpString2, cchCount1) + 2; - if Result > 2 then Result := 3; - if Result < 2 then Result := 1; -end; - -function EnumSystemCodePages(lpCodePageEnumProc: TFNCodepageEnumProc; dwFlags: DWORD): BOOL; -begin - Result := True; -end; - -function EnumSystemLocales(lpLocaleEnumProc: TFNLocaleEnumProc; dwFlags: DWORD): BOOL; -begin - Result := True; -end; - -function GetUserDefaultLCID: LCID; -begin - Result := LANG_ENGLISH or (SUBLANG_ENGLISH_UK shl 10); -end; - -{$ifdef FPC} - -function GetLastError: Integer; -begin - Result := FpGetErrno; -end; - -procedure SetLastError(Value: Integer); -begin - FpSetErrno(Value); -end; - -{$endif} {$endif} end. diff --git a/packages/fcl-db/src/dbase/fpmake.inc b/packages/fcl-db/src/dbase/fpmake.inc index fc7955a615..9ffb2ebb5e 100644 --- a/packages/fcl-db/src/dbase/fpmake.inc +++ b/packages/fcl-db/src/dbase/fpmake.inc @@ -5,11 +5,11 @@ { DBase, only for I386} Targets.ResetDefaults; Targets.DefaultCPU:=[i386]; -Targets.DefaultOS:=[linux,win32,freebsd]; +Targets.DefaultOS:=[linux,win32,freebsd,os2,emx]; Targets.DefaultDir:='db/dbase'; T:=Targets.AddUnit('dbf'); T:=Targets.Addexampleunit('testdbf'); -If (Defaults.CPU=i386) and (Defaults.OS in [linux,win32,freebsd]) then +If (Defaults.CPU=i386) and (Defaults.OS in [linux,win32,freebsd,os2,emx]) then begin { Install files. } InstallFiles.add('dbf_common.o'); diff --git a/packages/fcl-db/src/dbase/testdbf.pp b/packages/fcl-db/src/dbase/testdbf.pp index 61e100266f..87cf86a315 100644 --- a/packages/fcl-db/src/dbase/testdbf.pp +++ b/packages/fcl-db/src/dbase/testdbf.pp @@ -15,6 +15,7 @@ begin Assign(F,FN); Rewrite(F); // SetTextBuf(F,Buf); + Count := 0; With TDBF.Create(Nil) do begin TableName:=TN; diff --git a/packages/fcl-db/src/export/Makefile b/packages/fcl-db/src/export/Makefile index ce34d23fae..49c50c83a5 100644 --- a/packages/fcl-db/src/export/Makefile +++ b/packages/fcl-db/src/export/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=fpdbexport fpcsvexport fpfixedexport fpsqlexport fpsimplexmlexport fpsimplejsonexport fpdbfexport fptexexport fprtfexport fpxmlxsdexport fpstdexports endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2h endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2h endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2h endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1857,6 +1901,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2147,6 +2201,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2327,6 +2391,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2784,7 +2858,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2814,17 +2888,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/json/Makefile b/packages/fcl-db/src/json/Makefile index 19d141d63b..3e3eadd776 100644 --- a/packages/fcl-db/src/json/Makefile +++ b/packages/fcl-db/src/json/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=fpjsondataset endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=fpjsondataset +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=fpjsondataset endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=fpjsondataset endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=fpjsondataset +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=fpjsondataset endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=fpjsondataset endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=fpjsondataset +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=fpjsondataset endif @@ -786,6 +801,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -831,6 +852,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1413,6 +1439,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-JSON=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-JSON=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1703,6 +1739,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-JSON=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-JSON=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1883,6 +1929,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 REQUIRE_PACKAGES_FCL-JSON=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +REQUIRE_PACKAGES_FCL-JSON=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2340,7 +2396,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2370,17 +2426,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/memds/Makefile b/packages/fcl-db/src/memds/Makefile index cc5e634e7e..c7abb84727 100644 --- a/packages/fcl-db/src/memds/Makefile +++ b/packages/fcl-db/src/memds/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=memds endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=memds +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=memds endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=memds endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=memds +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=memds endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=memds endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=memds +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=memds endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=memds endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=memds +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=memds endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=memds endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=memds +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=memds endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=memds endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=memds +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=memds endif @@ -834,6 +858,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_EXAMPLES+=testpop testopen testld testcp endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_EXAMPLES+=testpop testopen testld testcp +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_EXAMPLES+=testpop testopen testld testcp endif @@ -921,6 +948,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_EXAMPLES+=testpop testopen testld testcp endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_EXAMPLES+=testpop testopen testld testcp +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_EXAMPLES+=testpop testopen testld testcp endif @@ -975,6 +1005,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_EXAMPLES+=testpop testopen testld testcp endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_EXAMPLES+=testpop testopen testld testcp +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_EXAMPLES+=testpop testopen testld testcp endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1834,6 +1878,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2095,6 +2148,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2257,6 +2319,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2672,7 +2743,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2702,17 +2773,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/paradox/Makefile b/packages/fcl-db/src/paradox/Makefile index 65487e0d35..7befae15e8 100644 --- a/packages/fcl-db/src/paradox/Makefile +++ b/packages/fcl-db/src/paradox/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=paradox endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=paradox +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=paradox endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=paradox endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=paradox +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=paradox endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=paradox endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=paradox +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=paradox endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=paradox endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=paradox +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=paradox endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=paradox endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=paradox +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=paradox endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=paradox endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=paradox +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=paradox endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1635,6 +1670,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_PXLIB=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_PXLIB=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1925,6 +1970,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_PXLIB=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_PXLIB=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2105,6 +2160,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_PXLIB=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_PXLIB=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2562,7 +2627,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2592,17 +2657,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sdf/Makefile b/packages/fcl-db/src/sdf/Makefile index 0d91b4501c..25e35807bf 100644 --- a/packages/fcl-db/src/sdf/Makefile +++ b/packages/fcl-db/src/sdf/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=sdfdata endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=sdfdata +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=sdfdata endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=sdfdata endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=sdfdata +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=sdfdata endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=sdfdata endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=sdfdata +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=sdfdata endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_EXAMPLES+=testsdf testfix endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_EXAMPLES+=testsdf testfix +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_EXAMPLES+=testsdf testfix endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_EXAMPLES+=testsdf testfix endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_EXAMPLES+=testsdf testfix +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_EXAMPLES+=testsdf testfix endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_EXAMPLES+=testsdf testfix endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_EXAMPLES+=testsdf testfix +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_EXAMPLES+=testsdf testfix endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1612,6 +1647,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1873,6 +1917,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2035,6 +2088,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2450,7 +2512,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2480,17 +2542,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sql/Makefile b/packages/fcl-db/src/sql/Makefile index 5adfb0b946..a3d0b49354 100644 --- a/packages/fcl-db/src/sql/Makefile +++ b/packages/fcl-db/src/sql/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=fpsqltree fpsqlscanner fpsqlparser endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2h endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2h endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2h endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2h +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2h endif @@ -1057,6 +1090,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_UNITDIR+=../dbase endif @@ -1144,6 +1180,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_UNITDIR+=../dbase endif @@ -1198,6 +1237,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_UNITDIR+=../dbase endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_UNITDIR+=../dbase +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_UNITDIR+=../dbase endif @@ -1452,6 +1494,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1497,6 +1545,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -2056,6 +2109,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2317,6 +2379,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2479,6 +2550,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2894,7 +2974,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2924,17 +3004,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/Makefile b/packages/fcl-db/src/sqldb/Makefile index ea01960aaa..d3198ee707 100644 --- a/packages/fcl-db/src/sqldb/Makefile +++ b/packages/fcl-db/src/sqldb/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -492,6 +498,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=sqldb endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=sqldb +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=sqldb endif @@ -579,6 +588,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=sqldb endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=sqldb +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=sqldb endif @@ -633,6 +645,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=sqldb endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=sqldb +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=sqldb endif @@ -714,6 +729,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=sqldb endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=sqldb +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=sqldb endif @@ -801,6 +819,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=sqldb endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=sqldb +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=sqldb endif @@ -855,6 +876,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=sqldb endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=sqldb +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=sqldb endif @@ -937,6 +961,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -1024,6 +1051,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -1078,6 +1108,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1332,6 +1365,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1377,6 +1416,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1996,6 +2040,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2364,6 +2417,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2585,6 +2647,15 @@ REQUIRE_PACKAGES_ORACLE=1 REQUIRE_PACKAGES_SQLITE=1 REQUIRE_PACKAGES_DBLIB=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -3266,7 +3337,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -3296,17 +3367,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/interbase/Makefile b/packages/fcl-db/src/sqldb/interbase/Makefile index 110226eb96..67c03487d6 100644 --- a/packages/fcl-db/src/sqldb/interbase/Makefile +++ b/packages/fcl-db/src/sqldb/interbase/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=ibconnection fbadmin fbeventmonitor endif @@ -613,6 +628,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -700,6 +718,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -754,6 +775,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1635,6 +1670,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_IBASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_IBASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1925,6 +1970,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_IBASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_IBASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2105,6 +2160,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_IBASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_IBASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2562,7 +2627,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2592,17 +2657,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/interbase/fbadmin.pp b/packages/fcl-db/src/sqldb/interbase/fbadmin.pp index 77d8861b96..f510ced77c 100644 --- a/packages/fcl-db/src/sqldb/interbase/fbadmin.pp +++ b/packages/fcl-db/src/sqldb/interbase/fbadmin.pp @@ -203,17 +203,11 @@ end; procedure TFBAdmin.IBRaiseError(GDSErrorCode: Longint; const msg: string; const args: array of const); -var - E:EIBDatabaseError; begin - FErrorMsg:=format(msg,args); + FErrorMsg:=Format(msg,args); FErrorCode:=GDSErrorCode; if FUseExceptions then - begin - E := EIBDatabaseError.Create(FErrorMsg); - E.GDSErrorCode := GDSErrorCode; - Raise E; - end; + raise EIBDatabaseError.CreateFmt(msg,args,nil,GDSErrorCode,''); end; function TFBAdmin.IBSPBParamSerialize(isccode: byte; value: string): string; @@ -391,7 +385,6 @@ end; function TFBAdmin.Connect: boolean; var - E:EIBDatabaseError; Service:string; spb:string; begin @@ -400,11 +393,7 @@ begin result:=InitialiseIBase60<>0; {$EndIf} if FSvcHandle<>FB_API_NULLHANDLE then - begin - E := EIBDatabaseError.CreateFmt(SErrConnected,[self.Name]); - E.GDSErrorCode := 0; - Raise E; - end; + raise EIBDatabaseError.CreateFmt(SErrConnected,[Self.Name],nil,0,''); Service:='service_mgr'; case FProtocol of IBSPTCPIP:if FPort=3050 then diff --git a/packages/fcl-db/src/sqldb/interbase/fpmake.inc b/packages/fcl-db/src/sqldb/interbase/fpmake.inc index 4b0d627300..eb7180f23b 100644 --- a/packages/fcl-db/src/sqldb/interbase/fpmake.inc +++ b/packages/fcl-db/src/sqldb/interbase/fpmake.inc @@ -6,7 +6,7 @@ Targets.ResetDefaults; Targets.DefaultDir:='db/sqldb/interbase'; { Drivers only for the following OSes } -Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku]; +Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku,dragonfly]; T:=Targets.AddUnit('ibconnection'); T.ResourceStrings:=True; T:=Targets.AddUnit('fbadmin'); diff --git a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp index 5c189af43e..b9537f9acb 100644 --- a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp +++ b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp @@ -26,9 +26,9 @@ type ServerVersionString : string; //Complete version string, including name, platform end; - EIBDatabaseError = class(EDatabaseError) + EIBDatabaseError = class(ESQLDatabaseError) public - GDSErrorCode : Longint; + property GDSErrorCode: integer read ErrorCode; deprecated 'Please use ErrorCode instead of GDSErrorCode'; // Nov 2014 end; { TIBCursor } @@ -152,21 +152,25 @@ const procedure TIBConnection.CheckError(ProcName : string; Status : PISC_STATUS); var - buf : array [0..1023] of char; - Msg : string; - E : EIBDatabaseError; - Err : longint; - + ErrorCode : longint; + Msg, SQLState : string; + Buf : array [0..1023] of char; + begin if ((Status[0] = 1) and (Status[1] <> 0)) then begin - Err := Status[1]; - msg := ''; + ErrorCode := Status[1]; +{$IFDEF LinkDynamically} + if assigned(fb_sqlstate) then // >= Firebird 2.5 + begin + fb_sqlstate(Buf, Status); + SQLState := StrPas(Buf); + end; +{$ENDIF} + Msg := ''; while isc_interprete(Buf, @Status) > 0 do - Msg := Msg + LineEnding +' -' + StrPas(Buf); - E := EIBDatabaseError.CreateFmt('%s : %s : %s',[self.Name,ProcName,Msg]); - E.GDSErrorCode := Err; - Raise E; + Msg := Msg + LineEnding + ' -' + StrPas(Buf); + raise EIBDatabaseError.CreateFmt('%s : %s', [ProcName,Msg], Self, ErrorCode, SQLState); end; end; @@ -354,6 +358,13 @@ begin CheckError('Close', FStatus); {$IfDef LinkDynamically} ReleaseIBase60; +{$ELSE} + // Shutdown embedded subsystem with timeout 300ms (Firebird 2.5+) + // Required before unloading library; has no effect on non-embedded client + if (pointer(fb_shutdown)<>nil) and (fb_shutdown(300,1)<>0) then + begin + //todo: log error; still try to unload library below as the timeout may have been insufficient + end; {$EndIf} end; @@ -595,7 +606,7 @@ begin TrLen := SQLLen; end; SQL_TYPE_DATE : - TrType := ftDate; + TrType := ftDate; SQL_TYPE_TIME : TrType := ftTime; SQL_TIMESTAMP : @@ -608,9 +619,9 @@ begin SQL_BLOB : begin if SQLSubType = isc_blob_text then - TrType := ftMemo + TrType := ftMemo else - TrType := ftBlob; + TrType := ftBlob; TrLen := SQLLen; end; SQL_SHORT : @@ -988,23 +999,35 @@ begin VSQLVar^.SQLInd^ := 0; case (VSQLVar^.sqltype and not 1) of + SQL_SHORT, SQL_BOOLEAN_INTERBASE : + begin + if VSQLVar^.sqlscale = 0 then + si := AParams[ParNr].AsSmallint + else + si := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale)); + i := si; + Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen); + end; SQL_LONG : begin if VSQLVar^.sqlscale = 0 then i := AParams[ParNr].AsInteger else - i := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale)); + i := Round(AParams[ParNr].AsFloat * IntPower10(-VSQLVar^.sqlscale)); //*any number of digits Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen); end; - SQL_SHORT, SQL_BOOLEAN_INTERBASE : + SQL_INT64: begin if VSQLVar^.sqlscale = 0 then - si := AParams[ParNr].AsSmallint + li := AParams[ParNr].AsLargeInt + else if AParams[ParNr].DataType = ftFMTBcd then + li := AParams[ParNr].AsFMTBCD * IntPower10(-VSQLVar^.sqlscale) else - si := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale)); - i := si; - Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen); + li := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale)); + Move(li, VSQLVar^.SQLData^, VSQLVar^.SQLLen); end; + SQL_DOUBLE, SQL_FLOAT: + SetFloat(VSQLVar^.SQLData, AParams[ParNr].AsFloat, VSQLVar^.SQLLen); SQL_BLOB : SetBlobParam; SQL_VARYING, SQL_TEXT : @@ -1045,18 +1068,6 @@ begin end; SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP : SetDateTime(VSQLVar^.SQLData, AParams[ParNr].AsDateTime, VSQLVar^.SQLType); - SQL_INT64: - begin - if VSQLVar^.sqlscale = 0 then - li := AParams[ParNr].AsLargeInt - else if AParams[ParNr].DataType = ftFMTBcd then - li := AParams[ParNr].AsFMTBCD * IntPower10(-VSQLVar^.sqlscale) - else - li := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale)); - Move(li, VSQLVar^.SQLData^, VSQLVar^.SQLLen); - end; - SQL_DOUBLE, SQL_FLOAT: - SetFloat(VSQLVar^.SQLData, AParams[ParNr].AsFloat, VSQLVar^.SQLLen); SQL_BOOLEAN_FIREBIRD: PByte(VSQLVar^.SQLData)^ := Byte(AParams[ParNr].AsBoolean); else @@ -1607,29 +1618,41 @@ end; class function TIBConnectionDef.DefaultLibraryName: String; begin +{$IFDEF LinkDynamically} If UseEmbeddedFirebird then Result:=fbembedlib else - Result:=fbclib + Result:=fbclib; +{$ELSE} + Result:=''; +{$ENDIF} end; class function TIBConnectionDef.LoadFunction: TLibraryLoadFunction; begin +{$IFDEF LinkDynamically} Result:=@InitialiseIBase60; +{$ELSE} + Result:=nil; +{$ENDIF} end; class function TIBConnectionDef.UnLoadFunction: TLibraryUnLoadFunction; begin +{$IFDEF LinkDynamically} Result:=@ReleaseIBase60 +{$ELSE} + Result:=nil; +{$ENDIF} end; class function TIBConnectionDef.LoadedLibraryName: string; begin - {$IfDef LinkDynamically} +{$IFDEF LinkDynamically} Result:=IBaseLoadedLibrary; - {$else} +{$ELSE} Result:=''; - {$endif} +{$ENDIF} end; initialization diff --git a/packages/fcl-db/src/sqldb/mssql/Makefile b/packages/fcl-db/src/sqldb/mssql/Makefile index 089f4086a4..033e41000d 100644 --- a/packages/fcl-db/src/sqldb/mssql/Makefile +++ b/packages/fcl-db/src/sqldb/mssql/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=mssqlconn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=mssqlconn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=mssqlconn endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=mssqlconn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=mssqlconn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=mssqlconn endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=mssqlconn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=mssqlconn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=mssqlconn endif @@ -613,6 +628,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -700,6 +718,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -754,6 +775,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1612,6 +1647,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_DBLIB=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_DBLIB=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1873,6 +1917,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_DBLIB=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_DBLIB=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2035,6 +2088,15 @@ REQUIRE_PACKAGES_LIBTAR=1 REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_DBLIB=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_DBLIB=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2450,7 +2512,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2480,17 +2542,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/mssql/fpmake.inc b/packages/fcl-db/src/sqldb/mssql/fpmake.inc index a3a16c6c2d..0703b35133 100644 --- a/packages/fcl-db/src/sqldb/mssql/fpmake.inc +++ b/packages/fcl-db/src/sqldb/mssql/fpmake.inc @@ -6,6 +6,6 @@ Targets.ResetDefaults; Targets.DefaultDir:='db/sqldb/mssql'; { Drivers only for the following OSes } -Targets.DefaultOS:=[win32,win64,openbsd,netbsd,freebsd,linux,haiku]; +Targets.DefaultOS:=[win32,win64,openbsd,netbsd,freebsd,linux,haiku,dragonfly]; T:=Targets.AddUnit('mssqlconn'); T.ResourceStrings:=False; diff --git a/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp b/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp index b1d1a8355d..a63586a5b7 100644 --- a/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp +++ b/packages/fcl-db/src/sqldb/mssql/mssqlconn.pp @@ -96,6 +96,7 @@ type // - Statement execution procedure Execute(cursor:TSQLCursor; ATransaction:TSQLTransaction; AParams:TParams); override; function RowsAffected(cursor: TSQLCursor): TRowsCount; override; + function RefreshLastInsertID(Query : TCustomSQLQuery; Field : TField): boolean; override; // - Result retrieving procedure AddFieldDefs(cursor:TSQLCursor; FieldDefs:TFieldDefs); override; function Fetch(cursor:TSQLCursor):boolean; override; @@ -208,6 +209,7 @@ begin DBErrorStr:=DBErrorStr+LineEnding+dberrstr; DBErrorNo :=dberr; Result :=INT_CANCEL; + // for server messages with severity greater than 10 error handler is also called end; function DBMsgHandler(dbproc: PDBPROCESS; msgno: DBINT; msgstate, severity:INT; msgtext, srvname, procname:PChar; line:DBUSMALLINT):INT; cdecl; @@ -295,8 +297,10 @@ end; function TMSSQLConnection.CheckError(const Ret: RETCODE): RETCODE; var E: EMSSQLDatabaseError; begin - if Ret=FAIL then + if (Ret=FAIL) or (DBErrorStr<>'') then begin + // try clear all pending results to allow ROLLBACK and prevent error 10038 "Results pending" + if assigned(FDBProc) then dbcancel(FDBProc); if DBErrorStr = '' then case DBErrorNo of SYBEFCON: DBErrorStr:='SQL Server connection failed!'; @@ -312,7 +316,7 @@ end; constructor TMSSQLConnection.Create(AOwner: TComponent); begin inherited Create(AOwner); - FConnOptions := FConnOptions + [sqSupportEmptyDatabaseName, sqEscapeRepeat]; + FConnOptions := [sqSupportEmptyDatabaseName, sqEscapeRepeat, sqImplicitTransaction, sqLastInsertID]; //FieldNameQuoteChars:=DoubleQuotes; //default Ftds := DBTDS_UNKNOWN; end; @@ -537,7 +541,7 @@ end; function TMSSQLConnection.Rollback(trans: TSQLHandle): boolean; begin - Execute('ROLLBACK'); + Execute('IF @@TRANCOUNT>0 ROLLBACK'); Result:=true; end; @@ -656,6 +660,21 @@ begin Result := inherited RowsAffected(cursor); end; +function TMSSQLConnection.RefreshLastInsertID(Query: TCustomSQLQuery; Field: TField): boolean; +var Identity: int64; +begin + // global variable @@IDENTITY is NUMERIC(38,0) + Result:=False; + if dbcmd(FDBProc, 'SELECT @@IDENTITY') = FAIL then Exit; + if dbsqlexec(FDBProc) = FAIL then Exit; + if dbresults(FDBProc) = FAIL then Exit; + if dbnextrow(FDBProc) = FAIL then Exit; + if dbconvert(FDBProc, dbcoltype(FDBProc,1), dbdata(FDBProc,1), -1, SYBINT8, @Identity, sizeof(Identity)) = -1 then Exit; + // by default identity columns are ReadOnly + Field.AsLargeInt := Identity; + Result:=True; +end; + function TMSSQLConnection.TranslateFldType(SQLDataType: integer): TFieldType; begin case SQLDataType of diff --git a/packages/fcl-db/src/sqldb/mysql/Makefile b/packages/fcl-db/src/sqldb/mysql/Makefile index 75dab6bce8..300e713dab 100644 --- a/packages/fcl-db/src/sqldb/mysql/Makefile +++ b/packages/fcl-db/src/sqldb/mysql/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1857,6 +1901,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2147,6 +2201,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2327,6 +2391,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2784,7 +2858,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2814,17 +2888,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/mysql/fpmake.inc b/packages/fcl-db/src/sqldb/mysql/fpmake.inc index 50fcd03c85..87491373c9 100644 --- a/packages/fcl-db/src/sqldb/mysql/fpmake.inc +++ b/packages/fcl-db/src/sqldb/mysql/fpmake.inc @@ -6,4 +6,4 @@ Targets.ResetDefaults; Targets.DefaultDir:='db/sqldb/mysql'; { Drivers only for the following OSes } -Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku]; +Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku,dragonfly]; diff --git a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc index 648227e822..49839fbd0a 100644 --- a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc +++ b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc @@ -59,6 +59,12 @@ Const {$endif} {$endif} {$ENDIF} + MariaDBVersion = +{$IFDEF mysql56} // MariaDB 10.0 is compatible with MySQL 5.6 + '10.0'; +{$ELSE} // MariaDB 5.1..5.5 presumably report the same version number as MySQL + MySQLVersion; +{$ENDIF} Type TTransactionName = Class(TSQLHandle) @@ -93,11 +99,11 @@ Type procedure ExecuteDirectMySQL(const query : string); function EscapeString(const Str : string) : string; protected - function StrToStatementType(s : string) : TStatementType; override; Procedure ConnectToServer; virtual; Procedure SelectDatabase; virtual; function MySQLDataType(AField: PMYSQL_FIELD; var NewType: TFieldType; var NewSize: Integer): Boolean; function MySQLWriteData(AField: PMYSQL_FIELD; FieldDef: TFieldDef; Source, Dest: PChar; Len: integer; out CreateBlob : boolean): Boolean; + // SQLConnection methods procedure DoInternalConnect; override; procedure DoInternalDisconnect; override; @@ -110,6 +116,7 @@ Type Procedure DeAllocateCursorHandle(var cursor : TSQLCursor); override; Function AllocateTransactionHandle : TSQLHandle; override; + function StrToStatementType(s : string) : TStatementType; override; procedure PrepareStatement(cursor: TSQLCursor;ATransaction : TSQLTransaction;buf : string; AParams : TParams); override; procedure UnPrepareStatement(cursor:TSQLCursor); override; procedure FreeFldBuffers(cursor : TSQLCursor); override; @@ -127,6 +134,7 @@ Type function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; override; procedure UpdateIndexDefs(IndexDefs : TIndexDefs;TableName : string); override; function RowsAffected(cursor: TSQLCursor): TRowsCount; override; + function RefreshLastInsertID(Query : TCustomSQLQuery; Field : TField): Boolean; override; Public constructor Create(AOwner : TComponent); override; procedure GetFieldNames(const TableName : string; List : TStrings); override; @@ -323,7 +331,7 @@ begin Result := mysql_stat(FMYSQL); end; -function TConnectionName.GetInsertID: Int64; +Function TConnectionName.GetInsertID: int64; begin CheckConnected; Result:=mysql_insert_id(GetHandle); @@ -398,14 +406,14 @@ begin end; -procedure TConnectionName.ConnectToServer; +Procedure TConnectionName.ConnectToServer; begin ConnectMySQL(FMySQL); FServerInfo := strpas(mysql_get_server_info(FMYSQL)); FHostInfo := strpas(mysql_get_host_info(FMYSQL)); end; -procedure TConnectionName.SelectDatabase; +Procedure TConnectionName.SelectDatabase; begin if mysql_select_db(FMySQL,pchar(DatabaseName))<>0 then MySQLError(FMySQL,SErrDatabaseSelectFailed,Self); @@ -459,13 +467,15 @@ end; procedure TConnectionName.DoInternalConnect; var - FullVersion, - ClientVerStr: string; + FullVersion: string; begin InitialiseMysql; Fullversion:=strpas(mysql_get_client_info()); - ClientVerStr := copy(FullVersion,1,3); - If (ClientVerStr<>MySQLVersion) then + // Version string should start with version number: + // Note: in case of MariaDB version mismatch: tough luck, we report MySQL + // version only. + if (pos(MySQLVersion, Fullversion) <> 1) and + (pos(MariaDBVersion, Fullversion) <> 1) then Raise EInOutError.CreateFmt(SErrVersionMisMatch,[ClassName,MySQLVersion,FullVersion]); inherited DoInternalConnect; ConnectToServer; @@ -485,7 +495,7 @@ begin Result:=FMySQL; end; -function TConnectionName.AllocateCursorHandle: TSQLCursor; +Function TConnectionName.AllocateCursorHandle: TSQLCursor; begin {$IFDEF mysql56} Result:=TMySQL56Cursor.Create; @@ -516,7 +526,7 @@ begin FreeAndNil(cursor); end; -function TConnectionName.AllocateTransactionHandle: TSQLHandle; +Function TConnectionName.AllocateTransactionHandle: TSQLHandle; begin // Result:=TTransactionName.Create; Result := nil; @@ -1110,11 +1120,17 @@ begin Result := -1; end; +function TConnectionName.RefreshLastInsertID(Query: TCustomSQLQuery; Field: TField): Boolean; +begin + Field.AsLargeInt:=GetInsertID; + Result := True; +end; + constructor TConnectionName.Create(AOwner: TComponent); const SingleBackQoutes: TQuoteChars = ('`','`'); begin inherited Create(AOwner); - FConnOptions := FConnOptions + [sqEscapeRepeat] + [sqEscapeSlash]; + FConnOptions := [sqEscapeRepeat, sqEscapeSlash, sqImplicitTransaction, sqLastInsertID]; FieldNameQuoteChars:=SingleBackQoutes; FMySQL := Nil; end; diff --git a/packages/fcl-db/src/sqldb/odbc/Makefile b/packages/fcl-db/src/sqldb/odbc/Makefile index c53d42f208..99702775d1 100644 --- a/packages/fcl-db/src/sqldb/odbc/Makefile +++ b/packages/fcl-db/src/sqldb/odbc/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=odbcconn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=odbcconn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=odbcconn endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=odbcconn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=odbcconn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=odbcconn endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=odbcconn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=odbcconn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=odbcconn endif @@ -613,6 +628,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -700,6 +718,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -754,6 +775,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1635,6 +1670,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_ODBC=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ODBC=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1925,6 +1970,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_ODBC=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ODBC=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2105,6 +2160,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_ODBC=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ODBC=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2562,7 +2627,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2592,17 +2657,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/odbc/odbcconn.pas b/packages/fcl-db/src/sqldb/odbc/odbcconn.pas index 07b27d09e1..29857d6279 100644 --- a/packages/fcl-db/src/sqldb/odbc/odbcconn.pas +++ b/packages/fcl-db/src/sqldb/odbc/odbcconn.pas @@ -16,9 +16,7 @@ unit odbcconn; interface uses - Classes, SysUtils, sqldb, db, odbcsqldyn -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)}, BufDataset{$ENDIF} - ; + Classes, SysUtils, sqldb, db, odbcsqldyn, BufDataset; type @@ -33,9 +31,6 @@ type FQuery:string; // last prepared query, with :ParamName converted to ? FParamIndex:TParamBinding; // maps the i-th parameter in the query to the TParams passed to PrepareStatement FParamBuf:array of pointer; // buffers that can be used to bind the i-th parameter in the query -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - FBlobStreams:TList; // list of Blob TMemoryStreams stored in field buffers (we need this currently as we can't hook into the freeing of TBufDataset buffers) -{$ENDIF} public constructor Create(Connection:TODBCConnection); destructor Destroy; override; @@ -95,13 +90,8 @@ type // - Result retrieving procedure AddFieldDefs(cursor:TSQLCursor; FieldDefs:TFieldDefs); override; function Fetch(cursor:TSQLCursor):boolean; override; -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} function LoadField(cursor:TSQLCursor; FieldDef:TFieldDef; buffer:pointer; out CreateBlob : boolean):boolean; override; procedure LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); override; -{$ELSE} - function LoadField(cursor:TSQLCursor; FieldDef:TFieldDef; buffer:pointer):boolean; override; - function CreateBlobStream(Field:TField; Mode:TBlobStreamMode):TStream; override; -{$ENDIF} procedure FreeFldBuffers(cursor:TSQLCursor); override; // - UpdateIndexDefs procedure UpdateIndexDefs(IndexDefs:TIndexDefs; TableName:string); override; @@ -135,7 +125,6 @@ type EODBCException = class(ESQLDatabaseError); -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} { TODBCConnectionDef } TODBCConnectionDef = Class(TConnectionDef) @@ -143,7 +132,6 @@ type Class Function ConnectionClass : TSQLConnectionClass; override; Class Function Description : String; override; end; -{$ENDIF} implementation @@ -302,9 +290,7 @@ end; constructor TODBCConnection.Create(AOwner: TComponent); begin inherited Create(AOwner); -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} FConnOptions := FConnOptions + [sqEscapeRepeat] + [sqEscapeSlash]; -{$ENDIF} end; function TODBCConnection.StrToStatementType(s : string) : TStatementType; @@ -661,11 +647,7 @@ begin // Parse the SQL and build FParamIndex if assigned(AParams) and (AParams.count > 0) then -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} buf := AParams.ParseSQL(buf,false,sqEscapeSlash in ConnOptions, sqEscapeRepeat in ConnOptions,psInterbase,ODBCCursor.FParamIndex); -{$ELSE} - buf := AParams.ParseSQL(buf,false,psInterbase,ODBCCursor.FParamIndex); -{$ENDIF} // prepare statement ODBCCursor.FQuery:=Buf; @@ -815,11 +797,7 @@ end; const DEFAULT_BLOB_BUFFER_SIZE = 1024; -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} function TODBCConnection.LoadField(cursor: TSQLCursor; FieldDef: TFieldDef; buffer: pointer; out CreateBlob : boolean): boolean; -{$ELSE} -function TODBCConnection.LoadField(cursor: TSQLCursor; FieldDef: TFieldDef; buffer: pointer):boolean; -{$ENDIF} var ODBCCursor:TODBCCursor; StrLenOrInd:SQLLEN; @@ -827,16 +805,9 @@ var ODBCTimeStruct:SQL_TIME_STRUCT; ODBCTimeStampStruct:SQL_TIMESTAMP_STRUCT; DateTime:TDateTime; -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - BlobBuffer:pointer; - BlobBufferSize,BytesRead:SQLINTEGER; - BlobMemoryStream:TMemoryStream; -{$ENDIF} Res:SQLRETURN; begin -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} CreateBlob := False; -{$ENDIF} ODBCCursor:=cursor as TODBCCursor; // load the field using SQLGetData @@ -899,9 +870,7 @@ begin else PWord(buffer)^ := StrLenOrInd; end; -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} ftWideMemo, -{$ENDIF} ftBlob, ftMemo: // BLOBs begin //Writeln('BLOB'); @@ -911,48 +880,8 @@ begin // Read the data if not NULL if StrLenOrInd<>SQL_NULL_DATA then begin -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} CreateBlob:=true; // defer actual loading of blob data to LoadBlobIntoBuffer method //WriteLn('Deferring loading of blob of length ',StrLenOrInd); -{$ELSE} - // Determine size of buffer to use - if StrLenOrInd<>SQL_NO_TOTAL then - BlobBufferSize:=StrLenOrInd - else - BlobBufferSize:=DEFAULT_BLOB_BUFFER_SIZE; - try - // init BlobBuffer and BlobMemoryStream to nil pointers - BlobBuffer:=nil; - BlobMemoryStream:=nil; - if BlobBufferSize>0 then // Note: zero-length BLOB is represented as nil pointer in the field buffer to save memory usage - begin - // Allocate the buffer and memorystream - BlobBuffer:=GetMem(BlobBufferSize); - BlobMemoryStream:=TMemoryStream.Create; - // Retrieve data in parts (or effectively in one part if StrLenOrInd<>SQL_NO_TOTAL above) - repeat - Res:=SQLGetData(ODBCCursor.FSTMTHandle, FieldDef.Index+1, SQL_C_BINARY, BlobBuffer, BlobBufferSize, @StrLenOrInd); - ODBCCheckResult(Res, SQL_HANDLE_STMT, ODBCCursor.FSTMTHandle, 'Could not get field data for field "%s" (index %d).',[FieldDef.Name, FieldDef.Index+1]); - // Append data in buffer to memorystream - if (StrLenOrInd=SQL_NO_TOTAL) or (StrLenOrInd>BlobBufferSize) then - BytesRead:=BlobBufferSize - else - BytesRead:=StrLenOrInd; - BlobMemoryStream.Write(BlobBuffer^, BytesRead); - until Res=SQL_SUCCESS; - end; - // Store memorystream pointer in Field buffer and in the cursor's FBlobStreams list - TObject(buffer^):=BlobMemoryStream; - if BlobMemoryStream<>nil then - ODBCCursor.FBlobStreams.Add(BlobMemoryStream); - // Set BlobMemoryStream to nil, so it won't get freed in the finally block below - BlobMemoryStream:=nil; - finally - BlobMemoryStream.Free; - if BlobBuffer<>nil then - Freemem(BlobBuffer,BlobBufferSize); - end; -{$ENDIF} end; end; // TODO: Loading of other field types @@ -965,7 +894,6 @@ begin //writeln(Format('Field.Size: %d; StrLenOrInd: %d',[FieldDef.Size, StrLenOrInd])); end; -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} procedure TODBCConnection.LoadBlobIntoBuffer(FieldDef: TFieldDef; ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction: TSQLTransaction); var ODBCCursor: TODBCCursor; @@ -1036,41 +964,13 @@ begin end; end; end; -{$ELSE} -function TODBCConnection.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; -var - ODBCCursor: TODBCCursor; - BlobMemoryStream, BlobMemoryStreamCopy: TMemoryStream; -begin - if (Mode=bmRead) and not Field.IsNull then - begin - Field.GetData(@BlobMemoryStream); - BlobMemoryStreamCopy:=TMemoryStream.Create; - if BlobMemoryStream<>nil then - BlobMemoryStreamCopy.LoadFromStream(BlobMemoryStream); - Result:=BlobMemoryStreamCopy; - end - else - Result:=nil; -end; -{$ENDIF} procedure TODBCConnection.FreeFldBuffers(cursor: TSQLCursor); var ODBCCursor:TODBCCursor; -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - i: integer; -{$ENDIF} begin ODBCCursor:=cursor as TODBCCursor; -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - // Free TMemoryStreams in cursor.FBlobStreams and clear it - for i:=0 to ODBCCursor.FBlobStreams.Count-1 do - TObject(ODBCCursor.FBlobStreams[i]).Free; - ODBCCursor.FBlobStreams.Clear; -{$ENDIF} - if ODBCCursor.FSTMTHandle <> SQL_NULL_HSTMT then ODBCCheckResult( SQLFreeStmt(ODBCCursor.FSTMTHandle, SQL_CLOSE), @@ -1082,11 +982,7 @@ procedure TODBCConnection.AddFieldDefs(cursor: TSQLCursor; FieldDefs: TFieldDefs const ColNameDefaultLength = 40; // should be > 0, because an ansistring of length 0 is a nil pointer instead of a pointer to a #0 TypeNameDefaultLength = 80; // idem -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} BLOB_BUF_SIZE = 0; -{$ELSE} - BLOB_BUF_SIZE = sizeof(pointer); -{$ENDIF} var ODBCCursor:TODBCCursor; ColumnCount:SQLSMALLINT; @@ -1149,11 +1045,9 @@ begin SQL_CHAR: begin FieldType:=ftFixedChar; FieldSize:=ColumnSize; end; SQL_VARCHAR: begin FieldType:=ftString; FieldSize:=ColumnSize; end; SQL_LONGVARCHAR: begin FieldType:=ftMemo; FieldSize:=BLOB_BUF_SIZE; end; // is a blob -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} SQL_WCHAR: begin FieldType:=ftFixedWideChar; FieldSize:=ColumnSize*sizeof(Widechar); end; SQL_WVARCHAR: begin FieldType:=ftWideString; FieldSize:=ColumnSize*sizeof(Widechar); end; SQL_WLONGVARCHAR: begin FieldType:=ftWideMemo; FieldSize:=BLOB_BUF_SIZE; end; // is a blob -{$ENDIF} SQL_DECIMAL: begin FieldType:=ftFloat; FieldSize:=0; end; SQL_NUMERIC: begin FieldType:=ftFloat; FieldSize:=0; end; SQL_SMALLINT: begin FieldType:=ftSmallint; FieldSize:=0; end; @@ -1186,9 +1080,7 @@ begin { SQL_INTERVAL_HOUR_TO_MINUTE: FieldType:=ftUnknown;} { SQL_INTERVAL_HOUR_TO_SECOND: FieldType:=ftUnknown;} { SQL_INTERVAL_MINUTE_TO_SECOND:FieldType:=ftUnknown;} -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} SQL_GUID: begin FieldType:=ftGuid; FieldSize:=38; end; //SQL_GUID defines 36, but TGuidField requires 38 -{$ENDIF} else begin FieldType:=ftUnknown; FieldSize:=ColumnSize; end end; @@ -1565,21 +1457,13 @@ end; constructor TODBCCursor.Create(Connection:TODBCConnection); begin -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - // allocate FBlobStreams - FBlobStreams:=TList.Create; -{$ENDIF} end; destructor TODBCCursor.Destroy; begin -{$IF NOT((FPC_VERSION>=2) AND (FPC_RELEASE>=1))} - FBlobStreams.Free; -{$ENDIF} inherited Destroy; end; -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} class function TODBCConnectionDef.TypeName: String; begin Result:='ODBC'; @@ -1597,12 +1481,9 @@ end; initialization RegisterConnection(TODBCConnectionDef); -{$ENDIF} finalization -{$IF (FPC_VERSION>=2) AND (FPC_RELEASE>=1)} UnRegisterConnection(TODBCConnectionDef); -{$ENDIF} if Assigned(DefaultEnvironment) then DefaultEnvironment.Free; end. diff --git a/packages/fcl-db/src/sqldb/oracle/Makefile b/packages/fcl-db/src/sqldb/oracle/Makefile index 446b4b4185..12eb0fbe8a 100644 --- a/packages/fcl-db/src/sqldb/oracle/Makefile +++ b/packages/fcl-db/src/sqldb/oracle/Makefile @@ -1,3190 +1,3270 @@ -#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
-#
-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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx haiku aix
-LIMIT83fs = go32v2 os2 emx watcom msdos
-OSNeedsComspecToRunBatch = go32v2 watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef COMSPEC
-ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
-ifndef RUNBATCH
-RUNBATCH=$(COMSPEC) /C
-endif
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-ifneq ($(CPU_TARGET),)
-FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
-else
-FPC:=$(shell $(FPCPROG) -PB)
-endif
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-else
-ifeq ($(strip $(wildcard $(FPC))),)
-FPC:=$(firstword $(FPCPROG))
-endif
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifeq ($(CPU_TARGET),armeb)
-ARCH=arm
-override FPCOPT+=-Cb
-else
-ifeq ($(CPU_TARGET),armel)
-ARCH=arm
-override FPCOPT+=-CaEABI
-else
-ARCH=$(CPU_TARGET)
-endif
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-ifeq ($(SUBARCH),)
-$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
-endif
-override FPCOPT+=-Cp$(SUBARCH)
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-endif
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-ifndef CROSSCOMPILE
-BUILDFULLNATIVE=1
-export BUILDFULLNATIVE
-endif
-ifdef BUILDFULLNATIVE
-BUILDNATIVE=1
-export BUILDNATIVE
-endif
-export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
-ifeq ($(OS_SOURCE),darwin)
-DARWIN2DARWIN=1
-endif
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-ifneq ($(OS_TARGET),msdos)
-ifndef DARWIN2DARWIN
-ifneq ($(CPU_TARGET),jvm)
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-ifeq ($(OS_TARGET),android)
-ifeq ($(CPU_TARGET),arm)
-BINUTILSPREFIX=arm-linux-androideabi-
-else
-ifeq ($(CPU_TARGET),i386)
-BINUTILSPREFIX=i686-linux-android-
-else
-ifeq ($(CPU_TARGET),mipsel)
-BINUTILSPREFIX=mipsel-linux-android-
-endif
-endif
-endif
-endif
-endif
-endif
-else
-BINUTILSPREFIX=$(OS_TARGET)-
-endif
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifndef FPCFPMAKE
-ifdef CROSSCOMPILE
-ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPCFPMAKE:=$(shell $(FPCPROG) -PB)
-ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
-FPCFPMAKE:=$(firstword $(FPCPROG))
-endif
-else
-override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
-FPMAKE_SKIP_CONFIG=-n
-export FPCFPMAKE
-export FPMAKE_SKIP_CONFIG
-endif
-else
-FPMAKE_SKIP_CONFIG=-n
-FPCFPMAKE=$(FPC)
-endif
-endif
-override PACKAGE_NAME=fcl-db
-PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR))))))
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i386-android)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),arm-android)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_RSTS+=oracleconnection
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_RSTS+=oracleconnection
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-android)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-android)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-EXEDBGEXT=.dbg
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-IMPORTLIBPREFIX=
-endif
-ifneq ($(CPU_TARGET),jvm)
-ifeq ($(OS_TARGET),android)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),haiku)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=hai
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-IMPORTLIBPREFIX=imp
-endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-EXEDBGEXT=.dSYM
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-ifeq ($(OS_TARGET),symbian)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=symbian
-endif
-ifeq ($(OS_TARGET),NativeNT)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=nativent
-endif
-ifeq ($(OS_TARGET),wii)
-EXEEXT=.dol
-SHAREDLIBEXT=.so
-SHORTSUFFIX=wii
-endif
-ifeq ($(OS_TARGET),aix)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=aix
-endif
-ifeq ($(OS_TARGET),java)
-OEXT=.class
-ASMEXT=.j
-SHAREDLIBEXT=.jar
-SHORTSUFFIX=java
-endif
-ifeq ($(CPU_TARGET),jvm)
-ifeq ($(OS_TARGET),android)
-OEXT=.class
-ASMEXT=.j
-SHAREDLIBEXT=.jar
-SHORTSUFFIX=android
-endif
-endif
-ifeq ($(OS_TARGET),msdos)
-STATICLIBPREFIX=
-STATICLIBEXT=.a
-SHORTSUFFIX=d16
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-NASMNAME=$(BINUTILSPREFIX)nasm
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-ifndef NASMPROG
-ifdef CROSSBINDIR
-NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
-else
-NASMPROG=$(NASMNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-NASM=$(NASMPROG)
-ifdef inUnix
-PPAS=./ppas$(SRCBATCHEXT)
-else
-PPAS=ppas$(SRCBATCHEXT)
-endif
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl-xml oracle
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i386-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),arm-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-XML=1
-REQUIRE_PACKAGES_ORACLE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-ifdef UNITDIR_FPMAKE_RTL
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-ifdef UNITDIR_FPMAKE_PASZLIB
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL-PROCESS
-PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL-PROCESS),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL-PROCESS=
-UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL-PROCESS),)
-UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
-else
-UNITDIR_FCL-PROCESS=
-endif
-endif
-ifdef UNITDIR_FCL-PROCESS
-override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
-endif
-ifdef UNITDIR_FPMAKE_FCL-PROCESS
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-ifdef UNITDIR_FPMAKE_HASH
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBTAR
-PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBTAR),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBTAR=
-UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBTAR),)
-UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
-else
-UNITDIR_LIBTAR=
-endif
-endif
-ifdef UNITDIR_LIBTAR
-override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
-endif
-ifdef UNITDIR_FPMAKE_LIBTAR
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FPMKUNIT
-PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FPMKUNIT),)
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
-UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FPMKUNIT=
-UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FPMKUNIT),)
-UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
-else
-UNITDIR_FPMKUNIT=
-endif
-endif
-ifdef UNITDIR_FPMKUNIT
-override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
-endif
-ifdef UNITDIR_FPMAKE_FPMKUNIT
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL-XML
-PACKAGEDIR_FCL-XML:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL-XML),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL-XML)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FCL-XML) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-XML)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL-XML=
-UNITDIR_FCL-XML:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL-XML),)
-UNITDIR_FCL-XML:=$(firstword $(UNITDIR_FCL-XML))
-else
-UNITDIR_FCL-XML=
-endif
-endif
-ifdef UNITDIR_FCL-XML
-override COMPILER_UNITDIR+=$(UNITDIR_FCL-XML)
-endif
-ifdef UNITDIR_FPMAKE_FCL-XML
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-XML)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-ifdef UNITDIR_FPMAKE_ORACLE
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_ORACLE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(ARCH)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(ARCH)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX)
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifndef CROSSCOMPILE
-ifneq ($(BINUTILSPREFIX),)
-override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-endif
-ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
-ifeq ($(CPU_TARGET),x86_64)
-override FPCOPT+=-Cg
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-ifdef RUNBATCH
-EXECPPAS:=@$(RUNBATCH) $(PPAS)
-else
-EXECPPAS:=@$(PPAS)
-endif
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
- @$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
- $(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
- $(MAKE) all DEBUG=1
-fpc_release:
- $(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
- $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
- $(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
- $(COMPILER) $<
- $(EXECPPAS)
-%$(PPUEXT): %.pas
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.pp
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.pas
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.lpr
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.dpr
- $(COMPILER) $<
- $(EXECPPAS)
-%.res: %.rc
- windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.inc $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
- $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
- $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
- @$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
- $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
- $(MKDIR) $(INSTALL_BINDIR)
- $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
- $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
- $(MKDIR) $(INSTALL_UNITDIR)
- $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
- $(MKDIR) $(INSTALL_UNITDIR)
- $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
- $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
- $(MKDIR) $(INSTALL_LIBDIR)
- $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
- ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
- $(MKDIR) $(INSTALL_DATADIR)
- $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
- $(MKDIR) $(INSTALL_SOURCEDIR)
- $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
- $(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
- $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
- $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
-endif
-ifdef CLEAN_PROGRAMS
-override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
-override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
- -$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANEXEDBGFILES
- -$(DELTREE) $(CLEANEXEDBGFILES)
-endif
-ifdef CLEANPPUFILES
- -$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
- -$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
- -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
- -$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
- -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
- -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
- -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
- -$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
- -$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
- -$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
- -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-ifdef CLEAN_FILES
- -$(DEL) $(CLEAN_FILES)
-endif
- -$(DELTREE) units
- -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
- -$(DEL) *.o *.ppu *.a
-endif
- -$(DELTREE) *$(SMARTEXT)
- -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
- -$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
- -$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
- -$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
- @$(ECHO)
- @$(ECHO) == Package info ==
- @$(ECHO) Package Name..... $(PACKAGE_NAME)
- @$(ECHO) Package Version.. $(PACKAGE_VERSION)
- @$(ECHO)
- @$(ECHO) == Configuration info ==
- @$(ECHO)
- @$(ECHO) FPC.......... $(FPC)
- @$(ECHO) FPC Version.. $(FPC_VERSION)
- @$(ECHO) Source CPU... $(CPU_SOURCE)
- @$(ECHO) Target CPU... $(CPU_TARGET)
- @$(ECHO) Source OS.... $(OS_SOURCE)
- @$(ECHO) Target OS.... $(OS_TARGET)
- @$(ECHO) Full Source.. $(FULL_SOURCE)
- @$(ECHO) Full Target.. $(FULL_TARGET)
- @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
- @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
- @$(ECHO) FPC fpmake... $(FPCFPMAKE)
- @$(ECHO)
- @$(ECHO) == Directory info ==
- @$(ECHO)
- @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
- @$(ECHO)
- @$(ECHO) Basedir......... $(BASEDIR)
- @$(ECHO) FPCDir.......... $(FPCDIR)
- @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
- @$(ECHO) UnitsDir........ $(UNITSDIR)
- @$(ECHO) PackagesDir..... $(PACKAGESDIR)
- @$(ECHO)
- @$(ECHO) GCC library..... $(GCCLIBDIR)
- @$(ECHO) Other library... $(OTHERLIBDIR)
- @$(ECHO)
- @$(ECHO) == Tools info ==
- @$(ECHO)
- @$(ECHO) As........ $(AS)
- @$(ECHO) Ld........ $(LD)
- @$(ECHO) Ar........ $(AR)
- @$(ECHO) Rc........ $(RC)
- @$(ECHO)
- @$(ECHO) Mv........ $(MVPROG)
- @$(ECHO) Cp........ $(CPPROG)
- @$(ECHO) Rm........ $(RMPROG)
- @$(ECHO) GInstall.. $(GINSTALL)
- @$(ECHO) Echo...... $(ECHO)
- @$(ECHO) Shell..... $(SHELL)
- @$(ECHO) Date...... $(DATE)
- @$(ECHO) FPCMake... $(FPCMAKE)
- @$(ECHO) PPUMove... $(PPUMOVE)
- @$(ECHO) Zip....... $(ZIPPROG)
- @$(ECHO)
- @$(ECHO) == Object info ==
- @$(ECHO)
- @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
- @$(ECHO) Target Units.......... $(TARGET_UNITS)
- @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
- @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
- @$(ECHO) Target Dirs........... $(TARGET_DIRS)
- @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
- @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
- @$(ECHO)
- @$(ECHO) Clean Units......... $(CLEAN_UNITS)
- @$(ECHO) Clean Files......... $(CLEAN_FILES)
- @$(ECHO)
- @$(ECHO) Install Units....... $(INSTALL_UNITS)
- @$(ECHO) Install Files....... $(INSTALL_FILES)
- @$(ECHO)
- @$(ECHO) == Install info ==
- @$(ECHO)
- @$(ECHO) DateStr.............. $(DATESTR)
- @$(ECHO) ZipName.............. $(ZIPNAME)
- @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
- @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
- @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
- @$(ECHO) FullZipName.......... $(FULLZIPNAME)
- @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
- @$(ECHO)
- @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
- @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
- @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
- @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
- @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
- @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
- @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
- @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
- @$(ECHO)
- @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
- @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
- @$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
- fpc_makefile_dirs
-fpc_makefile:
- $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
- $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
- $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif
-.NOTPARALLEL:
+# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] +# +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly +UNIXs = linux $(BSDs) solaris qnx haiku aix +LIMIT83fs = go32v2 os2 emx watcom msdos +OSNeedsComspecToRunBatch = go32v2 watcom +FORCE: +.PHONY: FORCE +override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) +ifneq ($(findstring darwin,$(OSTYPE)),) +inUnix=1 #darwin +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +ifeq ($(findstring ;,$(PATH)),) +inUnix=1 +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +SEARCHPATH:=$(subst ;, ,$(PATH)) +endif +endif +SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) +ifeq ($(PWD),) +$(error You need the GNU utils package to use this Makefile) +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT= +endif +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT=.exe +endif +ifndef inUnix +ifeq ($(OS),Windows_NT) +inWinNT=1 +else +ifdef OS2_SHELL +inOS2=1 +endif +endif +else +ifneq ($(findstring cygdrive,$(PATH)),) +inCygWin=1 +endif +endif +ifdef inUnix +SRCBATCHEXT=.sh +else +ifdef inOS2 +SRCBATCHEXT=.cmd +else +SRCBATCHEXT=.bat +endif +endif +ifdef COMSPEC +ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),) +ifndef RUNBATCH +RUNBATCH=$(COMSPEC) /C +endif +endif +endif +ifdef inUnix +PATHSEP=/ +else +PATHSEP:=$(subst /,\,/) +ifdef inCygWin +PATHSEP=/ +endif +endif +ifdef PWD +BASEDIR:=$(subst \,/,$(shell $(PWD))) +ifdef inCygWin +ifneq ($(findstring /cygdrive/,$(BASEDIR)),) +BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) +BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) +BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) +endif +endif +else +BASEDIR=. +endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif +override DEFAULT_FPCDIR=../../../../.. +ifndef FPC +ifdef PP +FPC=$(PP) +endif +endif +ifndef FPC +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +ifneq ($(CPU_TARGET),) +FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB) +else +FPC:=$(shell $(FPCPROG) -PB) +endif +ifneq ($(findstring Error,$(FPC)),) +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +else +ifeq ($(strip $(wildcard $(FPC))),) +FPC:=$(firstword $(FPCPROG)) +endif +endif +else +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +endif +override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) +override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +FOUNDFPC:=$(strip $(wildcard $(FPC))) +ifeq ($(FOUNDFPC),) +FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))) +ifeq ($(FOUNDFPC),) +$(error Compiler $(FPC) not found) +endif +endif +ifndef FPC_COMPILERINFO +FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) +endif +ifndef FPC_VERSION +FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) +endif +export FPC FPC_VERSION FPC_COMPILERINFO +unexport CHECKDEPEND ALLDEPENDENCIES +ifndef CPU_TARGET +ifdef CPU_TARGET_DEFAULT +CPU_TARGET=$(CPU_TARGET_DEFAULT) +endif +endif +ifndef OS_TARGET +ifdef OS_TARGET_DEFAULT +OS_TARGET=$(OS_TARGET_DEFAULT) +endif +endif +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) +endif +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifeq ($(CPU_TARGET),armeb) +ARCH=arm +override FPCOPT+=-Cb +else +ifeq ($(CPU_TARGET),armel) +ARCH=arm +override FPCOPT+=-CaEABI +else +ARCH=$(CPU_TARGET) +endif +endif +ifeq ($(FULL_TARGET),arm-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +else +TARGETSUFFIX=$(FULL_TARGET) +endif +SOURCESUFFIX=$(FULL_SOURCE) +endif +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 +endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) +endif +endif +ifneq ($(findstring $(OS_TARGET),$(BSDs)),) +BSDhier=1 +endif +ifeq ($(OS_TARGET),linux) +linuxHier=1 +endif +ifndef CROSSCOMPILE +BUILDFULLNATIVE=1 +export BUILDFULLNATIVE +endif +ifdef BUILDFULLNATIVE +BUILDNATIVE=1 +export BUILDNATIVE +endif +export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE +ifdef FPCDIR +override FPCDIR:=$(subst \,/,$(FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +else +override FPCDIR=wrong +endif +ifdef DEFAULT_FPCDIR +ifeq ($(FPCDIR),wrong) +override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +endif +endif +ifeq ($(FPCDIR),wrong) +ifdef inUnix +override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) +ifeq ($(wildcard $(FPCDIR)/units),) +override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) +endif +else +override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(BASEDIR) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=c:/pp +endif +endif +endif +endif +endif +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX)) +endif +ifneq ($(findstring $(OS_TARGET),darwin iphonesim),) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifneq ($(OS_TARGET),msdos) +ifndef DARWIN2DARWIN +ifneq ($(CPU_TARGET),jvm) +BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- +ifeq ($(OS_TARGET),android) +ifeq ($(CPU_TARGET),arm) +BINUTILSPREFIX=arm-linux-androideabi- +else +ifeq ($(CPU_TARGET),i386) +BINUTILSPREFIX=i686-linux-android- +else +ifeq ($(CPU_TARGET),mipsel) +BINUTILSPREFIX=mipsel-linux-android- +endif +endif +endif +endif +endif +endif +else +BINUTILSPREFIX=$(OS_TARGET)- +endif +endif +endif +endif +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX)) +ifeq ($(UNITSDIR),) +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) +ifndef FPCFPMAKE +ifdef CROSSCOMPILE +ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),) +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +FPCFPMAKE:=$(shell $(FPCPROG) -PB) +ifeq ($(strip $(wildcard $(FPCFPMAKE))),) +FPCFPMAKE:=$(firstword $(FPCPROG)) +endif +else +override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +else +FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))) +FPMAKE_SKIP_CONFIG=-n +export FPCFPMAKE +export FPMAKE_SKIP_CONFIG +endif +else +FPMAKE_SKIP_CONFIG=-n +FPCFPMAKE=$(FPC) +endif +endif +override PACKAGE_NAME=fcl-db +PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR)))))) +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-haiku) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-nativent) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-android) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-wii) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-aix) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-darwin) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-android) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),avr-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),armeb-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),armeb-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mips-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-linux) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-android) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),jvm-java) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),jvm-android) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i8086-msdos) +override TARGET_UNITS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-haiku) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-nativent) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-android) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-wii) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc-aix) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-darwin) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),arm-android) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),avr-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),armeb-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),armeb-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mips-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-linux) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),mipsel-android) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),jvm-java) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),jvm-android) +override TARGET_RSTS+=oracleconnection +endif +ifeq ($(FULL_TARGET),i8086-msdos) +override TARGET_RSTS+=oracleconnection +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),i386-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-win32) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-os2) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-beos) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-haiku) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-solaris) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-qnx) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-netware) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-darwin) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-emx) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-watcom) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-wince) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-symbian) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-nativent) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-android) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-atari) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-wii) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc-aix) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),sparc-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-palmos) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-darwin) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-wince) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-gba) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-symbian) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),arm-android) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),avr-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),armeb-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),armeb-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),mips-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),mipsel-linux) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),mipsel-android) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),jvm-java) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),jvm-android) +override COMPILER_OPTIONS+=-S2 +endif +ifeq ($(FULL_TARGET),i8086-msdos) +override COMPILER_OPTIONS+=-S2 +endif +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) +endif +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) +endif +ifdef ZIPINSTALL +ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) +UNIXHier=1 +endif +else +ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) +UNIXHier=1 +endif +endif +ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX +ifdef UNIXHier +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR +ifndef COMPILER_UNITTARGETDIR +ifdef PACKAGEDIR_MAIN +COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX) +else +COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX) +endif +endif +ifndef COMPILER_TARGETDIR +COMPILER_TARGETDIR=. +endif +ifndef INSTALL_BASEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif +ifndef INSTALL_BINDIR +ifdef UNIXHier +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +ifdef INSTALL_FPCPACKAGE +ifdef CROSSCOMPILE +ifdef CROSSINSTALL +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX) +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +endif +endif +endif +ifndef INSTALL_UNITDIR +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX) +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif +ifndef INSTALL_LIBDIR +ifdef UNIXHier +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif +ifndef INSTALL_SOURCEDIR +ifdef UNIXHier +ifdef BSDhier +SRCPREFIXDIR=share/src +else +ifdef linuxHier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif +endif +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source +endif +endif +endif +ifndef INSTALL_DOCDIR +ifdef UNIXHier +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +ifdef linuxHier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif +endif +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +endif +endif +else +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +endif +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif +ifndef INSTALL_SHAREDDIR +INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib +endif +ifdef CROSSCOMPILE +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +SHAREDLIBPREFIX=libfp +STATICLIBPREFIX=libp +IMPORTLIBPREFIX=libimp +RSTEXT=.rst +EXEDBGEXT=.dbg +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +IMPORTLIBPREFIX= +endif +ifneq ($(CPU_TARGET),jvm) +ifeq ($(OS_TARGET),android) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif +ifeq ($(OS_TARGET),morphos) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=mos +endif +ifeq ($(OS_TARGET),atari) +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),haiku) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=hai +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nw +IMPORTLIBPREFIX=imp +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +IMPORTLIBPREFIX=imp +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +IMPORTLIBPREFIX=imp +endif +ifneq ($(findstring $(OS_TARGET),darwin iphonesim),) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +EXEDBGEXT=.dSYM +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +ifeq ($(OS_TARGET),NativeNT) +SHAREDLIBEXT=.dll +SHORTSUFFIX=nativent +endif +ifeq ($(OS_TARGET),wii) +EXEEXT=.dol +SHAREDLIBEXT=.so +SHORTSUFFIX=wii +endif +ifeq ($(OS_TARGET),aix) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=aix +endif +ifeq ($(OS_TARGET),java) +OEXT=.class +ASMEXT=.j +SHAREDLIBEXT=.jar +SHORTSUFFIX=java +endif +ifeq ($(CPU_TARGET),jvm) +ifeq ($(OS_TARGET),android) +OEXT=.class +ASMEXT=.j +SHAREDLIBEXT=.jar +SHORTSUFFIX=android +endif +endif +ifeq ($(OS_TARGET),msdos) +STATICLIBPREFIX= +STATICLIBEXT=.a +SHORTSUFFIX=d16 +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FPCMADE=fpcmade.$(SHORTSUFFIX) +ZIPSUFFIX=$(SHORTSUFFIX) +ZIPCROSSPREFIX= +ZIPSOURCESUFFIX=src +ZIPEXAMPLESUFFIX=exm +else +FPCMADE=fpcmade.$(TARGETSUFFIX) +ZIPSOURCESUFFIX=.source +ZIPEXAMPLESUFFIX=.examples +ifdef CROSSCOMPILE +ZIPSUFFIX=.$(SOURCESUFFIX) +ZIPCROSSPREFIX=$(TARGETSUFFIX)- +else +ZIPSUFFIX=.$(TARGETSUFFIX) +ZIPCROSSPREFIX= +endif +endif +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO= __missing_command_ECHO +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE= __missing_command_DATE +else +DATE:=$(firstword $(DATE)) +endif +else +DATE:=$(firstword $(DATE)) +endif +endif +export DATE +ifndef GINSTALL +GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL= __missing_command_GINSTALL +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +endif +export GINSTALL +ifndef CPPROG +CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(CPPROG),) +CPPROG= __missing_command_CPPROG +else +CPPROG:=$(firstword $(CPPROG)) +endif +endif +export CPPROG +ifndef RMPROG +RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(RMPROG),) +RMPROG= __missing_command_RMPROG +else +RMPROG:=$(firstword $(RMPROG)) +endif +endif +export RMPROG +ifndef MVPROG +MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MVPROG),) +MVPROG= __missing_command_MVPROG +else +MVPROG:=$(firstword $(MVPROG)) +endif +endif +export MVPROG +ifndef MKDIRPROG +MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG= __missing_command_MKDIRPROG +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +endif +export MKDIRPROG +ifndef ECHOREDIR +ifndef inUnix +ECHOREDIR=echo +else +ECHOREDIR=$(ECHO) +endif +endif +ifndef COPY +COPY:=$(CPPROG) -fp +endif +ifndef COPYTREE +COPYTREE:=$(CPPROG) -Rfp +endif +ifndef MKDIRTREE +MKDIRTREE:=$(MKDIRPROG) -p +endif +ifndef MOVE +MOVE:=$(MVPROG) -f +endif +ifndef DEL +DEL:=$(RMPROG) -f +endif +ifndef DELTREE +DELTREE:=$(RMPROG) -rf +endif +ifndef INSTALL +ifdef inUnix +INSTALL:=$(GINSTALL) -c -m 644 +else +INSTALL:=$(COPY) +endif +endif +ifndef INSTALLEXE +ifdef inUnix +INSTALLEXE:=$(GINSTALL) -c -m 755 +else +INSTALLEXE:=$(COPY) +endif +endif +ifndef MKDIR +MKDIR:=$(GINSTALL) -m 755 -d +endif +export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR +ifndef PPUMOVE +PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(PPUMOVE),) +PPUMOVE= __missing_command_PPUMOVE +else +PPUMOVE:=$(firstword $(PPUMOVE)) +endif +endif +export PPUMOVE +ifndef FPCMAKE +FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(FPCMAKE),) +FPCMAKE= __missing_command_FPCMAKE +else +FPCMAKE:=$(firstword $(FPCMAKE)) +endif +endif +export FPCMAKE +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= __missing_command_ZIPPROG +else +ZIPPROG:=$(firstword $(ZIPPROG)) +endif +endif +export ZIPPROG +ifndef TARPROG +TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG= __missing_command_TARPROG +else +TARPROG:=$(firstword $(TARPROG)) +endif +else +TARPROG:=$(firstword $(TARPROG)) +endif +endif +export TARPROG +ASNAME=$(BINUTILSPREFIX)as +LDNAME=$(BINUTILSPREFIX)ld +ARNAME=$(BINUTILSPREFIX)ar +RCNAME=$(BINUTILSPREFIX)rc +NASMNAME=$(BINUTILSPREFIX)nasm +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) +else +ASPROG=$(ASNAME) +endif +endif +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) +else +LDPROG=$(LDNAME) +endif +endif +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) +else +RCPROG=$(RCNAME) +endif +endif +ifndef ARPROG +ifdef CROSSBINDIR +ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) +else +ARPROG=$(ARNAME) +endif +endif +ifndef NASMPROG +ifdef CROSSBINDIR +NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT) +else +NASMPROG=$(NASMNAME) +endif +endif +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +NASM=$(NASMPROG) +ifdef inUnix +PPAS=./ppas$(SRCBATCHEXT) +else +PPAS=ppas$(SRCBATCHEXT) +endif +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ZIPOPT=-9 +ZIPEXT=.zip +ifeq ($(USETAR),bz2) +TAROPT=vj +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz +endif +override REQUIRE_PACKAGES=rtl fcl-xml oracle +ifeq ($(FULL_TARGET),i386-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-haiku) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-nativent) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-wii) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),arm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),avr-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),armeb-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),armeb-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),mips-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),mipsel-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),mipsel-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),jvm-java) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),jvm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifeq ($(FULL_TARGET),i8086-msdos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_ORACLE=1 +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +ifdef UNITDIR_FPMAKE_RTL +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_PASZLIB +PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASZLIB),) +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),) +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX) +else +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif +else +PACKAGEDIR_PASZLIB= +UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASZLIB),) +UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB)) +else +UNITDIR_PASZLIB= +endif +endif +ifdef UNITDIR_PASZLIB +override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB) +endif +ifdef UNITDIR_FPMAKE_PASZLIB +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-PROCESS +PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-PROCESS),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-PROCESS= +UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-PROCESS),) +UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS)) +else +UNITDIR_FCL-PROCESS= +endif +endif +ifdef UNITDIR_FCL-PROCESS +override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS) +endif +ifdef UNITDIR_FPMAKE_FCL-PROCESS +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS) +endif +endif +ifdef REQUIRE_PACKAGES_HASH +PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_HASH),) +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),) +UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX) +else +UNITDIR_HASH=$(PACKAGEDIR_HASH) +endif +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_HASH)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE) +endif +else +PACKAGEDIR_HASH= +UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_HASH),) +UNITDIR_HASH:=$(firstword $(UNITDIR_HASH)) +else +UNITDIR_HASH= +endif +endif +ifdef UNITDIR_HASH +override COMPILER_UNITDIR+=$(UNITDIR_HASH) +endif +ifdef UNITDIR_FPMAKE_HASH +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH) +endif +endif +ifdef REQUIRE_PACKAGES_LIBTAR +PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBTAR),) +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBTAR)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBTAR= +UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBTAR),) +UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR)) +else +UNITDIR_LIBTAR= +endif +endif +ifdef UNITDIR_LIBTAR +override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR) +endif +ifdef UNITDIR_FPMAKE_LIBTAR +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR) +endif +endif +ifdef REQUIRE_PACKAGES_FPMKUNIT +PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FPMKUNIT),) +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),) +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX) +else +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE) +endif +else +PACKAGEDIR_FPMKUNIT= +UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FPMKUNIT),) +UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT)) +else +UNITDIR_FPMKUNIT= +endif +endif +ifdef UNITDIR_FPMKUNIT +override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT) +endif +ifdef UNITDIR_FPMAKE_FPMKUNIT +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-XML +PACKAGEDIR_FCL-XML:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-XML),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-XML=$(PACKAGEDIR_FCL-XML) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-XML)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-XML) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-XML)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-XML= +UNITDIR_FCL-XML:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-XML),) +UNITDIR_FCL-XML:=$(firstword $(UNITDIR_FCL-XML)) +else +UNITDIR_FCL-XML= +endif +endif +ifdef UNITDIR_FCL-XML +override COMPILER_UNITDIR+=$(UNITDIR_FCL-XML) +endif +ifdef UNITDIR_FPMAKE_FCL-XML +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-XML) +endif +endif +ifdef REQUIRE_PACKAGES_ORACLE +PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_ORACLE),) +ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),) +UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX) +else +UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE) +endif +ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_ORACLE=$(PACKAGEDIR_ORACLE) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_ORACLE)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE) +endif +else +PACKAGEDIR_ORACLE= +UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_ORACLE),) +UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE)) +else +UNITDIR_ORACLE= +endif +endif +ifdef UNITDIR_ORACLE +override COMPILER_UNITDIR+=$(UNITDIR_ORACLE) +endif +ifdef UNITDIR_FPMAKE_ORACLE +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_ORACLE) +endif +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(ARCH) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(ARCH) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +endif +endif +ifndef CROSSCOMPILE +ifneq ($(BINUTILSPREFIX),) +override FPCMAKEOPT+=-XP$(BINUTILSPREFIX) +endif +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif +ifdef LINKSMART +override FPCOPT+=-XX +endif +ifdef CREATESMART +override FPCOPT+=-CX +endif +ifdef DEBUG +override FPCOPT+=-gl +override FPCOPTDEF+=DEBUG +endif +ifdef RELEASE +ifneq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +endif +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1r +endif +else +FPCCPUOPT:=-O2 +endif +override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n +override FPCOPTDEF+=RELEASE +endif +ifdef STRIP +override FPCOPT+=-Xs +endif +ifdef OPTIMIZE +override FPCOPT+=-O2 +endif +ifdef VERBOSE +override FPCOPT+=-vwni +endif +ifdef COMPILER_OPTIONS +override FPCOPT+=$(COMPILER_OPTIONS) +endif +ifdef COMPILER_UNITDIR +override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) +endif +ifdef COMPILER_LIBRARYDIR +override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) +endif +ifdef COMPILER_OBJECTDIR +override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) +endif +ifdef COMPILER_INCLUDEDIR +override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) +endif +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif +ifdef COMPILER_TARGETDIR +override FPCOPT+=-FE$(COMPILER_TARGETDIR) +ifeq ($(COMPILER_TARGETDIR),.) +override TARGETDIRPREFIX= +else +override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ +endif +endif +ifdef COMPILER_UNITTARGETDIR +override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) +ifeq ($(COMPILER_UNITTARGETDIR),.) +override UNITTARGETDIRPREFIX= +else +override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ +endif +else +ifdef COMPILER_TARGETDIR +override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) +override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) +endif +endif +ifdef CREATESHARED +override FPCOPT+=-Cg +endif +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +endif +ifdef LINKSHARED +endif +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef FPCOPTDEF +override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) +endif +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif +ifdef USEENV +override FPCEXTCMD:=$(FPCOPT) +override FPCOPT:=!FPCEXTCMD +export FPCEXTCMD +endif +override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(AFULL_TARGET),$(AFULL_SOURCE)) +override ACROSSCOMPILE=1 +endif +ifdef ACROSSCOMPILE +override FPCOPT+=$(CROSSOPT) +endif +override COMPILER:=$(strip $(FPC) $(FPCOPT)) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) +EXECPPAS= +else +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +.PHONY: fpc_units +ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) +override ALLTARGET+=fpc_units +override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS)) +override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS)) +override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +endif +fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES) +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res +$(COMPILER_UNITTARGETDIR): + $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) +$(COMPILER_TARGETDIR): + $(MKDIRTREE) $(COMPILER_TARGETDIR) +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.lpr + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.dpr + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.inc $(COMPILER_INCLUDEDIR) +vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_shared +override INSTALLTARGET+=fpc_shared_install +ifndef SHARED_LIBVERSION +SHARED_LIBVERSION=$(FPC_VERSION) +endif +ifndef SHARED_LIBNAME +SHARED_LIBNAME=$(PACKAGE_NAME) +endif +ifndef SHARED_FULLNAME +SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT) +endif +ifndef SHARED_LIBUNITS +SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS) +override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS)) +endif +fpc_shared: +ifdef HASSHAREDLIB + $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1 +ifneq ($(SHARED_BUILD),n) + $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) +endif +else + @$(ECHO) Shared Libraries not supported +endif +fpc_shared_install: +ifneq ($(SHARED_BUILD),n) +ifneq ($(SHARED_LIBUNITS),) +ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),) + $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR) +endif +endif +endif +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +ifneq ($(UNITTARGETDIRPREFIX),) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES))) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES)))) +endif +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +ifneq ($(TARGETDIRPREFIX),) +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES))) +endif +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES)) +endif +ifdef CLEAN_PROGRAMS +override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS))) +override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS))) +endif +ifdef CLEAN_UNITS +override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) +endif +ifdef CLEANPPUFILES +override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) +ifdef DEBUGSYMEXT +override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) +endif +override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) +override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +endif +fpc_clean: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef CLEANEXEDBGFILES + -$(DELTREE) $(CLEANEXEDBGFILES) +endif +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif +ifdef LIB_NAME + -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) +endif + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) +fpc_cleanall: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef COMPILER_UNITTARGETDIR +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif + -$(DELTREE) units + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(BATCHEXT) +ifdef AOUTEXT + -$(DEL) *$(AOUTEXT) +endif +ifdef DEBUGSYMEXT + -$(DEL) *$(DEBUGSYMEXT) +endif +fpc_distclean: cleanall +.PHONY: fpc_baseinfo +override INFORULES+=fpc_baseinfo +fpc_baseinfo: + @$(ECHO) + @$(ECHO) == Package info == + @$(ECHO) Package Name..... $(PACKAGE_NAME) + @$(ECHO) Package Version.. $(PACKAGE_VERSION) + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC.......... $(FPC) + @$(ECHO) FPC Version.. $(FPC_VERSION) + @$(ECHO) Source CPU... $(CPU_SOURCE) + @$(ECHO) Target CPU... $(CPU_TARGET) + @$(ECHO) Source OS.... $(OS_SOURCE) + @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) + @$(ECHO) SourceSuffix. $(SOURCESUFFIX) + @$(ECHO) TargetSuffix. $(TARGETSUFFIX) + @$(ECHO) FPC fpmake... $(FPCFPMAKE) + @$(ECHO) + @$(ECHO) == Directory info == + @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) + @$(ECHO) Basedir......... $(BASEDIR) + @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) + @$(ECHO) UnitsDir........ $(UNITSDIR) + @$(ECHO) PackagesDir..... $(PACKAGESDIR) + @$(ECHO) + @$(ECHO) GCC library..... $(GCCLIBDIR) + @$(ECHO) Other library... $(OTHERLIBDIR) + @$(ECHO) + @$(ECHO) == Tools info == + @$(ECHO) + @$(ECHO) As........ $(AS) + @$(ECHO) Ld........ $(LD) + @$(ECHO) Ar........ $(AR) + @$(ECHO) Rc........ $(RC) + @$(ECHO) + @$(ECHO) Mv........ $(MVPROG) + @$(ECHO) Cp........ $(CPPROG) + @$(ECHO) Rm........ $(RMPROG) + @$(ECHO) GInstall.. $(GINSTALL) + @$(ECHO) Echo...... $(ECHO) + @$(ECHO) Shell..... $(SHELL) + @$(ECHO) Date...... $(DATE) + @$(ECHO) FPCMake... $(FPCMAKE) + @$(ECHO) PPUMove... $(PPUMOVE) + @$(ECHO) Zip....... $(ZIPPROG) + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) Target Loaders........ $(TARGET_LOADERS) + @$(ECHO) Target Units.......... $(TARGET_UNITS) + @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) + @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) + @$(ECHO) Target Dirs........... $(TARGET_DIRS) + @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) + @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) + @$(ECHO) + @$(ECHO) Clean Units......... $(CLEAN_UNITS) + @$(ECHO) Clean Files......... $(CLEAN_FILES) + @$(ECHO) + @$(ECHO) Install Units....... $(INSTALL_UNITS) + @$(ECHO) Install Files....... $(INSTALL_FILES) + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) + @$(ECHO) DateStr.............. $(DATESTR) + @$(ECHO) ZipName.............. $(ZIPNAME) + @$(ECHO) ZipPrefix............ $(ZIPPREFIX) + @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) + @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) + @$(ECHO) FullZipName.......... $(FULLZIPNAME) + @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) + @$(ECHO) + @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) + @$(ECHO) Install binary dir... $(INSTALL_BINDIR) + @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) + @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) + @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) + @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) + @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) + @$(ECHO) Install data dir..... $(INSTALL_DATADIR) + @$(ECHO) + @$(ECHO) Dist destination dir. $(DIST_DESTDIR) + @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) + @$(ECHO) +.PHONY: fpc_info +fpc_info: $(INFORULES) +.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ + fpc_makefile_dirs +fpc_makefile: + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc +fpc_makefile_sub1: +ifdef TARGET_DIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) +endif +ifdef TARGET_EXAMPLEDIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) +endif +fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) +fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 +fpc_makefiles: fpc_makefile fpc_makefile_dirs +all: fpc_all +debug: fpc_debug +smart: fpc_smart +release: fpc_release +units: fpc_units +examples: +shared: fpc_shared +install: fpc_install +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +distinstall: +zipinstall: +zipsourceinstall: +zipexampleinstall: +zipdistinstall: +clean: fpc_clean +distclean: fpc_distclean +cleanall: fpc_cleanall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/fcl-db/src/sqldb/oracle/oracleconnection.pp b/packages/fcl-db/src/sqldb/oracle/oracleconnection.pp index e6a069bb1a..5c486a36c0 100644 --- a/packages/fcl-db/src/sqldb/oracle/oracleconnection.pp +++ b/packages/fcl-db/src/sqldb/oracle/oracleconnection.pp @@ -68,8 +68,8 @@ type FOciUserSession : POCISession; FUserMem : pointer; procedure HandleError; - procedure GetParameters(cursor : TSQLCursor; AParams : TParams); - procedure SetParameters(cursor : TSQLCursor; AParams : TParams); + procedure GetParameters(cursor : TSQLCursor; ATransaction : TSQLTransaction; AParams : TParams); + procedure SetParameters(cursor : TSQLCursor; ATransaction : TSQLTransaction; AParams : TParams); protected // - Connect/disconnect procedure DoInternalConnect; override; @@ -332,22 +332,17 @@ end; procedure TOracleConnection.HandleError; -var errcode : sb4; +var + errcode : sb4; buf : array[0..1023] of char; - E : EOraDatabaseError; + begin OCIErrorGet(FOciError,1,nil,errcode,@buf[0],1024,OCI_HTYPE_ERROR); - if (Self.Name <> '') then - E := EOraDatabaseError.CreateFmt('%s : %s',[Self.Name,pchar(buf)]) - else - E := EOraDatabaseError.Create(pchar(buf)); - - E.ErrorCode := errcode; - Raise E; + raise EOraDatabaseError.CreateFmt(pchar(buf), [], Self, errcode, '') end; -procedure TOracleConnection.GetParameters(cursor: TSQLCursor; AParams: TParams); +procedure TOracleConnection.GetParameters(cursor: TSQLCursor; ATransaction : TSQLTransaction; AParams: TParams); var i : integer; odt : TODateTime; @@ -384,11 +379,10 @@ begin end; procedure TOracleConnection.DoInternalConnect; - var ConnectString : string; TempServiceContext : POCISvcCtx; - + IsConnected : boolean; begin {$IfDef LinkDynamically} InitialiseOCI; @@ -397,42 +391,78 @@ begin inherited DoInternalConnect; //todo: get rid of FUserMem, as it isn't used FUserMem := nil; + IsConnected := false; - // Create environment handle - if OCIEnvCreate(FOciEnvironment,oci_default,nil,nil,nil,nil,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrEnvCreateFailed,self); - // Create error handle - if OciHandleAlloc(FOciEnvironment,FOciError,OCI_HTYPE_ERROR,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrHandleAllocFailed,self); - // Create Server handle - if OciHandleAlloc(FOciEnvironment,FOciServer,OCI_HTYPE_SERVER,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrHandleAllocFailed,self); - // Initialize Server handle - if hostname='' then connectstring := databasename - else connectstring := '//'+hostname+'/'+databasename; - if OCIServerAttach(FOciServer,FOciError,@(ConnectString[1]),Length(ConnectString),OCI_DEFAULT) <> OCI_SUCCESS then - HandleError(); + try + // Create environment handle + if OCIEnvCreate(FOciEnvironment,OCI_DEFAULT,nil,nil,nil,nil,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrEnvCreateFailed,self); + // Create error handle + if OciHandleAlloc(FOciEnvironment,FOciError,OCI_HTYPE_ERROR,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrHandleAllocFailed,self); + // Create server handle + if OciHandleAlloc(FOciEnvironment,FOciServer,OCI_HTYPE_SERVER,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrHandleAllocFailed,self); - // Create temporary service-context handle for user authentication - if OciHandleAlloc(FOciEnvironment,TempServiceContext,OCI_HTYPE_SVCCTX,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrHandleAllocFailed,self); + // Initialize server handle + if hostname='' then + connectstring := databasename + else + connectstring := '//'+hostname+'/'+databasename; + if OCIServerAttach(FOciServer,FOciError,@(ConnectString[1]),Length(ConnectString),OCI_DEFAULT) <> OCI_SUCCESS then + HandleError(); - // Create user-session handle - if OciHandleAlloc(FOciEnvironment,FOciUserSession,OCI_HTYPE_SESSION,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrHandleAllocFailed,self); - // Set the server-handle in the service-context handle - if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciServer,0,OCI_ATTR_SERVER,FOciError) <> OCI_SUCCESS then - HandleError(); - // Set username and password in the user-session handle - if OCIAttrSet(FOciUserSession,OCI_HTYPE_SESSION,@(Self.UserName[1]),Length(Self.UserName),OCI_ATTR_USERNAME,FOciError) <> OCI_SUCCESS then - HandleError(); - if OCIAttrSet(FOciUserSession,OCI_HTYPE_SESSION,@(Self.Password[1]),Length(Self.Password),OCI_ATTR_PASSWORD,FOciError) <> OCI_SUCCESS then - HandleError(); - // Authenticate - if OCISessionBegin(TempServiceContext,FOciError,FOcIUserSession,OCI_CRED_RDBMS,OCI_DEFAULT) <> OCI_SUCCESS then - HandleError(); - // Free temporary service-context handle - OCIHandleFree(TempServiceContext,OCI_HTYPE_SVCCTX); + try + // Create temporary service-context handle for user authentication + if OciHandleAlloc(FOciEnvironment,TempServiceContext,OCI_HTYPE_SVCCTX,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrHandleAllocFailed,self); + + try + // Create user-session handle + if OciHandleAlloc(FOciEnvironment,FOciUserSession,OCI_HTYPE_SESSION,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrHandleAllocFailed,self); + try + // Set the server-handle in the service-context handle + if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciServer,0,OCI_ATTR_SERVER,FOciError) <> OCI_SUCCESS then + HandleError(); + // Set username and password in the user-session handle + if OCIAttrSet(FOciUserSession,OCI_HTYPE_SESSION,@(Self.UserName[1]),Length(Self.UserName),OCI_ATTR_USERNAME,FOciError) <> OCI_SUCCESS then + HandleError(); + if OCIAttrSet(FOciUserSession,OCI_HTYPE_SESSION,@(Self.Password[1]),Length(Self.Password),OCI_ATTR_PASSWORD,FOciError) <> OCI_SUCCESS then + HandleError(); + // Authenticate + if OCISessionBegin(TempServiceContext,FOciError,FOcIUserSession,OCI_CRED_RDBMS,OCI_DEFAULT) <> OCI_SUCCESS then + HandleError(); + IsConnected := true; + finally + if not IsConnected then + begin + OCIHandleFree(FOciUserSession,OCI_HTYPE_SESSION); + FOciUserSession := nil; + end; + end; + finally + // Free temporary service-context handle + OCIHandleFree(TempServiceContext,OCI_HTYPE_SVCCTX); + end; + finally + if not IsConnected then + OCIServerDetach(FOciServer,FOciError,OCI_DEFAULT); + end; + finally + if not IsConnected then + begin + if assigned(FOciServer) then + OCIHandleFree(FOciServer,OCI_HTYPE_SERVER); + if assigned(FOciError) then + OCIHandleFree(FOciError,OCI_HTYPE_ERROR); + if assigned(FOciEnvironment) then + OCIHandleFree(FOciEnvironment,OCI_HTYPE_ENV); + FOciEnvironment := nil; + FOciError := nil; + FOciServer := nil; + end; + end; end; procedure TOracleConnection.DoInternalDisconnect; @@ -441,36 +471,56 @@ var begin inherited DoInternalDisconnect; - // Create temporary service-context handle for user-disconnect - if OciHandleAlloc(FOciEnvironment,TempServiceContext,OCI_HTYPE_SVCCTX,0,FUserMem) <> OCI_SUCCESS then - DatabaseError(SErrHandleAllocFailed,self); - - // Set the server handle in the service-context handle - if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciServer,0,OCI_ATTR_SERVER,FOciError) <> OCI_SUCCESS then - HandleError(); - // Set the user session handle in the service-context handle - if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciUserSession,0,OCI_ATTR_SESSION,FOciError) <> OCI_SUCCESS then - HandleError(); - // Disconnect uses-session handle - if OCISessionEnd(TempServiceContext,FOciError,FOcIUserSession,OCI_DEFAULT) <> OCI_SUCCESS then - HandleError(); - // Free user-session handle - OCIHandleFree(FOciUserSession,OCI_HTYPE_SESSION); - // Free temporary service-context handle - OCIHandleFree(TempServiceContext,OCI_HTYPE_SVCCTX); - - // Disconnect server handle - if OCIServerDetach(FOciServer,FOciError,OCI_DEFAULT) <> OCI_SUCCESS then - HandleError(); + if assigned(FOciEnvironment) then + begin + if assigned(FOciError) then + begin + if assigned(FOciServer) then + begin + if assigned(FOciUserSession) then + begin + try + // Create temporary service-context handle for user-disconnect + if OciHandleAlloc(FOciEnvironment,TempServiceContext,OCI_HTYPE_SVCCTX,0,FUserMem) <> OCI_SUCCESS then + DatabaseError(SErrHandleAllocFailed,self); + + // Set the server handle in the service-context handle + if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciServer,0,OCI_ATTR_SERVER,FOciError) <> OCI_SUCCESS then + HandleError(); + // Set the user session handle in the service-context handle + if OCIAttrSet(TempServiceContext,OCI_HTYPE_SVCCTX,FOciUserSession,0,OCI_ATTR_SESSION,FOciError) <> OCI_SUCCESS then + HandleError(); + // Disconnect uses-session handle + if OCISessionEnd(TempServiceContext,FOciError,FOcIUserSession,OCI_DEFAULT) <> OCI_SUCCESS then + HandleError(); + finally + // Free user-session handle + OCIHandleFree(FOciUserSession,OCI_HTYPE_SESSION); + // Free temporary service-context handle + OCIHandleFree(TempServiceContext,OCI_HTYPE_SVCCTX); + FOciUserSession := nil; + end; + end; - // Free connection handles - OCIHandleFree(FOciServer,OCI_HTYPE_SERVER); - OCIHandleFree(FOciError,OCI_HTYPE_ERROR); - OCIHandleFree(FOciEnvironment,OCI_HTYPE_ENV); + try + // Disconnect server handle + if OCIServerDetach(FOciServer,FOciError,OCI_DEFAULT) <> OCI_SUCCESS then + HandleError(); + finally + // Free connection handles + OCIHandleFree(FOciServer,OCI_HTYPE_SERVER); + FOciServer := nil; + end; + end; + OCIHandleFree(FOciError,OCI_HTYPE_ERROR); + FOciError := nil; + end; + OCIHandleFree(FOciEnvironment,OCI_HTYPE_ENV); + FOciEnvironment := nil; + end; {$IfDef LinkDynamically} ReleaseOCI; {$EndIf} - end; function TOracleConnection.AllocateCursorHandle: TSQLCursor; @@ -568,6 +618,7 @@ begin end; if FStatementType in [stUpdate,stDelete,stInsert,stDDL] then FSelectable:=false; + if assigned(AParams) then begin setlength(ParamBuffers,AParams.Count); @@ -588,7 +639,8 @@ begin ftFMTBcd, ftBCD : begin OFieldType := SQLT_VNU; OFieldSize := 22; end; ftBlob : - begin OFieldType := SQLT_LVB; OFieldSize := 65535; end; + //begin OFieldType := SQLT_LVB; OFieldSize := 65535; end; + begin OFieldType := SQLT_BLOB; OFieldSize := sizeof(pointer); ODescType := OCI_DTYPE_LOB; end; ftMemo : begin OFieldType := SQLT_LVC; OFieldSize := 65535; end; else @@ -629,13 +681,13 @@ begin end; end; -procedure TOracleConnection.SetParameters(cursor : TSQLCursor; AParams : TParams); +procedure TOracleConnection.SetParameters(cursor : TSQLCursor; ATransaction : TSQLTransaction; AParams : TParams); -var i : integer; +var i : integer; year, month, day, hour, min, sec, msec : word; - s : string; - blobbuf : string; - bloblen : ub4; + s : string; + LobBuffer : string; + LobLength : ub4; begin with cursor as TOracleCursor do for i := 0 to High(ParamBuffers) do with AParams[i] do @@ -671,14 +723,21 @@ begin ftFmtBCD, ftBCD : begin FmtBCD2Nvu(asFmtBCD,parambuffers[i].buffer); end; - ftBlob, ftMemo : begin - blobbuf := AsBlob; // todo: use AsBytes - bloblen := length(blobbuf); - if bloblen > 65531 then bloblen := 65531; - PInteger(ParamBuffers[i].Buffer)^ := bloblen; - Move(blobbuf[1], (ParamBuffers[i].Buffer+sizeof(integer))^, bloblen); - //if OciLobWrite(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, ParamBuffers[i].buffer, @bloblen, 1, @blobbuf[1], bloblen, OCI_ONE_PIECE, nil, nil, 0, SQLCS_IMPLICIT) = OCI_ERROR then - // HandleError; + ftBlob : begin + LobBuffer := AsBlob; // todo: use AsBytes + LobLength := length(LobBuffer); + // create empty temporary LOB with zero length + if OciLobCreateTemporary(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, ParamBuffers[i].Buffer, OCI_DEFAULT, OCI_DEFAULT, OCI_TEMP_BLOB, False, OCI_DURATION_SESSION) = OCI_ERROR then + HandleError; + if (LobLength > 0) and (OciLobWrite(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, ParamBuffers[i].Buffer, @LobLength, 1, @LobBuffer[1], LobLength, OCI_ONE_PIECE, nil, nil, 0, SQLCS_IMPLICIT) = OCI_ERROR) then + HandleError; + end; + ftMemo : begin + LobBuffer := AsString; + LobLength := length(LobBuffer); + if LobLength > 65531 then LobLength := 65531; + PInteger(ParamBuffers[i].Buffer)^ := LobLength; + Move(LobBuffer[1], (ParamBuffers[i].Buffer+sizeof(integer))^, LobLength); end; else DatabaseErrorFmt(SUnsupportedParameter,[DataType],self); @@ -763,8 +822,17 @@ begin end; procedure TOracleConnection.Execute(cursor: TSQLCursor; ATransaction: TSQLTransaction; AParams: TParams); + procedure FreeParameters; + var i: integer; + begin + with cursor as TOracleCursor do + for i:=0 to high(ParamBuffers) do + if ParamBuffers[i].DescType = OCI_DTYPE_LOB then + if OciLobFreeTemporary(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, ParamBuffers[i].Buffer) = OCI_ERROR then + HandleError; + end; begin - if Assigned(AParams) and (AParams.Count > 0) then SetParameters(cursor, AParams); + if Assigned(AParams) and (AParams.Count > 0) then SetParameters(cursor, ATransaction, AParams); if cursor.FStatementType = stSelect then begin if OCIStmtExecute(TOracleTrans(ATransaction.Handle).FOciSvcCtx,(cursor as TOracleCursor).FOciStmt,FOciError,0,0,nil,nil,OCI_DEFAULT) = OCI_ERROR then @@ -774,8 +842,9 @@ begin begin if OCIStmtExecute(TOracleTrans(ATransaction.Handle).FOciSvcCtx,(cursor as TOracleCursor).FOciStmt,FOciError,1,0,nil,nil,OCI_DEFAULT) = OCI_ERROR then HandleError; - if Assigned(AParams) and (AParams.Count > 0) then GetParameters(cursor, AParams); + if Assigned(AParams) and (AParams.Count > 0) then GetParameters(cursor, ATransaction, AParams); end; + FreeParameters; end; function TOracleConnection.RowsAffected(cursor: TSQLCursor): TRowsCount; @@ -892,7 +961,12 @@ begin OFieldSize:=sizeof(double); end; end; - SQLT_LNG, + SQLT_LNG : begin + FieldType := ftString; + FieldSize := MaxSmallint; // OFieldSize is zero for LONG data type + OFieldSize:= MaxSmallint+1; + OFieldType:=SQLT_STR; + end; OCI_TYPECODE_CHAR, OCI_TYPECODE_VARCHAR, OCI_TYPECODE_VARCHAR2 : begin @@ -1044,17 +1118,20 @@ end; procedure TOracleConnection.LoadBlobIntoBuffer(FieldDef: TFieldDef; ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction: TSQLTransaction); var LobLocator: pointer; - len: ub4; + LobCharSetForm: ub1; + LobLength: ub4; begin LobLocator := (cursor as TOracleCursor).FieldBuffers[FieldDef.FieldNo-1].Buffer; //if OCILobLocatorIsInit(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, LobLocator, @is_init) = OCI_ERROR then // HandleError; - if OciLobGetLength(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, LobLocator, @len) = OCI_ERROR then + // For character LOBs, it is the number of characters, for binary LOBs and BFILEs it is the number of bytes + if OciLobGetLength(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, LobLocator, @LobLength) = OCI_ERROR then + HandleError; + if OCILobCharSetForm(FOciEnvironment, FOciError, LobLocator, @LobCharSetForm) = OCI_ERROR then HandleError; - // Len - For character LOBs, it is the number of characters, for binary LOBs and BFILEs it is the number of bytes - ReAllocMem(ABlobBuf^.BlobBuffer^.Buffer, len); - ABlobBuf^.BlobBuffer^.Size := len; - if OciLobRead(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, LobLocator, @len, 1, ABlobBuf^.BlobBuffer^.Buffer, len, nil, nil, 0, SQLCS_IMPLICIT) = OCI_ERROR then + ReAllocMem(ABlobBuf^.BlobBuffer^.Buffer, LobLength); + ABlobBuf^.BlobBuffer^.Size := LobLength; + if (LobLength > 0) and (OciLobRead(TOracleTrans(ATransaction.Handle).FOciSvcCtx, FOciError, LobLocator, @LobLength, 1, ABlobBuf^.BlobBuffer^.Buffer, LobLength, nil, nil, 0, LobCharSetForm) = OCI_ERROR) then HandleError; end; @@ -1123,7 +1200,8 @@ begin stTables : s := 'SELECT '+ '''' + DatabaseName + ''' as catalog_name, '+ 'sys_context( ''userenv'', ''current_schema'' ) as schema_name, '+ - 'TABLE_NAME '+ + 'TABLE_NAME,'+ + 'TABLE_TYPE '+ 'FROM USER_CATALOG ' + 'WHERE '+ 'TABLE_TYPE<>''SEQUENCE'' '+ @@ -1132,20 +1210,22 @@ begin stSysTables : s := 'SELECT '+ '''' + DatabaseName + ''' as catalog_name, '+ 'OWNER as schema_name, '+ - 'TABLE_NAME '+ + 'TABLE_NAME,'+ + 'TABLE_TYPE '+ 'FROM ALL_CATALOG ' + 'WHERE '+ 'TABLE_TYPE<>''SEQUENCE'' '+ 'ORDER BY TABLE_NAME'; stColumns : s := 'SELECT '+ + 'OWNER as schema_name, '+ 'COLUMN_NAME, '+ 'DATA_TYPE as column_datatype, '+ 'CHARACTER_SET_NAME, '+ 'NULLABLE as column_nullable, '+ 'DATA_LENGTH as column_length, '+ 'DATA_PRECISION as column_precision, '+ - 'DATA_SCALE as column_scale '+ - {DATA_DEFAULT is type LONG; no support for that in oracleconnection so removed this from query} + 'DATA_SCALE as column_scale, '+ + 'DATA_DEFAULT as column_default '+ 'FROM ALL_TAB_COLUMNS '+ 'WHERE Upper(TABLE_NAME) = '''+UpperCase(SchemaObjectName)+''' '+ 'ORDER BY COLUMN_NAME'; @@ -1163,6 +1243,10 @@ constructor TOracleConnection.Create(AOwner: TComponent); begin inherited Create(AOwner); FConnOptions := FConnOptions + [sqEscapeRepeat]; + FOciEnvironment := nil; + FOciError := nil; + FOciServer := nil; + FOciUserSession := nil; FUserMem := nil; end; diff --git a/packages/fcl-db/src/sqldb/postgres/Makefile b/packages/fcl-db/src/sqldb/postgres/Makefile index c83b09797d..91dfe0fe73 100644 --- a/packages/fcl-db/src/sqldb/postgres/Makefile +++ b/packages/fcl-db/src/sqldb/postgres/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=pqconnection pqeventmonitor endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=pqconnection pqeventmonitor +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=pqconnection pqeventmonitor endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=pqconnection pqeventmonitor endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=pqconnection pqeventmonitor +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=pqconnection pqeventmonitor endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=pqconnection pqeventmonitor endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=pqconnection pqeventmonitor +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=pqconnection pqeventmonitor endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=pqconnection endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=pqconnection +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=pqconnection endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=pqconnection endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=pqconnection +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=pqconnection endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=pqconnection endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=pqconnection +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=pqconnection endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1857,6 +1901,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_POSTGRES=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_POSTGRES=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2147,6 +2201,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_POSTGRES=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_POSTGRES=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2327,6 +2391,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_POSTGRES=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_POSTGRES=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2784,7 +2858,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2814,17 +2888,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/postgres/fpmake.inc b/packages/fcl-db/src/sqldb/postgres/fpmake.inc index d9c7a0a135..92f4d2e876 100644 --- a/packages/fcl-db/src/sqldb/postgres/fpmake.inc +++ b/packages/fcl-db/src/sqldb/postgres/fpmake.inc @@ -6,7 +6,7 @@ Targets.ResetDefaults; Targets.DefaultDir:='db/sqldb/postgres'; { Drivers only for the following OSes } -Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku]; +Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku,dragonfly]; T:=Targets.AddUnit('pqconnection'); T.ResourceStrings:=True; T:=Targets.AddUnit('pqeventmonitor'); diff --git a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp index 48c24e8b58..bcf43828a1 100644 --- a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp +++ b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp @@ -21,10 +21,10 @@ type TPQTrans = Class(TSQLHandle) protected - PGConn : PPGConn; - FList : TThreadList; - Procedure RegisterCursor(S : TPQCursor); - Procedure UnRegisterCursor(S : TPQCursor); + PGConn : PPGConn; + FList : TThreadList; + Procedure RegisterCursor(Cursor : TPQCursor); + Procedure UnRegisterCursor(Cursor : TPQCursor); Public Constructor Create; Destructor Destroy; override; @@ -60,6 +60,8 @@ type Destructor Destroy; override; end; + { EPQDatabaseError } + EPQDatabaseError = class(EDatabaseError) public SEVERITY:string; @@ -70,6 +72,8 @@ type STATEMENT_POSITION:string; end; + { TPQTranConnection } + TPQTranConnection = class protected FPGConn : PPGConn; @@ -116,6 +120,7 @@ type function RollBack(trans : TSQLHandle) : boolean; override; function Commit(trans : TSQLHandle) : boolean; override; procedure CommitRetaining(trans : TSQLHandle); override; + function StartImplicitTransaction(trans : TSQLHandle; AParams : string) : boolean; override; function StartdbTransaction(trans : TSQLHandle; AParams : string) : boolean; override; procedure RollBackRetaining(trans : TSQLHandle); override; procedure UpdateIndexDefs(IndexDefs : TIndexDefs;TableName : string); override; @@ -124,7 +129,7 @@ type function RowsAffected(cursor: TSQLCursor): TRowsCount; override; public constructor Create(AOwner : TComponent); override; - destructor destroy; override; + destructor Destroy; override; function GetConnectionInfo(InfoType:TConnInfoType): string; override; procedure CreateDB; override; procedure DropDB; override; @@ -188,23 +193,12 @@ const Oid_Bool = 16; oid_numeric = 1700; Oid_uuid = 2950; -{ TPQTrans } -procedure TPQTrans.RegisterCursor(S: TPQCursor); -begin - FList.Add(S); - S.tr:=Self; -end; - -procedure TPQTrans.UnRegisterCursor(S: TPQCursor); -begin - S.tr:=Nil; - FList.Remove(S); -end; +{ TPQTrans } constructor TPQTrans.Create; begin - Flist:=TThreadList.Create; + FList:=TThreadList.Create; FList.Duplicates:=dupIgnore; end; @@ -215,19 +209,39 @@ Var I : integer; begin - L:=Flist.LockList; + L:=FList.LockList; try For I:=0 to L.Count-1 do TPQCursor(L[i]).tr:=Nil; finally - Flist.UnlockList; + FList.UnlockList; end; FreeAndNil(FList); inherited Destroy; end; +procedure TPQTrans.RegisterCursor(Cursor: TPQCursor); +begin + FList.Add(Cursor); + Cursor.tr:=Self; +end; + +procedure TPQTrans.UnRegisterCursor(Cursor: TPQCursor); +begin + Cursor.tr:=Nil; + FList.Remove(Cursor); +end; + + { TPQCursor } +destructor TPQCursor.Destroy; +begin + if Assigned(tr) then + tr.UnRegisterCursor(Self); + inherited Destroy; +end; + function TPQCursor.GetFieldBinding(F: TFieldDef): PFieldBinding; Var @@ -251,25 +265,20 @@ begin end; end; -destructor TPQCursor.Destroy; -begin - if Assigned(tr) then - Tr.UnRegisterCursor(Self); - inherited Destroy; -end; +{ TPQConnection } constructor TPQConnection.Create(AOwner : TComponent); begin inherited; - FConnOptions := FConnOptions + [sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeRepeat, sqEscapeSlash]; + FConnOptions := FConnOptions + [sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeRepeat, sqEscapeSlash, sqImplicitTransaction]; FieldNameQuoteChars:=DoubleQuotes; VerboseErrors:=True; FConnectionPool:=TThreadlist.Create; end; -destructor TPQConnection.destroy; +destructor TPQConnection.Destroy; begin // We must disconnect here. If it is done in inherited, then connection pool is gone. Connected:=False; @@ -322,7 +331,8 @@ begin {$EndIf} end; -procedure TPQConnection.GetExtendedFieldInfo(cursor: TPQCursor; Bindings: TFieldBindings); +Procedure TPQConnection.GetExtendedFieldInfo(cursor: TPQCursor; + Bindings: TFieldBindings); Var tt,tc,Tn,S : String; @@ -376,7 +386,7 @@ begin P.SQLDBData:=TPQCursor(C).GetFieldBinding(F.FieldDef); end; -function TPQConnection.ErrorOnUnknownType: Boolean; +Function TPQConnection.ErrorOnUnknownType: Boolean; begin Result:=False; end; @@ -430,6 +440,7 @@ var begin result := false; tr := trans as TPQTrans; + // unprepare statements associated with given transaction L:=tr.FList.LockList; try For I:=0 to L.Count-1 do @@ -439,8 +450,9 @@ begin end; L.Clear; finally - tr.flist.UnlockList; + tr.FList.UnlockList; end; + res := PQexec(tr.PGConn, 'ROLLBACK'); CheckResultError(res,tr.PGConn,SErrRollbackFailed); PQclear(res); @@ -463,23 +475,50 @@ begin result := true; end; -function TPQConnection.StartdbTransaction(trans : TSQLHandle; AParams : string) : boolean; +procedure TPQConnection.RollBackRetaining(trans : TSQLHandle); +var + res : PPGresult; + tr : TPQTrans; +begin + tr := trans as TPQTrans; + res := PQexec(tr.PGConn, 'ROLLBACK'); + CheckResultError(res,tr.PGConn,SErrRollbackFailed); + + PQclear(res); + res := PQexec(tr.PGConn, 'BEGIN'); + CheckResultError(res,tr.PGConn,sErrTransactionFailed); + + PQclear(res); +end; + +procedure TPQConnection.CommitRetaining(trans : TSQLHandle); var res : PPGresult; tr : TPQTrans; - i : Integer; - t : TPQTranConnection; - L : TList; begin - result:=false; tr := trans as TPQTrans; + res := PQexec(tr.PGConn, 'COMMIT'); + CheckResultError(res,tr.PGConn,SErrCommitFailed); + + PQclear(res); + res := PQexec(tr.PGConn, 'BEGIN'); + CheckResultError(res,tr.PGConn,sErrTransactionFailed); + PQclear(res); +end; + +function TPQConnection.StartImplicitTransaction(trans : TSQLHandle; AParams : string) : boolean; +var + i : Integer; + T : TPQTranConnection; + L : TList; +begin //find an unused connection in the pool i:=0; - t:=Nil; + T:=Nil; L:=FConnectionPool.LockList; try - while (I<L.Count) do + while (i<L.Count) do begin T:=TPQTranConnection(L[i]); if (T.FPGConn=nil) or not T.FTranActive then @@ -495,60 +534,42 @@ begin finally FConnectionPool.UnLockList; end; + if (T=Nil) then begin T:=TPQTranConnection.Create; T.FTranActive:=True; AddConnection(T); end; - if (T.FPGConn<>nil) then - tr.PGConn:=T.FPGConn - else + + if (T.FPGConn=nil) then begin - tr.PGConn := PQconnectdb(pchar(FConnectString)); - T.FPGConn:=tr.PGConn; - CheckConnectionStatus(tr.PGConn); + T.FPGConn := PQconnectdb(pchar(FConnectString)); + CheckConnectionStatus(T.FPGConn); if CharSet <> '' then - PQsetClientEncoding(tr.PGConn, pchar(CharSet)); + PQsetClientEncoding(T.FPGConn, pchar(CharSet)); end; - res := PQexec(tr.PGConn, 'BEGIN'); - CheckResultError(res,tr.PGConn,sErrTransactionFailed); - - PQclear(res); - result := true; + TPQTrans(trans).PGConn := T.FPGConn; + Result := true; end; -procedure TPQConnection.RollBackRetaining(trans : TSQLHandle); -var - res : PPGresult; - tr : TPQTrans; -begin - tr := trans as TPQTrans; - res := PQexec(tr.PGConn, 'ROLLBACK'); - CheckResultError(res,tr.PGConn,SErrRollbackFailed); - - PQclear(res); - res := PQexec(tr.PGConn, 'BEGIN'); - CheckResultError(res,tr.PGConn,sErrTransactionFailed); - - PQclear(res); -end; +function TPQConnection.StartDBTransaction(trans: TSQLHandle; + AParams: string): boolean; -procedure TPQConnection.CommitRetaining(trans : TSQLHandle); -var +Var res : PPGresult; tr : TPQTrans; -begin - tr := trans as TPQTrans; - res := PQexec(tr.PGConn, 'COMMIT'); - CheckResultError(res,tr.PGConn,SErrCommitFailed); - - PQclear(res); - res := PQexec(tr.PGConn, 'BEGIN'); - CheckResultError(res,tr.PGConn,sErrTransactionFailed); - PQclear(res); +begin + Result:=StartImplicitTransaction(trans, AParams); + if Result then + begin + tr := trans as TPQTrans; + res := PQexec(tr.PGConn, 'BEGIN'); + CheckResultError(res,tr.PGConn,sErrTransactionFailed); + PQclear(res); + end; end; @@ -648,9 +669,21 @@ var MESSAGE_DETAIL: string; MESSAGE_HINT: string; STATEMENT_POSITION: string; + P : Pchar; + haveError : Boolean; + begin - if (PQresultStatus(res) <> PGRES_COMMAND_OK) then + HaveError:=False; + if (Res=Nil) then + begin + HaveError:=True; + P:=PQerrorMessage(conn); + If Assigned(p) then + ErrMsg:=StrPas(P); + end + else if (PQresultStatus(res) <> PGRES_COMMAND_OK) then begin + HaveError:=True; SEVERITY:=PQresultErrorField(res,ord('S')); SQLSTATE:=PQresultErrorField(res,ord('C')); MESSAGE_PRIMARY:=PQresultErrorField(res,ord('M')); @@ -667,6 +700,9 @@ begin MaybeAdd(sErr,'Hint',MESSAGE_HINT); MaybeAdd(sErr,'Character',STATEMENT_POSITION); end; + end; + if HaveError then + begin if (Self.Name='') then CompName := Self.ClassName else CompName := Self.Name; E:=EPQDatabaseError.CreateFmt('%s : %s (PostgreSQL: %s)', [CompName, ErrMsg, sErr]); E.SEVERITY:=SEVERITY; @@ -675,7 +711,6 @@ begin E.MESSAGE_DETAIL:=MESSAGE_DETAIL; E.MESSAGE_HINT:=MESSAGE_HINT; E.STATEMENT_POSITION:=STATEMENT_POSITION; - PQclear(res); res:=nil; if assigned(conn) then @@ -688,7 +723,7 @@ begin end; function TPQConnection.TranslateFldType(res: PPGresult; Tuple: integer; out - Size: integer; out ATypeOID: oid): TFieldType; + Size: integer; Out ATypeOID: oid): TFieldType; const VARHDRSZ=sizeof(longint); @@ -769,18 +804,18 @@ begin end; end; -function TPQConnection.AllocateCursorHandle: TSQLCursor; +Function TPQConnection.AllocateCursorHandle: TSQLCursor; begin result := TPQCursor.create; end; -procedure TPQConnection.DeAllocateCursorHandle(var cursor: TSQLCursor); +Procedure TPQConnection.DeAllocateCursorHandle(var cursor: TSQLCursor); begin FreeAndNil(cursor); end; -function TPQConnection.AllocateTransactionHandle: TSQLHandle; +Function TPQConnection.AllocateTransactionHandle: TSQLHandle; begin result := TPQTrans.create; @@ -918,7 +953,7 @@ begin res:=nil; if FPrepared then begin - if PQtransactionStatus(tr.PGConn) <> PQTRANS_INERROR then + if assigned(tr) and (PQtransactionStatus(tr.PGConn) <> PQTRANS_INERROR) then begin res := PQexec(tr.PGConn,pchar('deallocate '+StmtName)); CheckResultError(res,nil,SErrUnPrepareFailed); @@ -1000,7 +1035,7 @@ begin end else begin - // Registercursor sets tr + // RegisterCursor sets tr TPQTrans(aTransaction.Handle).RegisterCursor(Cursor as TPQCursor); if Assigned(AParams) and (AParams.Count > 0) then @@ -1090,7 +1125,7 @@ begin end else if ErrorOnUnknownType then - DatabaseError('unhandled field type :'+FB^.TypeName,Self); + DatabaseError('Unhandled field type :'+FB^.TypeName,Self); end; end; end; diff --git a/packages/fcl-db/src/sqldb/sqldb.pp b/packages/fcl-db/src/sqldb/sqldb.pp index c964cc8427..0c39f9d5c0 100644 --- a/packages/fcl-db/src/sqldb/sqldb.pp +++ b/packages/fcl-db/src/sqldb/sqldb.pp @@ -24,9 +24,7 @@ uses SysUtils, Classes, DB, bufdataset, sqlscript; type TSchemaType = (stNoSchema, stTables, stSysTables, stProcedures, stColumns, stProcedureParams, stIndexes, stPackages, stSchemata); - TConnOption = (sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeSlash, sqEscapeRepeat); - TConnOptions= set of TConnOption; - TConnInfoType=(citAll=-1, citServerType, citServerVersion, citServerVersionString, citClientName, citClientVersion); + TStatementType = (stUnknown, stSelect, stInsert, stUpdate, stDelete, stDDL, stGetSegment, stPutSegment, stExecProcedure, stStartTrans, stCommit, stRollback, stSelectForUpd); @@ -43,7 +41,6 @@ type end; -type TSQLConnection = class; TSQLTransaction = class; TCustomSQLQuery = class; @@ -141,9 +138,18 @@ type { TSQLConnection } + TConnOption = (sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeSlash, sqEscapeRepeat, sqImplicitTransaction, sqLastInsertID); + TConnOptions= set of TConnOption; + + TSQLConnectionOption = (scoExplicitConnect, scoApplyUpdatesChecksRowsAffected); + TSQLConnectionOptions = Set of TSQLConnectionOption; + + TConnInfoType=(citAll=-1, citServerType, citServerVersion, citServerVersionString, citClientName, citClientVersion); + TSQLConnection = class (TDatabase) private FFieldNameQuoteChars : TQuoteChars; + FOptions : TSQLConnectionOptions; FPassword : string; FTransaction : TSQLTransaction; FUserName : string; @@ -153,24 +159,28 @@ type FStatements : TFPList; FLogEvents: TDBEventTypes; FOnLog: TDBLogNotifyEvent; + FInternalTransaction : TSQLTransaction; function GetPort: cardinal; + procedure SetOptions(AValue: TSQLConnectionOptions); procedure SetPort(const AValue: cardinal); protected FConnOptions : TConnOptions; FSQLFormatSettings : TFormatSettings; + // Updating of DB records is moved out of TSQLQuery. // It is done here, so descendents can override it and implement DB-specific. // One day, this may be factored out to a TSQLResolver class. // The following allow construction of update queries. They can be adapted as needed by descendents to fit the DB engine. procedure AddFieldToUpdateWherePart(var sql_where: string; UpdateMode : TUpdateMode; F: TField); virtual; - function ConstructDeleteSQL(Query: TCustomSQLQuery): string; virtual; function ConstructInsertSQL(Query: TCustomSQLQuery): string; virtual; function ConstructUpdateSQL(Query: TCustomSQLQuery): string; virtual; + function ConstructDeleteSQL(Query: TCustomSQLQuery): string; virtual; + function ConstructRefreshSQL(Query: TCustomSQLQuery; UpdateKind : TUpdateKind): string; virtual; function InitialiseUpdateStatement(Query: TCustomSQLQuery; var qry: TCustomSQLStatement): TCustomSQLStatement; procedure ApplyFieldUpdate(C : TSQLCursor; P: TSQLDBParam; F: TField; UseOldValue: Boolean); virtual; // This is the call that updates a record, it used to be in TSQLQuery. procedure ApplyRecUpdate(Query : TCustomSQLQuery; UpdateKind : TUpdateKind); virtual; - // + function RefreshLastInsertID(Query : TCustomSQLQuery; Field : TField): Boolean; virtual; procedure GetDBInfo(const ASchemaType : TSchemaType; const ASchemaObjectName, AReturnField : string; AList: TStrings); procedure SetTransaction(Value : TSQLTransaction); virtual; procedure DoInternalConnect; override; @@ -182,7 +192,6 @@ type Procedure Log(EventType : TDBEventType; Const Msg : String); virtual; Procedure RegisterStatement(S : TCustomSQLStatement); Procedure UnRegisterStatement(S : TCustomSQLStatement); - Function AllocateCursorHandle : TSQLCursor; virtual; abstract; Procedure DeAllocateCursorHandle(var cursor : TSQLCursor); virtual; abstract; function StrToStatementType(s : string) : TStatementType; virtual; @@ -200,6 +209,7 @@ type function GetTransactionHandle(trans : TSQLHandle): pointer; virtual; abstract; function Commit(trans : TSQLHandle) : boolean; virtual; abstract; function RollBack(trans : TSQLHandle) : boolean; virtual; abstract; + function StartImplicitTransaction(trans : TSQLHandle; aParams : string) : boolean; virtual; function StartdbTransaction(trans : TSQLHandle; aParams : string) : boolean; virtual; abstract; procedure CommitRetaining(trans : TSQLHandle); virtual; abstract; procedure RollBackRetaining(trans : TSQLHandle); virtual; abstract; @@ -207,6 +217,8 @@ type procedure UpdateIndexDefs(IndexDefs : TIndexDefs; TableName : string); virtual; function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; virtual; + Procedure MaybeConnect; + Property Statements : TFPList Read FStatements; property Port: cardinal read GetPort write SetPort; public @@ -235,8 +247,9 @@ type property HostName : string Read FHostName Write FHostName; Property OnLog : TDBLogNotifyEvent Read FOnLog Write FOnLog; Property LogEvents : TDBEventTypes Read FLogEvents Write FLogEvents Default LogAllEvents; - property Connected; + Property Options : TSQLConnectionOptions Read FOptions Write SetOptions; Property Role : String read FRole write FRole; + property Connected; property DatabaseName; property KeepConnection; property LoginPrompt; @@ -249,15 +262,22 @@ type TCommitRollbackAction = (caNone, caCommit, caCommitRetaining, caRollback, caRollbackRetaining); + TSQLTransactionOption = (stoUseImplicit, stoExplicitStart); + TSQLTransactionOptions = Set of TSQLTransactionOption; + TSQLTransaction = class (TDBTransaction) private + FOptions : TSQLTransactionOptions; FTrans : TSQLHandle; FAction : TCommitRollbackAction; FParams : TStringList; function GetSQLConnection: TSQLConnection; + procedure SetOptions(AValue: TSQLTransactionOptions); procedure SetParams(const AValue: TStringList); procedure SetSQLConnection(AValue: TSQLConnection); protected + Procedure MaybeStartTransaction; + Function AllowClose(DS: TDBDataset): Boolean; override; function GetHandle : Pointer; virtual; Procedure SetDatabase (Value : TDatabase); override; Function LogEvent(EventType : TDBEventType) : Boolean; @@ -277,8 +297,11 @@ type property Action : TCommitRollbackAction read FAction write FAction Default caRollBack; property Database; property Params : TStringList read FParams write SetParams; + Property Options : TSQLTransactionOptions Read FOptions Write SetOptions; end; + + { TCustomSQLStatement } TCustomSQLStatement = Class(TComponent) @@ -293,6 +316,7 @@ type FTransaction: TSQLTransaction; FParseSQL: Boolean; FDataLink : TDataLink; + FRowsAffected : TRowsCount; procedure SetDatabase(AValue: TSQLConnection); procedure SetParams(AValue: TParams); procedure SetSQL(AValue: TStrings); @@ -350,15 +374,20 @@ type { TCustomSQLQuery } + TSQLQueryOption = (sqoKeepOpenOnCommit, sqoAutoApplyUpdates, sqoAutoCommit); + TSQLQueryOptions = Set of TSQLQueryOption; + TCustomSQLQuery = class (TCustomBufDataset) private + FOptions : TSQLQueryOptions; FSchemaType : TSchemaType; FUpdateable : boolean; FTableName : string; FStatement : TCustomSQLStatement; - FUpdateSQL, FInsertSQL, - FDeleteSQL : TStringList; + FUpdateSQL, + FDeleteSQL, + FRefreshSQL : TStringList; FIsEOF : boolean; FLoadingFieldDefs : boolean; FUpdateMode : TUpdateMode; @@ -374,27 +403,30 @@ type FSchemaObjectName : string; FSchemaPattern : string; + FInsertQry, FUpdateQry, - FDeleteQry, - FInsertQry : TCustomSQLStatement; + FDeleteQry : TCustomSQLStatement; procedure FreeFldBuffers; function GetParamCheck: Boolean; function GetParams: TParams; function GetParseSQL: Boolean; function GetServerIndexDefs: TServerIndexDefs; - function GetSQL: TStringlist; + function GetSQL: TStringList; function GetSQLConnection: TSQLConnection; function GetSQLTransaction: TSQLTransaction; function GetStatementType : TStatementType; + Function NeedLastInsertID: TField; + procedure SetOptions(AValue: TSQLQueryOptions); procedure SetParamCheck(AValue: Boolean); procedure SetSQLConnection(AValue: TSQLConnection); procedure SetSQLTransaction(AValue: TSQLTransaction); - procedure SetUpdateSQL(const AValue: TStringlist); - procedure SetDeleteSQL(const AValue: TStringlist); - procedure SetInsertSQL(const AValue: TStringlist); + procedure SetInsertSQL(const AValue: TStringList); + procedure SetUpdateSQL(const AValue: TStringList); + procedure SetDeleteSQL(const AValue: TStringList); + procedure SetRefreshSQL(const AValue: TStringList); procedure SetParams(AValue: TParams); procedure SetParseSQL(AValue : Boolean); - procedure SetSQL(const AValue: TStringlist); + procedure SetSQL(const AValue: TStringList); procedure SetUsePrimaryKeyAsKey(AValue : Boolean); procedure SetUpdateMode(AValue : TUpdateMode); procedure OnChangeModifySQL(Sender : TObject); @@ -402,6 +434,9 @@ type procedure ApplyFilter; Function AddFilter(SQLstr : string) : string; protected + Function RefreshLastInsertID(Field: TField): Boolean; virtual; + Function NeedRefreshRecord (UpdateKind: TUpdateKind): Boolean; virtual; + Function RefreshRecord (UpdateKind: TUpdateKind) : Boolean; virtual; Function Cursor : TSQLCursor; Function LogEvent(EventType : TDBEventType) : Boolean; Procedure Log(EventType : TDBEventType; Const Msg : String); virtual; @@ -410,6 +445,7 @@ type function LoadField(FieldDef : TFieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; override; procedure LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField); override; procedure ApplyRecUpdate(UpdateKind : TUpdateKind); override; + procedure SetPacketRecords(aValue : integer); override; // abstract & virtual methods of TDataset procedure UpdateServerIndexDefs; virtual; procedure SetDatabase(Value : TDatabase); override; @@ -445,6 +481,11 @@ type Property Prepared : boolean read IsPrepared; Property SQLConnection : TSQLConnection Read GetSQLConnection Write SetSQLConnection; Property SQLTransaction: TSQLTransaction Read GetSQLTransaction Write SetSQLTransaction; + // overriden TBufDataSet methods + Procedure ApplyUpdates(MaxErrors: Integer); override; overload; + // overriden TDataSet methods + Procedure Post; override; + Procedure Delete; override; protected // redeclared TDataSet properties property Active; @@ -473,14 +514,16 @@ type property OnNewRecord; property OnPostError; property AutoCalcFields; + // protected property Database; - // protected - property SchemaType : TSchemaType read FSchemaType default stNoSchema; property Transaction; + property SchemaType : TSchemaType read FSchemaType default stNoSchema; property SQL : TStringlist read GetSQL write SetSQL; - property UpdateSQL : TStringlist read FUpdateSQL write SetUpdateSQL; - property InsertSQL : TStringlist read FInsertSQL write SetInsertSQL; - property DeleteSQL : TStringlist read FDeleteSQL write SetDeleteSQL; + property InsertSQL : TStringList read FInsertSQL write SetInsertSQL; + property UpdateSQL : TStringList read FUpdateSQL write SetUpdateSQL; + property DeleteSQL : TStringList read FDeleteSQL write SetDeleteSQL; + property RefreshSQL : TStringList read FRefreshSQL write SetRefreshSQL; + Property Options : TSQLQueryOptions Read FOptions Write SetOptions; property Params : TParams read GetParams Write SetParams; Property ParamCheck : Boolean Read GetParamCheck Write SetParamCheck default true; property ParseSQL : Boolean read GetParseSQL write SetParseSQL default true; @@ -534,10 +577,12 @@ type property Transaction; property ReadOnly; property SQL; - property UpdateSQL; property InsertSQL; + property UpdateSQL; property DeleteSQL; + property RefreshSQL; property IndexDefs; + Property Options; property Params; Property ParamCheck; property ParseSQL; @@ -683,6 +728,10 @@ implementation uses dbconst, strutils; +Const + // Flags to check which fields must be refreshed. + RefreshFlags : Array [ukModify..ukInsert] of TProviderFlag = (pfRefreshOnUpdate,pfRefreshOnInsert); + function TimeIntervalToString(Time: TDateTime): string; var @@ -724,11 +773,18 @@ begin else Msg := Format(CompNameFmt, [Comp.Name,Fmt]); - inherited CreateFmt(Msg, Args); + if Length(Args) = 0 then + inherited Create(Msg) + else + inherited CreateFmt(Msg, Args); + ErrorCode := AErrorCode; SQLState := ASQLState; end; +Type + TInternalTransaction = Class(TSQLTransaction); + { TCustomSQLStatement } procedure TCustomSQLStatement.OnChangeSQL(Sender: TObject); @@ -784,7 +840,7 @@ begin FDataLink.DataSource:=AValue; end; -procedure TCustomSQLStatement.CopyParamsFromMaster(CopyBound : Boolean); +Procedure TCustomSQLStatement.CopyParamsFromMaster(CopyBound: Boolean); begin if Assigned(DataSource) and Assigned(DataSource.Dataset) then FParams.CopyParamValuesFromDataset(DataSource.Dataset,CopyBound); @@ -817,8 +873,9 @@ begin end; end; -procedure TCustomSQLStatement.DoExecute; +Procedure TCustomSQLStatement.DoExecute; begin + FRowsAffected:=-1; If (FParams.Count>0) and Assigned(DataSource) then CopyParamsFromMaster(False); If LogEvent(detExecute) then @@ -826,27 +883,27 @@ begin Database.Execute(FCursor,Transaction, FParams); end; -function TCustomSQLStatement.GetPrepared: Boolean; +Function TCustomSQLStatement.GetPrepared: Boolean; begin Result := Assigned(FCursor) and FCursor.FPrepared; end; -function TCustomSQLStatement.CreateDataLink: TDataLink; +Function TCustomSQLStatement.CreateDataLink: TDataLink; begin Result:=TDataLink.Create; end; -function TCustomSQLStatement.CreateParams: TSQLDBParams; +Function TCustomSQLStatement.CreateParams: TSQLDBParams; begin Result:=TSQLDBParams.Create(Nil); end; -function TCustomSQLStatement.LogEvent(EventType: TDBEventType): Boolean; +Function TCustomSQLStatement.LogEvent(EventType: TDBEventType): Boolean; begin Result:=Assigned(Database) and Database.LogEvent(EventType); end; -procedure TCustomSQLStatement.Log(EventType: TDBEventType; const Msg: String); +Procedure TCustomSQLStatement.Log(EventType: TDBEventType; Const Msg: String); Var M : String; @@ -883,6 +940,7 @@ begin FParams:=CreateParams; FParamCheck:=True; FParseSQL:=True; + FRowsAffected:=-1; end; destructor TCustomSQLStatement.Destroy; @@ -897,28 +955,29 @@ begin inherited Destroy; end; -function TCustomSQLStatement.GetSchemaType: TSchemaType; +Function TCustomSQLStatement.GetSchemaType: TSchemaType; begin Result:=stNoSchema end; -function TCustomSQLStatement.GetSchemaObjectName: String; +Function TCustomSQLStatement.GetSchemaObjectName: String; begin Result:=''; end; -function TCustomSQLStatement.GetSchemaPattern: String; +Function TCustomSQLStatement.GetSchemaPattern: String; begin Result:=''; end; -function TCustomSQLStatement.IsSelectable: Boolean; +Function TCustomSQLStatement.IsSelectable: Boolean; begin Result:=False; end; + procedure TCustomSQLStatement.GetStatementInfo(var ASQL: String; out Info: TSQLStatementInfo); begin @@ -961,7 +1020,7 @@ begin Database.PrepareStatement(FCursor,Transaction,FServerSQL,FParams); end; -procedure TCustomSQLStatement.Prepare; +Procedure TCustomSQLStatement.Prepare; begin if Prepared then exit; @@ -969,10 +1028,9 @@ begin DatabaseError(SErrDatabasenAssigned); if not assigned(Transaction) then DatabaseError(SErrTransactionnSet); - if not Database.Connected then - Database.Open; + Database.MaybeConnect; if not Transaction.Active then - Transaction.StartTransaction; + Transaction.MaybeStartTransaction; try DoPrepare; except @@ -981,7 +1039,7 @@ begin end; end; -procedure TCustomSQLStatement.Execute; +Procedure TCustomSQLStatement.Execute; begin Prepare; DoExecute; @@ -1008,7 +1066,7 @@ begin Result:=Nil; end; -procedure TCustomSQLStatement.Unprepare; +Procedure TCustomSQLStatement.Unprepare; begin // Some SQLConnections does not support statement [un]preparation, but they have allocated local cursor(s) // so let them do cleanup f.e. cancel pending queries and/or free resultset @@ -1017,17 +1075,19 @@ begin DoUnprepare; end; -function TCustomSQLStatement.ParamByName(const AParamName: String): TParam; +function TCustomSQLStatement.ParamByName(Const AParamName: String): TParam; begin Result:=FParams.ParamByName(AParamName); end; function TCustomSQLStatement.RowsAffected: TRowsCount; begin - Result := -1; - if not Assigned(Database) then - Exit; - Result:=Database.RowsAffected(FCursor); + if FRowsAffected=-1 then + begin + if Assigned(Database) then + FRowsAffected:=Database.RowsAffected(FCursor); + end; + Result:=FRowsAffected; end; { TSQLConnection } @@ -1072,6 +1132,7 @@ begin end; end; + procedure TSQLConnection.UpdateIndexDefs(IndexDefs : TIndexDefs; TableName : string); begin // Empty abstract @@ -1126,7 +1187,8 @@ begin DatabaseError(SErrTransactionnSet); if not Connected then Open; - if not ATransaction.Active then ATransaction.StartTransaction; + if not (ATransaction.Active or (stoUseImplicit in ATransaction.Options)) then + ATransaction.MaybeStartTransaction; try SQL := TrimRight(SQL); @@ -1152,6 +1214,13 @@ begin result := StrToIntDef(Params.Values['Port'],0); end; +procedure TSQLConnection.SetOptions(AValue: TSQLConnectionOptions); +begin + if FOptions=AValue then Exit; + FOptions:=AValue; +end; + + procedure TSQLConnection.SetPort(const AValue: cardinal); begin if AValue<>0 then @@ -1440,12 +1509,12 @@ begin Result := nil; end; -function TSQLConnection.LogEvent(EventType: TDBEventType): Boolean; +Function TSQLConnection.LogEvent(EventType: TDBEventType): Boolean; begin Result:=(Assigned(FOnLog) or Assigned(GlobalDBLogHook)) and (EventType in LogEvents); end; -procedure TSQLConnection.Log(EventType: TDBEventType; const Msg: String); +Procedure TSQLConnection.Log(EventType: TDBEventType; Const Msg: String); Var M : String; @@ -1466,18 +1535,19 @@ begin end; end; -procedure TSQLConnection.RegisterStatement(S: TCustomSQLStatement); +Procedure TSQLConnection.RegisterStatement(S: TCustomSQLStatement); begin if FStatements.IndexOf(S)=-1 then FStatements.Add(S); end; -procedure TSQLConnection.UnRegisterStatement(S: TCustomSQLStatement); +Procedure TSQLConnection.UnRegisterStatement(S: TCustomSQLStatement); begin if Assigned(FStatements) then // Can be nil, when we are destroying and datasets are uncoupled. FStatements.Remove(S); end; + function TSQLConnection.InitialiseUpdateStatement(Query : TCustomSQLQuery; var qry : TCustomSQLStatement): TCustomSQLStatement; begin @@ -1491,6 +1561,7 @@ begin Result:=qry; end; + procedure TSQLConnection.AddFieldToUpdateWherePart(var sql_where : string;UpdateMode : TUpdateMode; F : TField); begin @@ -1509,28 +1580,6 @@ begin end; end; -function TSQLConnection.ConstructUpdateSQL(Query: TCustomSQLQuery): string; - -var x : integer; - F : TField; - sql_set : string; - sql_where : string; - -begin - sql_set := ''; - sql_where := ''; - for x := 0 to Query.Fields.Count -1 do - begin - F:=Query.Fields[x]; - AddFieldToUpdateWherePart(sql_where,Query.UpdateMode,F); - if (pfInUpdate in F.ProviderFlags) and (not F.ReadOnly) then - sql_set := sql_set +FieldNameQuoteChars[0] + F.FieldName + FieldNameQuoteChars[1] +'=:"' + F.FieldName + '",'; - end; - if length(sql_set) = 0 then DatabaseErrorFmt(sNoUpdateFields,['update'],self); - setlength(sql_set,length(sql_set)-1); - if length(sql_where) = 0 then DatabaseErrorFmt(sNoWhereFields,['update'],self); - result := 'update ' + Query.FTableName + ' set ' + sql_set + ' where ' + sql_where; -end; function TSQLConnection.ConstructInsertSQL(Query : TCustomSQLQuery) : string; @@ -1560,6 +1609,30 @@ begin end; +function TSQLConnection.ConstructUpdateSQL(Query: TCustomSQLQuery): string; + +var x : integer; + F : TField; + sql_set : string; + sql_where : string; + +begin + sql_set := ''; + sql_where := ''; + for x := 0 to Query.Fields.Count -1 do + begin + F:=Query.Fields[x]; + AddFieldToUpdateWherePart(sql_where,Query.UpdateMode,F); + if (pfInUpdate in F.ProviderFlags) and (not F.ReadOnly) then + sql_set := sql_set +FieldNameQuoteChars[0] + F.FieldName + FieldNameQuoteChars[1] +'=:"' + F.FieldName + '",'; + end; + if length(sql_set) = 0 then DatabaseErrorFmt(sNoUpdateFields,['update'],self); + setlength(sql_set,length(sql_set)-1); + if length(sql_where) = 0 then DatabaseErrorFmt(sNoWhereFields,['update'],self); + result := 'update ' + Query.FTableName + ' set ' + sql_set + ' where ' + sql_where; +end; + + function TSQLConnection.ConstructDeleteSQL(Query : TCustomSQLQuery) : string; var @@ -1575,6 +1648,43 @@ begin result := 'delete from ' + Query.FTableName + ' where ' + sql_where; end; +function TSQLConnection.ConstructRefreshSQL(Query: TCustomSQLQuery; UpdateKind: TUpdateKind): string; + +Var + F : TField; + PF : TProviderFlag; + Where : String; + +begin + Where:=''; + Result:=Query.RefreshSQL.Text; + if (Result='') then + begin + PF:=RefreshFlags[UpdateKind]; + For F in Query.Fields do + begin + if PF in F.ProviderFlags then + begin + if (Result<>'') then + Result:=Result+', '; + if (F.Origin<>'') and (F.Origin<>F.FieldName) then + Result:=Result+F.Origin+' AS '+F.FieldName + else + Result:=Result+FieldNameQuoteChars[0]+F.FieldName+FieldNameQuoteChars[1] + end; + if pfInkey in F.ProviderFlags then + begin + if (Where<>'') then + Where:=Where+' AND '; + Where:=Where+'('+FieldNameQuoteChars[0]+F.FieldName+FieldNameQuoteChars[0]+' = :'+F.FieldName+')'; + end; + end; + if (Where='') then + DatabaseError(SErrNoKeyFieldForRefreshClause,Query); + Result:='SELECT '+Result+' FROM '+Query.FTableName+' WHERE '+Where; + end; +end; + procedure TSQLConnection.ApplyFieldUpdate(C : TSQLCursor; P : TSQLDBParam;F : TField; UseOldValue : Boolean); begin @@ -1622,13 +1732,20 @@ begin begin P:=Qry.Params[x]; S:=p.name; - B:=Sametext(leftstr(S,4),'OLD_'); + B:=SameText(leftstr(S,4),'OLD_'); if B then Delete(S,1,4); Fld:=Query.FieldByName(S); ApplyFieldUpdate(Query.Cursor,P as TSQLDBParam,Fld,B); end; - Qry.execute; + Qry.Execute; + if (scoApplyUpdatesChecksRowsAffected in Options) and (Qry.RowsAffected<>1) then + DatabaseErrorFmt(SErrFailedToUpdateRecord, [Qry.RowsAffected], Query); +end; + +function TSQLConnection.RefreshLastInsertID(Query: TCustomSQLQuery; Field: TField): Boolean; +begin + Result:=False; end; procedure TSQLConnection.FreeFldBuffers(cursor: TSQLCursor); @@ -1636,6 +1753,11 @@ begin // empty end; +function TSQLConnection.StartImplicitTransaction(trans: TSQLHandle; aParams: string): boolean; +begin + Result:=False; +end; + function TSQLConnection.GetSchemaInfoSQL( SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; begin @@ -1646,6 +1768,16 @@ begin end; end; +Procedure TSQLConnection.MaybeConnect; +begin + If Not Connected then + begin + If (scoExplicitConnect in Options) then + DatabaseErrorFmt(SErrImplicitConnect,[Name]); + Connected:=True; + end; +end; + procedure TSQLConnection.CreateDB; begin @@ -1668,7 +1800,10 @@ begin Commit; caNone, caRollback, caRollbackRetaining : - RollBack; + if not (stoUseImplicit in Options) then + RollBack + else + CloseTrans; end; end; @@ -1682,24 +1817,50 @@ begin Result:=Database as TSQLConnection; end; +procedure TSQLTransaction.SetOptions(AValue: TSQLTransactionOptions); +begin + if FOptions=AValue then Exit; + if (stoUseImplicit in Avalue) and Assigned(SQLConnection) And Not (sqImplicitTransaction in SQLConnection.ConnOptions) then + DatabaseErrorFmt(SErrNoImplicitTransaction, [SQLConnection.ClassName]); + FOptions:=AValue; +end; + procedure TSQLTransaction.SetSQLConnection(AValue: TSQLConnection); begin Database:=AValue; end; +Procedure TSQLTransaction.MaybeStartTransaction; +begin + if not Active then + begin + if (stoExplicitStart in Options) then + DatabaseErrorFmt(SErrImplictTransactionStart, [Database.Name,Name]); + StartTransaction; + end; +end; + function TSQLTransaction.GetHandle: Pointer; begin Result := SQLConnection.GetTransactionHandle(FTrans); end; +Function TSQLTransaction.AllowClose(DS: TDBDataset): Boolean; +begin + if (DS is TSQLQuery) then + Result:=not (sqoKeepOpenOnCommit in TSQLQuery(DS).Options) + else + Result:=Inherited AllowClose(DS); +end; + procedure TSQLTransaction.Commit; begin - if Active then + if Active then begin CloseDataSets; If LogEvent(detCommit) then Log(detCommit,SCommitting); - if SQLConnection.Commit(FTrans) then + if (stoUseImplicit in Options) or SQLConnection.Commit(FTrans) then begin CloseTrans; FreeAndNil(FTrans); @@ -1721,6 +1882,8 @@ procedure TSQLTransaction.Rollback; begin if Active then begin + if (stoUseImplicit in Options) then + DatabaseError(SErrImplicitNoRollBack); CloseDataSets; If LogEvent(detRollback) then Log(detRollback,SRollingBack); @@ -1736,6 +1899,8 @@ procedure TSQLTransaction.RollbackRetaining; begin if Active then begin + if (stoUseImplicit in Options) then + DatabaseError(SErrImplicitNoRollBack); If LogEvent(detRollback) then Log(detRollback,SRollBackRetaining); SQLConnection.RollBackRetaining(FTrans); @@ -1755,11 +1920,20 @@ begin if Db = nil then DatabaseError(SErrDatabasenAssigned); - if not Db.Connected then - Db.Open; + Db.MaybeConnect; + if not assigned(FTrans) then FTrans := Db.AllocateTransactionHandle; - if Db.StartdbTransaction(FTrans,FParams.CommaText) then OpenTrans; + if (stoUseImplicit in Options) then + begin + if Db.StartImplicitTransaction(FTrans,FParams.CommaText) then + OpenTrans + end + else + begin + if Db.StartdbTransaction(FTrans,FParams.CommaText) then + OpenTrans + end; end; constructor TSQLTransaction.Create(AOwner : TComponent); @@ -1777,17 +1951,21 @@ begin inherited Destroy; end; -procedure TSQLTransaction.SetDatabase(Value: TDatabase); +Procedure TSQLTransaction.SetDatabase(Value: TDatabase); begin If Value<>Database then begin - if assigned(value) and not (Value is TSQLConnection) then + if Assigned(Value) and not (Value is TSQLConnection) then DatabaseErrorFmt(SErrNotASQLConnection,[value.Name],self); CheckInactive; + if (stoUseImplicit in Options) and Assigned(Value) and Not (sqImplicitTransaction in TSQLConnection(Value).ConnOptions) then + DatabaseErrorFmt(SErrNoImplicitTransaction,[Value.ClassName]); If Assigned(Database) then + begin with SQLConnection do if Transaction = self then Transaction := nil; + end; inherited SetDatabase(Value); If Assigned(Database) and not (csLoading in ComponentState) then If (SQLConnection.Transaction=Nil) then @@ -1795,12 +1973,12 @@ begin end; end; -function TSQLTransaction.LogEvent(EventType: TDBEventType): Boolean; +Function TSQLTransaction.LogEvent(EventType: TDBEventType): Boolean; begin Result:=Assigned(Database) and SQLConnection.LogEvent(EventType); end; -procedure TSQLTransaction.Log(EventType: TDBEventType; const Msg: String); +Procedure TSQLTransaction.Log(EventType: TDBEventType; Const Msg: String); Var M : String; @@ -1909,12 +2087,14 @@ begin F.FQuery:=Self; FStatement:=F; - FUpdateSQL := TStringList.Create; - FUpdateSQL.OnChange := @OnChangeModifySQL; FInsertSQL := TStringList.Create; FInsertSQL.OnChange := @OnChangeModifySQL; + FUpdateSQL := TStringList.Create; + FUpdateSQL.OnChange := @OnChangeModifySQL; FDeleteSQL := TStringList.Create; FDeleteSQL.OnChange := @OnChangeModifySQL; + FRefreshSQL := TStringList.Create; + FRefreshSQL.OnChange := @OnChangeModifySQL; FServerIndexDefs := TServerIndexDefs.Create(Self); @@ -1937,13 +2117,14 @@ begin UnPrepare; FreeAndNil(FStatement); FreeAndNil(FInsertSQL); - FreeAndNil(FDeleteSQL); FreeAndNil(FUpdateSQL); + FreeAndNil(FDeleteSQL); + FreeAndNil(FRefreshSQL); FServerIndexDefs.Free; inherited Destroy; end; -function TCustomSQLQuery.ParamByName(const AParamName: String): TParam; +function TCustomSQLQuery.ParamByName(Const AParamName: String): TParam; begin Result:=Params.ParamByName(AParamName); @@ -1955,7 +2136,7 @@ begin CheckInactive; end; -procedure TCustomSQLQuery.SetTransaction(Value: TDBTransaction); +Procedure TCustomSQLQuery.SetTransaction(Value: TDBTransaction); begin UnPrepare; @@ -1985,7 +2166,7 @@ begin end; end; -function TCustomSQLQuery.IsPrepared: Boolean; +Function TCustomSQLQuery.IsPrepared: Boolean; begin if Assigned(Fstatement) then @@ -1994,7 +2175,7 @@ begin Result := False; end; -function TCustomSQLQuery.AddFilter(SQLstr: string): string; +Function TCustomSQLQuery.AddFilter(SQLstr: string): string; begin if (FWhereStartPos > 0) and (FWhereStopPos > 0) then @@ -2012,6 +2193,76 @@ begin Result := SQLstr; end; +Function TCustomSQLQuery.NeedRefreshRecord(UpdateKind: TUpdateKind): Boolean; + + +Var + PF : TProviderFlag; + I : Integer; +begin + Result:=(FRefreshSQL.Count<>0); + if Not Result then + begin + PF:=RefreshFlags[UpdateKind]; + I:=0; + While (Not Result) and (I<Fields.Count) do + begin + Result:=PF in Fields[i].ProviderFlags; + Inc(I); + end; + end; +end; + +Function TCustomSQLQuery.RefreshRecord(UpdateKind: TUpdateKind) : Boolean; + +Var + Q : TCustomSQLQuery; + P : TParam; + F,FD : TField; + N : String; + +begin + Result:=False; + Q:=TCustomSQLQuery.Create(Nil); + try + Q.Database:=Self.Database; + Q.Transaction:=Self.Transaction; + Q.SQL.Text:=SQLConnection.ConstructRefreshSQL(Self,UpdateKind); + For P in Q.Params do + begin + N:=P.Name; + If CompareText(Copy(N,1,4),'OLD_')=0 then + system.Delete(N,1,4); + F:=Fields.FindField(N); + if Assigned(F) then + P.AssignField(F); + end; + Q.Open; + try + if (Q.EOF and Q.BOF) then + DatabaseError(SErrRefreshEmptyResult,Self) + else + begin + if Q.RecordCount<>1 then + DatabaseErrorFmt(SErrRefreshNotSingleton,[Q.RecordCount],Self); + For F in Q.Fields do + begin + FD:=Fields.FindField(F.FieldName); + if Assigned(FD) then + begin + FD.Assign(F); + Result:=True; // We could check if the new value differs from the old, but we won't. + end; + end; + end + finally + Q.Close; + end; + finally + Q.Free; + end; +end; + procedure TCustomSQLQuery.ApplyFilter; begin @@ -2025,7 +2276,7 @@ begin First; end; -procedure TCustomSQLQuery.SetActive(Value: Boolean); +Procedure TCustomSQLQuery.SetActive(Value: Boolean); begin inherited SetActive(Value); @@ -2056,6 +2307,7 @@ begin end; end; + procedure TCustomSQLQuery.Prepare; begin @@ -2114,7 +2366,7 @@ begin Result:=Transaction as TSQLTransaction; end; -function TCustomSQLQuery.Cursor: TSQLCursor; +Function TCustomSQLQuery.Cursor: TSQLCursor; begin Result:=FStatement.Cursor; end; @@ -2138,7 +2390,7 @@ end; function TCustomSQLQuery.RowsAffected: TRowsCount; begin - Result:=Fstatement.RowsAffected; + Result:=FStatement.RowsAffected; end; function TCustomSQLQuery.LoadField(FieldDef : TFieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; @@ -2268,6 +2520,12 @@ begin try Prepare; Execute; + If sqoAutoCommit in Options then + begin + // Retrieve rows affected + FStatement.RowsAffected; + SQLTransaction.Commit; + end; finally // Cursor has to be assigned, or else the prepare went wrong before PrepareStatment was // called, so UnPrepareStatement shoudn't be called either @@ -2276,6 +2534,31 @@ begin end; end; +Procedure TCustomSQLQuery.ApplyUpdates(MaxErrors: Integer); +begin + inherited ApplyUpdates(MaxErrors); + If sqoAutoCommit in Options then + begin + // Retrieve rows affected for last update. + FStatement.RowsAffected; + SQLTransaction.Commit; + end; +end; + +Procedure TCustomSQLQuery.Post; +begin + inherited Post; + If (sqoAutoApplyUpdates in Options) then + ApplyUpdates; +end; + +Procedure TCustomSQLQuery.Delete; +begin + inherited Delete; + If (sqoAutoApplyUpdates in Options) then + ApplyUpdates; +end; + procedure TCustomSQLQuery.SetReadOnly(AValue : Boolean); begin @@ -2297,11 +2580,6 @@ begin FStatement.SQL.Assign(AValue); end; -procedure TCustomSQLQuery.SetUpdateSQL(const AValue: TStringlist); -begin - FUpdateSQL.Assign(AValue); -end; - procedure TCustomSQLQuery.SetUsePrimaryKeyAsKey(AValue : Boolean); begin @@ -2321,12 +2599,75 @@ begin SQLConnection.UpdateIndexDefs(ServerIndexDefs,FTableName); end; +Function TCustomSQLQuery.NeedLastInsertID : TField; + +Var + I : Integer; + +begin + Result:=Nil; + if sqLastInsertID in SQLConnection.ConnOptions then + begin + I:=0; + While (Result=Nil) and (I<Fields.Count) do + begin + Result:=Fields[i]; + if (Result.DataType<>ftAutoInc) or not Result.IsNull then + Result:=Nil; + Inc(I); + end; + end +end; + +Function TCustomSQLQuery.RefreshLastInsertID(Field : TField) : Boolean; + +begin + Result:=SQLConnection.RefreshLastInsertID(Self, Field); +end; + procedure TCustomSQLQuery.ApplyRecUpdate(UpdateKind: TUpdateKind); +Var + DoRefresh, RecordRefreshed : Boolean; + LastIDField : TField; + S : TDataSetState; + begin // Moved to connection: the SQLConnection always has more information about types etc. // than SQLQuery itself. - SQLConnection.ApplyRecupdate(Self,UpdateKind); + SQLConnection.ApplyRecUpdate(Self,UpdateKind); + + if UpdateKind=ukInsert then + LastIDField:=NeedLastInsertID + else + LastIDField:=nil; + DoRefresh:=(UpdateKind in [ukModify,ukInsert]) and NeedRefreshRecord(UpdateKind); + if assigned(LastIDField) or DoRefresh then + begin + // updates fields directly in record buffer of TBufDataSet + // TDataSet buffers are resynchronized at end of ApplyUpdates process + S:=SetTempState(dsRefreshFields); + try + RecordRefreshed:=False; + if assigned(LastIDField) then + RecordRefreshed:=RefreshLastInsertID(LastIDField); + if DoRefresh then + RecordRefreshed:=RefreshRecord(UpdateKind) or RecordRefreshed; + finally + RestoreState(S); + end; + if RecordRefreshed then + // Active buffer is updated, move to record. + //ActiveBufferToRecord; + end; +end; + +procedure TCustomSQLQuery.SetPacketRecords(aValue: integer); +begin + if (AValue=PacketRecords) then exit; + if (AValue<>-1) and (sqoKeepOpenOnCommit in Options) then + DatabaseError(SErrDisconnectedPacketRecords); + Inherited SetPacketRecords(aValue); end; @@ -2364,12 +2705,12 @@ begin UnPrepareStatement(Cursor); end; -function TCustomSQLQuery.LogEvent(EventType: TDBEventType): Boolean; +Function TCustomSQLQuery.LogEvent(EventType: TDBEventType): Boolean; begin Result:=Assigned(Database) and SQLConnection.LogEvent(EventType); end; -procedure TCustomSQLQuery.Log(EventType: TDBEventType; const Msg: String); +Procedure TCustomSQLQuery.Log(EventType: TDBEventType; Const Msg: String); Var M : String; @@ -2403,6 +2744,15 @@ begin FStatement.ParamCheck:=AValue; end; +procedure TCustomSQLQuery.SetOptions(AValue: TSQLQueryOptions); +begin + if FOptions=AValue then Exit; + CheckInactive; + FOptions:=AValue; + if sqoKeepOpenOnCommit in FOptions then + PacketRecords:=-1; +end; + procedure TCustomSQLQuery.SetSQLConnection(AValue: TSQLConnection); begin Database:=AValue; @@ -2413,22 +2763,33 @@ begin Transaction:=AValue; end; -procedure TCustomSQLQuery.SetDeleteSQL(const AValue: TStringlist); +procedure TCustomSQLQuery.SetInsertSQL(const AValue: TStringList); +begin + FInsertSQL.Assign(AValue); +end; + +procedure TCustomSQLQuery.SetUpdateSQL(const AValue: TStringList); +begin + FUpdateSQL.Assign(AValue); +end; + +procedure TCustomSQLQuery.SetDeleteSQL(const AValue: TStringList); begin FDeleteSQL.Assign(AValue); end; -procedure TCustomSQLQuery.SetInsertSQL(const AValue: TStringlist); +procedure TCustomSQLQuery.SetRefreshSQL(const AValue: TStringList); begin - FInsertSQL.Assign(AValue); + FRefreshSQL.Assign(AValue); end; + procedure TCustomSQLQuery.SetParams(AValue: TParams); begin FStatement.Params.Assign(AValue); end; -procedure TCustomSQLQuery.SetDataSource(AValue: TDataSource); +Procedure TCustomSQLQuery.SetDataSource(AValue: TDataSource); Var DS : TDataSource; @@ -2445,7 +2806,7 @@ begin end; end; -function TCustomSQLQuery.GetDataSource: TDataSource; +Function TCustomSQLQuery.GetDataSource: TDataSource; begin If Assigned(FStatement) then diff --git a/packages/fcl-db/src/sqldb/sqlite/Makefile b/packages/fcl-db/src/sqldb/sqlite/Makefile index 6a321747b0..b66c6f67de 100644 --- a/packages/fcl-db/src/sqldb/sqlite/Makefile +++ b/packages/fcl-db/src/sqldb/sqlite/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=sqlite3conn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=sqlite3conn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=sqlite3conn endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=sqlite3conn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=sqlite3conn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=sqlite3conn endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=sqlite3conn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=sqlite3conn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=sqlite3conn endif @@ -613,6 +628,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -700,6 +718,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -754,6 +775,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1008,6 +1032,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1053,6 +1083,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1635,6 +1670,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_SQLITE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_SQLITE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1925,6 +1970,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_SQLITE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_SQLITE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2105,6 +2160,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_SQLITE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_SQLITE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2562,7 +2627,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2592,17 +2657,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp b/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp index 4984a8fe29..f7feb99fa5 100644 --- a/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp +++ b/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp @@ -1,6 +1,6 @@ { This file is part of the Free Pascal Classes Library (FCL). - Copyright (c) 2006 by the Free Pascal development team + Copyright (c) 2006-2014 by the Free Pascal development team SQLite3 connection for SQLDB @@ -38,9 +38,6 @@ const type PDateTime = ^TDateTime; - TSqliteOption = (sloTransactions,sloDesignTransactions); - TSqliteOptions = set of TSqliteOption; - TStringArray = Array of string; PStringArray = ^TStringArray; @@ -52,44 +49,41 @@ type TSQLite3Connection = class(TSQLConnection) private fhandle: psqlite3; - foptions: TSQLiteOptions; - procedure setoptions(const avalue: tsqliteoptions); protected - function stringsquery(const asql: string): TArrayStringArray; - procedure checkerror(const aerror: integer); - procedure DoInternalConnect; override; procedure DoInternalDisconnect; override; function GetHandle : pointer; override; Function AllocateCursorHandle : TSQLCursor; override; - //aowner used as blob cache Procedure DeAllocateCursorHandle(var cursor : TSQLCursor); override; Function AllocateTransactionHandle : TSQLHandle; override; - procedure PrepareStatement(cursor: TSQLCursor; ATransaction : TSQLTransaction; - buf: string; AParams : TParams); override; + function StrToStatementType(s : string) : TStatementType; override; + procedure PrepareStatement(cursor: TSQLCursor; ATransaction : TSQLTransaction; buf: string; AParams : TParams); override; procedure Execute(cursor: TSQLCursor;atransaction:tSQLtransaction; AParams : TParams); override; function Fetch(cursor : TSQLCursor) : boolean; override; - procedure AddFieldDefs(cursor: TSQLCursor; FieldDefs : TfieldDefs); override; + procedure AddFieldDefs(cursor: TSQLCursor; FieldDefs : TFieldDefs); override; procedure UnPrepareStatement(cursor : TSQLCursor); override; procedure FreeFldBuffers(cursor : TSQLCursor); override; - function LoadField(cursor : TSQLCursor;FieldDef : TfieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; override; - //if bufsize < 0 -> buffer was too small, should be -bufsize + function LoadField(cursor : TSQLCursor; FieldDef : TFieldDef; buffer : pointer; out CreateBlob : boolean) : boolean; override; + procedure LoadBlobIntoBuffer(FieldDef: TFieldDef; ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); override; + function GetTransactionHandle(trans : TSQLHandle): pointer; override; function Commit(trans : TSQLHandle) : boolean; override; function RollBack(trans : TSQLHandle) : boolean; override; function StartdbTransaction(trans : TSQLHandle; aParams : string) : boolean; override; procedure CommitRetaining(trans : TSQLHandle); override; procedure RollBackRetaining(trans : TSQLHandle); override; - procedure LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); override; - // New methods - procedure execsql(const asql: string); + procedure UpdateIndexDefs(IndexDefs : TIndexDefs; TableName : string); override; - function RowsAffected(cursor: TSQLCursor): TRowsCount; override; function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; override; - function StrToStatementType(s : string) : TStatementType; override; + function RowsAffected(cursor: TSQLCursor): TRowsCount; override; + function RefreshLastInsertID(Query : TCustomSQLQuery; Field : TField): Boolean; override; + // New methods + procedure checkerror(const aerror: integer); + function stringsquery(const asql: string): TArrayStringArray; + procedure execsql(const asql: string); public constructor Create(AOwner : TComponent); override; procedure GetFieldNames(const TableName : string; List : TStrings); override; @@ -97,12 +91,10 @@ type function GetInsertID: int64; // See http://www.sqlite.org/c3ref/create_collation.html for detailed information // If eTextRep=0 a default UTF-8 compare function is used (UTF8CompareCallback) - // Warning: UTF8CompareCallback needs a wide string manager on linux such as cwstring + // Warning: UTF8CompareCallback needs a wide string manager on Linux such as cwstring // Warning: CollationName has to be a UTF-8 string procedure CreateCollation(const CollationName: string; eTextRep: integer; Arg: Pointer=nil; Compare: xCompare=nil); procedure LoadExtension(LibraryFile: string); - published - property Options: TSqliteOptions read FOptions write SetOptions; end; { TSQLite3ConnectionDef } @@ -194,8 +186,9 @@ begin if P.IsNull then checkerror(sqlite3_bind_null(fstatement,I)) else - case P.datatype of + case P.DataType of ftInteger, + ftAutoInc, ftBoolean, ftSmallint: checkerror(sqlite3_bind_int(fstatement,I,P.AsInteger)); ftWord: checkerror(sqlite3_bind_int(fstatement,I,P.AsWord)); @@ -298,7 +291,14 @@ end; { TSQLite3Connection } -procedure TSQLite3Connection.LoadBlobIntoBuffer(FieldDef: TFieldDef;ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); +constructor TSQLite3Connection.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FConnOptions := [sqEscapeRepeat, sqEscapeSlash, sqImplicitTransaction, sqLastInsertID]; + FieldNameQuoteChars:=DoubleQuotes; +end; + +procedure TSQLite3Connection.LoadBlobIntoBuffer(FieldDef: TFieldDef; ABlobBuf: PBufBlobField; cursor: TSQLCursor; ATransaction : TSQLTransaction); var int1: integer; @@ -334,12 +334,12 @@ begin ABlobBuf^.BlobBuffer^.Size := int1; end; -function TSQLite3Connection.AllocateTransactionHandle: TSQLHandle; +Function TSQLite3Connection.AllocateTransactionHandle: TSQLHandle; begin result:= tsqlhandle.create; end; -function TSQLite3Connection.AllocateCursorHandle: TSQLCursor; +Function TSQLite3Connection.AllocateCursorHandle: TSQLCursor; Var Res : TSQLite3Cursor; @@ -350,11 +350,18 @@ begin Result:=Res; end; -procedure TSQLite3Connection.DeAllocateCursorHandle(var cursor: TSQLCursor); +Procedure TSQLite3Connection.DeAllocateCursorHandle(var cursor: TSQLCursor); begin freeandnil(cursor); end; +function TSQLite3Connection.StrToStatementType(s: string): TStatementType; +begin + S:=Lowercase(s); + if s = 'pragma' then exit(stSelect); + result := inherited StrToStatementType(s); +end; + procedure TSQLite3Connection.PrepareStatement(cursor: TSQLCursor; ATransaction: TSQLTransaction; buf: string; AParams: TParams); begin @@ -412,16 +419,31 @@ Const } ); -procedure TSQLite3Connection.AddFieldDefs(cursor: TSQLCursor; - FieldDefs: TfieldDefs); +procedure TSQLite3Connection.AddFieldDefs(cursor: TSQLCursor; FieldDefs: TFieldDefs); var - i : integer; - FN,FD : string; - ft1 : tfieldtype; + i, fi : integer; + FN, FD, PrimaryKeyFields : string; + ft1 : TFieldType; size1, size2 : integer; - fi : integer; st : psqlite3_stmt; + function GetPrimaryKeyFields: string; + var IndexDefs: TServerIndexDefs; + i: integer; + begin + if FieldDefs.Dataset is TSQLQuery then + begin + IndexDefs := (FieldDefs.DataSet as TSQLQuery).ServerIndexDefs; + for i:=IndexDefs.Count-1 downto 0 do + if ixPrimary in IndexDefs[i].Options then + begin + Result := IndexDefs[i].Fields; + Exit; + end; + end; + Result := ''; + end; + function ExtractPrecisionAndScale(decltype: string; var precision, scale: integer): boolean; var p: integer; begin @@ -447,6 +469,7 @@ var end; begin + PrimaryKeyFields := GetPrimaryKeyFields; st:=TSQLite3Cursor(cursor).fstatement; for i:= 0 to sqlite3_column_count(st) - 1 do begin @@ -459,6 +482,10 @@ begin ft1:=FieldMap[fi].t; break; end; + // Column declared as INTEGER PRIMARY KEY [AUTOINCREMENT] becomes ROWID for given table + // declared data type must be INTEGER (not INT, BIGINT, NUMERIC etc.) + if (FD='INTEGER') and SameText(FN, PrimaryKeyFields) then + ft1:=ftAutoInc; // In case of an empty fieldtype (FD='', which is allowed and used in calculated // columns (aggregates) and by pragma-statements) or an unknown fieldtype, // use the field's affinity: @@ -493,13 +520,14 @@ begin else if (size2-size1>MaxBCDPrecision-MaxBCDScale) or (size1>MaxBCDScale) then ft1:=ftFmtBCD; end; - ftUnknown : DatabaseError('Unknown record type: '+FN); + ftUnknown : DatabaseErrorFmt('Unknown or unsupported data type %s of column %s', [FD, FN]); end; // Case - Fielddefs.Add(FieldDefs.MakeNameUnique(FN),ft1,size1,false,i+1); + FieldDefs.Add(FieldDefs.MakeNameUnique(FN),ft1,size1,false,i+1); end; end; -procedure TSQLite3Connection.Execute(cursor: TSQLCursor; atransaction: tsqltransaction; AParams: TParams); +procedure TSQLite3Connection.Execute(cursor: TSQLCursor; + atransaction: tSQLtransaction; AParams: TParams); var SC : TSQLite3Cursor; @@ -524,18 +552,26 @@ begin Delete(S,1,P); end; +// Parses string-formatted date into TDateTime value +// Expected format: '2013-12-31 ' (without ') Function ParseSQLiteDate(S : ShortString) : TDateTime; Var Year, Month, Day : Integer; + begin - Result:=0; - If TryStrToInt(NextWord(S,'-'),Year) then - if TryStrToInt(NextWord(S,'-'),Month) then - if TryStrToInt(NextWord(S,' '),Day) then + Result:=0; + If TryStrToInt(NextWord(S,'-'),Year) then + if TryStrToInt(NextWord(S,'-'),Month) then + if TryStrToInt(NextWord(S,' '),Day) then Result:=EncodeDate(Year,Month,Day); end; +// Parses string-formatted time into TDateTime value +// Expected formats +// 23:59 +// 23:59:59 +// 23:59:59.999 Function ParseSQLiteTime(S : ShortString; Interval: boolean) : TDateTime; Var @@ -545,16 +581,28 @@ begin Result:=0; If TryStrToInt(NextWord(S,':'),Hour) then if TryStrToInt(NextWord(S,':'),Min) then + begin if TryStrToInt(NextWord(S,'.'),Sec) then - begin - MSec:=StrToIntDef(S,0); - if Interval then - Result:=EncodeTimeInterval(Hour,Min,Sec,MSec) - else - Result:=EncodeTime(Hour,Min,Sec,MSec); - end; + begin // 23:59:59 or 23:59:59.999 + MSec:=StrToIntDef(S,0); + if Interval then + Result:=EncodeTimeInterval(Hour,Min,Sec,MSec) + else + Result:=EncodeTime(Hour,Min,Sec,MSec); + end; + end + else //23:59 + begin + Sec:=0; + MSec:=0; + if Interval then + Result:=EncodeTimeInterval(Hour,Min,Sec,MSec) + else + Result:=EncodeTime(Hour,Min,Sec,MSec); + end; end; +// Parses string-formatted date/time into TDateTime value Function ParseSQLiteDateTime(S : String) : TDateTime; var @@ -564,7 +612,9 @@ var begin DS:=''; TS:=''; - P:=Pos(' ',S); + P:=Pos('T',S); //allow e.g. YYYY-MM-DDTHH:MM + if P=0 then + P:=Pos(' ',S); //allow e.g. YYYY-MM-DD HH:MM If (P<>0) then begin DS:=Copy(S,1,P-1); @@ -581,7 +631,7 @@ begin Result:=ComposeDateTime(ParseSQLiteDate(DS),ParseSQLiteTime(TS,False)); end; -function TSQLite3Connection.LoadField(cursor : TSQLCursor;FieldDef : TfieldDef;buffer : pointer; out CreateBlob : boolean) : boolean; +function TSQLite3Connection.LoadField(cursor : TSQLCursor; FieldDef : TFieldDef; buffer : pointer; out CreateBlob : boolean) : boolean; var st1: TStorageType; @@ -600,7 +650,8 @@ begin result:= st1 <> stnull; if Not result then Exit; - case FieldDef.datatype of + case FieldDef.DataType of + ftAutoInc, ftInteger : pinteger(buffer)^ := sqlite3_column_int(st,fnum); ftSmallInt : psmallint(buffer)^ := sqlite3_column_int(st,fnum); ftWord : pword(buffer)^ := sqlite3_column_int(st,fnum); @@ -612,17 +663,17 @@ begin ftDateTime, ftDate, ftTime: if st1 = sttext then - begin + begin { Stored as string } setlength(str1,sqlite3_column_bytes(st,fnum)); move(sqlite3_column_text(st,fnum)^,str1[1],length(str1)); case FieldDef.datatype of ftDateTime: PDateTime(Buffer)^:=ParseSqliteDateTime(str1); ftDate : PDateTime(Buffer)^:=ParseSqliteDate(str1); - ftTime : PDateTime(Buffer)^:=ParseSQLiteTime(str1,true); + ftTime : PDateTime(Buffer)^:=ParseSqliteTime(str1,true); end; {case} end else - begin + begin { Assume stored as double } PDateTime(buffer)^ := sqlite3_column_double(st,fnum); if PDateTime(buffer)^ > 1721059.5 {Julian 01/01/0000} then PDateTime(buffer)^ := PDateTime(buffer)^ + JulianEpoch; //backward compatibility hack @@ -833,14 +884,6 @@ begin checkerror(sqlite3_exec(fhandle,pchar(asql),@execscallback,@result,nil)); end; -function TSQLite3Connection.RowsAffected(cursor: TSQLCursor): TRowsCount; -begin - if assigned(cursor) then - Result := (cursor as TSQLite3Cursor).RowsAffected - else - Result := -1; -end; - function TSQLite3Connection.GetSchemaInfoSQL(SchemaType: TSchemaType; SchemaObjectName, SchemaPattern: string): string; @@ -854,20 +897,6 @@ begin end; {case} end; -function TSQLite3Connection.StrToStatementType(s: string): TStatementType; -begin - S:=Lowercase(s); - if s = 'pragma' then exit(stSelect); - result := inherited StrToStatementType(s); -end; - -constructor TSQLite3Connection.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FConnOptions := FConnOptions + [sqEscapeRepeat] + [sqEscapeSlash]; - FieldNameQuoteChars:=DoubleQuotes; -end; - procedure TSQLite3Connection.UpdateIndexDefs(IndexDefs: TIndexDefs; TableName: string); var artableinfo, arindexlist, arindexinfo: TArrayStringArray; @@ -926,7 +955,21 @@ begin IXFields.Free; end; -function TSQLite3Connection.getinsertid: int64; +function TSQLite3Connection.RowsAffected(cursor: TSQLCursor): TRowsCount; +begin + if assigned(cursor) then + Result := (cursor as TSQLite3Cursor).RowsAffected + else + Result := -1; +end; + +function TSQLite3Connection.RefreshLastInsertID(Query: TCustomSQLQuery; Field: TField): Boolean; +begin + Field.AsLargeInt:=GetInsertID; + Result:=True; +end; + +function TSQLite3Connection.GetInsertID: int64; begin result:= sqlite3_last_insert_rowid(fhandle); end; @@ -980,7 +1023,7 @@ begin CheckError(sqlite3_create_collation(fhandle, PChar(CollationName), eTextRep, Arg, Compare)); end; -procedure TSQLite3Connection.LoadExtension(LibraryFile: String); +procedure TSQLite3Connection.LoadExtension(LibraryFile: string); var LoadResult: integer; begin @@ -1005,14 +1048,6 @@ begin end; end; -procedure TSQLite3Connection.setoptions(const avalue: tsqliteoptions); -begin - if avalue <> foptions then - begin - checkdisconnected; - foptions:= avalue; - end; -end; { TSQLite3ConnectionDef } diff --git a/packages/fcl-db/src/sqlite/Makefile b/packages/fcl-db/src/sqlite/Makefile index f308d859bb..1e0b553990 100644 --- a/packages/fcl-db/src/sqlite/Makefile +++ b/packages/fcl-db/src/sqlite/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # 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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=customsqliteds sqliteds sqlite3ds endif @@ -786,6 +801,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -831,6 +852,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1413,6 +1439,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_SQLITE=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_SQLITE=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1703,6 +1739,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_SQLITE=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_SQLITE=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -1883,6 +1929,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_SQLITE=1 REQUIRE_PACKAGES_FCL-BASE=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_SQLITE=1 +REQUIRE_PACKAGES_FCL-BASE=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2340,7 +2396,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2370,17 +2426,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqlite/customsqliteds.pas b/packages/fcl-db/src/sqlite/customsqliteds.pas index 6ee6dc3c53..fa9155004a 100644 --- a/packages/fcl-db/src/sqlite/customsqliteds.pas +++ b/packages/fcl-db/src/sqlite/customsqliteds.pas @@ -45,15 +45,12 @@ const DefaultStringSize = 255; type - {$if defined(ver2_6_0) or defined(ver2_4)} - TRecordBuffer = PAnsiChar; - {$endif} TCustomSqliteDataset = class; PDataRecord = ^DataRecord; PPDataRecord = ^PDataRecord; DataRecord = record - Row: PPChar; + Row: PPAnsiChar; BookmarkFlag: TBookmarkFlag; Next: PDataRecord; Previous: PDataRecord; @@ -65,7 +62,7 @@ type private FEditItem: PDataRecord; FDataset: TCustomSqliteDataset; - FFieldRow: PChar; + FFieldRow: PAnsiChar; FField: TField; FFieldOffset: Integer; FRowSize: Int64; @@ -84,8 +81,8 @@ type end; //callback types - TSqliteCdeclCallback = function(UserData: Pointer; Count: LongInt; Values: PPChar; Names: PPChar): LongInt; cdecl; - TSqliteCallback = function(UserData: Pointer; Count: LongInt; Values: PPChar; Names: PPChar): LongInt of object; + TSqliteCdeclCallback = function(UserData: Pointer; Count: LongInt; Values: PPAnsiChar; Names: PPAnsiChar): LongInt; cdecl; + TSqliteCallback = function(UserData: Pointer; Count: LongInt; Values: PPAnsiChar; Names: PPAnsiChar): LongInt of object; TCallbackInfo = record Proc: TSqliteCallback; Data: Pointer; @@ -94,9 +91,9 @@ type TRecordState = (rsAdded, rsDeleted, rsUpdated); TRecordStateSet = set of TRecordState; - TQueryUpdatesCallback = procedure(UserData: Pointer; Values: PPChar; ABookmark: TBookmark; RecordState: TRecordState) of object; + TQueryUpdatesCallback = procedure(UserData: Pointer; Values: PPAnsiChar; ABookmark: TBookmark; RecordState: TRecordState) of object; - TGetSqlStrFunction = function(APChar: PChar): String; + TGetSqlStrFunction = function(APChar: PAnsiChar): String; TSqliteOption = (soWildcardKey); TSqliteOptions = set of TSqliteOption; @@ -132,7 +129,7 @@ type protected FPrimaryKey: String; FPrimaryKeyNo: Integer; - FFileName: String; + FFileName: UTF8String; FSQL: String; FEffectiveSQL: String; FTableName: String; @@ -156,7 +153,7 @@ type FSaveOnRefetch: Boolean; FAutoIncrementKey: Boolean; FDataAllocated: Boolean; - function SqliteExec(Sql: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; virtual; abstract; + function SqliteExec(Sql: PAnsiChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; virtual; abstract; procedure InternalCloseHandle; virtual; abstract; function InternalGetHandle: Pointer; virtual; abstract; function FieldDefsStored: Boolean; @@ -171,7 +168,7 @@ type function GetMasterFields: String; procedure SetMasterSource(Value: TDataSource); function GetMasterSource: TDataSource; - procedure SetFileName(const Value: String); + procedure SetFileName(const Value: UTF8String); function GetRowsAffected: Integer; virtual; abstract; procedure RetrieveFieldDefs; virtual; abstract; //TDataSet overrides @@ -231,7 +228,7 @@ type procedure ExecSQL(ASqlList: TStrings); procedure ExecSQLList; procedure ExecuteDirect(const ASql: String); virtual; abstract; - function GetSQLValue(Values: PPChar; FieldIndex: Integer): String; + function GetSQLValue(Values: PPAnsiChar; FieldIndex: Integer): String; procedure QueryUpdates(RecordStates: TRecordStateSet; Callback: TQueryUpdatesCallback; UserData: Pointer = nil); function QuickQuery(const ASql: String):String;overload; function QuickQuery(const ASql: String; const AStrList: TStrings): String; overload; @@ -258,7 +255,7 @@ type published property AutoIncrementKey: Boolean read FAutoIncrementKey write FAutoIncrementKey default False; property IndexFieldNames: string read FIndexFieldNames write FIndexFieldNames; - property FileName: String read FFileName write SetFileName; + property FileName: UTF8String read FFileName write SetFileName; property OnCallback: TSqliteCallback read FOnCallback write FOnCallback; property OnGetHandle: TDataSetNotifyEvent read FOnGetHandle write FOnGetHandle; property Options: TSqliteOptions read FOptions write SetOptions default []; @@ -299,8 +296,8 @@ type property OnPostError; end; - function Num2SQLStr(APChar: PChar): String; - function Char2SQLStr(APChar: PChar): String; + function Num2SQLStr(APChar: PAnsiChar): String; + function Char2SQLStr(APChar: PAnsiChar): String; implementation @@ -316,13 +313,13 @@ const NullString = 'NULL'; -function CallbackDispatcher(UserData: Pointer; Count: LongInt; Values: PPchar; Names: PPchar): LongInt; cdecl; +function CallbackDispatcher(UserData: Pointer; Count: LongInt; Values: PPAnsiChar; Names: PPAnsiChar): LongInt; cdecl; begin with PCallbackInfo(UserData)^ do Result:= Proc(Data, Count, Values, Names); end; -function Num2SQLStr(APChar: PChar): String; +function Num2SQLStr(APChar: PAnsiChar): String; begin if APChar = nil then begin @@ -332,14 +329,14 @@ begin Result := String(APChar); end; -function Char2SQLStr(APChar: PChar): String; +function Char2SQLStr(APChar: PAnsiChar): String; begin if APChar = nil then begin Result := NullString; Exit; end; - //todo: create custom routine to directly transform PChar -> SQL str + //todo: create custom routine to directly transform PAnsiChar -> SQL str Result := String(APChar); if Pos('''', Result) > 0 then Result := AnsiReplaceStr(Result, '''', ''''''); @@ -394,7 +391,7 @@ end; function TDSStream.Write(const Buffer; Count: LongInt): LongInt; var - NewRow: PChar; + NewRow: PAnsiChar; begin Result := Count; if Count > 0 then @@ -703,7 +700,7 @@ function TCustomSqliteDataset.GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; var ValError: Word; - FieldRow: PChar; + FieldRow: PAnsiChar; FieldOffset: Integer; begin if Field.FieldNo >= 0 then @@ -722,7 +719,7 @@ begin case Field.Datatype of ftString: begin - Move(FieldRow^, PChar(Buffer)^, StrLen(FieldRow) + 1); + Move(FieldRow^, PAnsiChar(Buffer)^, StrLen(FieldRow) + 1); end; ftInteger, ftAutoInc: begin @@ -1023,7 +1020,7 @@ begin end; type - TLocateCompareFunction = function (Value: PChar; const Key: String): Boolean; + TLocateCompareFunction = function (Value: PAnsiChar; const Key: String): Boolean; TLocateFieldInfo = record Index: Integer; @@ -1031,7 +1028,7 @@ type CompFunction: TLocateCompareFunction; end; -function CompInsensitivePartial(UTF8Value: PChar; const AnsiKey: String): Boolean; +function CompInsensitivePartial(UTF8Value: PAnsiChar; const AnsiKey: String): Boolean; var AnsiValue: AnsiString; begin @@ -1039,21 +1036,21 @@ begin if UTF8Value <> nil then begin AnsiValue := UTF8Decode(UTF8Value); - Result := AnsiStrLIComp(PChar(AnsiValue), PChar(AnsiKey), Length(AnsiKey)) = 0; + Result := AnsiStrLIComp(PAnsiChar(AnsiValue), PAnsiChar(AnsiKey), Length(AnsiKey)) = 0; end else Result := False; end; -function CompSensitivePartial(UTF8Value: PChar; const UTF8Key: String): Boolean; +function CompSensitivePartial(UTF8Value: PAnsiChar; const UTF8Key: String): Boolean; begin if UTF8Value <> nil then - Result := StrLComp(UTF8Value, PChar(UTF8Key), Length(UTF8Key)) = 0 + Result := StrLComp(UTF8Value, PAnsiChar(UTF8Key), Length(UTF8Key)) = 0 else Result := False; end; -function CompInsensitive(UTF8Value: PChar; const AnsiKey: String): Boolean; +function CompInsensitive(UTF8Value: PAnsiChar; const AnsiKey: String): Boolean; begin //fpc does not provide a function to compare UTF8 directly, so convert the //UTF8Value string to ansi through a temporary widestring and compare with the @@ -1067,15 +1064,15 @@ begin Result := False; end; -function CompSensitive(UTF8Value: PChar; const UTF8Key: String): Boolean; +function CompSensitive(UTF8Value: PAnsiChar; const UTF8Key: String): Boolean; begin if UTF8Value <> nil then - Result := StrComp(UTF8Value, PChar(UTF8Key)) = 0 + Result := StrComp(UTF8Value, PAnsiChar(UTF8Key)) = 0 else Result := False; end; -function CompSensitiveWild(UTF8Value: PChar; const UTF8Key: String): Boolean; +function CompSensitiveWild(UTF8Value: PAnsiChar; const UTF8Key: String): Boolean; begin if UTF8Value <> nil then Result := IsWild(String(UTF8Value), UTF8Key, False) @@ -1083,7 +1080,7 @@ begin Result := False; end; -function CompDouble(UTF8Value: PChar; const UTF8Key: String): Boolean; +function CompDouble(UTF8Value: PAnsiChar; const UTF8Key: String): Boolean; var e1,e2:double; begin if UTF8Value <> nil then @@ -1096,7 +1093,7 @@ begin Result := False; end; -function CompInsensitiveWild(UTF8Value: PChar; const AnsiKey: String): Boolean; +function CompInsensitiveWild(UTF8Value: PAnsiChar; const AnsiKey: String): Boolean; begin //IsWild does not work with UTF8 encoded strings for case insensitive searches, //so convert UTF8Value to the system ansi encoding before passing to IsWild. @@ -1363,13 +1360,13 @@ begin case Field.Datatype of ftString: begin - EditItem^.Row[FieldOffset] := StrNew(PChar(Buffer)); + EditItem^.Row[FieldOffset] := StrNew(PAnsiChar(Buffer)); end; ftInteger: begin Str(LongInt(Buffer^), TempStr); EditItem^.Row[FieldOffset] := StrAlloc(Length(TempStr) + 1); - Move(PChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); + Move(PAnsiChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); end; ftBoolean, ftWord: begin @@ -1379,19 +1376,19 @@ begin else Str(Word(Buffer^), TempStr); EditItem^.Row[FieldOffset] := StrAlloc(Length(TempStr) + 1); - Move(PChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); + Move(PAnsiChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); end; ftFloat, ftDateTime, ftDate, ftTime, ftCurrency: begin Str(Double(Buffer^), TempStr); EditItem^.Row[FieldOffset] := StrAlloc(Length(TempStr) + 1); - Move(PChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); + Move(PAnsiChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); end; ftLargeInt: begin Str(Int64(Buffer^), TempStr); EditItem^.Row[FieldOffset] := StrAlloc(Length(TempStr) + 1); - Move(PChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); + Move(PAnsiChar(TempStr)^, (EditItem^.Row[FieldOffset])^, Length(TempStr) + 1); end; end;// case end//if @@ -1517,7 +1514,7 @@ begin Result := FMasterLink.DataSource; end; -procedure TCustomSqliteDataset.SetFileName(const Value: String); +procedure TCustomSqliteDataset.SetFileName(const Value: UTF8String); begin if Value <> FFileName then begin @@ -1545,7 +1542,7 @@ procedure TCustomSqliteDataset.ExecSQL(ASqlList: TStrings); begin if FSqliteHandle = nil then GetSqliteHandle; - FReturnCode := SqliteExec(PChar(ASQLList.Text), nil, nil); + FReturnCode := SqliteExec(PAnsiChar(ASQLList.Text), nil, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); end; @@ -1555,7 +1552,7 @@ begin ExecSQL(SQLList); end; -function TCustomSqliteDataset.GetSQLValue(Values: PPChar; FieldIndex: Integer): String; +function TCustomSqliteDataset.GetSQLValue(Values: PPAnsiChar; FieldIndex: Integer): String; begin if (State = dsInactive) or (FieldIndex < 0) or (FieldIndex >= FieldDefs.Count) then DatabaseError('Error retrieving SQL value: dataset inactive or field out of range', Self); @@ -1615,7 +1612,7 @@ begin if StatementsCounter = 400 then begin SQLTemp := SQLTemp + 'COMMIT;'; - FReturnCode := SqliteExec(PChar(SQLTemp), nil, nil); + FReturnCode := SqliteExec(PAnsiChar(SQLTemp), nil, nil); StatementsCounter := 0; SQLTemp := 'BEGIN;'; if FReturnCode <> SQLITE_OK then @@ -1649,7 +1646,7 @@ begin if StatementsCounter = 400 then begin SQLTemp := SQLTemp + 'COMMIT;'; - FReturnCode := SqliteExec(PChar(SQLTemp), nil, nil); + FReturnCode := SqliteExec(PAnsiChar(SQLTemp), nil, nil); StatementsCounter := 0; SQLTemp := 'BEGIN;'; if FReturnCode <> SQLITE_OK then @@ -1681,7 +1678,7 @@ begin if StatementsCounter = 400 then begin SQLTemp := SQLTemp + 'COMMIT;'; - FReturnCode := SqliteExec(PChar(SQLTemp), nil, nil); + FReturnCode := SqliteExec(PAnsiChar(SQLTemp), nil, nil); StatementsCounter := 0; SQLTemp := 'BEGIN;'; if FReturnCode <> SQLITE_OK then @@ -1698,7 +1695,7 @@ begin if FReturnCode = SQLITE_OK then begin SQLTemp := SQLTemp + 'COMMIT;'; - FReturnCode := SqliteExec(PChar(SQLTemp), nil, nil); + FReturnCode := SqliteExec(PAnsiChar(SQLTemp), nil, nil); if FReturnCode <> SQLITE_OK then SqliteExec('ROLLBACK;', nil, nil); end; @@ -1802,7 +1799,7 @@ begin GetSqliteHandle; CallbackInfo.Data := UserData; CallbackInfo.Proc := FOnCallback; - SqliteExec(PChar(ASQL), @CallbackDispatcher, @CallbackInfo); + SqliteExec(PAnsiChar(ASQL), @CallbackDispatcher, @CallbackInfo); end; diff --git a/packages/fcl-db/src/sqlite/sqlite3ds.pas b/packages/fcl-db/src/sqlite/sqlite3ds.pas index b5053d15af..a1ee5be8ce 100644 --- a/packages/fcl-db/src/sqlite/sqlite3ds.pas +++ b/packages/fcl-db/src/sqlite/sqlite3ds.pas @@ -51,7 +51,7 @@ type procedure InternalCloseHandle; override; function InternalGetHandle: Pointer; override; procedure RetrieveFieldDefs; override; - function SqliteExec(ASQL: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; override; + function SqliteExec(ASQL: PAnsiChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; override; public procedure ExecuteDirect(const ASQL: String); override; function QuickQuery(const ASQL: String; const AStrList: TStrings; FillObjects: Boolean): String; override; @@ -101,7 +101,7 @@ begin end; end; -function GetAutoIncValue(NextValue: Pointer; Columns: Integer; ColumnValues: PPChar; ColumnNames: PPChar): Integer; cdecl; +function GetAutoIncValue(NextValue: Pointer; Columns: Integer; ColumnValues: PPAnsiChar; ColumnNames: PPAnsiChar): Integer; cdecl; var CodeError, TempInt: Integer; begin @@ -118,7 +118,7 @@ end; { TSqlite3Dataset } -function TSqlite3Dataset.SqliteExec(ASQL: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; +function TSqlite3Dataset.SqliteExec(ASQL: PAnsiChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; begin Result := sqlite3_exec(FSqliteHandle, ASQL, ACallback, Data, nil); end; @@ -138,7 +138,7 @@ var vm: Pointer; ErrorStr: String; begin - sqlite3_open(PChar(FFileName), @Result); + sqlite3_open(PAnsiChar(FFileName), @Result); //sqlite3_open returns SQLITE_OK even for invalid files //do additional check here FReturnCode := sqlite3_prepare(Result, CheckFileSql, -1, @vm, nil); @@ -163,7 +163,7 @@ begin {$endif} FAutoIncFieldNo := -1; FieldDefs.Clear; - FReturnCode := sqlite3_prepare(FSqliteHandle, PChar(FEffectiveSQL), -1, @vm, nil); + FReturnCode := sqlite3_prepare(FSqliteHandle, PAnsiChar(FEffectiveSQL), -1, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); sqlite3_step(vm); @@ -263,7 +263,7 @@ procedure TSqlite3Dataset.ExecuteDirect(const ASQL: String); var vm: Pointer; begin - FReturnCode := sqlite3_prepare(FSqliteHandle, Pchar(ASQL), -1, @vm, nil); + FReturnCode := sqlite3_prepare(FSqliteHandle, PAnsiChar(ASQL), -1, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); FReturnCode := sqlite3_step(vm); @@ -278,10 +278,10 @@ var begin //Get AutoInc Field initial value if FAutoIncFieldNo <> -1 then - sqlite3_exec(FSqliteHandle, PChar('Select Max(' + FieldDefs[FAutoIncFieldNo].Name + + sqlite3_exec(FSqliteHandle, PAnsiChar('Select Max(' + FieldDefs[FAutoIncFieldNo].Name + ') from ' + FTableName), @GetAutoIncValue, @FNextAutoInc, nil); - FReturnCode := sqlite3_prepare(FSqliteHandle, PChar(FEffectiveSQL), -1, @vm, nil); + FReturnCode := sqlite3_prepare(FSqliteHandle, PAnsiChar(FEffectiveSQL), -1, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); @@ -294,7 +294,7 @@ begin //add extra rows for calculated fields if FCalcFieldList <> nil then Inc(FRowCount, FCalcFieldList.Count); - FRowBufferSize := (SizeOf(PPChar) * FRowCount); + FRowBufferSize := (SizeOf(PPAnsiChar) * FRowCount); FReturnCode := sqlite3_step(vm); while FReturnCode = SQLITE_ROW do begin @@ -367,7 +367,7 @@ begin if FSqliteHandle = nil then GetSqliteHandle; Result := ''; - FReturnCode := sqlite3_prepare(FSqliteHandle,Pchar(ASQL), -1, @vm, nil); + FReturnCode := sqlite3_prepare(FSqliteHandle,PAnsiChar(ASQL), -1, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); diff --git a/packages/fcl-db/src/sqlite/sqliteds.pas b/packages/fcl-db/src/sqlite/sqliteds.pas index fb8fc5c8d0..66e7ffed4a 100644 --- a/packages/fcl-db/src/sqlite/sqliteds.pas +++ b/packages/fcl-db/src/sqlite/sqliteds.pas @@ -53,7 +53,7 @@ type function InternalGetHandle: Pointer; override; procedure InternalCloseHandle; override; procedure RetrieveFieldDefs; override; - function SqliteExec(ASQL: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; override; + function SqliteExec(ASQL: PAnsiChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; override; public procedure ExecuteDirect(const ASQL: String); override; function QuickQuery(const ASQL: String; const AStrList: TStrings; FillObjects: Boolean): String; override; @@ -69,7 +69,7 @@ uses //function sqlite_last_statement_changes(dbhandle:Pointer):longint;cdecl;external 'sqlite' name 'sqlite_last_statement_changes'; -function GetAutoIncValue(NextValue: Pointer; Columns: Integer; ColumnValues: PPChar; ColumnNames: PPChar): Integer; cdecl; +function GetAutoIncValue(NextValue: Pointer; Columns: Integer; ColumnValues: PPAnsiChar; ColumnNames: PPAnsiChar): Integer; cdecl; var CodeError, TempInt: Integer; begin @@ -86,7 +86,7 @@ end; { TSqliteDataset } -function TSqliteDataset.SqliteExec(ASQL: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; +function TSqliteDataset.SqliteExec(ASQL: PAnsiChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; begin Result := sqlite_exec(FSqliteHandle, ASQL, ACallback, Data, nil); end; @@ -99,9 +99,9 @@ end; function TSqliteDataset.InternalGetHandle: Pointer; var - ErrorStr: PChar; + ErrorStr: PAnsiChar; begin - Result := sqlite_open(PChar(FFileName), 0, @ErrorStr); + Result := sqlite_open(PAnsiChar(FFileName), 0, @ErrorStr); if Result = nil then begin DatabaseError('Error opening "' + FFileName + '": ' + String(ErrorStr)); @@ -114,12 +114,12 @@ var ColumnCount, i, DataSize:Integer; AType: TFieldType; vm: Pointer; - ColumnNames, ColumnValues:PPChar; + ColumnNames, ColumnValues:PPAnsiChar; ColumnStr: String; begin FieldDefs.Clear; FAutoIncFieldNo := -1; - FReturnCode := sqlite_compile(FSqliteHandle, PChar(FEffectiveSQL), nil, @vm, nil); + FReturnCode := sqlite_compile(FSqliteHandle, PAnsiChar(FEffectiveSQL), nil, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); sqlite_step(vm, @ColumnCount, @ColumnValues, @ColumnNames); @@ -207,10 +207,10 @@ end; procedure TSqliteDataset.ExecuteDirect(const ASQL: String); var vm: Pointer; - ColumnNames, ColumnValues: PPChar; + ColumnNames, ColumnValues: PPAnsiChar; ColCount: Integer; begin - FReturnCode := sqlite_compile(FSqliteHandle, Pchar(ASQL), nil, @vm, nil); + FReturnCode := sqlite_compile(FSqliteHandle, PAnsiChar(ASQL), nil, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString,Self); @@ -223,15 +223,15 @@ procedure TSqliteDataset.BuildLinkedList; var TempItem: PDataRecord; vm: Pointer; - ColumnNames, ColumnValues: PPChar; + ColumnNames, ColumnValues: PPAnsiChar; Counter, ColumnCount: Integer; begin //Get AutoInc Field initial value if FAutoIncFieldNo <> -1 then - sqlite_exec(FSqliteHandle, PChar('Select Max(' + FieldDefs[FAutoIncFieldNo].Name + ') from ' + FTableName), + sqlite_exec(FSqliteHandle, PAnsiChar('Select Max(' + FieldDefs[FAutoIncFieldNo].Name + ') from ' + FTableName), @GetAutoIncValue, @FNextAutoInc, nil); - FReturnCode := sqlite_compile(FSqliteHandle, PChar(FEffectiveSQL), nil, @vm, nil); + FReturnCode := sqlite_compile(FSqliteHandle, PAnsiChar(FEffectiveSQL), nil, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString, Self); @@ -244,7 +244,7 @@ begin //add extra rows for calculated fields if FCalcFieldList <> nil then Inc(FRowCount, FCalcFieldList.Count); - FRowBufferSize := (SizeOf(PPChar) * FRowCount); + FRowBufferSize := (SizeOf(PPAnsiChar) * FRowCount); while FReturnCode = SQLITE_ROW do begin @@ -339,7 +339,7 @@ end; function TSqliteDataset.QuickQuery(const ASQL: String; const AStrList: TStrings; FillObjects: Boolean): String; var vm: Pointer; - ColumnNames, ColumnValues: PPChar; + ColumnNames, ColumnValues: PPAnsiChar; ColCount: Integer; procedure FillStrings; @@ -364,7 +364,7 @@ begin if FSqliteHandle = nil then GetSqliteHandle; Result := ''; - FReturnCode := sqlite_compile(FSqliteHandle, PChar(ASQL), nil, @vm, nil); + FReturnCode := sqlite_compile(FSqliteHandle, PAnsiChar(ASQL), nil, @vm, nil); if FReturnCode <> SQLITE_OK then DatabaseError(ReturnString,Self); diff --git a/packages/fcl-db/tests/Makefile b/packages/fcl-db/tests/Makefile index 3aa558054f..26a2194eb2 100644 --- a/packages/fcl-db/tests/Makefile +++ b/packages/fcl-db/tests/Makefile @@ -1,2988 +1,3059 @@ -#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692]
-#
-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 i386-android 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd 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 arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx haiku aix
-LIMIT83fs = go32v2 os2 emx watcom msdos
-OSNeedsComspecToRunBatch = go32v2 watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef COMSPEC
-ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
-ifndef RUNBATCH
-RUNBATCH=$(COMSPEC) /C
-endif
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-ifneq ($(CPU_TARGET),)
-FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
-else
-FPC:=$(shell $(FPCPROG) -PB)
-endif
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-else
-ifeq ($(strip $(wildcard $(FPC))),)
-FPC:=$(firstword $(FPCPROG))
-endif
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifeq ($(CPU_TARGET),armeb)
-ARCH=arm
-override FPCOPT+=-Cb
-else
-ifeq ($(CPU_TARGET),armel)
-ARCH=arm
-override FPCOPT+=-CaEABI
-else
-ARCH=$(CPU_TARGET)
-endif
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-ifeq ($(SUBARCH),)
-$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
-endif
-override FPCOPT+=-Cp$(SUBARCH)
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-endif
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-ifndef CROSSCOMPILE
-BUILDFULLNATIVE=1
-export BUILDFULLNATIVE
-endif
-ifdef BUILDFULLNATIVE
-BUILDNATIVE=1
-export BUILDNATIVE
-endif
-export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
-ifeq ($(OS_SOURCE),darwin)
-DARWIN2DARWIN=1
-endif
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-ifneq ($(OS_TARGET),msdos)
-ifndef DARWIN2DARWIN
-ifneq ($(CPU_TARGET),jvm)
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-ifeq ($(OS_TARGET),android)
-ifeq ($(CPU_TARGET),arm)
-BINUTILSPREFIX=arm-linux-androideabi-
-else
-ifeq ($(CPU_TARGET),i386)
-BINUTILSPREFIX=i686-linux-android-
-else
-ifeq ($(CPU_TARGET),mipsel)
-BINUTILSPREFIX=mipsel-linux-android-
-endif
-endif
-endif
-endif
-endif
-endif
-else
-BINUTILSPREFIX=$(OS_TARGET)-
-endif
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifndef FPCFPMAKE
-ifdef CROSSCOMPILE
-ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPCFPMAKE:=$(shell $(FPCPROG) -PB)
-ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
-FPCFPMAKE:=$(firstword $(FPCPROG))
-endif
-else
-override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
-FPMAKE_SKIP_CONFIG=-n
-export FPCFPMAKE
-export FPMAKE_SKIP_CONFIG
-endif
-else
-FPMAKE_SKIP_CONFIG=-n
-FPCFPMAKE=$(FPC)
-endif
-endif
-override PACKAGE_NAME=fcl
-PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-android)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),arm-android)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i386-android)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),arm-android)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-override TARGET_EXAMPLES+=dbtestframework testsqlfiles
-endif
-override INSTALL_FPCPACKAGE=y
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-EXEDBGEXT=.dbg
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-IMPORTLIBPREFIX=
-endif
-ifneq ($(CPU_TARGET),jvm)
-ifeq ($(OS_TARGET),android)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),haiku)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=hai
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-IMPORTLIBPREFIX=imp
-endif
-ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-EXEDBGEXT=.dSYM
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-ifeq ($(OS_TARGET),symbian)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=symbian
-endif
-ifeq ($(OS_TARGET),NativeNT)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=nativent
-endif
-ifeq ($(OS_TARGET),wii)
-EXEEXT=.dol
-SHAREDLIBEXT=.so
-SHORTSUFFIX=wii
-endif
-ifeq ($(OS_TARGET),aix)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=aix
-endif
-ifeq ($(OS_TARGET),java)
-OEXT=.class
-ASMEXT=.j
-SHAREDLIBEXT=.jar
-SHORTSUFFIX=java
-endif
-ifeq ($(CPU_TARGET),jvm)
-ifeq ($(OS_TARGET),android)
-OEXT=.class
-ASMEXT=.j
-SHAREDLIBEXT=.jar
-SHORTSUFFIX=android
-endif
-endif
-ifeq ($(OS_TARGET),msdos)
-STATICLIBPREFIX=
-STATICLIBEXT=.a
-SHORTSUFFIX=d16
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-NASMNAME=$(BINUTILSPREFIX)nasm
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-ifndef NASMPROG
-ifdef CROSSBINDIR
-NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
-else
-NASMPROG=$(NASMNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-NASM=$(NASMPROG)
-ifdef inUnix
-PPAS=./ppas$(SRCBATCHEXT)
-else
-PPAS=ppas$(SRCBATCHEXT)
-endif
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl-fpcunit fcl-db paszlib
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-nativent)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-iphonesim)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i386-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-wii)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-aix)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),arm-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-aix)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),mips-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),mipsel-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),mipsel-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),jvm-java)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),jvm-android)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifeq ($(FULL_TARGET),i8086-msdos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL-PROCESS=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_LIBTAR=1
-REQUIRE_PACKAGES_FPMKUNIT=1
-REQUIRE_PACKAGES_FCL-FPCUNIT=1
-REQUIRE_PACKAGES_FCL-DB=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-ifdef UNITDIR_FPMAKE_RTL
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-ifdef UNITDIR_FPMAKE_PASZLIB
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL-PROCESS
-PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL-PROCESS),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL-PROCESS=
-UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL-PROCESS),)
-UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
-else
-UNITDIR_FCL-PROCESS=
-endif
-endif
-ifdef UNITDIR_FCL-PROCESS
-override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
-endif
-ifdef UNITDIR_FPMAKE_FCL-PROCESS
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-ifdef UNITDIR_FPMAKE_HASH
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBTAR
-PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBTAR),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBTAR=
-UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBTAR),)
-UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
-else
-UNITDIR_LIBTAR=
-endif
-endif
-ifdef UNITDIR_LIBTAR
-override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
-endif
-ifdef UNITDIR_FPMAKE_LIBTAR
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FPMKUNIT
-PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FPMKUNIT),)
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
-UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FPMKUNIT=
-UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FPMKUNIT),)
-UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
-else
-UNITDIR_FPMKUNIT=
-endif
-endif
-ifdef UNITDIR_FPMKUNIT
-override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
-endif
-ifdef UNITDIR_FPMAKE_FPMKUNIT
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL-FPCUNIT
-PACKAGEDIR_FCL-FPCUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-fpcunit/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL-FPCUNIT),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL-FPCUNIT)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FCL-FPCUNIT) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-FPCUNIT)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL-FPCUNIT=
-UNITDIR_FCL-FPCUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-fpcunit/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL-FPCUNIT),)
-UNITDIR_FCL-FPCUNIT:=$(firstword $(UNITDIR_FCL-FPCUNIT))
-else
-UNITDIR_FCL-FPCUNIT=
-endif
-endif
-ifdef UNITDIR_FCL-FPCUNIT
-override COMPILER_UNITDIR+=$(UNITDIR_FCL-FPCUNIT)
-endif
-ifdef UNITDIR_FPMAKE_FCL-FPCUNIT
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-FPCUNIT)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL-DB
-PACKAGEDIR_FCL-DB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL-DB),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL-DB=$(PACKAGEDIR_FCL-DB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL-DB=$(PACKAGEDIR_FCL-DB)
-endif
-ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB)/units/$(SOURCESUFFIX)
-else
-ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units_bs/$(SOURCESUFFIX)),)
-UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB)/units_bs/$(SOURCESUFFIX)
-else
-UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB)
-endif
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL-DB)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_FCL-DB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-DB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL-DB=
-UNITDIR_FCL-DB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL-DB),)
-UNITDIR_FCL-DB:=$(firstword $(UNITDIR_FCL-DB))
-else
-UNITDIR_FCL-DB=
-endif
-endif
-ifdef UNITDIR_FCL-DB
-override COMPILER_UNITDIR+=$(UNITDIR_FCL-DB)
-endif
-ifdef UNITDIR_FPMAKE_FCL-DB
-override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-DB)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(ARCH)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(ARCH)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX)
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifndef CROSSCOMPILE
-ifneq ($(BINUTILSPREFIX),)
-override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-endif
-ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
-ifeq ($(CPU_TARGET),x86_64)
-override FPCOPT+=-Cg
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(strip $(FPC) $(FPCOPT))
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-ifdef RUNBATCH
-EXECPPAS:=@$(RUNBATCH) $(PPAS)
-else
-EXECPPAS:=@$(PPAS)
-endif
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_examples
-ifneq ($(TARGET_EXAMPLES),)
-HASEXAMPLES=1
-override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))
-override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))
-override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))
-override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))
-override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
-override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))
-endif
-endif
-ifneq ($(TARGET_EXAMPLEDIRS),)
-HASEXAMPLES=1
-endif
-fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS))
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
- @$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
- $(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
- $(MAKE) all DEBUG=1
-fpc_release:
- $(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
- $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
- $(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
- $(COMPILER) $<
- $(EXECPPAS)
-%$(PPUEXT): %.pas
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.pp
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.pas
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.lpr
- $(COMPILER) $<
- $(EXECPPAS)
-%$(EXEEXT): %.dpr
- $(COMPILER) $<
- $(EXECPPAS)
-%.res: %.rc
- windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.inc $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
- $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
- $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
- @$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
- $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
- $(MKDIR) $(INSTALL_BINDIR)
- $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
- $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
- $(MKDIR) $(INSTALL_UNITDIR)
- $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
- $(MKDIR) $(INSTALL_UNITDIR)
- $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
- $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
- $(MKDIR) $(INSTALL_LIBDIR)
- $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
- ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
- $(MKDIR) $(INSTALL_DATADIR)
- $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
- $(MKDIR) $(INSTALL_SOURCEDIR)
- $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
- $(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
- $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
- $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
-endif
-ifdef CLEAN_PROGRAMS
-override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
-override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
- -$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANEXEDBGFILES
- -$(DELTREE) $(CLEANEXEDBGFILES)
-endif
-ifdef CLEANPPUFILES
- -$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
- -$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
- -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
- -$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
- -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
- -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
- -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
- -$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
- -$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
- -$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
- -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-ifdef CLEAN_FILES
- -$(DEL) $(CLEAN_FILES)
-endif
- -$(DELTREE) units
- -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
- -$(DEL) *.o *.ppu *.a
-endif
- -$(DELTREE) *$(SMARTEXT)
- -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
- -$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
- -$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
- -$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
- @$(ECHO)
- @$(ECHO) == Package info ==
- @$(ECHO) Package Name..... $(PACKAGE_NAME)
- @$(ECHO) Package Version.. $(PACKAGE_VERSION)
- @$(ECHO)
- @$(ECHO) == Configuration info ==
- @$(ECHO)
- @$(ECHO) FPC.......... $(FPC)
- @$(ECHO) FPC Version.. $(FPC_VERSION)
- @$(ECHO) Source CPU... $(CPU_SOURCE)
- @$(ECHO) Target CPU... $(CPU_TARGET)
- @$(ECHO) Source OS.... $(OS_SOURCE)
- @$(ECHO) Target OS.... $(OS_TARGET)
- @$(ECHO) Full Source.. $(FULL_SOURCE)
- @$(ECHO) Full Target.. $(FULL_TARGET)
- @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
- @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
- @$(ECHO) FPC fpmake... $(FPCFPMAKE)
- @$(ECHO)
- @$(ECHO) == Directory info ==
- @$(ECHO)
- @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
- @$(ECHO)
- @$(ECHO) Basedir......... $(BASEDIR)
- @$(ECHO) FPCDir.......... $(FPCDIR)
- @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
- @$(ECHO) UnitsDir........ $(UNITSDIR)
- @$(ECHO) PackagesDir..... $(PACKAGESDIR)
- @$(ECHO)
- @$(ECHO) GCC library..... $(GCCLIBDIR)
- @$(ECHO) Other library... $(OTHERLIBDIR)
- @$(ECHO)
- @$(ECHO) == Tools info ==
- @$(ECHO)
- @$(ECHO) As........ $(AS)
- @$(ECHO) Ld........ $(LD)
- @$(ECHO) Ar........ $(AR)
- @$(ECHO) Rc........ $(RC)
- @$(ECHO)
- @$(ECHO) Mv........ $(MVPROG)
- @$(ECHO) Cp........ $(CPPROG)
- @$(ECHO) Rm........ $(RMPROG)
- @$(ECHO) GInstall.. $(GINSTALL)
- @$(ECHO) Echo...... $(ECHO)
- @$(ECHO) Shell..... $(SHELL)
- @$(ECHO) Date...... $(DATE)
- @$(ECHO) FPCMake... $(FPCMAKE)
- @$(ECHO) PPUMove... $(PPUMOVE)
- @$(ECHO) Zip....... $(ZIPPROG)
- @$(ECHO)
- @$(ECHO) == Object info ==
- @$(ECHO)
- @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
- @$(ECHO) Target Units.......... $(TARGET_UNITS)
- @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
- @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
- @$(ECHO) Target Dirs........... $(TARGET_DIRS)
- @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
- @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
- @$(ECHO)
- @$(ECHO) Clean Units......... $(CLEAN_UNITS)
- @$(ECHO) Clean Files......... $(CLEAN_FILES)
- @$(ECHO)
- @$(ECHO) Install Units....... $(INSTALL_UNITS)
- @$(ECHO) Install Files....... $(INSTALL_FILES)
- @$(ECHO)
- @$(ECHO) == Install info ==
- @$(ECHO)
- @$(ECHO) DateStr.............. $(DATESTR)
- @$(ECHO) ZipName.............. $(ZIPNAME)
- @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
- @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
- @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
- @$(ECHO) FullZipName.......... $(FULLZIPNAME)
- @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
- @$(ECHO)
- @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
- @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
- @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
- @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
- @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
- @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
- @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
- @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
- @$(ECHO)
- @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
- @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
- @$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
- fpc_makefile_dirs
-fpc_makefile:
- $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
- $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
- $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples: fpc_examples
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif
-.NOTPARALLEL:
+# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] +# +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 i386-android i386-aros 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 powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly +UNIXs = linux $(BSDs) solaris qnx haiku aix +LIMIT83fs = go32v2 os2 emx watcom msdos +OSNeedsComspecToRunBatch = go32v2 watcom +FORCE: +.PHONY: FORCE +override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) +ifneq ($(findstring darwin,$(OSTYPE)),) +inUnix=1 #darwin +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +ifeq ($(findstring ;,$(PATH)),) +inUnix=1 +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +SEARCHPATH:=$(subst ;, ,$(PATH)) +endif +endif +SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) +ifeq ($(PWD),) +$(error You need the GNU utils package to use this Makefile) +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT= +endif +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT=.exe +endif +ifndef inUnix +ifeq ($(OS),Windows_NT) +inWinNT=1 +else +ifdef OS2_SHELL +inOS2=1 +endif +endif +else +ifneq ($(findstring cygdrive,$(PATH)),) +inCygWin=1 +endif +endif +ifdef inUnix +SRCBATCHEXT=.sh +else +ifdef inOS2 +SRCBATCHEXT=.cmd +else +SRCBATCHEXT=.bat +endif +endif +ifdef COMSPEC +ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),) +ifndef RUNBATCH +RUNBATCH=$(COMSPEC) /C +endif +endif +endif +ifdef inUnix +PATHSEP=/ +else +PATHSEP:=$(subst /,\,/) +ifdef inCygWin +PATHSEP=/ +endif +endif +ifdef PWD +BASEDIR:=$(subst \,/,$(shell $(PWD))) +ifdef inCygWin +ifneq ($(findstring /cygdrive/,$(BASEDIR)),) +BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) +BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) +BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) +endif +endif +else +BASEDIR=. +endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif +override DEFAULT_FPCDIR=../../.. +ifndef FPC +ifdef PP +FPC=$(PP) +endif +endif +ifndef FPC +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +ifneq ($(CPU_TARGET),) +FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB) +else +FPC:=$(shell $(FPCPROG) -PB) +endif +ifneq ($(findstring Error,$(FPC)),) +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +else +ifeq ($(strip $(wildcard $(FPC))),) +FPC:=$(firstword $(FPCPROG)) +endif +endif +else +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +endif +override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) +override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +FOUNDFPC:=$(strip $(wildcard $(FPC))) +ifeq ($(FOUNDFPC),) +FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))) +ifeq ($(FOUNDFPC),) +$(error Compiler $(FPC) not found) +endif +endif +ifndef FPC_COMPILERINFO +FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) +endif +ifndef FPC_VERSION +FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) +endif +export FPC FPC_VERSION FPC_COMPILERINFO +unexport CHECKDEPEND ALLDEPENDENCIES +ifndef CPU_TARGET +ifdef CPU_TARGET_DEFAULT +CPU_TARGET=$(CPU_TARGET_DEFAULT) +endif +endif +ifndef OS_TARGET +ifdef OS_TARGET_DEFAULT +OS_TARGET=$(OS_TARGET_DEFAULT) +endif +endif +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) +endif +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifeq ($(CPU_TARGET),armeb) +ARCH=arm +override FPCOPT+=-Cb +else +ifeq ($(CPU_TARGET),armel) +ARCH=arm +override FPCOPT+=-CaEABI +else +ARCH=$(CPU_TARGET) +endif +endif +ifeq ($(FULL_TARGET),arm-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +else +TARGETSUFFIX=$(FULL_TARGET) +endif +SOURCESUFFIX=$(FULL_SOURCE) +endif +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 +endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) +endif +endif +ifneq ($(findstring $(OS_TARGET),$(BSDs)),) +BSDhier=1 +endif +ifeq ($(OS_TARGET),linux) +linuxHier=1 +endif +ifndef CROSSCOMPILE +BUILDFULLNATIVE=1 +export BUILDFULLNATIVE +endif +ifdef BUILDFULLNATIVE +BUILDNATIVE=1 +export BUILDNATIVE +endif +export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE +ifdef FPCDIR +override FPCDIR:=$(subst \,/,$(FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +else +override FPCDIR=wrong +endif +ifdef DEFAULT_FPCDIR +ifeq ($(FPCDIR),wrong) +override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +endif +endif +ifeq ($(FPCDIR),wrong) +ifdef inUnix +override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) +ifeq ($(wildcard $(FPCDIR)/units),) +override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) +endif +else +override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(BASEDIR) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=c:/pp +endif +endif +endif +endif +endif +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX)) +endif +ifneq ($(findstring $(OS_TARGET),darwin iphonesim),) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifneq ($(OS_TARGET),msdos) +ifndef DARWIN2DARWIN +ifneq ($(CPU_TARGET),jvm) +BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- +ifeq ($(OS_TARGET),android) +ifeq ($(CPU_TARGET),arm) +BINUTILSPREFIX=arm-linux-androideabi- +else +ifeq ($(CPU_TARGET),i386) +BINUTILSPREFIX=i686-linux-android- +else +ifeq ($(CPU_TARGET),mipsel) +BINUTILSPREFIX=mipsel-linux-android- +endif +endif +endif +endif +endif +endif +else +BINUTILSPREFIX=$(OS_TARGET)- +endif +endif +endif +endif +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX)) +ifeq ($(UNITSDIR),) +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) +ifndef FPCFPMAKE +ifdef CROSSCOMPILE +ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),) +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +FPCFPMAKE:=$(shell $(FPCPROG) -PB) +ifeq ($(strip $(wildcard $(FPCFPMAKE))),) +FPCFPMAKE:=$(firstword $(FPCPROG)) +endif +else +override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +else +FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))) +FPMAKE_SKIP_CONFIG=-n +export FPCFPMAKE +export FPMAKE_SKIP_CONFIG +endif +else +FPMAKE_SKIP_CONFIG=-n +FPCFPMAKE=$(FPC) +endif +endif +override PACKAGE_NAME=fcl +PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR)))))) +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-haiku) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-nativent) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-android) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-wii) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc-aix) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-darwin) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),arm-android) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),avr-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),armeb-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),armeb-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),mips-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),mipsel-linux) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),mipsel-android) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),jvm-java) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),jvm-android) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i8086-msdos) +override TARGET_UNITS+=toolsunit dbftoolsunit memdstoolsunit sqldbtoolsunit sdfdstoolsunit +endif +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-haiku) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-nativent) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-android) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-wii) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc-aix) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-darwin) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),arm-android) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),avr-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),armeb-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),armeb-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),mips-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),mipsel-linux) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),mipsel-android) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),jvm-java) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),jvm-android) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +ifeq ($(FULL_TARGET),i8086-msdos) +override TARGET_EXAMPLES+=dbtestframework testsqlfiles +endif +override INSTALL_FPCPACKAGE=y +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) +endif +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) +endif +ifdef ZIPINSTALL +ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) +UNIXHier=1 +endif +else +ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) +UNIXHier=1 +endif +endif +ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX +ifdef UNIXHier +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR +ifndef COMPILER_UNITTARGETDIR +ifdef PACKAGEDIR_MAIN +COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX) +else +COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX) +endif +endif +ifndef COMPILER_TARGETDIR +COMPILER_TARGETDIR=. +endif +ifndef INSTALL_BASEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif +ifndef INSTALL_BINDIR +ifdef UNIXHier +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +ifdef INSTALL_FPCPACKAGE +ifdef CROSSCOMPILE +ifdef CROSSINSTALL +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX) +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +endif +endif +endif +ifndef INSTALL_UNITDIR +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX) +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif +ifndef INSTALL_LIBDIR +ifdef UNIXHier +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif +ifndef INSTALL_SOURCEDIR +ifdef UNIXHier +ifdef BSDhier +SRCPREFIXDIR=share/src +else +ifdef linuxHier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif +endif +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source +endif +endif +endif +ifndef INSTALL_DOCDIR +ifdef UNIXHier +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +ifdef linuxHier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif +endif +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +endif +endif +else +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +endif +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif +ifndef INSTALL_SHAREDDIR +INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib +endif +ifdef CROSSCOMPILE +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +SHAREDLIBPREFIX=libfp +STATICLIBPREFIX=libp +IMPORTLIBPREFIX=libimp +RSTEXT=.rst +EXEDBGEXT=.dbg +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +IMPORTLIBPREFIX= +endif +ifneq ($(CPU_TARGET),jvm) +ifeq ($(OS_TARGET),android) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +IMPORTLIBPREFIX= +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif +ifeq ($(OS_TARGET),morphos) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=mos +endif +ifeq ($(OS_TARGET),atari) +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),haiku) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=hai +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nw +IMPORTLIBPREFIX=imp +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +IMPORTLIBPREFIX=imp +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +IMPORTLIBPREFIX=imp +endif +ifneq ($(findstring $(OS_TARGET),darwin iphonesim),) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +EXEDBGEXT=.dSYM +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +ifeq ($(OS_TARGET),NativeNT) +SHAREDLIBEXT=.dll +SHORTSUFFIX=nativent +endif +ifeq ($(OS_TARGET),wii) +EXEEXT=.dol +SHAREDLIBEXT=.so +SHORTSUFFIX=wii +endif +ifeq ($(OS_TARGET),aix) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=aix +endif +ifeq ($(OS_TARGET),java) +OEXT=.class +ASMEXT=.j +SHAREDLIBEXT=.jar +SHORTSUFFIX=java +endif +ifeq ($(CPU_TARGET),jvm) +ifeq ($(OS_TARGET),android) +OEXT=.class +ASMEXT=.j +SHAREDLIBEXT=.jar +SHORTSUFFIX=android +endif +endif +ifeq ($(OS_TARGET),msdos) +STATICLIBPREFIX= +STATICLIBEXT=.a +SHORTSUFFIX=d16 +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FPCMADE=fpcmade.$(SHORTSUFFIX) +ZIPSUFFIX=$(SHORTSUFFIX) +ZIPCROSSPREFIX= +ZIPSOURCESUFFIX=src +ZIPEXAMPLESUFFIX=exm +else +FPCMADE=fpcmade.$(TARGETSUFFIX) +ZIPSOURCESUFFIX=.source +ZIPEXAMPLESUFFIX=.examples +ifdef CROSSCOMPILE +ZIPSUFFIX=.$(SOURCESUFFIX) +ZIPCROSSPREFIX=$(TARGETSUFFIX)- +else +ZIPSUFFIX=.$(TARGETSUFFIX) +ZIPCROSSPREFIX= +endif +endif +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO= __missing_command_ECHO +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE= __missing_command_DATE +else +DATE:=$(firstword $(DATE)) +endif +else +DATE:=$(firstword $(DATE)) +endif +endif +export DATE +ifndef GINSTALL +GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL= __missing_command_GINSTALL +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +endif +export GINSTALL +ifndef CPPROG +CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(CPPROG),) +CPPROG= __missing_command_CPPROG +else +CPPROG:=$(firstword $(CPPROG)) +endif +endif +export CPPROG +ifndef RMPROG +RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(RMPROG),) +RMPROG= __missing_command_RMPROG +else +RMPROG:=$(firstword $(RMPROG)) +endif +endif +export RMPROG +ifndef MVPROG +MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MVPROG),) +MVPROG= __missing_command_MVPROG +else +MVPROG:=$(firstword $(MVPROG)) +endif +endif +export MVPROG +ifndef MKDIRPROG +MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG= __missing_command_MKDIRPROG +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +endif +export MKDIRPROG +ifndef ECHOREDIR +ifndef inUnix +ECHOREDIR=echo +else +ECHOREDIR=$(ECHO) +endif +endif +ifndef COPY +COPY:=$(CPPROG) -fp +endif +ifndef COPYTREE +COPYTREE:=$(CPPROG) -Rfp +endif +ifndef MKDIRTREE +MKDIRTREE:=$(MKDIRPROG) -p +endif +ifndef MOVE +MOVE:=$(MVPROG) -f +endif +ifndef DEL +DEL:=$(RMPROG) -f +endif +ifndef DELTREE +DELTREE:=$(RMPROG) -rf +endif +ifndef INSTALL +ifdef inUnix +INSTALL:=$(GINSTALL) -c -m 644 +else +INSTALL:=$(COPY) +endif +endif +ifndef INSTALLEXE +ifdef inUnix +INSTALLEXE:=$(GINSTALL) -c -m 755 +else +INSTALLEXE:=$(COPY) +endif +endif +ifndef MKDIR +MKDIR:=$(GINSTALL) -m 755 -d +endif +export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR +ifndef PPUMOVE +PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(PPUMOVE),) +PPUMOVE= __missing_command_PPUMOVE +else +PPUMOVE:=$(firstword $(PPUMOVE)) +endif +endif +export PPUMOVE +ifndef FPCMAKE +FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(FPCMAKE),) +FPCMAKE= __missing_command_FPCMAKE +else +FPCMAKE:=$(firstword $(FPCMAKE)) +endif +endif +export FPCMAKE +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= __missing_command_ZIPPROG +else +ZIPPROG:=$(firstword $(ZIPPROG)) +endif +endif +export ZIPPROG +ifndef TARPROG +TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG= __missing_command_TARPROG +else +TARPROG:=$(firstword $(TARPROG)) +endif +else +TARPROG:=$(firstword $(TARPROG)) +endif +endif +export TARPROG +ASNAME=$(BINUTILSPREFIX)as +LDNAME=$(BINUTILSPREFIX)ld +ARNAME=$(BINUTILSPREFIX)ar +RCNAME=$(BINUTILSPREFIX)rc +NASMNAME=$(BINUTILSPREFIX)nasm +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) +else +ASPROG=$(ASNAME) +endif +endif +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) +else +LDPROG=$(LDNAME) +endif +endif +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) +else +RCPROG=$(RCNAME) +endif +endif +ifndef ARPROG +ifdef CROSSBINDIR +ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) +else +ARPROG=$(ARNAME) +endif +endif +ifndef NASMPROG +ifdef CROSSBINDIR +NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT) +else +NASMPROG=$(NASMNAME) +endif +endif +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +NASM=$(NASMPROG) +ifdef inUnix +PPAS=./ppas$(SRCBATCHEXT) +else +PPAS=ppas$(SRCBATCHEXT) +endif +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ZIPOPT=-9 +ZIPEXT=.zip +ifeq ($(USETAR),bz2) +TAROPT=vj +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz +endif +override REQUIRE_PACKAGES=rtl fcl-fpcunit fcl-db paszlib +ifeq ($(FULL_TARGET),i386-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-haiku) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-nativent) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-iphonesim) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-wii) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),arm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),powerpc64-aix) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),avr-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),armeb-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),armeb-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),mips-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),mipsel-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),mipsel-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),jvm-java) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),jvm-android) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifeq ($(FULL_TARGET),i8086-msdos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-FPCUNIT=1 +REQUIRE_PACKAGES_FCL-DB=1 +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +ifdef UNITDIR_FPMAKE_RTL +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_PASZLIB +PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_PASZLIB),) +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),) +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX) +else +UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_PASZLIB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE) +endif +else +PACKAGEDIR_PASZLIB= +UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_PASZLIB),) +UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB)) +else +UNITDIR_PASZLIB= +endif +endif +ifdef UNITDIR_PASZLIB +override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB) +endif +ifdef UNITDIR_FPMAKE_PASZLIB +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-PROCESS +PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-PROCESS),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-PROCESS= +UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-PROCESS),) +UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS)) +else +UNITDIR_FCL-PROCESS= +endif +endif +ifdef UNITDIR_FCL-PROCESS +override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS) +endif +ifdef UNITDIR_FPMAKE_FCL-PROCESS +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS) +endif +endif +ifdef REQUIRE_PACKAGES_HASH +PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_HASH),) +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),) +UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX) +else +UNITDIR_HASH=$(PACKAGEDIR_HASH) +endif +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_HASH)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE) +endif +else +PACKAGEDIR_HASH= +UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_HASH),) +UNITDIR_HASH:=$(firstword $(UNITDIR_HASH)) +else +UNITDIR_HASH= +endif +endif +ifdef UNITDIR_HASH +override COMPILER_UNITDIR+=$(UNITDIR_HASH) +endif +ifdef UNITDIR_FPMAKE_HASH +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH) +endif +endif +ifdef REQUIRE_PACKAGES_LIBTAR +PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBTAR),) +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBTAR)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBTAR= +UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBTAR),) +UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR)) +else +UNITDIR_LIBTAR= +endif +endif +ifdef UNITDIR_LIBTAR +override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR) +endif +ifdef UNITDIR_FPMAKE_LIBTAR +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR) +endif +endif +ifdef REQUIRE_PACKAGES_FPMKUNIT +PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FPMKUNIT),) +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),) +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX) +else +UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE) +endif +else +PACKAGEDIR_FPMKUNIT= +UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FPMKUNIT),) +UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT)) +else +UNITDIR_FPMKUNIT= +endif +endif +ifdef UNITDIR_FPMKUNIT +override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT) +endif +ifdef UNITDIR_FPMAKE_FPMKUNIT +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-FPCUNIT +PACKAGEDIR_FCL-FPCUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-fpcunit/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-FPCUNIT),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-FPCUNIT)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-FPCUNIT=$(PACKAGEDIR_FCL-FPCUNIT) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-FPCUNIT)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-FPCUNIT) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-FPCUNIT)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-FPCUNIT= +UNITDIR_FCL-FPCUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-fpcunit/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-FPCUNIT),) +UNITDIR_FCL-FPCUNIT:=$(firstword $(UNITDIR_FCL-FPCUNIT)) +else +UNITDIR_FCL-FPCUNIT= +endif +endif +ifdef UNITDIR_FCL-FPCUNIT +override COMPILER_UNITDIR+=$(UNITDIR_FCL-FPCUNIT) +endif +ifdef UNITDIR_FPMAKE_FCL-FPCUNIT +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-FPCUNIT) +endif +endif +ifdef REQUIRE_PACKAGES_FCL-DB +PACKAGEDIR_FCL-DB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_FCL-DB),) +ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units/$(TARGETSUFFIX)),) +UNITDIR_FCL-DB=$(PACKAGEDIR_FCL-DB)/units/$(TARGETSUFFIX) +else +UNITDIR_FCL-DB=$(PACKAGEDIR_FCL-DB) +endif +ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB)/units/$(SOURCESUFFIX) +else +ifneq ($(wildcard $(PACKAGEDIR_FCL-DB)/units_bs/$(SOURCESUFFIX)),) +UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB)/units_bs/$(SOURCESUFFIX) +else +UNITDIR_FPMAKE_FCL-DB=$(PACKAGEDIR_FCL-DB) +endif +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_FCL-DB)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_FCL-DB) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-DB)/$(FPCMADE) +endif +else +PACKAGEDIR_FCL-DB= +UNITDIR_FCL-DB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_FCL-DB),) +UNITDIR_FCL-DB:=$(firstword $(UNITDIR_FCL-DB)) +else +UNITDIR_FCL-DB= +endif +endif +ifdef UNITDIR_FCL-DB +override COMPILER_UNITDIR+=$(UNITDIR_FCL-DB) +endif +ifdef UNITDIR_FPMAKE_FCL-DB +override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-DB) +endif +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(ARCH) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(ARCH) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +endif +endif +ifndef CROSSCOMPILE +ifneq ($(BINUTILSPREFIX),) +override FPCMAKEOPT+=-XP$(BINUTILSPREFIX) +endif +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif +ifdef LINKSMART +override FPCOPT+=-XX +endif +ifdef CREATESMART +override FPCOPT+=-CX +endif +ifdef DEBUG +override FPCOPT+=-gl +override FPCOPTDEF+=DEBUG +endif +ifdef RELEASE +ifneq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +endif +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1r +endif +else +FPCCPUOPT:=-O2 +endif +override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n +override FPCOPTDEF+=RELEASE +endif +ifdef STRIP +override FPCOPT+=-Xs +endif +ifdef OPTIMIZE +override FPCOPT+=-O2 +endif +ifdef VERBOSE +override FPCOPT+=-vwni +endif +ifdef COMPILER_OPTIONS +override FPCOPT+=$(COMPILER_OPTIONS) +endif +ifdef COMPILER_UNITDIR +override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) +endif +ifdef COMPILER_LIBRARYDIR +override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) +endif +ifdef COMPILER_OBJECTDIR +override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) +endif +ifdef COMPILER_INCLUDEDIR +override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) +endif +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif +ifdef COMPILER_TARGETDIR +override FPCOPT+=-FE$(COMPILER_TARGETDIR) +ifeq ($(COMPILER_TARGETDIR),.) +override TARGETDIRPREFIX= +else +override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ +endif +endif +ifdef COMPILER_UNITTARGETDIR +override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) +ifeq ($(COMPILER_UNITTARGETDIR),.) +override UNITTARGETDIRPREFIX= +else +override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ +endif +else +ifdef COMPILER_TARGETDIR +override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) +override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) +endif +endif +ifdef CREATESHARED +override FPCOPT+=-Cg +endif +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +endif +ifdef LINKSHARED +endif +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef FPCOPTDEF +override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) +endif +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif +ifdef USEENV +override FPCEXTCMD:=$(FPCOPT) +override FPCOPT:=!FPCEXTCMD +export FPCEXTCMD +endif +override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(AFULL_TARGET),$(AFULL_SOURCE)) +override ACROSSCOMPILE=1 +endif +ifdef ACROSSCOMPILE +override FPCOPT+=$(CROSSOPT) +endif +override COMPILER:=$(strip $(FPC) $(FPCOPT)) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) +EXECPPAS= +else +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +.PHONY: fpc_units +ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) +override ALLTARGET+=fpc_units +override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS)) +override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS)) +override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +endif +fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES) +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_examples +ifneq ($(TARGET_EXAMPLES),) +HASEXAMPLES=1 +override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES))) +override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES)) +override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) +override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES)) +override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES) +override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +endif +ifneq ($(TARGET_EXAMPLEDIRS),) +HASEXAMPLES=1 +endif +fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS)) +.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res +$(COMPILER_UNITTARGETDIR): + $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) +$(COMPILER_TARGETDIR): + $(MKDIRTREE) $(COMPILER_TARGETDIR) +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.lpr + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.dpr + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.inc $(COMPILER_INCLUDEDIR) +vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_shared +override INSTALLTARGET+=fpc_shared_install +ifndef SHARED_LIBVERSION +SHARED_LIBVERSION=$(FPC_VERSION) +endif +ifndef SHARED_LIBNAME +SHARED_LIBNAME=$(PACKAGE_NAME) +endif +ifndef SHARED_FULLNAME +SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT) +endif +ifndef SHARED_LIBUNITS +SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS) +override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS)) +endif +fpc_shared: +ifdef HASSHAREDLIB + $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1 +ifneq ($(SHARED_BUILD),n) + $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) +endif +else + @$(ECHO) Shared Libraries not supported +endif +fpc_shared_install: +ifneq ($(SHARED_BUILD),n) +ifneq ($(SHARED_LIBUNITS),) +ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),) + $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR) +endif +endif +endif +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +ifneq ($(UNITTARGETDIRPREFIX),) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES))) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES)))) +endif +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +ifneq ($(TARGETDIRPREFIX),) +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES))) +endif +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES)) +endif +ifdef CLEAN_PROGRAMS +override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS))) +override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS))) +endif +ifdef CLEAN_UNITS +override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) +endif +ifdef CLEANPPUFILES +override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) +ifdef DEBUGSYMEXT +override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) +endif +override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) +override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +endif +fpc_clean: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef CLEANEXEDBGFILES + -$(DELTREE) $(CLEANEXEDBGFILES) +endif +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif +ifdef LIB_NAME + -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) +endif + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) +fpc_cleanall: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef COMPILER_UNITTARGETDIR +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif + -$(DELTREE) units + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(BATCHEXT) +ifdef AOUTEXT + -$(DEL) *$(AOUTEXT) +endif +ifdef DEBUGSYMEXT + -$(DEL) *$(DEBUGSYMEXT) +endif +fpc_distclean: cleanall +.PHONY: fpc_baseinfo +override INFORULES+=fpc_baseinfo +fpc_baseinfo: + @$(ECHO) + @$(ECHO) == Package info == + @$(ECHO) Package Name..... $(PACKAGE_NAME) + @$(ECHO) Package Version.. $(PACKAGE_VERSION) + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC.......... $(FPC) + @$(ECHO) FPC Version.. $(FPC_VERSION) + @$(ECHO) Source CPU... $(CPU_SOURCE) + @$(ECHO) Target CPU... $(CPU_TARGET) + @$(ECHO) Source OS.... $(OS_SOURCE) + @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) + @$(ECHO) SourceSuffix. $(SOURCESUFFIX) + @$(ECHO) TargetSuffix. $(TARGETSUFFIX) + @$(ECHO) FPC fpmake... $(FPCFPMAKE) + @$(ECHO) + @$(ECHO) == Directory info == + @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) + @$(ECHO) Basedir......... $(BASEDIR) + @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) + @$(ECHO) UnitsDir........ $(UNITSDIR) + @$(ECHO) PackagesDir..... $(PACKAGESDIR) + @$(ECHO) + @$(ECHO) GCC library..... $(GCCLIBDIR) + @$(ECHO) Other library... $(OTHERLIBDIR) + @$(ECHO) + @$(ECHO) == Tools info == + @$(ECHO) + @$(ECHO) As........ $(AS) + @$(ECHO) Ld........ $(LD) + @$(ECHO) Ar........ $(AR) + @$(ECHO) Rc........ $(RC) + @$(ECHO) + @$(ECHO) Mv........ $(MVPROG) + @$(ECHO) Cp........ $(CPPROG) + @$(ECHO) Rm........ $(RMPROG) + @$(ECHO) GInstall.. $(GINSTALL) + @$(ECHO) Echo...... $(ECHO) + @$(ECHO) Shell..... $(SHELL) + @$(ECHO) Date...... $(DATE) + @$(ECHO) FPCMake... $(FPCMAKE) + @$(ECHO) PPUMove... $(PPUMOVE) + @$(ECHO) Zip....... $(ZIPPROG) + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) Target Loaders........ $(TARGET_LOADERS) + @$(ECHO) Target Units.......... $(TARGET_UNITS) + @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) + @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) + @$(ECHO) Target Dirs........... $(TARGET_DIRS) + @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) + @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) + @$(ECHO) + @$(ECHO) Clean Units......... $(CLEAN_UNITS) + @$(ECHO) Clean Files......... $(CLEAN_FILES) + @$(ECHO) + @$(ECHO) Install Units....... $(INSTALL_UNITS) + @$(ECHO) Install Files....... $(INSTALL_FILES) + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) + @$(ECHO) DateStr.............. $(DATESTR) + @$(ECHO) ZipName.............. $(ZIPNAME) + @$(ECHO) ZipPrefix............ $(ZIPPREFIX) + @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) + @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) + @$(ECHO) FullZipName.......... $(FULLZIPNAME) + @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) + @$(ECHO) + @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) + @$(ECHO) Install binary dir... $(INSTALL_BINDIR) + @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) + @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) + @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) + @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) + @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) + @$(ECHO) Install data dir..... $(INSTALL_DATADIR) + @$(ECHO) + @$(ECHO) Dist destination dir. $(DIST_DESTDIR) + @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) + @$(ECHO) +.PHONY: fpc_info +fpc_info: $(INFORULES) +.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ + fpc_makefile_dirs +fpc_makefile: + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc +fpc_makefile_sub1: +ifdef TARGET_DIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) +endif +ifdef TARGET_EXAMPLEDIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) +endif +fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) +fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 +fpc_makefiles: fpc_makefile fpc_makefile_dirs +all: fpc_all +debug: fpc_debug +smart: fpc_smart +release: fpc_release +units: fpc_units +examples: fpc_examples +shared: fpc_shared +install: fpc_install +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +distinstall: +zipinstall: +zipsourceinstall: +zipexampleinstall: +zipdistinstall: +clean: fpc_clean +distclean: fpc_distclean +cleanall: fpc_cleanall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/fcl-db/tests/sqldbtoolsunit.pas b/packages/fcl-db/tests/sqldbtoolsunit.pas index 56ba77efd0..c9b2ac3603 100644 --- a/packages/fcl-db/tests/sqldbtoolsunit.pas +++ b/packages/fcl-db/tests/sqldbtoolsunit.pas @@ -54,13 +54,14 @@ type procedure DropFieldDataset; override; Function InternalGetNDataset(n : integer) : TDataset; override; Function InternalGetFieldDataset : TDataSet; override; - procedure TryDropIfExist(ATableName : String); public + procedure TryDropIfExist(ATableName : String); destructor Destroy; override; constructor Create; override; procedure ExecuteDirect(const SQL: string); // Issue a commit(retaining) for databases that need it (e.g. in DDL) procedure CommitDDL; + Procedure FreeTransaction; property Connection : TSQLConnection read FConnection; property Transaction : TSQLTransaction read FTransaction; property Query : TSQLQuery read FQuery; @@ -321,7 +322,7 @@ begin FieldtypeDefinitions[ftMemo] := 'CLOB'; FieldtypeDefinitions[ftWideString] := 'NVARCHAR2(10)'; FieldtypeDefinitions[ftFixedWideChar] := 'NCHAR(10)'; - //FieldtypeDefinitions[ftWideMemo] := 'NCLOB'; + FieldtypeDefinitions[ftWideMemo] := 'NCLOB'; end; ssPostgreSQL: begin @@ -400,7 +401,7 @@ begin testValues[ftFixedChar,i] := PadRight(testValues[ftFixedChar,i], 10); end; -function TSQLDBConnector.CreateQuery: TSQLQuery; +Function TSQLDBConnector.CreateQuery: TSQLQuery; begin Result := TSQLQuery.create(nil); @@ -555,7 +556,7 @@ begin end; procedure TSQLDBConnector.DoLogEvent(Sender: TSQLConnection; - EventType: TDBEventType; const Msg: String); + EventType: TDBEventType; Const Msg: String); var Category: string; begin @@ -609,7 +610,7 @@ begin end; end; -function TSQLDBConnector.InternalGetNDataset(n: integer): TDataset; +Function TSQLDBConnector.InternalGetNDataset(n: integer): TDataset; begin Result := CreateQuery; with (Result as TSQLQuery) do @@ -620,7 +621,7 @@ begin end; end; -function TSQLDBConnector.InternalGetFieldDataset: TDataSet; +Function TSQLDBConnector.InternalGetFieldDataset: TDataSet; begin Result := CreateQuery; with (Result as TSQLQuery) do @@ -641,7 +642,7 @@ begin ssFirebird: begin // This only works with Firebird 2+ - FConnection.ExecuteDirect('execute block as begin if (exists (select 1 from rdb$relations where rdb$relation_name=''' + ATableName + ''')) '+ + FConnection.ExecuteDirect('execute block as begin if (exists (select 1 from rdb$relations where upper(rdb$relation_name)=''' + UpperCase(ATableName) + ''')) '+ 'then execute statement ''drop table ' + ATableName + ';'';end'); FTransaction.CommitRetaining; end; @@ -651,15 +652,19 @@ begin // which leads to the rollback not referring to the right transaction=>SQL error // Use SQL92 ISO standard INFORMATION_SCHEMA: FConnection.ExecuteDirect( - 'if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE=''BASE TABLE'' AND TABLE_NAME=''' + ATableName + ''') '+ - 'begin '+ - 'drop table ' + ATableName + ' '+ - 'end'); + 'if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE=''BASE TABLE'' AND TABLE_NAME=''' + ATableName + ''')'+ + ' drop table ' + ATableName ); end; ssMySQL: begin FConnection.ExecuteDirect('drop table if exists ' + ATableName); end; + ssPostgreSQL, + ssSQLite: + begin + FConnection.ExecuteDirect('drop table if exists ' + ATableName); + FTransaction.CommitRetaining; + end; ssOracle: begin FConnection.ExecuteDirect( @@ -702,23 +707,34 @@ begin Transaction.CommitRetaining; end; +Procedure TSQLDBConnector.FreeTransaction; +begin + FreeAndNil(FTransaction); +end; + destructor TSQLDBConnector.Destroy; begin + FreeAndNil(FQuery); if assigned(FTransaction) then begin try - if Ftransaction.Active then Ftransaction.Rollback; - Ftransaction.StartTransaction; - Fconnection.ExecuteDirect('DROP TABLE FPDEV2'); - Ftransaction.Commit; + if not (stoUseImplicit in Transaction.Options) then + begin + if Ftransaction.Active then + Ftransaction.Rollback; + Ftransaction.StartTransaction; + end; + TryDropIfExist('FPDEV2'); + if not (stoUseImplicit in Transaction.Options) then + Ftransaction.Commit; Except - if Ftransaction.Active then Ftransaction.Rollback; + if Ftransaction.Active and not (stoUseImplicit in Transaction.Options) then + Ftransaction.Rollback; end; // try end; - inherited Destroy; - FreeAndNil(FQuery); - FreeAndNil(FTransaction); + FreeTransaction; FreeAndNil(FConnection); + inherited Destroy; end; constructor TSQLDBConnector.Create; diff --git a/packages/fcl-db/tests/testfieldtypes.pas b/packages/fcl-db/tests/testfieldtypes.pas index 4f7006a15f..c97633b9ff 100644 --- a/packages/fcl-db/tests/testfieldtypes.pas +++ b/packages/fcl-db/tests/testfieldtypes.pas @@ -24,7 +24,10 @@ type procedure TestSQLFieldType(ADatatype: TFieldType; ASQLTypeDecl: string; ADataSize: integer; AGetSQLTextProc: TGetSQLTextProc; ACheckFieldValueProc: TCheckFieldValueProc); - procedure TestXXParamQuery(ADatatype : TFieldType; ASQLTypeDecl : string; testValuesCount : integer; Cross : boolean = false); + procedure TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string; + ParamValuesCount : integer); overload; + procedure TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string; + ParamValuesCount : integer; const ParamValues: array of string; Cross : boolean = False); overload; procedure TestSetBlobAsParam(asWhat : integer); protected procedure SetUp; override; @@ -83,6 +86,7 @@ type procedure TestTimeParamQuery; procedure TestDateTimeParamQuery; procedure TestFmtBCDParamQuery; + Procedure TestFmtBCDParamQuery2; // Bug 27077 procedure TestFloatParamQuery; procedure TestCurrencyParamQuery; procedure TestBCDParamQuery; @@ -829,7 +833,7 @@ begin begin datatype:='INTEGER PRIMARY KEY'; values:='DEFAULT VALUES'; - fieldtype:=ftInteger; + fieldtype:=ftAutoInc; updatable:=true; end; ssPostgreSQL: @@ -1488,7 +1492,14 @@ end; procedure TTestFieldTypes.TestFmtBCDParamQuery; begin - TestXXParamQuery(ftFMTBcd,FieldtypeDefinitions[ftFMTBcd],testValuesCount); + TestXXParamQuery(ftFMTBcd, FieldtypeDefinitions[ftFMTBcd], testValuesCount, testFmtBCDValues); +end; + +Procedure TTestFieldTypes.TestFmtBCDParamQuery2; +begin + // This test tests FmtBCD params with smaller precision, which fits into INT32 + // TestFmtBCDParamQuery tests FmtBCD params with bigger precision, which fits into INT64 + TestXXParamQuery(ftFMTBcd, 'NUMERIC(9,5)', 2, ['1234','1234.56781']); end; procedure TTestFieldTypes.TestDateParamQuery; @@ -1498,7 +1509,7 @@ end; procedure TTestFieldTypes.TestCrossStringDateParam; begin - TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount,True); + TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount,[],True); end; procedure TTestFieldTypes.TestTimeParamQuery; @@ -1529,12 +1540,12 @@ end; procedure TTestFieldTypes.TestBytesParamQuery; begin - TestXXParamQuery(ftBytes, FieldtypeDefinitions[ftBytes], testBytesValuesCount, true); + TestXXParamQuery(ftBytes, FieldtypeDefinitions[ftBytes], testBytesValuesCount, [], True); end; procedure TTestFieldTypes.TestVarBytesParamQuery; begin - TestXXParamQuery(ftVarBytes, FieldtypeDefinitions[ftVarBytes], testVarBytesValuesCount, not(SQLServerType in [ssMSSQL, ssSybase])); + TestXXParamQuery(ftVarBytes, FieldtypeDefinitions[ftVarBytes], testVarBytesValuesCount, [], not(SQLServerType in [ssMSSQL, ssSybase])); end; procedure TTestFieldTypes.TestBooleanParamQuery; @@ -1548,7 +1559,6 @@ begin end; procedure TTestFieldTypes.TestStringParamQuery; - begin TestXXParamQuery(ftString,'VARCHAR(10)',testValuesCount); end; @@ -1558,8 +1568,14 @@ begin TestXXParamQuery(ftFixedChar,'CHAR(10)',testValuesCount); end; +procedure TTestFieldTypes.TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string; + ParamValuesCount : integer); +begin + TestXXParamQuery(ADataType, ASQLTypeDecl, ParamValuesCount, [], False); +end; -procedure TTestFieldTypes.TestXXParamQuery(ADatatype : TFieldType; ASQLTypeDecl : string; testValuesCount : integer; Cross : boolean = false); +procedure TTestFieldTypes.TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string; + ParamValuesCount : integer; const ParamValues: array of string; Cross : boolean = False); var i : integer; @@ -1581,7 +1597,7 @@ begin if ADataType=ftFixedChar then Params.ParamByName('field1').DataType := ftFixedChar; - for i := 0 to testValuesCount -1 do + for i := 0 to ParamValuesCount-1 do begin Params.ParamByName('id').AsInteger := i; case ADataType of @@ -1600,7 +1616,7 @@ begin else Params.ParamByName('field1').AsDate := StrToDate(testDateValues[i],'yyyy/mm/dd','-'); ftDateTime: Params.ParamByName('field1').AsDateTime := StrToDateTime(testValues[ADataType,i], DBConnector.FormatSettings); - ftFMTBcd : Params.ParamByName('field1').AsFMTBCD := StrToBCD(testFmtBCDValues[i], DBConnector.FormatSettings); + ftFMTBcd : Params.ParamByName('field1').AsFMTBCD := StrToBCD(ParamValues[i], DBConnector.FormatSettings); ftBlob : Params.ParamByName('field1').AsBlob := testBlobValues[i]; ftBytes : if cross then Params.ParamByName('field1').Value := StringToByteArray(testBytesValues[i]) @@ -1616,7 +1632,7 @@ begin ExecSQL; end; // test NULL parameter value - Params.ParamByName('id').AsInteger := testValuesCount; + Params.ParamByName('id').AsInteger := ParamValuesCount; Params.ParamByName('field1').Clear; ExecSQL; @@ -1626,7 +1642,7 @@ begin sql.append('select * from FPDEV2 order by ID'); open; - for i := 0 to testValuesCount -1 do + for i := 0 to ParamValuesCount-1 do begin AssertEquals(i,FieldByName('ID').AsInteger); case ADataType of @@ -1642,7 +1658,7 @@ begin ftTime : AssertEquals(testTimeValues[i],DateTimeToTimeString(FieldByName('FIELD1').AsDateTime)); ftDate : AssertEquals(testDateValues[i],DateTimeToStr(FieldByName('FIELD1').AsDateTime, DBConnector.FormatSettings)); ftDateTime : AssertEquals(testValues[ADataType,i], DateTimeToStr(FieldByName('FIELD1').AsDateTime, DBConnector.FormatSettings)); - ftFMTBcd : AssertEquals(testFmtBCDValues[i], BCDToStr(FieldByName('FIELD1').AsBCD, DBConnector.FormatSettings)); + ftFMTBcd : AssertEquals(ParamValues[i], BCDToStr(FieldByName('FIELD1').AsBCD, DBConnector.FormatSettings)); ftBlob : AssertEquals(testBlobValues[i], FieldByName('FIELD1').AsString); ftVarBytes, ftBytes : AssertEquals(testBytesValues[i], shortstring(FieldByName('FIELD1').AsString)); diff --git a/packages/fcl-db/tests/testsqldb.pas b/packages/fcl-db/tests/testsqldb.pas index 3d97dca39e..daf9fb3e1d 100644 --- a/packages/fcl-db/tests/testsqldb.pas +++ b/packages/fcl-db/tests/testsqldb.pas @@ -9,34 +9,66 @@ unit TestSQLDB; interface uses - Classes, SysUtils, fpcunit, testregistry, - db; + Classes, sqldb, SysUtils, fpcunit, testregistry, + sqldbtoolsunit,toolsunit, db; type { TSQLDBTestCase } TSQLDBTestCase = class(TTestCase) + private + function GetSQLDBConnector: TSQLDBConnector; protected procedure SetUp; override; procedure TearDown; override; + Property SQLDBConnector : TSQLDBConnector Read GetSQLDBConnector; end; { TTestTSQLQuery } TTestTSQLQuery = class(TSQLDBTestCase) private + FMyQ: TSQLQuery; + procedure DoAfterPost(DataSet: TDataSet); + Procedure DoApplyUpdates; + Procedure TrySetQueryOptions; + Procedure TrySetPacketRecords; + Protected + Procedure Setup; override; published procedure TestMasterDetail; procedure TestUpdateServerIndexDefs; + Procedure TestKeepOpenOnCommit; + Procedure TestKeepOpenOnCommitPacketRecords; + Procedure TestCheckSettingsOnlyWhenInactive; + Procedure TestAutoApplyUpdatesPost; + Procedure TestAutoApplyUpdatesDelete; + Procedure TestCheckRowsAffected; + Procedure TestAutoCommit; + Procedure TestRefreshSQL; + Procedure TestGeneratedRefreshSQL; + Procedure TestGeneratedRefreshSQL1Field; + Procedure TestGeneratedRefreshSQLNoKey; + Procedure TestRefreshSQLMultipleRecords; + Procedure TestRefreshSQLNoRecords; + Procedure TestFetchAutoInc; end; { TTestTSQLConnection } TTestTSQLConnection = class(TSQLDBTestCase) private + procedure SetImplicit; + procedure TestImplicitTransaction; + procedure TestImplicitTransaction2; + procedure TestImplicitTransactionNotAssignable; + procedure TestImplicitTransactionOK; + procedure TryOpen; published - procedure ReplaceMe; + procedure TestUseImplicitTransaction; + procedure TestUseExplicitTransaction; + procedure TestExplicitConnect; end; { TTestTSQLScript } @@ -50,16 +82,21 @@ type implementation -uses sqldbtoolsunit, toolsunit, sqldb; { TTestTSQLQuery } +Procedure TTestTSQLQuery.Setup; +begin + inherited Setup; + SQLDBConnector.Connection.Options:=[]; +end; + procedure TTestTSQLQuery.TestMasterDetail; var MasterQuery, DetailQuery: TSQLQuery; MasterSource: TDataSource; begin - with TSQLDBConnector(DBConnector) do + with SQLDBConnector do try MasterQuery := GetNDataset(10) as TSQLQuery; MasterSource := TDatasource.Create(nil); @@ -87,7 +124,7 @@ begin // For ODBC Firebird/Interbase we must define primary key as named constraint and // in ODBC driver must be set: "quoted identifiers" and "sensitive identifier" // See also: TTestFieldTypes.TestUpdateIndexDefs - with TSQLDBConnector(DBConnector) do + with SQLDBConnector do begin // SQLite ignores case-sensitivity of quoted table names // MS SQL Server case-sensitivity of identifiers depends on the case-sensitivity of default collation of the database @@ -110,7 +147,7 @@ begin end; try - Q := TSQLDBConnector(DBConnector).Query; + Q := SQLDBConnector.Query; Q.SQL.Text:='select * from '+name1; Q.Prepare; Q.ServerIndexDefs.Update; @@ -131,7 +168,7 @@ begin CheckTrue(Q.ServerIndexDefs[0].Options=[ixPrimary,ixUnique], '3.3'); finally Q.UnPrepare; - with TSQLDBConnector(DBConnector) do + with SQLDBConnector do begin ExecuteDirect('DROP TABLE '+name1); ExecuteDirect('DROP TABLE '+name2); @@ -141,11 +178,544 @@ begin end; end; +Procedure TTestTSQLQuery.TestKeepOpenOnCommit; +var Q: TSQLQuery; + I: Integer; +begin + // Test that for a SQL query with Options=sqoKeepOpenOnCommit, calling commit does not close the dataset. + // Test also that an edit still works. + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + Transaction.Commit; + for I:=1 to 20 do + ExecuteDirect(Format('INSERT INTO FPDEV2 values (%d,''%.6d'')',[i,i])); + Transaction.Commit; + + Q := SQLDBConnector.Query; + Q.SQL.Text:='select * from FPDEV2'; + Q.Options:=[sqoKeepOpenOnCommit]; + AssertEquals('PacketRecords forced to -1',-1,Q.PacketRecords); + Q.Open; + AssertEquals('Got all records',20,Q.RecordCount); + Q.SQLTransaction.Commit; + AssertTrue('Still open after transaction',Q.Active); + + // Now check editing + Q.Locate('id',20,[]); + Q.Edit; + Q.FieldByName('a').AsString:='abc'; + Q.Post; + AssertTrue('Have updates pending',Q.UpdateStatus=usModified); + Q.ApplyUpdates; + AssertTrue('Have no more updates pending',Q.UpdateStatus=usUnmodified); + Q.Close; + Q.SQL.Text:='select * from FPDEV2 where (id=20) and (a=''abc'')'; + Q.Open; + AssertTrue('Have modified data record in database', not (Q.EOF AND Q.BOF)); + end; +end; + +Procedure TTestTSQLQuery.TrySetPacketRecords; +begin + FMyQ.PacketRecords:=10; +end; + +Procedure TTestTSQLQuery.TestKeepOpenOnCommitPacketRecords; +begin + with SQLDBConnector do + begin + FMyQ := SQLDBConnector.Query; + FMyQ.Options:=[sqoKeepOpenOnCommit]; + AssertException('Cannot set PacketRecords when sqoKeepOpenOnCommit is active',EDatabaseError,@TrySetPacketRecords); + end; +end; + +Procedure TTestTSQLQuery.TrySetQueryOptions; +begin + FMyQ.Options:=[sqoKeepOpenOnCommit]; +end; + +Procedure TTestTSQLQuery.TestCheckSettingsOnlyWhenInactive; +begin + // Check that we can only set QueryOptions when the query is inactive. + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + Transaction.Commit; + ExecuteDirect(Format('INSERT INTO FPDEV2 values (%d,''%.6d'')',[1,1])); + Transaction.Commit; + FMyQ := SQLDBConnector.Query; + FMyQ.SQL.Text:='select * from FPDEV2'; + FMyQ := SQLDBConnector.Query; + FMyQ.Open; + AssertException('Cannot set Options when query is active',EDatabaseError,@TrySetQueryOptions); + end; +end; + +procedure TTestTSQLQuery.DoAfterPost(DataSet: TDataSet); +begin + AssertTrue('Have modifications in after post',FMyq.UpdateStatus=usModified) +end; + +Procedure TTestTSQLQuery.TestAutoApplyUpdatesPost; +var Q: TSQLQuery; + I: Integer; +begin + // Test that if sqoAutoApplyUpdates is in QueryOptions, then POST automatically does an ApplyUpdates + // Test also that POST afterpost event is backwards compatible. + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + Transaction.COmmit; + for I:=1 to 2 do + ExecuteDirect(Format('INSERT INTO FPDEV2 values (%d,''%.6d'')',[i,i])); + Transaction.COmmit; + Q := SQLDBConnector.Query; + FMyQ:=Q; // so th event handler can reach it. + Q.SQL.Text:='select * from FPDEV2'; + Q.Options:=[sqoAutoApplyUpdates]; + // We must test that in AfterPost, the modification is still there, for backwards compatibilty + Q.AfterPost:=@DoAfterPost; + Q.Open; + AssertEquals('Got all records',2,Q.RecordCount); + // Now check editing + Q.Locate('id',2,[]); + Q.Edit; + Q.FieldByName('a').AsString:='abc'; + Q.Post; + AssertTrue('Have no more updates pending',Q.UpdateStatus=usUnmodified); + Q.Close; + Q.SQL.Text:='select * from FPDEV2 where (id=2) and (a=''abc'')'; + Q.Open; + AssertTrue('Have modified data record in database',not (Q.EOF AND Q.BOF)); + end; + +end; + +Procedure TTestTSQLQuery.TestAutoApplyUpdatesDelete; + +var Q: TSQLQuery; + I: Integer; +begin + // Test that if sqoAutoApplyUpdates is in QueryOptions, then Delete automatically does an ApplyUpdates + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + Transaction.COmmit; + for I:=1 to 2 do + ExecuteDirect(Format('INSERT INTO FPDEV2 values (%d,''%.6d'')',[i,i])); + Transaction.COmmit; + Q := SQLDBConnector.Query; + FMyQ:=Q; // so th event handler can reach it. + Q.SQL.Text:='select * from FPDEV2'; + Q.Options:=[sqoAutoApplyUpdates]; + // We must test that in AfterPost, the modification is still there, for backwards compatibilty + Q.AfterPost:=@DoAfterPost; + Q.Open; + AssertEquals('Got all records',2,Q.RecordCount); + // Now check editing + Q.Locate('id',2,[]); + Q.Delete; + AssertTrue('Have no more updates pending',Q.UpdateStatus=usUnmodified); + Q.Close; + Q.SQL.Text:='select * from FPDEV2 where (id=2)'; + Q.Open; + AssertTrue('Data record is deleted in database', (Q.EOF AND Q.BOF)); + end; +end; + +Procedure TTestTSQLQuery.DoApplyUpdates; + +begin + FMyQ.ApplyUpdates(); +end; + +Procedure TTestTSQLQuery.TestCheckRowsAffected; +var Q: TSQLQuery; + I: Integer; +begin + // Test that if sqoAutoApplyUpdates is in QueryOptions, then Delete automatically does an ApplyUpdates + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + Transaction.COmmit; + for I:=1 to 2 do + ExecuteDirect(Format('INSERT INTO FPDEV2 values (%d,''%.6d'')',[i,i])); + Transaction.COmmit; + SQLDBConnector.Connection.Options:=[scoApplyUpdatesChecksRowsAffected]; + Q := SQLDBConnector.Query; + Q.SQL.Text:='select * from FPDEV2'; + Q.DeleteSQL.Text:='delete from FPDEV2'; + Q.Open; + AssertEquals('Got all records',2,Q.RecordCount); + // Now check editing + Q.Delete; + FMyQ:=Q; + AssertException('RowsAffected > 1 raises exception',EUpdateError,@DoApplyUpdates); + end; +end; + +Procedure TTestTSQLQuery.TestAutoCommit; +var + I : Integer; +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + + Query.Options:=[sqoAutoCommit]; + for I:=1 to 2 do + begin + Query.SQL.Text:=Format('INSERT INTO FPDEV2 values (%d,''%.6d'');',[i,i]); + Query.Prepare; + Query.ExecSQL; + // We do not commit anything explicitly. + end; + + AssertFalse('Transaction is still active after expected auto commit', Transaction.Active); + + Connection.Close; + Connection.Open; + + Query.SQL.Text:='SELECT COUNT(*) from FPDEV2'; + Query.Open; + AssertEquals('Records haven''t been committed to database', 2, Query.Fields[0].AsInteger); + end; +end; + +Procedure TTestTSQLQuery.TestRefreshSQL; +var + Q: TSQLQuery; + +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null primary key, a varchar(5) default ''abcde'', b integer default 1)'); + if Transaction.Active then + Transaction.Commit; + end; + Q:=SQLDBConnector.Query; + Q.SQL.Text:='select * from FPDEV2'; + Q.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + Q.RefreshSQL.Text:='SELECT a,b FROM FPDEV2 WHERE (id=:id)'; + Q.Open; + Q.Insert; // #1 record + Q.FieldByName('id').AsInteger:=1; + Q.Post; + Q.Append; // #2 record + Q.FieldByName('id').AsInteger:=2; + Q.Post; + AssertTrue('Field value has not been fetched after Post', Q.FieldByName('a').IsNull); + Q.ApplyUpdates(0); + // #2 record: + AssertEquals('Still on correct field', 2, Q.FieldByName('id').AsInteger); + AssertEquals('Field value has been fetched from the database', 'abcde', Q.FieldByName('a').AsString); + AssertEquals('Field value has been fetched from the database', 1, Q.FieldByName('b').AsInteger); + Q.Prior; + // #1 record: + AssertEquals('Still on correct field', 1, Q.FieldByName('id').AsInteger); + AssertEquals('Field value has been fetched from the database', 'abcde', Q.FieldByName('a').AsString); + AssertEquals('Field value has been fetched from the database', 1, Q.FieldByName('b').AsInteger); +end; + +Procedure TTestTSQLQuery.TestGeneratedRefreshSQL; + +var + Q: TSQLQuery; + +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10) default ''abcde'', b varchar(5) default ''fgh'', constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + end; + Q:=SQLDBConnector.Query; + Q.SQL.Text:='select * from FPDEV2'; + Q.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + Q.Open; + With Q.FieldByName('id') do + ProviderFlags:=ProviderFlags+[pfInKey]; + With Q.FieldByName('a') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + With Q.FieldByName('b') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + Q.Insert; + Q.FieldByName('id').AsInteger:=1; + Q.Post; + AssertTrue('Field value has not been fetched after post',Q.FieldByName('a').IsNull); + Q.ApplyUpdates(0); + AssertEquals('Still on correct field',1,Q.FieldByName('id').AsInteger); + AssertEquals('Field value has been fetched from the database ','abcde',Q.FieldByName('a').AsString); + AssertEquals('Field value has been fetched from the database ','fgh',Q.FieldByName('b').AsString); +end; + +Procedure TTestTSQLQuery.TestGeneratedRefreshSQL1Field; +var + Q: TSQLQuery; + +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10) default ''abcde'', b varchar(5) default ''fgh'', constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + end; + Q:=SQLDBConnector.Query; + Q.SQL.Text:='select * from FPDEV2'; + Q.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + Q.Open; + With Q.FieldByName('id') do + ProviderFlags:=ProviderFlags+[pfInKey]; + With Q.FieldByName('a') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + Q.Insert; + Q.FieldByName('id').AsInteger:=1; + Q.Post; + AssertTrue('Field value has not been fetched after post',Q.FieldByName('a').IsNull); + Q.ApplyUpdates(0); + AssertEquals('Still on correct field',1,Q.FieldByName('id').AsInteger); + AssertEquals('Field value a has been fetched from the database ','abcde',Q.FieldByName('a').AsString); + AssertEquals('Field value b has NOT been fetched from the database ','',Q.FieldByName('b').AsString); +end; + +Procedure TTestTSQLQuery.TestGeneratedRefreshSQLNoKey; +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10) default ''abcde'', b varchar(5) default ''fgh'', constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + end; + FMyQ:=SQLDBConnector.Query; + FMyQ.SQL.Text:='select * from FPDEV2'; + FMyQ.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + FMyQ.Open; + With FMyQ.FieldByName('id') do + ProviderFlags:=ProviderFlags-[pfInKey]; + With FMyQ.FieldByName('a') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + FMyQ.Insert; + FMyQ.FieldByName('id').AsInteger:=1; + FMyQ.Post; + AssertException('Cannot refresh without primary key',EUpdateError,@DoApplyUpdates); +end; + +Procedure TTestTSQLQuery.TestRefreshSQLMultipleRecords; + +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10) default ''abcde'', b varchar(5) default ''fgh'', constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + ExecuteDirect('insert into FPDEV2 (id) values (123)'); + if Transaction.Active then + Transaction.Commit; + end; + FMyQ:=SQLDBConnector.Query; + FMyQ.SQL.Text:='select * from FPDEV2'; + FMyQ.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + FMyQ.RefreshSQL.Text:='select * from FPDEV2'; + FMyQ.Open; + With FMyQ.FieldByName('id') do + ProviderFlags:=ProviderFlags+[pfInKey]; + With FMyQ.FieldByName('a') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + FMyQ.Insert; + FMyQ.FieldByName('id').AsInteger:=1; + FMyQ.Post; + AssertException('Multiple records returned by RefreshSQL gives an error',EUpdateError,@DoApplyUpdates); +end; + +Procedure TTestTSQLQuery.TestRefreshSQLNoRecords; +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10) default ''abcde'', b varchar(5) default ''fgh'', constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + ExecuteDirect('insert into FPDEV2 (id) values (123)'); + if Transaction.Active then + Transaction.Commit; + end; + FMyQ:=SQLDBConnector.Query; + FMyQ.SQL.Text:='select * from FPDEV2'; + FMyQ.InsertSQL.Text:='insert into FPDEV2 (id) values (:id)'; + FMyQ.RefreshSQL.Text:='select * from FPDEV2 where 1=2'; + FMyQ.Open; + With FMyQ.FieldByName('id') do + ProviderFlags:=ProviderFlags+[pfInKey]; + With FMyQ.FieldByName('a') do + ProviderFlags:=ProviderFlags+[pfRefreshOnInsert,pfRefreshOnUpdate]; + FMyQ.Insert; + FMyQ.FieldByName('id').AsInteger:=1; + FMyQ.Post; + AssertException('No records returned by RefreshSQL gives an error',EUpdateError,@DoApplyUpdates); +end; + +Procedure TTestTSQLQuery.TestFetchAutoInc; +var datatype: string; + id: largeint; +begin + with SQLDBConnector do + begin + if not (sqLastInsertID in Connection.ConnOptions) then + Ignore(STestNotApplicable); + case SQLServerType of + ssMySQL: + datatype := 'integer auto_increment'; + ssMSSQL, ssSybase: + datatype := 'integer identity'; + ssSQLite: + datatype := 'integer'; + else + Ignore(STestNotApplicable); + end; + ExecuteDirect('create table FPDEV2 (id '+datatype+' primary key, f varchar(5))'); + CommitDDL; + end; + + with SQLDBConnector.Query do + begin + SQL.Text:='select * from FPDEV2'; + Open; + Insert; + FieldByName('f').AsString:='a'; + Post; // #1 record + Append; + FieldByName('f').AsString:='b'; + Post; // #2 record + AssertTrue('ID field is not null after Post', FieldByName('id').IsNull); + First; // #1 record + ApplyUpdates(0); + AssertTrue('ID field is still null after ApplyUpdates', Not FieldByName('id').IsNull); + // Should be 1 after the table was created, but this is not guaranteed... So we just test positive values. + id := FieldByName('id').AsLargeInt; + AssertTrue('ID field has not positive value', id>0); + Next; // #2 record + AssertTrue('Next ID value is not greater than previous', FieldByName('id').AsLargeInt>id); + end; +end; + + { TTestTSQLConnection } -procedure TTestTSQLConnection.ReplaceMe; +procedure TTestTSQLConnection.TestImplicitTransaction; + +Var + T : TSQLTransaction; + +begin + T:=TSQLTransaction.Create(Nil); + try + T.Options:=[stoUseImplicit]; + T.DataBase:=SQLDBConnector.Connection; + finally + T.Free; + end; +end; + +procedure TTestTSQLConnection.TestImplicitTransaction2; + +Var + T : TSQLTransaction; + begin - // replace this procedure with any test for TSQLConnection + T:=TSQLTransaction.Create(Nil); + try + T.Options:=[stoUseImplicit]; + SQLDBConnector.Connection.Transaction:=T; + finally + T.Free; + end; +end; + +procedure TTestTSQLConnection.SetImplicit; + +begin + SQLDBConnector.Transaction.Options:=[stoUseImplicit]; +end; + +procedure TTestTSQLConnection.TestImplicitTransactionNotAssignable; + +begin + AssertException('Cannot set toUseImplicit option if database does not allow it',EDatabaseError,@SetImplicit); + AssertException('Cannot assign database to transaction with toUseImplicit, if database does not allow it',EDatabaseError,@TestImplicitTransaction); + AssertException('Cannot assign transaction with toUseImplicit to database, if database does not allow it',EDatabaseError,@TestImplicitTransaction2); +end; + +procedure TTestTSQLConnection.TestImplicitTransactionOK; + +var + Q : TSQLQuery; + T : TSQLTransaction; + I : Integer; +begin + with SQLDBConnector do + begin + ExecuteDirect('create table FPDEV2 (id integer not null, a varchar(10), constraint PK_FPDEV2 primary key(id))'); + if Transaction.Active then + Transaction.Commit; + end; + SetImplicit; + Q:=SQLDBConnector.Query; + for I:=1 to 2 do + begin + Q.SQL.Text:=Format('INSERT INTO FPDEV2 values (%d,''%.6d'');',[i,i]); + Q.Prepare; + Q.ExecSQL; + // We do not commit anything explicitly. + end; + Q:=Nil; + T:=Nil; + try + T:=TSQLTransaction.Create(Nil); + Q:=TSQLQuery.Create(Nil); + Q.Transaction:=T; + Q.Database:=SQLDBConnector.Connection; + T.Database:=SQLDBConnector.Connection; + Q.SQL.text:='SELECT COUNT(*) from FPDEV2'; + Q.Open; + AssertEquals('Records have been committed to database',2,Q.Fields[0].AsInteger); + finally + Q.Free; + T.Free; + end; +end; + +procedure TTestTSQLConnection.TestUseImplicitTransaction; +begin + if (sqImplicitTransaction in SQLDBConnector.Connection.ConnOptions) then + TestImplicitTransactionOK + else + TestImplicitTransactionNotAssignable; +end; + +procedure TTestTSQLConnection.TryOpen; + +begin + SQLDBConnector.Query.Open; +end; + +procedure TTestTSQLConnection.TestUseExplicitTransaction; +begin + SQLDBConnector.Transaction.Active:=False; + SQLDBConnector.Transaction.Options:=[stoExplicitStart]; + SQLDBConnector.Query.SQL.Text:='select * from FPDEV'; + AssertException('toExplicitStart raises exception on implicit start',EDatabaseError,@TryOpen) +end; + +procedure TTestTSQLConnection.TestExplicitConnect; +begin + SQLDBConnector.Transaction.Active:=False; + SQLDBConnector.Connection.Options:=[scoExplicitConnect]; + SQLDBConnector.Connection.Connected:=False; + SQLDBConnector.Query.SQL.Text:='select * from FPDEV'; + AssertException('toExplicitStart raises exception on implicit start',EDatabaseError,@TryOpen) end; { TTestTSQLScript } @@ -157,21 +727,21 @@ begin try with Ascript do begin - DataBase := TSQLDBConnector(DBConnector).Connection; - Transaction := TSQLDBConnector(DBConnector).Transaction; + DataBase := SQLDBConnector.Connection; + Transaction := SQLDBConnector.Transaction; Script.Clear; Script.Append('create table FPDEV_A (id int);'); Script.Append('create table FPDEV_B (id int);'); ExecuteScript; // Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections - TSQLDBConnector(DBConnector).CommitDDL; + SQLDBConnector.CommitDDL; end; finally AScript.Free; - TSQLDBConnector(DBConnector).ExecuteDirect('drop table FPDEV_A'); - TSQLDBConnector(DBConnector).ExecuteDirect('drop table FPDEV_B'); + SQLDBConnector.ExecuteDirect('drop table FPDEV_A'); + SQLDBConnector.ExecuteDirect('drop table FPDEV_B'); // Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections - TSQLDBConnector(DBConnector).CommitDDL; + SQLDBConnector.CommitDDL; end; end; @@ -186,8 +756,8 @@ begin try with Ascript do begin - DataBase := TSQLDBConnector(DBConnector).Connection; - Transaction := TSQLDBConnector(DBConnector).Transaction; + DataBase := SQLDBConnector.Connection; + Transaction := SQLDBConnector.Transaction; Script.Clear; UseSetTerm := true; // Example procedure that selects table names @@ -210,13 +780,13 @@ begin ); ExecuteScript; // Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections - TSQLDBConnector(DBConnector).CommitDDL; + SQLDBConnector.CommitDDL; end; finally AScript.Free; - TSQLDBConnector(DBConnector).ExecuteDirect('DROP PROCEDURE FPDEV_TESTCOLON'); + SQLDBConnector.ExecuteDirect('DROP PROCEDURE FPDEV_TESTCOLON'); // Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections - TSQLDBConnector(DBConnector).CommitDDL; + SQLDBConnector.CommitDDL; end; end; @@ -234,8 +804,8 @@ begin try with Ascript do begin - DataBase := TSQLDBConnector(DBConnector).Connection; - Transaction := TSQLDBConnector(DBConnector).Transaction; + DataBase := SQLDBConnector.Connection; + Transaction := SQLDBConnector.Transaction; Script.Clear; UseCommit:=true; // Example procedure that selects table names @@ -245,9 +815,9 @@ begin Script.Append('COMMIT;'); ExecuteScript; // This line should not run, as the commit above should have taken care of it: - //TSQLDBConnector(DBConnector).CommitDDL; + //SQLDBConnector.CommitDDL; // Test whether second line of script executed, just to be sure - CheckQuery:=TSQLDBConnector(DBConnector).Query; + CheckQuery:=SQLDBConnector.Query; CheckQuery.SQL.Text:='SELECT logmessage FROM fpdev_scriptusecommit '; CheckQuery.Open; CheckEquals(TestValue, CheckQuery.Fields[0].AsString, 'Insert script line should have inserted '+TestValue); @@ -255,13 +825,18 @@ begin end; finally AScript.Free; - TSQLDBConnector(DBConnector).ExecuteDirect('DROP TABLE fpdev_scriptusecommit'); - TSQLDBConnector(DBConnector).Transaction.Commit; + SQLDBConnector.ExecuteDirect('DROP TABLE fpdev_scriptusecommit'); + SQLDBConnector.Transaction.Commit; end; end; { TSQLDBTestCase } +function TSQLDBTestCase.GetSQLDBConnector: TSQLDBConnector; +begin + Result:=DBConnector as TSQLDBConnector; +end; + procedure TSQLDBTestCase.SetUp; begin inherited SetUp; @@ -273,8 +848,9 @@ procedure TSQLDBTestCase.TearDown; begin DBConnector.StopTest(TestName); if assigned(DBConnector) then - with TSQLDBConnector(DBConnector) do - Transaction.Rollback; + with SQLDBConnector do + if Assigned(Transaction) and Transaction.Active and not (stoUseImplicit in Transaction.Options) then + Transaction.Rollback; FreeDBConnector; inherited TearDown; end; |