فهرست منبع

native bullet: hide unexported symbols

Kirill Vainer 9 سال پیش
والد
کامیت
34df2ebabf
2فایلهای تغییر یافته به همراه53 افزوده شده و 1 حذف شده
  1. 5 1
      jme3-bullet-native/build.gradle
  2. 48 0
      jme3-bullet-native/src/native/cpp/fake_win32/jni_md.h

+ 5 - 1
jme3-bullet-native/build.gradle

@@ -25,9 +25,12 @@ libraries {
             if (targetPlatform.operatingSystem.name == "osx") {
                 cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin"
             } else if (targetPlatform.operatingSystem.name == "linux") {
+                cppCompiler.args "-fvisibility=hidden"
                 cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux"
                 cppCompiler.args "-fPIC"
                 cppCompiler.args "-fpermissive"
+                linker.args "-fvisibility=hidden"
+
 //                cppCompiler.args "-static-libgcc"
 //                cppCompiler.args "-static-libstdc++"
 //                linker.args "-static-libgcc"
@@ -35,13 +38,14 @@ libraries {
             } else if (targetPlatform.operatingSystem.name == "windows") {
                 if (toolChain in Gcc) {
                     if (toolChain.name.startsWith('mingw')) {
-                        cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux"
+                        cppCompiler.args '-I', "${projectDir}/src/native/cpp/fake_win32"
                     } else {
                         cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"
                     }
                     cppCompiler.args "-fpermissive"
                     cppCompiler.args "-static"
                     linker.args "-static"
+                    linker.args "-Wl,--exclude-all-symbols"
                 }
                 else if (toolChain in VisualCpp) {
                     cppCompiler.args "/I${org.gradle.internal.jvm.Jvm.current().javaHome}\\include\\win32"

+ 48 - 0
jme3-bullet-native/src/native/cpp/fake_win32/jni_md.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2009-2012 jMonkeyEngine
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JNI_MD_H
+#define JNI_MD_H
+
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+
+#define JNIEXPORT __declspec(dllexport)
+#define JNIIMPORT __declspec(dllimport)
+#define JNICALL
+
+typedef int jint;
+typedef long long jlong;
+typedef signed char jbyte;
+
+#endif