Skip to content

Commit

Permalink
Add cpp exclude
Browse files Browse the repository at this point in the history
  • Loading branch information
xpenatan committed Dec 16, 2023
1 parent 5a6e5d2 commit 74d3884
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 31 deletions.
10 changes: 5 additions & 5 deletions example/lib/generator/src/main/java/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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) {
Expand All @@ -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
Expand All @@ -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");
Expand Down Expand Up @@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public static boolean isUnix() {
protected final ArrayList<String> linkerCommands = new ArrayList<>();

public final ArrayList<String> headerDirs = new ArrayList<>();
public final ArrayList<String> cppIncludes = new ArrayList<>();
public final ArrayList<String> cppInclude = new ArrayList<>();
public final ArrayList<String> cppExclude = new ArrayList<>();

/** Includes only files with this suffix */
public String filterCPPSuffix = ".cpp";
Expand Down Expand Up @@ -65,9 +66,9 @@ protected boolean build(BuildConfig config) {

setup(config);

ArrayList<CustomFileDescriptor> cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppIncludes, filterCPPSuffix));
ArrayList<CustomFileDescriptor> cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppInclude, cppExclude, filterCPPSuffix));
for(CustomFileDescriptor sourceDir : config.additionalSourceDirs) {
ArrayList<CustomFileDescriptor> cppFiles1 = getCPPFiles(sourceDir, cppIncludes, filterCPPSuffix);
ArrayList<CustomFileDescriptor> cppFiles1 = getCPPFiles(sourceDir, cppInclude, cppExclude, filterCPPSuffix);
cppFiles.addAll(cppFiles1);
}

Expand Down Expand Up @@ -162,11 +163,11 @@ private boolean link(BuildConfig config, CustomFileDescriptor childTarget) {
String fullLibName = libPrefix + libName + libSuffix;
String libPath = libsDir + "/" + fullLibName;

ArrayList<CustomFileDescriptor> files = new ArrayList<>();
getAllFiles(childTarget, files, "");
ArrayList<CustomFileDescriptor> compiledObjects = new ArrayList<>();
getAllFiles(childTarget, compiledObjects, "");

String compiledPaths = "";
for(CustomFileDescriptor file : files) {
for(CustomFileDescriptor file : compiledObjects) {
String path = file.path();
compiledPaths = compiledPaths + "\n" + path;
}
Expand All @@ -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");
Expand All @@ -201,7 +202,7 @@ else if(isMac()) {
}
}

public static ArrayList<CustomFileDescriptor> getCPPFiles(CustomFileDescriptor dir, ArrayList<String> cppIncludes, String cppSuffix) {
public static ArrayList<CustomFileDescriptor> getCPPFiles(CustomFileDescriptor dir, ArrayList<String> cppIncludes, ArrayList<String> cppExcludes, String cppSuffix) {
ArrayList<CustomFileDescriptor> files = new ArrayList<>();
getAllFiles(dir, files, cppSuffix);
for(int i = 0; i < files.size(); i++) {
Expand All @@ -218,6 +219,14 @@ public static ArrayList<CustomFileDescriptor> 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--;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down Expand Up @@ -64,9 +64,9 @@ protected boolean build(BuildConfig config) {
}
linkerFlagsStr = linkerFlagsStr.trim();

ArrayList<CustomFileDescriptor> cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppIncludes, filterCPPSuffix));
ArrayList<CustomFileDescriptor> cppFiles = new ArrayList<>(getCPPFiles(config.sourceDir, cppInclude, cppExclude, filterCPPSuffix));
for(CustomFileDescriptor sourceDir : config.additionalSourceDirs) {
ArrayList<CustomFileDescriptor> cppFiles1 = getCPPFiles(sourceDir, cppIncludes, filterCPPSuffix);
ArrayList<CustomFileDescriptor> cppFiles1 = getCPPFiles(sourceDir, cppInclude, cppExclude, filterCPPSuffix);
cppFiles.addAll(cppFiles1);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ protected boolean build(BuildConfig config) {
}

if(compileGlueCode) {
cppIncludes.add("**/jsglue/*.cpp");
cppInclude.add("**/jsglue/*.cpp");
copyHelperClass(jsglueDir);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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";
}

Expand Down

0 comments on commit 74d3884

Please sign in to comment.