Browse Source

Merged revisions 6888,6890 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r6888 | florian | 2007-03-16 21:04:39 +0100 (Fri, 16 Mar 2007) | 2 lines

* sparc uses softfloat routines so softfloat exception masking needs to be set properly

........
r6890 | jonas | 2007-03-16 22:14:57 +0100 (Fri, 16 Mar 2007) | 2 lines

* compile for solaris

........

git-svn-id: branches/fixes_2_2@6893 -

Jonas Maebe 18 years ago
parent
commit
ce88995e31

+ 7 - 3
packages/fcl-db/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/03/16]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/03/04]
 #
 #
 default: all
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
@@ -254,7 +254,7 @@ ifeq ($(FULL_TARGET),i386-netbsd)
 override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_DIRS+=src/sdf src/memds src/sqldb
+override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
 override TARGET_DIRS+=src/sdf src/memds src/sqldb
 override TARGET_DIRS+=src/sdf src/memds src/sqldb
@@ -341,7 +341,7 @@ ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_DIRS+=src/sdf src/memds src/sqldb
+override TARGET_DIRS+=src/sdf src/memds src/sqldb  src/sqlite
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=src/sdf src/memds src/sqldb
 override TARGET_DIRS+=src/sdf src/memds src/sqldb
@@ -2033,6 +2033,7 @@ REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
 REQUIRE_PACKAGES_LIBASYNC=1
 REQUIRE_PACKAGES_PTHREADS=1
 REQUIRE_PACKAGES_PTHREADS=1
 REQUIRE_PACKAGES_FCL-BASE=1
 REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_SQLITE=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
@@ -2309,6 +2310,7 @@ REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
 REQUIRE_PACKAGES_LIBASYNC=1
 REQUIRE_PACKAGES_PTHREADS=1
 REQUIRE_PACKAGES_PTHREADS=1
 REQUIRE_PACKAGES_FCL-BASE=1
 REQUIRE_PACKAGES_FCL-BASE=1
+REQUIRE_PACKAGES_SQLITE=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
 REQUIRE_PACKAGES_RTL=1
 REQUIRE_PACKAGES_RTL=1
@@ -3427,6 +3429,7 @@ ifeq ($(FULL_TARGET),i386-solaris)
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/MEMDS=1
 TARGET_DIRS_SRC/MEMDS=1
 TARGET_DIRS_SRC/SQLDB=1
 TARGET_DIRS_SRC/SQLDB=1
+TARGET_DIRS_SRC/SQLITE=1
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/SDF=1
@@ -3589,6 +3592,7 @@ ifeq ($(FULL_TARGET),sparc-solaris)
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/MEMDS=1
 TARGET_DIRS_SRC/MEMDS=1
 TARGET_DIRS_SRC/SQLDB=1
 TARGET_DIRS_SRC/SQLDB=1
+TARGET_DIRS_SRC/SQLITE=1
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
 TARGET_DIRS_SRC/SDF=1
 TARGET_DIRS_SRC/SDF=1

+ 1 - 0
packages/fcl-db/Makefile.fpc

@@ -11,6 +11,7 @@ dirs=src/sdf src/memds src/sqldb
 dirs_linux=src/dbase src/sqlite
 dirs_linux=src/dbase src/sqlite
 dirs_freebsd=src/dbase src/sqlite
 dirs_freebsd=src/dbase src/sqlite
 dirs_darwin=src/sqlite
 dirs_darwin=src/sqlite
+dirs_solaris=src/sqlite
 dirs_netbsd=src/sqlite
 dirs_netbsd=src/sqlite
 dirs_openbsd=src/sqlite
 dirs_openbsd=src/sqlite
 dirs_win32=src/dbase src/sqlite
 dirs_win32=src/dbase src/sqlite

+ 2 - 2
packages/fcl-image/Makefile

@@ -254,7 +254,7 @@ ifeq ($(FULL_TARGET),i386-netbsd)
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
+override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation  freetypeh freetype ftfont
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
@@ -341,7 +341,7 @@ ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
+override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation  freetypeh freetype ftfont
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
 override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation

+ 1 - 0
packages/fcl-image/Makefile.fpc

@@ -16,6 +16,7 @@ units_win32=freetypeh freetype ftfont
 units_linux=freetypeh freetype ftfont
 units_linux=freetypeh freetype ftfont
 units_freebsd=freetypeh freetype ftfont
 units_freebsd=freetypeh freetype ftfont
 units_darwin=freetypeh freetype ftfont
 units_darwin=freetypeh freetype ftfont
+units_solaris=freetypeh freetype ftfont
 rsts=pscanvas
 rsts=pscanvas
 examples=imgconv
 examples=imgconv
 
 

+ 6 - 0
packages/fcl-net/Makefile

@@ -241,6 +241,9 @@ endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
 override TARGET_PROGRAMS+=mkxmlrpc
 override TARGET_PROGRAMS+=mkxmlrpc
 endif
 endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_PROGRAMS+=mkxmlrpc
+endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
 override TARGET_PROGRAMS+=mkxmlrpc
 override TARGET_PROGRAMS+=mkxmlrpc
 endif
 endif
@@ -274,6 +277,9 @@ endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_PROGRAMS+=mkxmlrpc
 override TARGET_PROGRAMS+=mkxmlrpc
 endif
 endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_PROGRAMS+=mkxmlrpc
+endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
 override TARGET_PROGRAMS+=mkxmlrpc
 override TARGET_PROGRAMS+=mkxmlrpc
 endif
 endif

+ 1 - 0
packages/fcl-net/Makefile.fpc

@@ -15,6 +15,7 @@ units_openbsd=fpsock httpbase httpclient httpsvlt xmlrpc
 programs_linux=mkxmlrpc
 programs_linux=mkxmlrpc
 programs_freebsd=mkxmlrpc
 programs_freebsd=mkxmlrpc
 programs_darwin=mkxmlrpc
 programs_darwin=mkxmlrpc
+programs_solaris=mkxmlrpc
 programs_netbsd=mkxmlrpc
 programs_netbsd=mkxmlrpc
 programs_openbsd=mkxmlrpc
 programs_openbsd=mkxmlrpc
 rsts_linux=fpsock httpsvlt mkxmlrpc
 rsts_linux=fpsock httpsvlt mkxmlrpc

+ 2 - 1
rtl/sparc/mathu.inc

@@ -21,7 +21,6 @@ function GetRoundMode: TFPURoundingMode;
     result:=TFPURoundingMode(get_fsr shr 30);
     result:=TFPURoundingMode(get_fsr shr 30);
   end;
   end;
 
 
-
 function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
 function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
   begin
   begin
     set_fsr((get_fsr and $3fffffff) or (dword(RoundMode) shl 30));
     set_fsr((get_fsr and $3fffffff) or (dword(RoundMode) shl 30));
@@ -108,6 +107,8 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
 
 
     { update control register contents }
     { update control register contents }
     set_fsr(fsr);
     set_fsr(fsr);
+
+    softfloat_exception_mask:=dword(Mask);
   end;
   end;
 
 
 
 

+ 12 - 3
rtl/sparc/sparc.inc

@@ -45,14 +45,23 @@ function get_got : pointer;assembler;nostackframe;[public, alias: 'FPC_GETGOT'];
   end;
   end;
 
 
 
 
-procedure fpc_cpuinit;
+{$define FPC_SYSTEM_HAS_SYSRESETFPU}
+Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
-    { enable div by 0 and invalid operation fpu exceptions }
-    { round towards zero; ieee compliant arithmetics }
+    softfloat_exception_flags:=0;
+    softfloat_exception_mask:=float_flag_underflow or float_flag_inexact or float_flag_denormal;
+    { enable div by 0 and invalid operation fpu exceptions
+      round towards zero; ieee compliant arithmetics }
     set_fsr((get_fsr and $3fbfffff) or $09000000);
     set_fsr((get_fsr and $3fbfffff) or $09000000);
   end;
   end;
 
 
 
 
+procedure fpc_cpuinit;
+  begin
+    SysResetFPU;
+  end;
+
+
 {$define FPC_SYSTEM_HAS_GET_FRAME}
 {$define FPC_SYSTEM_HAS_GET_FRAME}
 function get_frame:pointer;assembler;nostackframe;
 function get_frame:pointer;assembler;nostackframe;
   asm
   asm