diff --git a/example/lib/generator/src/main/java/Main.java b/example/lib/generator/src/main/java/Main.java index d801ce9..abc1e34 100644 --- a/example/lib/generator/src/main/java/Main.java +++ b/example/lib/generator/src/main/java/Main.java @@ -89,7 +89,7 @@ private static BuildMultiTarget getWindowTarget() { windowsTarget.isStatic = true; windowsTarget.addJNI = false; windowsTarget.headerDirs.add("-Isrc/exampleLib"); - windowsTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + windowsTarget.cppInclude.add("**/src/exampleLib/**.cpp"); multiTarget.add(windowsTarget); WindowsTarget glueTarget = new WindowsTarget(); @@ -109,7 +109,7 @@ private static BuildMultiTarget getEmscriptenTarget(IDLReader idlReader) { EmscriptenTarget emscriptenTarget = new EmscriptenTarget(idlReader); emscriptenTarget.headerDirs.add("-Isrc/exampleLib"); emscriptenTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); - emscriptenTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + emscriptenTarget.cppInclude.add("**/src/exampleLib/**.cpp"); multiTarget.add(emscriptenTarget); } else if(buildType == 1) { @@ -118,7 +118,7 @@ else if(buildType == 1) { libTarget.isStatic = true; libTarget.compileGlueCode = false; libTarget.headerDirs.add("-Isrc/exampleLib"); - libTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + libTarget.cppInclude.add("**/src/exampleLib/**.cpp"); multiTarget.add(libTarget); // Compile glue code and link to make js file @@ -133,7 +133,7 @@ else if(buildType == 2) { sideTarget.libName = "exampleLibside"; sideTarget.headerDirs.add("-Isrc/exampleLib"); sideTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); - sideTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + sideTarget.cppInclude.add("**/src/exampleLib/**.cpp"); sideTarget.cppFlags.add("-fPIC"); sideTarget.cppFlags.add("-sEXPORT_ALL=1"); sideTarget.linkerFlags.add("-v"); @@ -162,7 +162,7 @@ private static BuildMultiTarget getAndroidTarget() { AndroidTarget androidTarget = new AndroidTarget(); androidTarget.headerDirs.add("src/exampleLib"); - androidTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + androidTarget.cppInclude.add("**/src/exampleLib/**.cpp"); multiTarget.add(androidTarget); diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/BuildTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/BuildTarget.java index 80dbbbe..7944764 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/BuildTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/BuildTarget.java @@ -28,7 +28,8 @@ public static boolean isUnix() { protected final ArrayList linkerCommands = new ArrayList<>(); public final ArrayList headerDirs = new ArrayList<>(); - public final ArrayList cppIncludes = new ArrayList<>(); + public final ArrayList cppInclude = new ArrayList<>(); + public final ArrayList cppExclude = new ArrayList<>(); /** Includes only files with this suffix */ public String filterCPPSuffix = ".cpp"; @@ -65,9 +66,9 @@ protected boolean build(BuildConfig config) { setup(config); - ArrayList cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppIncludes, filterCPPSuffix)); + ArrayList cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppInclude, cppExclude, filterCPPSuffix)); for(CustomFileDescriptor sourceDir : config.additionalSourceDirs) { - ArrayList cppFiles1 = getCPPFiles(sourceDir, cppIncludes, filterCPPSuffix); + ArrayList cppFiles1 = getCPPFiles(sourceDir, cppInclude, cppExclude, filterCPPSuffix); cppFiles.addAll(cppFiles1); } @@ -162,11 +163,11 @@ private boolean link(BuildConfig config, CustomFileDescriptor childTarget) { String fullLibName = libPrefix + libName + libSuffix; String libPath = libsDir + "/" + fullLibName; - ArrayList files = new ArrayList<>(); - getAllFiles(childTarget, files, ""); + ArrayList compiledObjects = new ArrayList<>(); + getAllFiles(childTarget, compiledObjects, ""); String compiledPaths = ""; - for(CustomFileDescriptor file : files) { + for(CustomFileDescriptor file : compiledObjects) { String path = file.path(); compiledPaths = compiledPaths + "\n" + path; } @@ -188,7 +189,7 @@ protected void onLink(String objFilePath, String libPath) { } protected void addJNIHeadersAndGlueCode() { - cppIncludes.add("**/jniglue/*.cpp"); + cppInclude.add("**/jniglue/*.cpp"); headerDirs.add("-Ijni-headers/"); if(isUnix()) { headerDirs.add("-Ijni-headers/linux"); @@ -201,7 +202,7 @@ else if(isMac()) { } } - public static ArrayList getCPPFiles(CustomFileDescriptor dir, ArrayList cppIncludes, String cppSuffix) { + public static ArrayList getCPPFiles(CustomFileDescriptor dir, ArrayList cppIncludes, ArrayList cppExcludes, String cppSuffix) { ArrayList files = new ArrayList<>(); getAllFiles(dir, files, cppSuffix); for(int i = 0; i < files.size(); i++) { @@ -218,6 +219,14 @@ public static ArrayList getCPPFiles(CustomFileDescriptor d break; } } + for(String cppExclude : cppExcludes) { + PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher("glob:" + cppExclude); + boolean matches = pathMatcher.matches(of); + if(matches) { + remove = true; + break; + } + } if(remove) { files.remove(i); i--; diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/AndroidTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/AndroidTarget.java index 85c5543..f86ba64 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/AndroidTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/AndroidTarget.java @@ -22,7 +22,7 @@ public AndroidTarget() { cppFlags.add("-fvisibility=hidden"); linkerFlags.add("-lm"); - cppIncludes.add("**/jniglue/JNIGlue.cpp"); + cppInclude.add("**/jniglue/JNIGlue.cpp"); headerDirs.add("jni-headers/"); headerDirs.add("jni-headers/linux"); } @@ -64,9 +64,9 @@ protected boolean build(BuildConfig config) { } linkerFlagsStr = linkerFlagsStr.trim(); - ArrayList cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppIncludes, filterCPPSuffix)); + ArrayList cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppInclude, cppExclude, filterCPPSuffix)); for(CustomFileDescriptor sourceDir : config.additionalSourceDirs) { - ArrayList cppFiles1 = getCPPFiles(sourceDir, cppIncludes, filterCPPSuffix); + ArrayList cppFiles1 = getCPPFiles(sourceDir, cppInclude, cppExclude, filterCPPSuffix); cppFiles.addAll(cppFiles1); } diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenTarget.java index 07538e8..eae4b75 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenTarget.java @@ -58,7 +58,7 @@ protected boolean build(BuildConfig config) { } if(compileGlueCode) { - cppIncludes.add("**/jsglue/*.cpp"); + cppInclude.add("**/jsglue/*.cpp"); copyHelperClass(jsglueDir); } diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/IOSTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/IOSTarget.java index 47b2c94..7275f16 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/IOSTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/IOSTarget.java @@ -13,7 +13,7 @@ public IOSTarget() { linkerFlags.add("-shared"); linkerFlags.add("-stdlib=libc++"); - cppIncludes.add("**/jniglue/JNIGlue.cpp"); + cppInclude.add("**/jniglue/JNIGlue.cpp"); headerDirs.add("jni-headers/"); headerDirs.add("jni-headers/mac"); diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/WindowsTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/WindowsTarget.java index 7891d2f..4349201 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/WindowsTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/WindowsTarget.java @@ -14,13 +14,13 @@ public WindowsTarget() { cppFlags.add("-c"); cppFlags.add("-Wall"); cppFlags.add("-O2"); - cppFlags.add("-mfpmath=sse"); - cppFlags.add("-msse2"); - cppFlags.add("-fmessage-length=0"); - cppFlags.add("-m64"); - cppFlags.add("-std=c++17"); - cppFlags.add("-Wno-unused-variable"); - cppFlags.add("-Wno-unused-but-set-variable"); +// cppFlags.add("-mfpmath=sse"); +// cppFlags.add("-msse2"); +// cppFlags.add("-fmessage-length=0"); +// cppFlags.add("-m64"); +//// cppFlags.add("-std=c++17"); +// cppFlags.add("-Wno-unused-variable"); +// cppFlags.add("-Wno-unused-but-set-variable"); } @Override @@ -32,13 +32,13 @@ protected void setup(BuildConfig config) { libSuffix = "64.a"; } else { - linkerFlags.add("-fPIC"); +// linkerFlags.add("-fPIC"); linkerFlags.add("-shared"); - linkerFlags.add("-static"); - linkerFlags.add("-static-libgcc"); - linkerFlags.add("-static-libstdc++"); - linkerFlags.add("-Wl,--kill-at"); - linkerFlags.add("-m64"); +// linkerFlags.add("-static"); +// linkerFlags.add("-static-libgcc"); +// linkerFlags.add("-static-libstdc++"); +// linkerFlags.add("-Wl,--kill-at"); +// linkerFlags.add("-m64"); libSuffix = "64.dll"; }