Skip to content

Commit 4977e38

Browse files
committed
[Build] Make freetype optional
1 parent 8ac8a07 commit 4977e38

File tree

5 files changed

+64
-13
lines changed

5 files changed

+64
-13
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/bash
2+
3+
BASEDIR=$(dirname "$0")
4+
cd $BASEDIR/../../imgui-binding || exit
5+
6+
../gradlew clean generateLibs -Denvs=$* -Dlocal
7+
rm -frd libsNative

buildSrc/scripts/build-natives-local.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
BASEDIR=$(dirname "$0")
44
cd $BASEDIR/../../imgui-binding || exit
55

6-
../gradlew clean generateLibs -Denvs=$* -Dlocal
6+
../gradlew clean generateLibs -Denvs=$* -Dlocal -DwithFreeType
77
rm -frd libsNative
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/bash
2+
3+
BASEDIR=$(dirname "$0")
4+
cd $BASEDIR/../../imgui-binding || exit
5+
6+
rm -frd /tmp/imgui
7+
../gradlew clean generateLibs -Denvs=$*

buildSrc/scripts/build-natives.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ BASEDIR=$(dirname "$0")
44
cd $BASEDIR/../../imgui-binding || exit
55

66
rm -frd /tmp/imgui
7-
../gradlew clean generateLibs -Denvs=$*
7+
../gradlew clean generateLibs -Denvs=$* -DwithFreeType

buildSrc/src/main/groovy/imgui/generate/GenerateLibs.groovy

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class GenerateLibs extends DefaultTask {
1818
private final boolean forMac64 = buildEnvs?.contains('mac64')
1919

2020
private final boolean isLocal = System.properties.containsKey("local")
21+
private final boolean withFreeType = System.properties.containsKey("withFreeType")
2122

2223
private final String sourceDir = project.file('src/main/java')
2324
private final String classpath = project.file('build/classes/java/main')
@@ -27,13 +28,23 @@ class GenerateLibs extends DefaultTask {
2728

2829
@TaskAction
2930
void generate() {
31+
println 'Generating Native Libraries...'
32+
println "Build environments: $buildEnvs"
33+
println "Local mode: $isLocal"
34+
println "With FreeType: $withFreeType"
35+
println '====================================='
36+
3037
// Generate h/cpp files for JNI
3138
new NativeCodeGenerator().generate(sourceDir, classpath, jniDir)
3239

3340
// Copy ImGui h/cpp files
3441
project.copy { CopySpec spec ->
3542
spec.from(project.rootProject.file('imgui')) { CopySpec it -> it.include('*.h', '*.cpp') }
36-
spec.from(project.rootProject.file('imgui/misc/freetype')) { CopySpec it -> it.include('*.h', '*.cpp') }
43+
44+
if (withFreeType) {
45+
spec.from(project.rootProject.file('imgui/misc/freetype')) { CopySpec it -> it.include('*.h', '*.cpp') }
46+
}
47+
3748
spec.from(project.rootProject.file('imgui-binding/src/main/native'))
3849
spec.into(jniDir)
3950
}
@@ -44,27 +55,43 @@ class GenerateLibs extends DefaultTask {
4455

4556
if (forWin32) {
4657
def win32 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Windows, false)
47-
win32.cppFlags += ' -fstack-protector -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
48-
win32.libraries += '-lfreetype -lbz2 -lssp'
58+
59+
if (withFreeType) {
60+
win32.cppFlags += ' -fstack-protector -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
61+
win32.libraries += '-lfreetype -lbz2 -lssp'
62+
}
63+
4964
buildTargets += win32
5065
}
5166
if (forWin64) {
5267
def win64 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Windows, true)
53-
win64.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
54-
win64.libraries += '-lfreetype -lbz2 -lssp'
68+
69+
if (withFreeType) {
70+
win64.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
71+
win64.libraries += '-lfreetype -lbz2 -lssp'
72+
}
73+
5574
buildTargets += win64
5675
}
5776

5877
if (forLinux32) {
5978
def linux32 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Linux, false)
60-
linux32.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
61-
linux32.linkerFlags += ' -lfreetype'
79+
80+
if (withFreeType) {
81+
linux32.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
82+
linux32.linkerFlags += ' -lfreetype'
83+
}
84+
6285
buildTargets += linux32
6386
}
6487
if (forLinux64) {
6588
def linux64 = BuildTarget.newDefaultTarget(BuildTarget.TargetOs.Linux, true)
66-
linux64.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
67-
linux64.linkerFlags += ' -lfreetype'
89+
90+
if (withFreeType) {
91+
linux64.cppFlags += ' -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
92+
linux64.linkerFlags += ' -lfreetype'
93+
}
94+
6895
buildTargets += linux64
6996
}
7097

@@ -73,13 +100,23 @@ class GenerateLibs extends DefaultTask {
73100
mac64.cppFlags += ' -stdlib=libc++'
74101
mac64.cppFlags = mac64.cppFlags.replaceAll('10.5', '10.9')
75102
mac64.linkerFlags = mac64.linkerFlags.replaceAll('10.5', '10.9')
76-
mac64.cppFlags += ' -I/usr/local/include/freetype2 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include'
77-
mac64.linkerFlags += ' -lfreetype'
103+
104+
if (withFreeType) {
105+
mac64.cppFlags += ' -I/usr/local/include/freetype2 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include'
106+
mac64.linkerFlags += ' -lfreetype'
107+
}
108+
78109
buildTargets += mac64
79110
}
80111

81112
new AntScriptGenerator().generate(buildConfig, buildTargets)
82113

114+
if (!withFreeType) {
115+
project.delete {
116+
it.delete("$jniDir/imgui.ImGuiFreeType.cpp", "$jniDir/imgui.ImGuiFreeType.h")
117+
}
118+
}
119+
83120
// Generate native libraries
84121
// Comment/uncomment lines with OS you need.
85122

0 commit comments

Comments
 (0)