Skip to content

Commit 289529c

Browse files
committed
(multi-os-engine/multi-os-engine#161) Allow specify archs to build
1 parent 2d628c0 commit 289529c

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

src/main/java/org/moe/gradle/MoePlugin.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@
4343
import org.moe.gradle.tasks.XcodeBuild;
4444
import org.moe.gradle.tasks.XcodeInternal;
4545
import org.moe.gradle.tasks.XcodeProvider;
46+
import org.moe.gradle.utils.Arch;
47+
import org.moe.gradle.utils.PropertiesUtil;
4648
import org.moe.gradle.utils.Require;
4749

4850
import javax.inject.Inject;
4951
import java.io.File;
5052
import java.util.Arrays;
5153
import java.util.Optional;
54+
import java.util.Set;
5255
import java.util.stream.Collectors;
5356

5457
import static java.util.Arrays.asList;
@@ -67,6 +70,8 @@ public class MoePlugin extends AbstractMoePlugin {
6770

6871
private static final Logger LOG = Logging.getLogger(MoePlugin.class);
6972

73+
private static final String MOE_ARCHS_PROPERTY = "moe.archs";
74+
7075
@NotNull
7176
private MoeExtension extension;
7277

@@ -84,6 +89,14 @@ public Server getRemoteServer() {
8489
return remoteServer;
8590
}
8691

92+
@Nullable
93+
private Set<Arch> archs = null;
94+
95+
@Nullable
96+
public Set<Arch> getArchs() {
97+
return archs;
98+
}
99+
87100
@Inject
88101
public MoePlugin(Instantiator instantiator, ToolingModelBuilderRegistry registry) {
89102
super(instantiator, registry, false);
@@ -93,6 +106,21 @@ public MoePlugin(Instantiator instantiator, ToolingModelBuilderRegistry registry
93106
public void apply(Project project) {
94107
super.apply(project);
95108

109+
// Setup explicit archs
110+
String archsProp = PropertiesUtil.tryGetProperty(project, MOE_ARCHS_PROPERTY);
111+
if (archsProp != null) {
112+
archsProp = archsProp.trim();
113+
archs = Arrays.stream(archsProp.split(","))
114+
.map(String::trim)
115+
.filter(it -> !it.isEmpty())
116+
.map(Arch::getForName)
117+
.collect(Collectors.toSet());
118+
119+
if (archs.isEmpty()) {
120+
archs = null;
121+
}
122+
}
123+
96124
// Setup remote build
97125
remoteServer = Server.setup(this);
98126
if (remoteServer != null) {

src/main/java/org/moe/gradle/tasks/IpaBuild.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.moe.gradle.anns.Nullable;
3737
import org.moe.gradle.remote.Server;
3838
import org.moe.gradle.remote.file.FileList;
39+
import org.moe.gradle.utils.Arch;
3940
import org.moe.gradle.utils.ExportOptionsPlistManager;
4041
import org.moe.gradle.utils.Mode;
4142
import org.moe.gradle.utils.Require;
@@ -751,6 +752,11 @@ private List<String> calculateArchiveArgs() {
751752

752753
args.addAll(getAdditionalParameters());
753754

755+
Set<Arch> archs = getXcodeBuildTaskDep().getArchs();
756+
if (archs != null) {
757+
args.add("ARCHS=" + archs.stream().map(it -> it.name).collect(Collectors.joining(" ")));
758+
}
759+
754760
args.add("DEVELOPMENT_TEAM=" + getDevelopmentTeam());
755761

756762
args.add("-configuration");

src/main/java/org/moe/gradle/tasks/XcodeBuild.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.moe.gradle.remote.Server;
5151
import org.moe.gradle.remote.ServerChannelException;
5252
import org.moe.gradle.remote.file.FileList;
53+
import org.moe.gradle.utils.Arch;
5354
import org.moe.gradle.utils.Mode;
5455
import org.moe.gradle.utils.Require;
5556

@@ -122,6 +123,16 @@ public MoePlatform getPlatform() {
122123
return Require.nonNull(platform);
123124
}
124125

126+
@Nullable
127+
private Set<Arch> archs;
128+
129+
@Nullable
130+
@Internal
131+
@IgnoreUnused
132+
public Set<Arch> getArchs() {
133+
return archs;
134+
}
135+
125136
@NotNull
126137
private final String xcodeBuildTaskDate = new Date().toString();
127138

@@ -668,6 +679,11 @@ private List<String> calculateArgs() {
668679

669680
args.addAll(getAdditionalParameters());
670681

682+
Set<Arch> archs = getArchs();
683+
if (archs != null) {
684+
args.add("ARCHS=" + archs.stream().map(it -> it.name).collect(Collectors.joining(" ")));
685+
}
686+
671687
// DO NOT set CONFIGURATION_BUILD_DIR here! This is conflicted with CocoaPods!
672688
// Instead, set SYMROOT to the build root, since the BUILD_DIR is equals to SYMROOT
673689
// and CONFIGURATION_BUILD_DIR is derived from it.
@@ -722,7 +738,12 @@ protected final void setupMoeTask(@NotNull SourceSet sourceSet, @NotNull Mode mo
722738

723739
// Add dependencies
724740
final ArrayList<XcodeProvider> xcodeProviderTasks = new ArrayList<>();
725-
platform.archs.forEach(arch -> {
741+
Set<Arch> buildArchs = new HashSet<>(platform.archs);
742+
if (getMoePlugin().getArchs() != null) {
743+
buildArchs.retainAll(getMoePlugin().getArchs());
744+
archs = buildArchs;
745+
}
746+
buildArchs.forEach(arch -> {
726747
final XcodeProvider xcodeProvider = getMoePlugin().getTaskBy(XcodeProvider.class, sourceSet, mode, arch, platform);
727748
xcodeProviderTasks.add(xcodeProvider);
728749
dependsOn(xcodeProvider);

0 commit comments

Comments
 (0)