Explorar el Código

o initial work to introduce a basemath unit which does not depend on sysutils
+ unit for x86_64-linux added
+ building and dependencies added
* macpas does not use math anymore

florian hace 1 año
padre
commit
68b1774f52

+ 4 - 2
rtl/aix/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2272,7 +2274,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2461,7 +2463,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/amiga/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2299,7 +2301,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2488,7 +2490,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/android/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2421,7 +2423,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2610,7 +2612,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/aros/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2314,7 +2316,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2503,7 +2505,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/atari/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2269,7 +2271,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2458,7 +2460,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/beos/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2278,7 +2280,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2467,7 +2469,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/darwin/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2392,7 +2394,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2581,7 +2583,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/dragonfly/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2286,7 +2288,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2475,7 +2477,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/embedded/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2651,7 +2653,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2840,7 +2842,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/emx/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2278,7 +2280,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2467,7 +2469,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 6 - 0
rtl/fpmake.pp

@@ -121,6 +121,7 @@ begin
       T.Dependencies.AddUnit('system');
     T:=P.Targets.AddUnit('macpas.pp');
       T.Dependencies.AddUnit('system');
+      T.Dependencies.AddUnit('basemath');
 
     // Unix units
     T:=P.Targets.AddUnit('unixtype.pp',AllUnixOSes);
@@ -544,9 +545,14 @@ begin
     T:=P.Targets.AddUnit('fmtbcd.pp');
       T.Dependencies.AddUnit('sysutils');
       T.Dependencies.AddUnit('variants');
+
+    T:=P.Targets.AddUnit('basemath.pp');
+      T.Dependencies.AddInclude('basemath.inc');
+
     T:=P.Targets.AddUnit('math.pp');
       With T.Dependencies do
         begin
+          AddUnit('basemath');
           AddUnit('sysutils');
           AddInclude('mathu.inc');
         end;

+ 4 - 2
rtl/freebsd/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2328,7 +2330,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2517,7 +2519,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/freertos/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2468,7 +2470,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2657,7 +2659,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/gba/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2267,7 +2269,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2456,7 +2458,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/go32v2/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2280,7 +2282,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2469,7 +2471,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/haiku/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2310,7 +2312,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2499,7 +2501,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/human68k/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2269,7 +2271,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2458,7 +2460,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/inc/Makefile.rtl

@@ -16,6 +16,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -269,6 +270,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -711,7 +713,7 @@ objpas$(PPUEXT): $(OBJPAS_DEPS)
 # macpas
 
 MACPAS_DEPS=$(INC)/macpas.pp \
-            $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+            $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
             $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 
 macpas$(PPUEXT) : $(MACPAS_DEPS)
@@ -1060,7 +1062,7 @@ System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 # Math
 #
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-           $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+           $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
            $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 
 math$(PPUEXT): $(MATH_DEPS)

+ 69 - 0
rtl/inc/basemath.pp

@@ -0,0 +1,69 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2005 by Florian Klaempfl
+    member of the Free Pascal development team
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+{-------------------------------------------------------------------------
+ Using functions from AMath/DAMath libraries, which are covered by the
+ following license:
+
+ (C) Copyright 2009-2013 Wolfgang Ehrhardt
+
+ This software is provided 'as-is', without any express or implied warranty.
+ In no event will the authors be held liable for any damages arising from
+ the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software in
+    a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+    misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+----------------------------------------------------------------------------}
+
+{$MODE objfpc}
+{$inline on }
+{$GOTO on}
+{$IFNDEF FPC_DOTTEDUNITS}
+unit BaseMath;
+{$ENDIF FPC_DOTTEDUNITS}
+interface
+
+{ cpu specific stuff }
+
+type
+  TFPURoundingMode = system.TFPURoundingMode;
+  TFPUPrecisionMode = system.TFPUPrecisionMode;
+  TFPUException = system.TFPUException;
+  TFPUExceptionMask = system.TFPUExceptionMask;
+
+function GetRoundMode: TFPURoundingMode;
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+function GetPrecisionMode: TFPUPrecisionMode;
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+function GetExceptionMask: TFPUExceptionMask;
+function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
+procedure ClearExceptions(RaisePending: Boolean =true);
+
+implementation
+
+{ include CPU specific stuff }
+
+{$I basemath.inc}
+
+end.

+ 2 - 2
rtl/inc/macpas.pp

@@ -111,10 +111,10 @@ implementation
 
 {$IFDEF FPC_DOTTEDUNITS}
 uses
-  System.Math;
+  System.BaseMath;
 {$ELSE}  
 uses
-  math;
+  basemath;
 {$ENDIF}  
 
 {$r-}

+ 4 - 2
rtl/java/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2240,7 +2242,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2429,7 +2431,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 23 - 21
rtl/linux/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -976,58 +978,58 @@ override FPCOPT+=-Ur
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),armeb-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mipsel-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),mips64el-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),aarch64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),sparc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),riscv32-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),riscv64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),xtensa-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) $(UUCHARUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(BASEUNIXUNIT) $(STRINGSUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(SYSCALLUNIT) $(UNIXUTILUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) $(LINUXVCSUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CTHREADSUNIT) $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(RTLCONSTSUNIT) $(DOSUNIT) $(CWSTRINGUNIT) $(FPCYLIXUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-linux)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
@@ -1408,7 +1410,7 @@ endif
 ifeq ($(CPU_OS_TARGET),loongarch64-linux)
 override COMPILER_TARGETDIR+=.
 endif
-override SHARED_LIBUNITS=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(UNIXUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) $(CPU_UNITS) $(GETOPTSUNIT) $(ERRORSUNIT)  $(CLASSESUNIT) $(FGLUNIT) $(SYSCONSTUNIT) $(SYSCALLUNIT) $(RTLCONSTSUNIT) $(TYPESUNIT) $(LINUXUNIT) $(SORTBASEUNIT)
+override SHARED_LIBUNITS=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(UNIXUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT) $(CPU_UNITS) $(GETOPTSUNIT) $(ERRORSUNIT)  $(CLASSESUNIT) $(FGLUNIT) $(SYSCONSTUNIT) $(SYSCALLUNIT) $(RTLCONSTSUNIT) $(TYPESUNIT) $(LINUXUNIT) $(SORTBASEUNIT)
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 endif
@@ -2887,7 +2889,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -3076,7 +3078,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 2 - 2
rtl/linux/Makefile.fpc

@@ -12,7 +12,7 @@ units=$(SYSTEMUNIT) $(FPINTRESUNIT) $(SYSINIT_UNITS) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) \
       $(TERMIOUNIT) $(UNIXUNIT) $(LINUXUNIT) $(INITCUNIT) $(CMEMUNIT) $(CPU_UNITS) \
       $(LINUXVCSUNIT) \
-      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT)   \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT)   \
       $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(UNIXCPUNIT) $(GETOPTSUNIT) \
       $(ERRORSUNIT) $(DLUNIT) $(DYNLIBSUNIT) \
       $(TYPESUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) \
@@ -43,7 +43,7 @@ targetdir=.
 [shared]
 libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) $(DOSUNIT) \
       $(UNIXUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(UNIXUTILUNIT) \
-      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
+      $(SYSUTILSUNIT) $(TYPINFOUNIT) $(BASEMATHUNIT) $(MATHUNIT) \
       $(CPU_UNITS) $(GETOPTSUNIT) \
       $(ERRORSUNIT)  \
       $(CLASSESUNIT) $(FGLUNIT) $(SYSCONSTUNIT) $(SYSCALLUNIT) $(RTLCONSTSUNIT) $(TYPESUNIT) \

+ 4 - 2
rtl/macos/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2258,7 +2260,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2447,7 +2449,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/morphos/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2241,7 +2243,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2430,7 +2432,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/msdos/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2272,7 +2274,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2461,7 +2463,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/msxdos/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2242,7 +2244,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2431,7 +2433,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 3 - 0
rtl/namespaced/common/System.BaseMath.pp

@@ -0,0 +1,3 @@
+unit System.BaseMath;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i basemath.pp}

+ 4 - 2
rtl/nativent/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2248,7 +2250,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2437,7 +2439,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/nds/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2270,7 +2272,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2459,7 +2461,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/netbsd/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2380,7 +2382,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2569,7 +2571,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/netware/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2285,7 +2287,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2474,7 +2476,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/netwlibc/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2273,7 +2275,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2462,7 +2464,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 52 - 8
rtl/objpas/math.pp

@@ -56,10 +56,10 @@ interface
 {$ifndef FPUNONE}
 {$IFDEF FPC_DOTTEDUNITS}
     uses
-       System.SysUtils;
+       System.BaseMath, System.SysUtils;
 {$ELSE FPC_DOTTEDUNITS}
     uses
-       sysutils;
+       basemath, sysutils;
 {$ENDIF FPC_DOTTEDUNITS}
 
 {$IFDEF FPDOC_MATH}
@@ -855,21 +855,65 @@ generic function RandomFrom<T>(const AValues:array of T):T;
 { cpu specific stuff }
 
 type
-  TFPURoundingMode = system.TFPURoundingMode;
-  TFPUPrecisionMode = system.TFPUPrecisionMode;
-  TFPUException = system.TFPUException;
-  TFPUExceptionMask = system.TFPUExceptionMask;
+  TFPURoundingMode = basemath.TFPURoundingMode;
+  TFPUPrecisionMode = basemath.TFPUPrecisionMode;
+  TFPUException = basemath.TFPUException;
+  TFPUExceptionMask = basemath.TFPUExceptionMask;
+
+function GetRoundMode: TFPURoundingMode; inline;
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode; inline;
+function GetPrecisionMode: TFPUPrecisionMode; inline;
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode; inline;
+function GetExceptionMask: TFPUExceptionMask; inline;
+function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask; inline;
+procedure ClearExceptions(RaisePending: Boolean =true); inline;
+
+
+implementation
+
+{ redirections to basemath }
 
 function GetRoundMode: TFPURoundingMode;
+  begin
+    Result:=BaseMath.GetRoundMode;
+  end;
+
+
 function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+  begin
+    Result:=BaseMath.SetRoundMode(RoundMode);
+  end;
+
+  
 function GetPrecisionMode: TFPUPrecisionMode;
+  begin
+    Result:=BaseMath.GetPrecisionMode;
+  end;
+
+
 function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+  begin
+    Result:=BaseMath.SetPrecisionMode(Precision);
+  end;
+
+
 function GetExceptionMask: TFPUExceptionMask;
+  begin
+    Result:=BaseMath.GetExceptionMask;
+  end;
+
+
 function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-procedure ClearExceptions(RaisePending: Boolean =true);
+  begin
+    Result:=BaseMath.SetExceptionMask(Mask);
+  end;
 
 
-implementation
+procedure ClearExceptions(RaisePending: Boolean =true);
+  begin
+    BaseMath.ClearExceptions(RaisePending);
+  end;
+
 
 function copysign(x,y: float): float; forward;    { returns abs(x)*sign(y) }
 

+ 4 - 2
rtl/openbsd/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2313,7 +2315,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2502,7 +2504,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/os2/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2277,7 +2279,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2466,7 +2468,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/palmos/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2280,7 +2282,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2469,7 +2471,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/sinclairql/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2269,7 +2271,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2458,7 +2460,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/solaris/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2285,7 +2287,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2474,7 +2476,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/symbian/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2263,7 +2265,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2452,7 +2454,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/wasi/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2246,7 +2248,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2435,7 +2437,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/watcom/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2276,7 +2278,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2465,7 +2467,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/wii/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2239,7 +2241,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2428,7 +2430,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/win16/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2275,7 +2277,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2464,7 +2466,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/win32/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2286,7 +2288,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2475,7 +2477,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/win64/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2307,7 +2309,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2496,7 +2498,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 4 - 2
rtl/wince/Makefile

@@ -374,6 +374,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -621,6 +622,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2265,7 +2267,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2454,7 +2456,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<

+ 89 - 0
rtl/x86_64/basemath.inc

@@ -0,0 +1,89 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2004 by Florian Klaempfl
+    member of the Free Pascal development team
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+**********************************************************************}
+
+{$asmmode gas}
+function GetRoundMode: TFPURoundingMode;
+begin
+{$ifndef FPC_HAS_TYPE_EXTENDED}
+  Result:=TFPURoundingMode((GetMXCSR shr 13) and $3);
+{$else win64}
+  Result:=TFPURoundingMode((Get8087CW shr 10) and $3);
+{$endif win64}
+end;
+
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+var
+  CtlWord: Word;
+  SSECSR: dword;
+begin
+  CtlWord:=Get8087CW;
+  SSECSR:=GetMXCSR;
+  softfloat_rounding_mode:=RoundMode;
+  Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
+  SetMXCSR((SSECSR and $ffff9fff) or (dword(RoundMode) shl 13));
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+  Result:=TFPURoundingMode((CtlWord shr 10) and 3);
+{$else}
+  Result:=TFPURoundingMode((SSECSR shr 13) and 3);
+{$endif FPC_HAS_TYPE_EXTENDED}
+end;
+
+function GetPrecisionMode: TFPUPrecisionMode;
+begin
+  Result:=TFPUPrecisionMode((Get8087CW shr 8) and 3);
+end;
+
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+var
+  CtlWord: Word;
+begin
+  CtlWord:=Get8087CW;
+  Set8087CW((CtlWord and $FCFF) or (Ord(Precision) shl 8));
+  Result:=TFPUPrecisionMode((CtlWord shr 8) and 3);
+end;
+
+function GetExceptionMask: TFPUExceptionMask;
+begin
+{$ifndef FPC_HAS_TYPE_EXTENDED}
+  Result:=TFPUExceptionMask(dword((GetMXCSR shr 7) and $3f));
+{$else win64}
+  Result:=TFPUExceptionMask(dword(Get8087CW and $3F));
+{$endif win64}
+end;
+
+function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
+var
+  CtlWord: Word;
+  SSECSR: dword;
+begin
+  CtlWord:=Get8087CW;
+  SSECSR:=GetMXCSR;
+  Set8087CW((CtlWord and $FFC0) or Byte(Longint(Mask)));
+  SetMXCSR((SSECSR and $ffffe07f) or (dword(Mask) shl 7));
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+  Result:=TFPUExceptionMask(dword(CtlWord and $3F));
+{$else}
+  Result:=TFPUExceptionMask((SSECSR shr 7) and $3F);
+{$endif FPC_HAS_TYPE_EXTENDED}
+end;
+
+
+procedure ClearExceptions(RaisePending: Boolean);assembler;
+asm
+  cmpb $0,RaisePending
+  je .Lclear
+  fwait
+.Lclear:
+  fnclex
+end;

+ 0 - 77
rtl/x86_64/mathu.inc

@@ -182,80 +182,3 @@ asm
   mov [rcx], edx
 {$endif WIN64}
 end;
-
-
-{$asmmode gas}
-function GetRoundMode: TFPURoundingMode;
-begin
-{$ifndef FPC_HAS_TYPE_EXTENDED}
-  Result:=TFPURoundingMode((GetMXCSR shr 13) and $3);
-{$else win64}
-  Result:=TFPURoundingMode((Get8087CW shr 10) and $3);
-{$endif win64}
-end;
-
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-var
-  CtlWord: Word;
-  SSECSR: dword;
-begin
-  CtlWord:=Get8087CW;
-  SSECSR:=GetMXCSR;
-  softfloat_rounding_mode:=RoundMode;
-  Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
-  SetMXCSR((SSECSR and $ffff9fff) or (dword(RoundMode) shl 13));
-{$ifdef FPC_HAS_TYPE_EXTENDED}
-  Result:=TFPURoundingMode((CtlWord shr 10) and 3);
-{$else}
-  Result:=TFPURoundingMode((SSECSR shr 13) and 3);
-{$endif FPC_HAS_TYPE_EXTENDED}
-end;
-
-function GetPrecisionMode: TFPUPrecisionMode;
-begin
-  Result:=TFPUPrecisionMode((Get8087CW shr 8) and 3);
-end;
-
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-var
-  CtlWord: Word;
-begin
-  CtlWord:=Get8087CW;
-  Set8087CW((CtlWord and $FCFF) or (Ord(Precision) shl 8));
-  Result:=TFPUPrecisionMode((CtlWord shr 8) and 3);
-end;
-
-function GetExceptionMask: TFPUExceptionMask;
-begin
-{$ifndef FPC_HAS_TYPE_EXTENDED}
-  Result:=TFPUExceptionMask(dword((GetMXCSR shr 7) and $3f));
-{$else win64}
-  Result:=TFPUExceptionMask(dword(Get8087CW and $3F));
-{$endif win64}
-end;
-
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-var
-  CtlWord: Word;
-  SSECSR: dword;
-begin
-  CtlWord:=Get8087CW;
-  SSECSR:=GetMXCSR;
-  Set8087CW((CtlWord and $FFC0) or Byte(Longint(Mask)));
-  SetMXCSR((SSECSR and $ffffe07f) or (dword(Mask) shl 7));
-{$ifdef FPC_HAS_TYPE_EXTENDED}
-  Result:=TFPUExceptionMask(dword(CtlWord and $3F));
-{$else}
-  Result:=TFPUExceptionMask((SSECSR shr 7) and $3F);
-{$endif FPC_HAS_TYPE_EXTENDED}
-end;
-
-
-procedure ClearExceptions(RaisePending: Boolean);assembler;
-asm
-  cmpb $0,RaisePending
-  je .Lclear
-  fwait
-.Lclear:
-  fnclex
-end;

+ 4 - 2
rtl/zxspectrum/Makefile

@@ -375,6 +375,7 @@ AIOUNIT=NetWareApi.Aio
 ALLWINNER_A20UNIT=Embedded.Allwinner_a20
 ANDROIDR14UNIT=AndroidAPI.AndroidR14
 ATHREADSUNIT=AmigaApi.AThreads
+BASEMATHUNIT=System.BaseMath
 BASEUNIXUNIT=UnixApi.Base
 BETHREADSUNIT=BeosApi.Bethreads
 BLOCKRTLUNIT=blockrtl
@@ -622,6 +623,7 @@ AIOUNIT=aio
 ALLWINNER_A20UNIT=allwinner_a20
 ANDROIDR14UNIT=androidr14
 ATHREADSUNIT=athreads
+BASEMATHUNIT=basemath
 BASEUNIXUNIT=baseunix
 BETHREADSUNIT=bethreads
 BLOCKRTLUNIT=blockrtl
@@ -2238,7 +2240,7 @@ OBJPAS_DEPS= $(OBJPASDIR)/objpas.pp $(INC)/except.inc \
 objpas$(PPUEXT): $(OBJPAS_DEPS)
 	$(COMPILER) $(OBJPAS_OPT) -Fi$(OBJPASDIR) $<
 MACPAS_DEPS=$(INC)/macpas.pp \
-	    $(OBJPASUNIT)$(PPUEXT) $(MATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	    $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	    $(MACPAS_DEPS_OS)  $(MACPAS_DEPS_CPU)
 macpas$(PPUEXT) : $(MACPAS_DEPS)
 	$(COMPILER) $(MACPAS_OPT) $<
@@ -2427,7 +2429,7 @@ character$(PPUEXT): $(CHARACTER_DEPS)
 System.Character$(PPUEXT): $(NSINC)/System.Character.pas $(CHARACTER_DEPS)
 	$(COMPILER) $(CHARACTER_OPT) -Fi$(OBJPASDIR) $<
 MATH_DEPS= $(OBJPASDIR)/math.pp $(PROCINC)/mathu.inc \
-	   $(OBJPASUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
+	   $(OBJPASUNIT)$(PPUEXT) $(BASEMATHUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
 	   $(MATH_DEPS_OS) $(MATH_DEPS_CPU)
 math$(PPUEXT): $(MATH_DEPS)
 	$(COMPILER) $(MATH_OPT) $<