Skip to content

Commit

Permalink
Merge pull request #41 from Berstanio/fix/fix-min-ios-11
Browse files Browse the repository at this point in the history
Correctly set min iOS version and make it configurable
  • Loading branch information
PokeMMO authored Jun 9, 2023
2 parents 7d596d0 + b25a586 commit 2c574b2
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 30 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,12 @@ jnigen {
// Specify which ABIs to build
//androidABIs = ["armeabi", "armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
add(IOS)
add(IOS) {
// Define ios framework bundle identifier
// xcframeworkBundleIdentifier = "com.badlogic.gdx.JniGen
// Deinfe minimum supported iOS version
// minIOSVersion = "11.0"
}
// Customize each BuildTarget that matches the condition
each({ it.os != Android && !it.isARM }) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ private String generateBuildTargetTemplate (BuildConfig config, BuildTarget targ
template = template.replace("%libName%", libName);
template = template.replace("%xcframeworkName%", config.sharedLibName);
template = template.replace("%xcframeworkBundleIdentifier%", target.xcframeworkBundleIdentifier == null ? ("gdx.jnigen." + config.sharedLibName) : target.xcframeworkBundleIdentifier);
template = template.replace("%minIOSVersion%", target.minIOSVersion);
template = template.replace("%jniPlatform%", jniPlatform);
template = template.replace("%cCompiler%", target.cCompiler);
template = template.replace("%cppCompiler%", target.cppCompiler);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ public enum TargetOs {
public String[] androidApplicationMk = {};
/** ios framework bundle identifier, if null an automatically generated bundle identifier will be used */
public String xcframeworkBundleIdentifier = null;
/** Minimum supported iOS version, will default to iOS 11*/
public String minIOSVersion = "11.0";

/** Creates a new build target. See members of this class for a description of the parameters. */
public BuildTarget (BuildTarget.TargetOs targetType, boolean is64Bit, String[] cIncludes, String[] cExcludes,
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
<property name="xcframeworkName" value="%xcframeworkName%"/>
<!-- the bundle identifier of the xcframework library -->
<property name="xcframeworkBundleIdentifier" value="%xcframeworkBundleIdentifier%"/>
<!-- The minimum iOS version -->
<property name="minIOSVersion" value="%minIOSVersion%"/>
<!-- the jni header jniPlatform to use -->
<property name="jniPlatform" value="mac"/>
<!-- the compiler to use when compiling c files -->
Expand Down Expand Up @@ -98,7 +100,7 @@
<!-- compiles all C and C++ files to object files in the build directory, for x86_64 builds-->
<target name="compile-x86_64" depends="create-build-dir">
<apply failonerror="true" executable="${g++}" dest="${buildDir}/x86_64" verbose="true">
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=11.0 ${g++-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${g++-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -114,7 +116,7 @@
</compositemapper>
</apply>
<apply failonerror="true" executable="${gcc}" dest="${buildDir}/x86_64" verbose="true">
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=11.0 ${gcc-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${gcc-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -140,7 +142,7 @@
<pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
<mkdir dir="${libsDir}" />
<exec executable="${linker}" failonerror="true" dir="${buildDir}/x86_64">
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=11.0 ${linker-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${linker-opts}"/>
<arg value="-o" />
<arg path="${buildDir}/x86_64/${libName}" />
<arg line="${objFiles}"/>
Expand All @@ -152,7 +154,7 @@
<!-- compiles all C and C++ files to object files in the build directory, for arm64 simulator builds-->
<target name="compile-arm64-simulator" depends="create-build-dir">
<apply failonerror="true" executable="${g++}" dest="${buildDir}/arm64-simulator" verbose="true">
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=11.0 ${g++-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${g++-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -168,7 +170,7 @@
</compositemapper>
</apply>
<apply failonerror="true" executable="${gcc}" dest="${buildDir}/arm64-simulator" verbose="true">
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=11.0 ${gcc-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${gcc-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -194,7 +196,7 @@
<pathconvert pathsep=" " property="objFilesArm64Simulator" refid="objFileSetArm64Simulator" />
<mkdir dir="${libsDir}" />
<exec executable="${linker}" failonerror="true" dir="${buildDir}/arm64-simulator">
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=11.0 ${linker-opts}"/>
<arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${linker-opts}"/>
<arg value="-o" />
<arg path="${buildDir}/arm64-simulator/${libName}" />
<arg line="${objFilesArm64Simulator}"/>
Expand All @@ -205,7 +207,7 @@
<!-- compiles all C and C++ files to object files in the build directory, for arm64 builds-->
<target name="compile-arm64" depends="create-build-dir">
<apply failonerror="true" executable="${g++}" dest="${buildDir}/arm64" verbose="true">
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=11.0 ${g++-opts}"/>
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${g++-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -221,7 +223,7 @@
</compositemapper>
</apply>
<apply failonerror="true" executable="${gcc}" dest="${buildDir}/arm64" verbose="true">
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=11.0 ${gcc-opts}"/>
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${gcc-opts}"/>
<arg value="-Ijni-headers"/>
<arg value="-Ijni-headers/${jniPlatform}"/>
<arg value="-I."/>
Expand All @@ -247,7 +249,7 @@
<pathconvert pathsep=" " property="objFilesArm64" refid="objFileSetArm64" />
<mkdir dir="${libsDir}" />
<exec executable="${linker}" failonerror="true" dir="${buildDir}/arm64">
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=11.0 ${linker-opts}"/>
<arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${linker-opts}"/>
<arg value="-o" />
<arg path="${buildDir}/arm64/${libName}" />
<arg line="${objFilesArm64}"/>
Expand All @@ -266,33 +268,45 @@

<target name="build-plist-device" depends="archive-fat">
<copy file="Info.plist" tofile="${buildDir}/device/${libName}.framework/Info.plist"/>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/device/${libName}.framework/Info.plist CFBundleName ${libName}"/>
<exec executable="/usr/libexec/PlistBuddy" failonerror="true" dir="${buildDir}">
<arg value="-c"/>
<arg value="Set :CFBundleName ${libName}"/>
<arg value="-c"/>
<arg value="Set :CFBundleExecutable ${libName}"/>
<arg value="-c"/>
<arg value="Set :DTPlatformName iphoneos"/>
<arg value="-c"/>
<arg value="Set :CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
<arg value="-c"/>
<arg value="Set :MinimumOSVersion ${minIOSVersion}"/>
<arg value="${absolute.buildDir}/device/${libName}.framework/Info.plist"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/device/${libName}.framework/Info.plist CFBundleExecutable ${libName}"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/device/${libName}.framework/Info.plist DTPlatformName iphoneos"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/device/${libName}.framework/Info.plist CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
<exec executable="plutil" failonerror="true" dir="${buildDir}">
<arg line="-convert"/>
<arg line="binary1"/>
<arg line="${absolute.buildDir}/device/${libName}.framework/Info.plist"/>
</exec>
</target>

<target name="build-plist-simulator" depends="archive-fat">
<copy file="Info.plist" tofile="${buildDir}/simulator/${libName}.framework/Info.plist"/>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/simulator/${libName}.framework/Info.plist CFBundleName ${libName}"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/simulator/${libName}.framework/Info.plist CFBundleExecutable ${libName}"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/simulator/${libName}.framework/Info.plist DTPlatformName iphonesimulator"/>
<exec executable="/usr/libexec/PlistBuddy" failonerror="true" dir="${buildDir}">
<arg value="-c"/>
<arg value="Set :CFBundleName ${libName}"/>
<arg value="-c"/>
<arg value="Set :CFBundleExecutable ${libName}"/>
<arg value="-c"/>
<arg value="Set :DTPlatformName iphonesimulator"/>
<arg value="-c"/>
<arg value="Set :CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
<arg value="-c"/>
<arg value="Set :MinimumOSVersion ${minIOSVersion}"/>
<arg value="${absolute.buildDir}/simulator/${libName}.framework/Info.plist"/>
</exec>
<exec executable="defaults" failonerror="true" dir="${buildDir}">
<arg line="write ${absolute.buildDir}/simulator/${libName}.framework/Info.plist CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
<exec executable="plutil" failonerror="true" dir="${buildDir}">
<arg line="-convert"/>
<arg line="binary1"/>
<arg line="${absolute.buildDir}/simulator/${libName}.framework/Info.plist"/>
</exec>
</target>

Expand Down

0 comments on commit 2c574b2

Please sign in to comment.