View | Details | Raw Unified | Return to bug 251870 | Differences between
and this patch

Collapse All | Expand All

(-)Makefile (-1 / +1 lines)
Lines 17-23 Link Here
17
BUILD_DEPENDS=	${JAVALIBDIR}/swt.jar:x11-toolkits/swt
17
BUILD_DEPENDS=	${JAVALIBDIR}/swt.jar:x11-toolkits/swt
18
RUN_DEPENDS=	${JAVALIBDIR}/swt.jar:x11-toolkits/swt
18
RUN_DEPENDS=	${JAVALIBDIR}/swt.jar:x11-toolkits/swt
19
19
20
ONLY_FOR_ARCHS=	i386 amd64
20
ONLY_FOR_ARCHS=	i386 amd64 powerpc64
21
21
22
USES=		compiler tar:xz xorg
22
USES=		compiler tar:xz xorg
23
23
(-)files/patch-freebsd (-3 / +91 lines)
Lines 22-28 Link Here
22
         <syslibset dir="/usr/local/lib" libs="X11"/>
22
         <syslibset dir="/usr/local/lib" libs="X11"/>
23
       </linker>
23
       </linker>
24
 
24
 
25
@@ -1401,7 +1401,7 @@
25
@@ -1211,6 +1211,10 @@
26
         <syslibset dir="/usr/local/lib" libs="X11"/>
27
       </linker>
28
 
29
+      <linker id="linker.cfg.freebsd.ppc.jogl.x11" extends="linker.cfg.freebsd.ppc">
30
+        <syslibset dir="/usr/local/lib" libs="X11"/>
31
+      </linker>
32
+
33
       <linker id="linker.cfg.linux.jogl.x11" extends="linker.cfg.linux">
34
         <syslibset libs="X11"/>
35
       </linker>
36
@@ -1401,7 +1405,7 @@
26
     <target name="c.configure.freebsd.x86" depends="c.configure.x11" if="isFreeBSDX86">
37
     <target name="c.configure.freebsd.x86" depends="c.configure.x11" if="isFreeBSDX86">
27
       <echo message="FreeBSD" />
38
       <echo message="FreeBSD" />
28
       <property name="compiler.cfg.id"                     value="compiler.cfg.freebsd.jogl" />
39
       <property name="compiler.cfg.id"                     value="compiler.cfg.freebsd.jogl" />
Lines 31-36 Link Here
31
     </target>
42
     </target>
32
 
43
 
33
     <target name="c.configure.freebsd.amd64" depends="c.configure.x11" if="isFreeBSDAMD64">
44
     <target name="c.configure.freebsd.amd64" depends="c.configure.x11" if="isFreeBSDAMD64">
45
@@ -1410,7 +1414,13 @@
46
       <property name="linker.cfg.id.os"                    value="linker.cfg.freebsd.amd64.jogl.x11" />
47
     </target>
48
 
49
-    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.x11" if="isFreeBSD" />
50
+    <target name="c.configure.freebsd.ppc" depends="c.configure.x11" if="isFreeBSDPpc">
51
+      <echo message="FreeBSD" />
52
+      <property name="compiler.cfg.id"                     value="compiler.cfg.freebsd.jogl" />
53
+      <property name="linker.cfg.id.os"                    value="linker.cfg.freebsd.ppc.jogl.x11" />
54
+    </target>
55
+
56
+    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.freebsd.ppc,c.configure.x11" if="isFreeBSD" />
57
 
58
     <target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX">
59
       <echo message="HP-UX" />
34
--- jogl/make/build-nativewindow.xml.orig	2015-10-10 01:08:14 UTC
60
--- jogl/make/build-nativewindow.xml.orig	2015-10-10 01:08:14 UTC
35
+++ jogl/make/build-nativewindow.xml
61
+++ jogl/make/build-nativewindow.xml
36
@@ -373,7 +373,7 @@
62
@@ -373,7 +373,7 @@
Lines 42-48 Link Here
42
         <syslibset dir="/usr/local/lib" libs="X11"/>
68
         <syslibset dir="/usr/local/lib" libs="X11"/>
43
         <syslibset dir="/usr/local/lib" libs="Xxf86vm" />
69
         <syslibset dir="/usr/local/lib" libs="Xxf86vm" />
44
         <syslibset dir="/usr/local/lib" libs="Xrender"/>
70
         <syslibset dir="/usr/local/lib" libs="Xrender"/>
45
@@ -582,7 +582,7 @@
71
@@ -385,6 +385,12 @@
72
         <syslibset dir="/usr/local/lib" libs="Xrender"/>
73
       </linker>
74
 
75
+      <linker id="linker.cfg.freebsd.ppc.nativewindow.x11" extends="linker.cfg.freebsd.ppc">
76
+        <syslibset dir="/usr/local/lib" libs="X11" />
77
+        <syslibset dir="/usr/local/lib" libs="Xxf86vm" />
78
+        <syslibset dir="/usr/local/lib" libs="Xrender"/>
79
+      </linker>
80
+
81
       <linker id="linker.cfg.linux.nativewindow.x11" extends="linker.cfg.linux">
82
         <syslibset libs="X11"/>
83
         <syslibset libs="Xxf86vm" />
84
@@ -582,7 +588,7 @@
46
     <target name="c.configure.freebsd.x86" if="isFreeBSDX86">
85
     <target name="c.configure.freebsd.x86" if="isFreeBSDX86">
47
       <echo message="FreeBSD.x86" />
86
       <echo message="FreeBSD.x86" />
48
       <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.nativewindow" />
87
       <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.nativewindow" />
Lines 51-56 Link Here
51
     </target>
90
     </target>
52
     
91
     
53
     <target name="c.configure.freebsd.amd64" if="isFreeBSDAMD64">
92
     <target name="c.configure.freebsd.amd64" if="isFreeBSDAMD64">
93
@@ -590,8 +596,14 @@
94
       <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.nativewindow" />
95
       <property name="linker.cfg.id.oswin"                  value="linker.cfg.freebsd.amd64.nativewindow.x11" />
96
     </target>
97
+   
98
+    <target name="c.configure.freebsd.ppc" if="isFreeBSDPpc">
99
+      <echo message="FreeBSD.Ppc" />
100
+      <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.nativewindow" />
101
+      <property name="linker.cfg.id.oswin"                  value="linker.cfg.freebsd.ppc.nativewindow.x11" />
102
+    </target>
103
     
104
-    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.x11" if="isFreeBSD" />
105
+    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.freebsd.ppc,c.configure.x11" if="isFreeBSD" />
106
 
107
     <target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX">
108
       <echo message="HP-UX" />
54
--- jogl/make/build-newt.xml.orig	2015-10-10 01:08:14 UTC
109
--- jogl/make/build-newt.xml.orig	2015-10-10 01:08:14 UTC
55
+++ jogl/make/build-newt.xml
110
+++ jogl/make/build-newt.xml
56
@@ -289,7 +289,7 @@
111
@@ -289,7 +289,7 @@
Lines 62-68 Link Here
62
         <linkerarg value="-L/usr/local/lib"/>
117
         <linkerarg value="-L/usr/local/lib"/>
63
         <syslibset libs="X11"/>
118
         <syslibset libs="X11"/>
64
         <syslibset libs="Xrandr"/>
119
         <syslibset libs="Xrandr"/>
65
@@ -560,8 +560,8 @@
120
@@ -303,6 +303,13 @@
121
         <syslibset libs="Xcursor"/>
122
       </linker>
123
 
124
+      <linker id="linker.cfg.freebsd.ppc.newt.x11" extends="linker.cfg.freebsd.ppc">
125
+        <linkerarg value="-L/usr/local/lib"/>
126
+        <syslibset libs="X11"/>
127
+        <syslibset libs="Xrandr"/>
128
+        <syslibset libs="Xcursor"/>
129
+      </linker>
130
+
131
       <linker id="linker.cfg.linux.newt.bcm_egl" extends="linker.cfg.linux">
132
         <syslibset libs="EGL"/>
133
         <syslibset libs="GLES_CM"/>
134
@@ -560,8 +567,8 @@
66
     <target name="c.configure.freebsd.x86" if="isFreeBSDX86">
135
     <target name="c.configure.freebsd.x86" if="isFreeBSDX86">
67
       <echo message="FreeBSD.x86" />
136
       <echo message="FreeBSD.x86" />
68
       <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.newt" />
137
       <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.newt" />
Lines 73-75 Link Here
73
           <isset property="isX11" />
142
           <isset property="isX11" />
74
       </condition>
143
       </condition>
75
       <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
144
       <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
145
@@ -577,7 +584,17 @@
146
       <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
147
     </target>
148
 
149
-    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.x11" if="isFreeBSD"/>
150
+    <target name="c.configure.freebsd.ppc" if="isFreeBSDPpc">
151
+      <echo message="FreeBSD.Ppc" />
152
+      <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd.newt" />
153
+      <condition property="linker.cfg.id.oswin"             value="linker.cfg.freebsd.ppc.newt.x11"
154
+                                                            else="linker.cfg.freebsd.ppc">
155
+          <isset property="isX11" />
156
+      </condition>
157
+      <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
158
+    </target>
159
+
160
+    <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.freebsd.ppc,c.configure.x11" if="isFreeBSD"/>
161
 
162
     <target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX">
163
       <echo message="HP-UX" />
(-)files/patch-gluegen2 (-10 / +29 lines)
Lines 1-6 Link Here
1
--- gluegen/make/build.xml.orig	2014-10-10 13:20:51 UTC
1
--- gluegen/make/build.xml.orig	2015-10-09 04:18:28 UTC
2
+++ gluegen/make/build.xml
2
+++ gluegen/make/build.xml
3
@@ -408,7 +408,7 @@
3
@@ -375,10 +375,17 @@
4
       <property name="c.src.dir.os"                         value="unix" />
5
     </target>
6
 
7
-    <target name="declare.freebsd" depends="declare.freebsd.x86,declare.freebsd.amd64" if="isFreeBSD" >
8
+    <target name="declare.freebsd.ppc" if="isFreeBSDPpc">
9
+      <echo message="FreeBSDPpc" />
10
+      <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd" />
11
+      <property name="linker.cfg.id"                        value="linker.cfg.freebsd.ppc" />
12
       <property name="c.src.dir.os"                         value="unix" />
13
     </target>
14
 
15
+    <target name="declare.freebsd" depends="declare.freebsd.x86,declare.freebsd.amd64,declare.freebsd.ppc" if="isFreeBSD" >
16
+      <property name="c.src.dir.os"                         value="unix" />
17
+    </target>
18
+
19
     <target name="declare.hpux" if="isHPUX">
20
       <echo message="HP-UX" />
21
       <property name="compiler.cfg.id"                      value="compiler.cfg.hpux" />
22
@@ -408,7 +415,7 @@
4
       <property name="c.compiler.src.files.common" value="src/native/common/*.c" />
23
       <property name="c.compiler.src.files.common" value="src/native/common/*.c" />
5
       <property name="c.compiler.src.files.os" value="src/native/${c.src.dir.os}/*.c" />
24
       <property name="c.compiler.src.files.os" value="src/native/${c.src.dir.os}/*.c" />
6
 
25
 
Lines 9-15 Link Here
9
       <condition property="output.lib.name.os" value="lib${output.lib.name}.so"><isset property="isUnix"/></condition>
28
       <condition property="output.lib.name.os" value="lib${output.lib.name}.so"><isset property="isUnix"/></condition>
10
       <condition property="output.lib.name.os" value="${output.lib.name}.dll"><isset property="isWindows"/></condition>
29
       <condition property="output.lib.name.os" value="${output.lib.name}.dll"><isset property="isWindows"/></condition>
11
       <condition property="output.lib.name.os" value="lib${output.lib.name}.jnilib"><isset property="isOSX"/></condition>
30
       <condition property="output.lib.name.os" value="lib${output.lib.name}.jnilib"><isset property="isOSX"/></condition>
12
@@ -605,7 +605,7 @@
31
@@ -605,7 +612,7 @@
13
         <srcfiles dir= "${src.jcpp}"  includes="**"/>
32
         <srcfiles dir= "${src.jcpp}"  includes="**"/>
14
         <srcfiles dir= "${c.grammar}" includes="*.g"/>
33
         <srcfiles dir= "${c.grammar}" includes="*.g"/>
15
         <srcfiles dir= "${j.grammar}" includes="*.g"/>
34
         <srcfiles dir= "${j.grammar}" includes="*.g"/>
Lines 18-24 Link Here
18
       </uptodate>
37
       </uptodate>
19
       <uptodate property="gluegen.build.skip.java2">
38
       <uptodate property="gluegen.build.skip.java2">
20
         <srcfiles dir= "."            includes="*.xml"/>
39
         <srcfiles dir= "."            includes="*.xml"/>
21
@@ -613,7 +613,7 @@
40
@@ -613,7 +620,7 @@
22
         <srcfiles dir= "${src.jcpp}"  includes="**"/>
41
         <srcfiles dir= "${src.jcpp}"  includes="**"/>
23
         <srcfiles dir= "${c.grammar}" includes="*.g"/>
42
         <srcfiles dir= "${c.grammar}" includes="*.g"/>
24
         <srcfiles dir= "${j.grammar}" includes="*.g"/>
43
         <srcfiles dir= "${j.grammar}" includes="*.g"/>
Lines 27-33 Link Here
27
       </uptodate>
46
       </uptodate>
28
       <condition property="gluegen.build.skip.java" value="true">
47
       <condition property="gluegen.build.skip.java" value="true">
29
         <or>
48
         <or>
30
@@ -753,7 +753,7 @@
49
@@ -763,7 +770,7 @@
31
     </copy>
50
     </copy>
32
 
51
 
33
     <!-- Build gluegen.jar. -->
52
     <!-- Build gluegen.jar. -->
Lines 36-42 Link Here
36
       <service type="javax.annotation.processing.Processor">
55
       <service type="javax.annotation.processing.Processor">
37
         <provider classname="com.jogamp.gluegen.structgen.CStructAnnotationProcessor"/>
56
         <provider classname="com.jogamp.gluegen.structgen.CStructAnnotationProcessor"/>
38
       </service>
57
       </service>
39
@@ -806,7 +806,7 @@
58
@@ -842,7 +849,7 @@
40
     </copy>
59
     </copy>
41
 
60
 
42
     <!-- Build gluegen-rt.jar. -->
61
     <!-- Build gluegen-rt.jar. -->
Lines 45-53 Link Here
45
       <fileset dir="${classes}">
64
       <fileset dir="${classes}">
46
         <include name="com/jogamp/gluegen/runtime/*.class" />
65
         <include name="com/jogamp/gluegen/runtime/*.class" />
47
         <include name="com/jogamp/common/**" />
66
         <include name="com/jogamp/common/**" />
48
--- gluegen/src/java/com/jogamp/common/os/Platform.java.orig	2014-10-10 13:20:51 UTC
67
--- gluegen/src/java/com/jogamp/common/os/Platform.java.orig	2015-10-09 04:18:28 UTC
49
+++ gluegen/src/java/com/jogamp/common/os/Platform.java
68
+++ gluegen/src/java/com/jogamp/common/os/Platform.java
50
@@ -146,7 +146,7 @@ public class Platform extends PlatformPr
69
@@ -256,7 +256,7 @@ public class Platform extends PlatformPropsImpl {
51
     private static final String useTempJarCachePropName = "jogamp.gluegen.UseTempJarCache";
70
     private static final String useTempJarCachePropName = "jogamp.gluegen.UseTempJarCache";
52
 
71
 
53
     /** fixed basename of JAR file and native library */
72
     /** fixed basename of JAR file and native library */
Lines 56-64 Link Here
56
 
75
 
57
     //
76
     //
58
     // static initialization order:
77
     // static initialization order:
59
--- gluegen/src/junit/com/jogamp/common/util/TestTempJarCache.java.orig	2014-10-10 13:20:51 UTC
78
--- gluegen/src/junit/com/jogamp/common/util/TestTempJarCache.java.orig	2015-10-09 04:18:28 UTC
60
+++ gluegen/src/junit/com/jogamp/common/util/TestTempJarCache.java
79
+++ gluegen/src/junit/com/jogamp/common/util/TestTempJarCache.java
61
@@ -196,8 +196,8 @@ public class TestTempJarCache extends SingletonJunitCase {
80
@@ -196,8 +196,8 @@ public class TestTempJarCache extends SingletonJunitCa
62
     @Test
81
     @Test
63
     public void testTempJarCache02AddNativeLibs() throws IOException, IllegalArgumentException, URISyntaxException {
82
     public void testTempJarCache02AddNativeLibs() throws IOException, IllegalArgumentException, URISyntaxException {
64
         if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
83
         if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
(-)files/patch-gluegen_make_gluegen-cpptasks-base.xml (+64 lines)
Line 0 Link Here
1
--- gluegen/make/gluegen-cpptasks-base.xml.orig	2020-12-15 14:25:42 UTC
2
+++ gluegen/make/gluegen-cpptasks-base.xml
3
@@ -317,6 +317,12 @@
4
         <istrue value="${isAMD64}" />
5
       </and>
6
     </condition>
7
+    <condition property="isFreeBSDPpc">
8
+      <and>
9
+        <istrue value="${isFreeBSD}" />
10
+        <os arch="ppc64" />
11
+      </and>
12
+    </condition>
13
     <condition property="isHPUX">
14
       <os name="HP-UX" />
15
     </condition>
16
@@ -581,6 +587,7 @@
17
     <echo message="FreeBSD=${isFreeBSD}" />
18
     <echo message="FreeBSDX86=${isFreeBSDX86}" />
19
     <echo message="FreeBSDAMD64=${isFreeBSDAMD64}" />
20
+    <echo message="FreeBSDPpc=${isFreeBSDPpc}" />
21
     <echo message="HPUX=${isHPUX}" />
22
     <echo message="IA64=${isIA64}" />
23
     <echo message="Android=${isAndroid}" />
24
@@ -633,8 +640,12 @@
25
     <property name="os.and.arch" value="freebsd-amd64" />
26
   </target>
27
 
28
-  <target name="gluegen.cpptasks.detect.os.freebsd" depends="gluegen.cpptasks.detect.os.freebsd.amd64,gluegen.cpptasks.detect.os.freebsd.x86" unless="gluegen.cpptasks.detected.os.2" />
29
+  <target name="gluegen.cpptasks.detect.os.freebsd.ppc" unless="gluegen.cpptasks.detected.os.2" if="isFreeBSDPpc">
30
+    <property name="os.and.arch" value="freebsd-ppc" />
31
+  </target>
32
 
33
+  <target name="gluegen.cpptasks.detect.os.freebsd" depends="gluegen.cpptasks.detect.os.freebsd.amd64,gluegen.cpptasks.detect.os.freebsd.x86,gluegen.cpptasks.detect.os.freebsd.ppc" unless="gluegen.cpptasks.detected.os.2" />
34
+
35
   <target name="gluegen.cpptasks.detect.os.hpux" unless="gluegen.cpptasks.detected.os.2" if="isHPUX">
36
     <property name="os.and.arch" value="hpux-hppa" />
37
   </target>
38
@@ -1292,6 +1303,10 @@
39
       <linkerarg value="-m64"/>
40
     </linker>
41
 
42
+    <linker id="linker.cfg.freebsd.ppc" name="${gcc.compat.compiler}">
43
+      <linkerarg value="-m64"/>
44
+    </linker>
45
+
46
     <!-- SOLARIS linker configuration --> 
47
 
48
     <linker id="linker.cfg.solaris" name="${gcc.compat.compiler}"> 
49
@@ -1580,7 +1595,14 @@
50
       <property name="java.lib.dir.platform"         value="${java.home.dir}/jre/lib/amd64" />
51
     </target>
52
 
53
-    <target name="gluegen.cpptasks.declare.compiler.freebsd" depends="gluegen.cpptasks.declare.compiler.freebsd.x86,gluegen.cpptasks.declare.compiler.freebsd.amd64" if="isFreeBSD">
54
+    <target name="gluegen.cpptasks.declare.compiler.freebsd.ppc" if="isFreeBSDPpc">
55
+      <echo message="FreeBSD" />
56
+      <property name="compiler.cfg.id.base"          value="compiler.cfg.freebsd" />
57
+      <property name="linker.cfg.id.base"            value="linker.cfg.freebsd.ppc" />
58
+      <property name="java.lib.dir.platform"         value="${java.home.dir}/jre/lib/ppc64" />
59
+    </target>
60
+
61
+    <target name="gluegen.cpptasks.declare.compiler.freebsd" depends="gluegen.cpptasks.declare.compiler.freebsd.x86,gluegen.cpptasks.declare.compiler.freebsd.amd64,gluegen.cpptasks.declare.compiler.freebsd.ppc" if="isFreeBSD">
62
       <property name="java.includes.dir.platform"    value="${java.includes.dir}/x11" />
63
     </target>
64
 
(-)files/patch-jogl__make__build-common.xml (-3 / +3 lines)
Lines 1-4 Link Here
1
--- jogl/make/build-common.xml.orig	2015-03-27 14:58:50 UTC
1
--- jogl/make/build-common.xml.orig	2015-10-10 01:08:14 UTC
2
+++ jogl/make/build-common.xml
2
+++ jogl/make/build-common.xml
3
@@ -130,8 +130,8 @@
3
@@ -130,8 +130,8 @@
4
         <condition property="swt.jar" value="${project.root}/make/lib/swt/win32-win32-x86/swt-debug.jar">
4
         <condition property="swt.jar" value="${project.root}/make/lib/swt/win32-win32-x86/swt-debug.jar">
Lines 11-17 Link Here
11
         </condition>
11
         </condition>
12
         <condition property="swt.jar" value="${project.root}/make/lib/swt/gtk-linux-x86_64/swt-debug.jar">
12
         <condition property="swt.jar" value="${project.root}/make/lib/swt/gtk-linux-x86_64/swt-debug.jar">
13
           <istrue value="${isLinuxAMD64}" />
13
           <istrue value="${isLinuxAMD64}" />
14
@@ -210,7 +210,7 @@
14
@@ -213,7 +213,7 @@
15
         <property name="gluegen.build.xml"          value="${gluegen.make}/build.xml" />
15
         <property name="gluegen.build.xml"          value="${gluegen.make}/build.xml" />
16
         <property name="build.gluegen"              value="${gluegen.root}/${rootrel.build}" />
16
         <property name="build.gluegen"              value="${gluegen.root}/${rootrel.build}" />
17
         <property name="obj.gluegen"                value="${build.gluegen}/obj"/>
17
         <property name="obj.gluegen"                value="${build.gluegen}/obj"/>
Lines 20-26 Link Here
20
 
20
 
21
         <property name="build.joal"                 value="${joal.root}/${rootrel.build}" /> <!-- optional -->
21
         <property name="build.joal"                 value="${joal.root}/${rootrel.build}" /> <!-- optional -->
22
 
22
 
23
@@ -434,7 +434,7 @@
23
@@ -438,7 +438,7 @@
24
         </path>
24
         </path>
25
 
25
 
26
         <!-- JavaSE combinations -->
26
         <!-- JavaSE combinations -->

Return to bug 251870