build JNI on windows

This commit is contained in:
Hannes Janetzek 2013-11-27 15:35:46 +01:00
parent f7308f748c
commit 9314e2bc0f
2 changed files with 57 additions and 45 deletions

View File

@ -1,4 +1,3 @@
import com.badlogic.gdx.jnigen.AntScriptGenerator; import com.badlogic.gdx.jnigen.AntScriptGenerator;
import com.badlogic.gdx.jnigen.BuildConfig; import com.badlogic.gdx.jnigen.BuildConfig;
import com.badlogic.gdx.jnigen.BuildTarget; import com.badlogic.gdx.jnigen.BuildTarget;
@ -8,77 +7,80 @@ public class JniBuilder {
public static void main(String[] args) { public static void main(String[] args) {
String[] headers = { "." }; String[] headers = { "." };
String[] sources = { String[] sources = {
// Matrix stuff // Matrix stuff
"gl/utils.c", "gl/utils.c",
// libtessellate // libtessellate
"tessellate/dict.c", "tessellate/dict.c",
"tessellate/mesh.c", "tessellate/mesh.c",
"tessellate/render.c", "tessellate/render.c",
"tessellate/tess.c", "tessellate/tess.c",
"tessellate/geom.c", "tessellate/geom.c",
"tessellate/memalloc.c", "tessellate/memalloc.c",
"tessellate/normal.c", "tessellate/normal.c",
"tessellate/priorityq.c", "tessellate/priorityq.c",
"tessellate/sweep.c", "tessellate/sweep.c",
"tessellate/tessmono.c", "tessellate/tessmono.c",
"tessellate/tessellate.c", "tessellate/tessellate.c",
"tessellate/TessellateJni.c" "tessellate/TessellateJni.c"
}; };
String cflags = " -Wall -std=c99 -O2 -ffast-math"; String cflags = " -Wall -std=c99 -O2 -ffast-math";
BuildTarget win32home = BuildTarget.newDefaultTarget(TargetOs.Windows, //BuildTarget win32home = BuildTarget
false); // .newDefaultTarget(TargetOs.Windows, false);
win32home.compilerPrefix = ""; //win32home.compilerPrefix = "";
win32home.buildFileName = "build-windows32home.xml"; //win32home.buildFileName = "build-windows32home.xml";
win32home.excludeFromMasterBuildFile = true; //win32home.excludeFromMasterBuildFile = true;
win32home.headerDirs = headers; //win32home.headerDirs = headers;
win32home.cIncludes = sources; //win32home.cIncludes = sources;
win32home.cFlags += cflags; //win32home.cFlags += cflags;
win32home.cppFlags += cflags; //win32home.cppFlags += cflags;
BuildTarget win32 = BuildTarget.newDefaultTarget(TargetOs.Windows, BuildTarget win32 = BuildTarget
false); .newDefaultTarget(TargetOs.Windows, false);
win32.headerDirs = headers; win32.headerDirs = headers;
win32.cIncludes = sources; win32.cIncludes = sources;
win32.cFlags += cflags; win32.cFlags += cflags;
win32.cppFlags += cflags; win32.cppFlags += cflags;
BuildTarget win64 = BuildTarget BuildTarget win64 = BuildTarget
.newDefaultTarget(TargetOs.Windows, true); .newDefaultTarget(TargetOs.Windows, true);
win64.headerDirs = headers; win64.headerDirs = headers;
win64.cIncludes = sources; win64.cIncludes = sources;
win64.cFlags += cflags; win64.cFlags += cflags;
win64.cppFlags += cflags; win64.cppFlags += cflags;
BuildTarget lin32 = BuildTarget.newDefaultTarget(TargetOs.Linux, false); BuildTarget lin32 = BuildTarget
.newDefaultTarget(TargetOs.Linux, false);
lin32.headerDirs = headers; lin32.headerDirs = headers;
lin32.cIncludes = sources; lin32.cIncludes = sources;
lin32.cFlags += cflags; lin32.cFlags += cflags;
lin32.cppFlags += cflags; lin32.cppFlags += cflags;
BuildTarget lin64 = BuildTarget.newDefaultTarget(TargetOs.Linux, true); BuildTarget lin64 = BuildTarget
.newDefaultTarget(TargetOs.Linux, true);
lin64.headerDirs = headers; lin64.headerDirs = headers;
lin64.cIncludes = sources; lin64.cIncludes = sources;
lin64.cFlags += cflags; lin64.cFlags += cflags;
lin64.cppFlags += cflags; lin64.cppFlags += cflags;
// BuildTarget mac = BuildTarget.newDefaultTarget(TargetOs.MacOsX, BuildTarget mac = BuildTarget
// false); .newDefaultTarget(TargetOs.MacOsX, false);
// mac.headerDirs = headers; mac.headerDirs = headers;
// mac.cIncludes = sources; mac.cIncludes = sources;
// mac.cFlags += cflags; mac.cFlags += cflags;
// mac.cppFlags += cflags; mac.cppFlags += cflags;
// mac.linkerFlags += " -framework CoreServices -framework Carbon"; mac.linkerFlags += " -framework CoreServices -framework Carbon";
BuildTarget android = BuildTarget.newDefaultTarget(TargetOs.Android, BuildTarget android = BuildTarget
false); .newDefaultTarget(TargetOs.Android, false);
android.headerDirs = headers; android.headerDirs = headers;
android.cIncludes = sources; android.cIncludes = sources;
android.cFlags += cflags; android.cFlags += cflags;
android.cppFlags += cflags; android.cppFlags += cflags;
android.linkerFlags += " -llog"; android.linkerFlags += " -llog";
// BuildTarget ios = BuildTarget.newDefaultTarget(TargetOs.IOS, false); // BuildTarget ios = BuildTarget.newDefaultTarget(TargetOs.IOS, false);
// ios.headerDirs = headers; // ios.headerDirs = headers;
// ios.cIncludes = sources; // ios.cIncludes = sources;
@ -87,11 +89,16 @@ public class JniBuilder {
//new NativeCodeGenerator().generate(); //new NativeCodeGenerator().generate();
new AntScriptGenerator().generate(new BuildConfig("vtm-jni"), new AntScriptGenerator().generate(new BuildConfig("vtm-jni"),
//win32home, win32, win64, lin32, // mac,
lin64, android); // win32home,
// win32,
// win64,
// lin32,
lin64,
android);
// BuildExecutor.executeAnt("jni/build-windows32home.xml", "-v clean"); // BuildExecutor.executeAnt("jni/build-windows32home.xml", "-v clean");
// BuildExecutor.executeAnt("jni/build-windows32home.xml", "-v"); // BuildExecutor.executeAnt("jni/build-windows32home.xml", "-v");
// BuildExecutor.executeAnt("jni/build.xml", "pack-natives -v"); // BuildExecutor.executeAnt("jni/build.xml", "pack-natives -v");
} }
} }

View File

@ -3,10 +3,15 @@
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
#include <string.h> #include <string.h>
#include <alloca.h>
#include <math.h> #include <math.h>
#include <stdint.h> #include <stdint.h>
#ifndef __WIN32__
#include <alloca.h>
#else
#define alloca(size) __builtin_alloca(size)
#endif
//#ifndef uintptr_t //#ifndef uintptr_t
//typedef unsigned long uintptr_t; //typedef unsigned long uintptr_t;
//#endif //#endif