Skip to content

Commit 296e8e4

Browse files
committed
fix macos cocoapods build
1 parent 297c6df commit 296e8e4

2 files changed

Lines changed: 71 additions & 5 deletions

File tree

server/src/test/java/com/defold/extender/ExtenderTest.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ static void checkArray(String[] expected, Object obj)
5353
assertEquals(Arrays.asList(expected), l);
5454
}
5555

56+
static PlatformConfig mergePlatformConfig(Configuration config, String platform) throws ExtenderException
57+
{
58+
PlatformConfig platformConfig = new PlatformConfig();
59+
platformConfig.context = new HashMap<>(config.context);
60+
for (String platformAlt : ExtenderUtil.getPlatformAlternatives(platform)) {
61+
PlatformConfig platformConfigAlt = config.platforms.get(platformAlt);
62+
if (platformConfigAlt != null) {
63+
ExtenderUtil.mergeObjects(platformConfig, platformConfigAlt);
64+
}
65+
}
66+
return platformConfig;
67+
}
68+
5669
@Test
5770
public void testExtender(@TempDir File jobDir) throws IOException, InterruptedException, ExtenderException {
5871
File uploadDir = new File(jobDir, "upload");
@@ -389,6 +402,57 @@ public void testMergedContexts() throws IOException, ExtenderException {
389402
assertTrue(true);
390403
}
391404

405+
@Test
406+
public void testOsxCompileCommandCarriesSdkFlags() throws IOException, ExtenderException {
407+
File root = new File("test-data");
408+
File sdk = new File(root, "sdk/a/defoldsdk");
409+
Configuration config = Extender.loadYaml(root, new File(sdk, "extender/build.yml"), Configuration.class);
410+
411+
PlatformConfig platformConfig = mergePlatformConfig(config, "arm64-osx");
412+
413+
assertTrue(platformConfig.compileCmd.contains("{{#clangArch}}-arch {{{clangArch}}} {{/clangArch}}"));
414+
assertTrue(platformConfig.compileCmd.contains("{{#clangTarget}}-target {{{clangTarget}}} {{/clangTarget}}"));
415+
assertTrue(platformConfig.compileCmd.contains("{{#clangArch}}-m64 {{/clangArch}}"));
416+
assertTrue(platformConfig.compileCmd.contains("-isysroot {{env.SYSROOT}}"));
417+
assertEquals("arm64", platformConfig.context.get("clangArch"));
418+
assertEquals("arm64-apple-darwin19", platformConfig.context.get("clangTarget"));
419+
420+
List<String> flags = (List<String>)platformConfig.context.get("flags");
421+
assertFalse(flags.contains("-arch"));
422+
assertFalse(flags.contains("-target"));
423+
assertFalse(flags.contains("-isysroot"));
424+
assertFalse(flags.contains("{{env.SYSROOT}}"));
425+
426+
Map<String, String> env = new HashMap<>();
427+
env.put("SYSROOT", "/opt/platformsdk/MacOSX.sdk");
428+
env.put("MACOS_VERSION_MIN", "10.15");
429+
430+
Map<String, Object> renderContext = new HashMap<>(platformConfig.context);
431+
renderContext.put("env", env);
432+
renderContext.put("ext", new HashMap<String, Object>());
433+
renderContext.put("extension_name_upper", "TEST");
434+
renderContext.put("src", "source.mm");
435+
renderContext.put("tgt", "source.o");
436+
String renderedCompileCmd = new TemplateExecutor().execute(platformConfig.compileCmd, renderContext);
437+
assertTrue(renderedCompileCmd.contains("-arch arm64"));
438+
assertTrue(renderedCompileCmd.contains("-target arm64-apple-darwin19"));
439+
assertTrue(renderedCompileCmd.contains("-m64"));
440+
assertTrue(renderedCompileCmd.contains("-isysroot /opt/platformsdk/MacOSX.sdk"));
441+
442+
PlatformConfig legacyPlatformConfig = mergePlatformConfig(config, "x86-osx");
443+
Map<String, Object> legacyRenderContext = new HashMap<>(legacyPlatformConfig.context);
444+
legacyRenderContext.put("env", env);
445+
legacyRenderContext.put("ext", new HashMap<String, Object>());
446+
legacyRenderContext.put("extension_name_upper", "TEST");
447+
legacyRenderContext.put("src", "source.mm");
448+
legacyRenderContext.put("tgt", "source.o");
449+
String legacyRenderedCompileCmd = new TemplateExecutor().execute(legacyPlatformConfig.compileCmd, legacyRenderContext);
450+
assertFalse(legacyRenderedCompileCmd.contains("-arch "));
451+
assertFalse(legacyRenderedCompileCmd.contains("-target "));
452+
assertFalse(legacyRenderedCompileCmd.contains("-m64 "));
453+
assertTrue(legacyRenderedCompileCmd.contains("-isysroot /opt/platformsdk/MacOSX.sdk"));
454+
}
455+
392456
@Test
393457
public void testGetAppmanifest() throws IOException, ExtenderException {
394458
File root = new File("test-data");

server/test-data/sdk/a/defoldsdk/extender/build.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ platforms:
138138
libPaths: ["{{env.SYSROOT}}/usr/lib/swift", "{{env.PLATFORMSDK_DIR}}/XcodeDefault{{env.XCODE_VERSION}}.xctoolchain/usr/lib/swift-{{env.SWIFT_VERSION}}/macosx", "{{env.PLATFORMSDK_DIR}}/XcodeDefault{{env.XCODE_VERSION}}.xctoolchain/usr/lib/clang/{{env.XCODE_CLANG_VERSION}}/lib/darwin"]
139139
defines: ["DM_PLATFORM_MACOS", "DM_PLATFORM_OSX", "GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED"]
140140
systemIncludes: ["{{env.SYSROOT}}/usr/include/c++/v1"]
141-
flags: ["-O2", "-g", "-stdlib=libc++", "-mmacosx-version-min={{osMinVersion}}", "-isysroot", "{{env.SYSROOT}}", "-nostdinc++", "-fno-exceptions", "-fvisibility=hidden", "-Werror=format"]
141+
flags: ["-fno-exceptions", "-fvisibility=hidden", "-Werror=format"]
142142
linkFlags: ["-O2", "-g", "-stdlib=libc++", "-mmacosx-version-min={{osMinVersion}}", "-isysroot", "{{env.SYSROOT}}", "-Wl,-rpath,@loader_path/.", "-Wl,-U,_objc_loadClassref"]
143143
cxxLinkShFlags: ["-O2", "-g", "-stdlib=libc++", "-mmacosx-version-min={{osMinVersion}}", "-isysroot", "{{env.SYSROOT}}", "-Wl,-rpath,@loader_path/.", "-Wl,-U,_objc_loadClassref"]
144144
libs: ['clang_rt.osx']
@@ -162,7 +162,7 @@ platforms:
162162
zipContentPattern: 'dmengine'
163163
allowedLibs: ["(\\w[\\w\\.+-]+)"]
164164
allowedFlags: ["-ObjC","-ObjC\\+\\+","-Wa,{{comma_separated_arg}}","-W{{warning}}","-Wno-{{warning}}","-ansi","--ansi","-std-default={{arg}}","-stdlib=(libstdc\\+\\+|libc\\+\\+)","-w","-std=(c89|c99|c\\+\\+98|c\\+\\+0x|c\\+\\+11|c\\+\\+14|c\\+\\+17|c\\+\\+20)","-Wp,{{comma_separated_arg}}","--extra-warnings","--warn-{{warning}}","--warn-={{warning}}","-f(no-)?objc-arc(-exceptions)?","-ferror-limit={{number}}","-O([0-4]?|fast|s|z)","-Wl,[-_a-zA-Z0-9,/@]+","-fno-rtti","-f\\w[\\w-=]+","-x","c"]
165-
compileCmd: 'clang++ -c {{#systemIncludes}}-isystem {{{.}}} {{/systemIncludes}} {{#defines}}-D{{{.}}} {{/defines}} {{#flags}}{{{.}}} {{/flags}} {{#ext.includes}}-I{{{.}}} {{/ext.includes}} {{#ext.frameworkPaths}}-F{{{.}}} {{/ext.frameworkPaths}} {{#includes}}-I{{{.}}} {{/includes}} {{src}} -o{{tgt}}'
165+
compileCmd: 'clang++ -c {{#clangArch}}-arch {{{clangArch}}} {{/clangArch}}{{#clangTarget}}-target {{{clangTarget}}} {{/clangTarget}}{{#clangArch}}-m64 {{/clangArch}}-O2 -g -stdlib=libc++ -mmacosx-version-min={{osMinVersion}} -isysroot {{env.SYSROOT}} -nostdinc++ {{#systemIncludes}}-isystem {{{.}}} {{/systemIncludes}} {{#defines}}-D{{{.}}} {{/defines}} {{#flags}}{{{.}}} {{/flags}} {{#ext.includes}}-I{{{.}}} {{/ext.includes}} {{#ext.frameworkPaths}}-F{{{.}}} {{/ext.frameworkPaths}} {{#includes}}-I{{{.}}} {{/includes}} {{src}} -o{{tgt}}'
166166
linkCmd: 'clang++ -o {{tgt}} {{#linkFlags}}{{{.}}} {{/linkFlags}} {{#ext.libPaths}}-L{{{.}}} {{/ext.libPaths}} {{#libPaths}}-L{{{.}}} {{/libPaths}} {{#libs}}-l{{{.}}} {{/libs}} {{#ext.libs}}-l{{{.}}} {{/ext.libs}} {{#engineLibs}}-l{{{.}}} {{/engineLibs}} {{#ext.dynamicLibs}}-l{{{.}}} {{/ext.dynamicLibs}} {{#dynamicLibs}}-l{{{.}}} {{/dynamicLibs}} {{#ext.frameworkPaths}}-F{{{.}}} {{/ext.frameworkPaths}} {{#ext.frameworks}}-framework {{{.}}} {{/ext.frameworks}} {{#frameworks}}-framework {{{.}}} {{/frameworks}} {{#src}}{{{.}}} {{/src}}'
167167
libCmd: 'ar rcs {{tgt}} {{#objs}}{{{.}}} {{/objs}}'
168168
symbolCmd: 'dsymutil -o {{src}}.dSYM {{src}}'
@@ -176,7 +176,8 @@ platforms:
176176
arm64-osx:
177177
context:
178178
libPaths: ["{{dynamo_home}}/lib/arm64-macos", "{{dynamo_home}}/ext/lib/arm64-macos"]
179-
flags: ["-arch", "arm64", "-target", "arm64-apple-darwin19", "-m64"]
179+
clangArch: "arm64"
180+
clangTarget: "arm64-apple-darwin19"
180181
linkFlags: ["-arch", "arm64", "-target", "arm64-apple-darwin19", "-m64"]
181182
cxxLinkShFlags: ["-arch", "arm64", "-target", "arm64-apple-darwin19", "-m64"]
182183
zig-target: 'aarch64-macos'
@@ -185,7 +186,8 @@ platforms:
185186
x86_64-osx:
186187
context:
187188
libPaths: ["{{dynamo_home}}/lib/x86_64-macos", "{{dynamo_home}}/ext/lib/x86_64-macos"]
188-
flags: ["-arch", "x86_64", "-target", "x86_64-apple-darwin19", "-m64"]
189+
clangArch: "x86_64"
190+
clangTarget: "x86_64-apple-darwin19"
189191
linkFlags: ["-arch", "x86_64", "-target", "x86_64-apple-darwin19", "-m64"]
190192
cxxLinkShFlags: ["-arch", "x86_64", "-target", "x86_64-apple-darwin19", "-m64"]
191193
zig-target: 'x86_64-macos'
@@ -485,4 +487,4 @@ platforms:
485487
linkCmds: ['clang++ {{#src}}{{{.}}} {{/src}} -o {{tgt}} {{#linkFlags}}{{{.}}} {{/linkFlags}} {{#ext.libPaths}}-L{{{.}}} {{/ext.libPaths}} {{#libPaths}}-L{{{.}}} {{/libPaths}} -Wl,-Bstatic -Wl,--start-group {{#engineLibs}}-l{{{.}}} {{/engineLibs}} {{#libs}}-l{{{.}}} {{/libs}} {{#ext.libs}}-l{{{.}}} {{/ext.libs}} -Wl,--end-group -Wl,-Bdynamic -Wl,-rpath=$ORIGIN,--enable-new-dtags {{#ext.dynamicLibs}}-l{{{.}}} {{/ext.dynamicLibs}} {{#dynamicLibs}}-l{{{.}}} {{/dynamicLibs}}',
486488
'cp {{tgt}} {{tgt}}_unstripped',
487489
'strip {{tgt}}']
488-
libCmd: 'llvm-ar rcs {{tgt}} {{#objs}}{{.}} {{/objs}}'
490+
libCmd: 'llvm-ar rcs {{tgt}} {{#objs}}{{.}} {{/objs}}'

0 commit comments

Comments
 (0)