Skip to content

Commit 154bd46

Browse files
authored
[build] Make it possible to select to build for either the simulator or device. (#24092)
Also simplify and unify some related code.
1 parent 54a0ac8 commit 154bd46

File tree

3 files changed

+52
-48
lines changed

3 files changed

+52
-48
lines changed

Make.config

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,9 @@ INCLUDE_MAC=1
282282
INCLUDE_TVOS=1
283283
INCLUDE_MACCATALYST=1
284284

285+
INCLUDE_SIMULATOR=1
286+
INCLUDE_DEVICE=1
287+
285288
-include $(TOP)/Make.config.local
286289
-include $(TOP)/configure.inc
287290

@@ -428,52 +431,64 @@ DOTNET_MACCATALYST_ASSEMBLY_NAME=Microsoft.MacCatalyst
428431
DOTNET_MACOS_ASSEMBLY_NAME=Microsoft.macOS
429432

430433
DOTNET_PLATFORMS=
434+
431435
ifdef INCLUDE_IOS
432436
DOTNET_PLATFORMS+=iOS
433437
DOTNET_MONOVM_PLATFORMS+=iOS
434-
DOTNET_IOS_BITNESSES+=64
435438
DOTNET_NATIVEAOT_PLATFORMS+=iOS
436-
XCFRAMEWORK_PLATFORMS+=iossimulator
437-
XCFRAMEWORK_iOS_PLATFORMS+=iossimulator
438-
XCFRAMEWORK_iossimulator_RUNTIME_IDENTIFIERS=iossimulator-x64 iossimulator-arm64
439439
DOTNET_IOS_RUNTIME_IDENTIFIERS_NO_ARCH=ios
440440

441-
# 64-bit architectures
442-
DOTNET_IOS_RUNTIME_IDENTIFIERS_64=ios-arm64
443-
XCFRAMEWORK_PLATFORMS+=ios
441+
ifdef INCLUDE_SIMULATOR
442+
DOTNET_IOS_RUNTIME_IDENTIFIERS_SIMULATOR+=iossimulator-x64 iossimulator-arm64
443+
XCFRAMEWORK_iOS_PLATFORMS+=iossimulator
444+
XCFRAMEWORK_iossimulator_RUNTIME_IDENTIFIERS+=$(DOTNET_IOS_RUNTIME_IDENTIFIERS_SIMULATOR)
445+
DOTNET_IOS_RUNTIME_IDENTIFIERS+=$(DOTNET_IOS_RUNTIME_IDENTIFIERS_SIMULATOR)
446+
DOTNET_iOS_SDK_PLATFORMS+=iphonesimulator
447+
endif # INCLUDE_SIMULATOR
448+
449+
ifdef INCLUDE_DEVICE
450+
DOTNET_IOS_RUNTIME_IDENTIFIERS_DEVICE+=ios-arm64
444451
XCFRAMEWORK_iOS_PLATFORMS+=ios
445-
XCFRAMEWORK_ios_RUNTIME_IDENTIFIERS=ios-arm64
446-
DOTNET_IOS_RUNTIME_IDENTIFIERS_64+=iossimulator-x64 iossimulator-arm64
452+
XCFRAMEWORK_ios_RUNTIME_IDENTIFIERS+=$(DOTNET_IOS_RUNTIME_IDENTIFIERS_DEVICE)
453+
DOTNET_IOS_RUNTIME_IDENTIFIERS+=$(DOTNET_IOS_RUNTIME_IDENTIFIERS_DEVICE)
454+
DOTNET_iOS_SDK_PLATFORMS+=iphoneos
455+
endif # INCLUDE_DEVICE
447456

448-
# All of them
449-
DOTNET_IOS_RUNTIME_IDENTIFIERS=$(DOTNET_IOS_RUNTIME_IDENTIFIERS_32) $(DOTNET_IOS_RUNTIME_IDENTIFIERS_64)
457+
XCFRAMEWORK_PLATFORMS+=$(XCFRAMEWORK_iOS_PLATFORMS)
450458
endif # INCLUDE_IOS
451459

452460
ifdef INCLUDE_TVOS
453461
DOTNET_PLATFORMS+=tvOS
454462
DOTNET_MONOVM_PLATFORMS+=tvOS
455-
DOTNET_TVOS_BITNESSES+=64
456463
DOTNET_NATIVEAOT_PLATFORMS+=tvOS
457-
XCFRAMEWORK_PLATFORMS+=tvossimulator
464+
DOTNET_TVOS_RUNTIME_IDENTIFIERS_NO_ARCH=tvos
465+
466+
ifdef INCLUDE_SIMULATOR
467+
DOTNET_TVOS_RUNTIME_IDENTIFIERS_SIMULATOR+=tvossimulator-x64 tvossimulator-arm64
458468
XCFRAMEWORK_tvOS_PLATFORMS+=tvossimulator
459-
XCFRAMEWORK_tvossimulator_RUNTIME_IDENTIFIERS=tvossimulator-x64 tvossimulator-arm64
469+
XCFRAMEWORK_tvossimulator_RUNTIME_IDENTIFIERS=$(DOTNET_TVOS_RUNTIME_IDENTIFIERS_SIMULATOR)
470+
DOTNET_TVOS_RUNTIME_IDENTIFIERS+=$(DOTNET_TVOS_RUNTIME_IDENTIFIERS_SIMULATOR)
471+
DOTNET_tvOS_SDK_PLATFORMS+=tvsimulator
472+
endif # INCLUDE_SIMULATOR
460473

461-
DOTNET_TVOS_RUNTIME_IDENTIFIERS_NO_ARCH=tvos
462-
DOTNET_TVOS_RUNTIME_IDENTIFIERS=tvos-arm64 tvossimulator-x64 tvossimulator-arm64
463-
XCFRAMEWORK_PLATFORMS+=tvos
474+
ifdef INCLUDE_DEVICE
475+
DOTNET_TVOS_RUNTIME_IDENTIFIERS_DEVICE+=tvos-arm64
464476
XCFRAMEWORK_tvOS_PLATFORMS+=tvos
465-
XCFRAMEWORK_tvos_RUNTIME_IDENTIFIERS=tvos-arm64
466-
DOTNET_TVOS_RUNTIME_IDENTIFIERS_64+=$(DOTNET_TVOS_RUNTIME_IDENTIFIERS)
477+
XCFRAMEWORK_tvos_RUNTIME_IDENTIFIERS=$(DOTNET_TVOS_RUNTIME_IDENTIFIERS_DEVICE)
478+
DOTNET_TVOS_RUNTIME_IDENTIFIERS+=$(DOTNET_TVOS_RUNTIME_IDENTIFIERS_DEVICE)
479+
DOTNET_tvOS_SDK_PLATFORMS+=tvos
480+
endif
481+
482+
XCFRAMEWORK_PLATFORMS+=$(XCFRAMEWORK_tvOS_PLATFORMS)
467483
endif
468484

469485
ifdef INCLUDE_MACCATALYST
470486
DOTNET_PLATFORMS+=MacCatalyst
471487
DOTNET_MONOVM_PLATFORMS+=MacCatalyst
472-
DOTNET_MACCATALYST_BITNESSES+=64
473488
DOTNET_NATIVEAOT_PLATFORMS+=MacCatalyst
474489
DOTNET_MACCATALYST_RUNTIME_IDENTIFIERS_NO_ARCH=maccatalyst
475490
DOTNET_MACCATALYST_RUNTIME_IDENTIFIERS=maccatalyst-x64 maccatalyst-arm64
476-
DOTNET_MACCATALYST_RUNTIME_IDENTIFIERS_64+=$(DOTNET_MACCATALYST_RUNTIME_IDENTIFIERS)
491+
DOTNET_MacCatalyst_SDK_PLATFORMS+=maccatalyst
477492
XCFRAMEWORK_PLATFORMS+=maccatalyst
478493
XCFRAMEWORK_MacCatalyst_PLATFORMS+=maccatalyst
479494
XCFRAMEWORK_DESKTOP_PLATFORMS+=maccatalyst
@@ -483,11 +498,10 @@ endif
483498
ifdef INCLUDE_MAC
484499
DOTNET_PLATFORMS+=macOS
485500
DOTNET_CORECLR_PLATFORMS+=macOS
486-
DOTNET_MACOS_BITNESSES+=64
487501
DOTNET_NATIVEAOT_PLATFORMS+=macOS
488502
DOTNET_MACOS_RUNTIME_IDENTIFIERS_NO_ARCH=osx
489503
DOTNET_MACOS_RUNTIME_IDENTIFIERS=osx-x64 osx-arm64
490-
DOTNET_MACOS_RUNTIME_IDENTIFIERS_64=$(DOTNET_MACOS_RUNTIME_IDENTIFIERS)
504+
DOTNET_macOS_SDK_PLATFORMS+=mac
491505
XCFRAMEWORK_PLATFORMS+=macos
492506
XCFRAMEWORK_macOS_PLATFORMS+=macos
493507
XCFRAMEWORK_DESKTOP_PLATFORMS+=macos
@@ -546,11 +560,6 @@ DOTNET_osx-arm64_SDK_PLATFORM=mac
546560
DOTNET_maccatalyst-x64_SDK_PLATFORM=maccatalyst
547561
DOTNET_maccatalyst-arm64_SDK_PLATFORM=maccatalyst
548562

549-
DOTNET_iOS_SDK_PLATFORMS=iphonesimulator iphoneos
550-
DOTNET_tvOS_SDK_PLATFORMS=tvsimulator tvos
551-
DOTNET_macOS_SDK_PLATFORMS=mac
552-
DOTNET_MacCatalyst_SDK_PLATFORMS=maccatalyst
553-
554563
# XCFRAMEWORK_PLATFORM -> PLATFORM
555564
DOTNET_iossimulator_PLATFORM=ios
556565
DOTNET_ios_PLATFORM=ios

configure

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ while test "x$1" != x; do
126126
echo "DOTNET_RUNTIME_PATH=$2" >> "$CONFIGURED_FILE"
127127
shift 2
128128
;;
129+
--disable-device)
130+
echo "ENABLE_DEVICE=" >> "$CONFIGURED_FILE"
131+
shift
132+
;;
133+
--disable-simulator)
134+
echo "ENABLE_SIMULATOR=" >> "$CONFIGURED_FILE"
135+
shift
136+
;;
129137
--ignore-unknown-params)
130138
echo "ignoring unknown parameters"
131139
IGNORE_UNKNOWN_PARAMS=true

src/Makefile

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -376,15 +376,6 @@ endif
376376
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call BuildDotNetIntermediateAssembly,$(platform),$(shell echo $(platform) | tr '[:lower:]' '[:upper:]'),$(shell echo $(platform) | tr '[:upper:]' '[:lower:]'))))
377377

378378
define BuildDotNetPlatformAssembly
379-
## We build the ref assembly when building the 64-bit version of the platform assembly,
380-
## so we need some special logic here.
381-
ifeq ($(4),64)
382-
$(2)_$(4)_REFOUT_ARG = -refout:$($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1).dll
383-
$(2)_$(4)_REF_TARGET = $($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1)%dll
384-
$(2)_$(4)_DOC_ARG = -doc:$($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1).xml
385-
$(2)_$(4)_DOC_TARGET = $($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1)%xml
386-
endif
387-
388379
$(2)_DOTNET_PLATFORM_ASSEMBLY_DEPENDENCIES = \
389380
$($(2)_DOTNET_SOURCES) \
390381
$($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp \
@@ -399,7 +390,6 @@ $(2)_DOTNET_PLATFORM_ASSEMBLY_DIR_DEPENDENCIES = \
399390
$($(2)_DOTNET_BUILD_DIR)/$(4) \
400391
$($(2)_DOTNET_BUILD_DIR)/ref \
401392

402-
ifeq ($(4),64)
403393
PLATFORM_$(1)_CSPROJ = $(DOTNET_BUILD_DIR)/$(1)/csproj/platform/Microsoft.$(1).csproj
404394
CSPROJECTS += $$(PLATFORM_$(1)_CSPROJ)
405395
$$(PLATFORM_$(1)_CSPROJ): $($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp Makefile $(RSP_TO_CSPROJ) $($(2)_DOTNET_BUILD_DIR)/embed-files.rsp
@@ -412,7 +402,6 @@ $$(PLATFORM_$(1)_CSPROJ): $($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp Makefile $
412402
--property=LowerCasePlatform=$(3) \
413403
--output $$@.tmp
414404
$$(Q) mv $$@.tmp $$@
415-
endif
416405

417406
rsp:: $($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp
418407

@@ -430,12 +419,11 @@ $($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp: Makefile frameworks.sources $(RSP_D
430419
-optimize \
431420
$$(ARGS_$(1)) \
432421
-publicsign -keyfile:$(PRODUCT_KEY_PATH) \
433-
$$($(2)_$(4)_REFOUT_ARG) \
434-
$$($(2)_$(4)_DOC_ARG) \
422+
-refout:$($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1).dll \
423+
-doc:$($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1).xml \
435424
-sourcelink:$($(2)_DOTNET_BUILD_DIR)/SourceLink.json \
436425
@$$(abspath $($(2)_DOTNET_BUILD_DIR)/embed-files.rsp) \
437426
$$($(2)_DEFINES) \
438-
$(ARGS_$(4)) \
439427
$$(DOTNET_WARNINGS_TO_FIX) \
440428
@$$(abspath $(RSP_DIR)/dotnet/$(3)-defines-dotnet.rsp) \
441429
-res:$($(2)_DOTNET_BUILD_DIR)/ILLink.LinkAttributes.xml \
@@ -448,8 +436,8 @@ $($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp: Makefile frameworks.sources $(RSP_D
448436
> $$@.tmp
449437
$$(Q) mv $$@.tmp $$@
450438

451-
$($(2)_DOTNET_BUILD_DIR)/$(4)/Microsoft.$(1)%dll $($(2)_DOTNET_BUILD_DIR)/$(4)/Microsoft.$(1)%pdb $$($(2)_$(4)_REF_TARGET) $$($(2)_$(4)_DOC_TARGET): $$($(2)_DOTNET_PLATFORM_ASSEMBLY_DEPENDENCIES) $$(ROSLYN_GENERATOR) $$(ROSLYN_ANALYZER) | $$($(2)_DOTNET_PLATFORM_ASSEMBLY_DIR_DEPENDENCIES)
452-
$$(call Q_PROF_CSC,dotnet/$(4)-bit) $(DOTNET_CSC) @$($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp
439+
$($(2)_DOTNET_BUILD_DIR)/$(4)/Microsoft.$(1)%dll $($(2)_DOTNET_BUILD_DIR)/$(4)/Microsoft.$(1)%pdb $($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1)%dll $($(2)_DOTNET_BUILD_DIR)/ref/Microsoft.$(1)%xml: $$($(2)_DOTNET_PLATFORM_ASSEMBLY_DEPENDENCIES) $$(ROSLYN_GENERATOR) $$(ROSLYN_ANALYZER) | $$($(2)_DOTNET_PLATFORM_ASSEMBLY_DIR_DEPENDENCIES)
440+
$$(call Q_PROF_CSC,dotnet) $(DOTNET_CSC) @$($(2)_DOTNET_BUILD_DIR)/Microsoft.$(1).rsp
453441

454442
dotnet-$(3):: $($(2)_DOTNET_BUILD_DIR)/$(4)/Microsoft.$(1).dll
455443

@@ -479,13 +467,12 @@ endef
479467
# 1: Platform (correct case)
480468
# 2: PLATFORM (all upper case)
481469
# 3: platform (all lower case)
482-
# 4: 32 or 64 (architecture bitness)
470+
# 4: 64 (bits)
483471
#
484472
# pseudo-code:
485473
# foreach (var platform in DOTNET_PLATFORMS)
486-
# foreach (var bitness in DOTNET_<platform.ToUpper ()>_BITNESSES)
487-
# BuildDotNetPlatformAssembly (platform, platform.ToUpper (), platform.ToLower (), bitness)
488-
$(foreach platform,$(DOTNET_PLATFORMS),$(foreach bitness, $(DOTNET_$(shell echo $(platform) | tr '[:lower:]' '[:upper:]')_BITNESSES), $(eval $(call BuildDotNetPlatformAssembly,$(platform),$(shell echo $(platform) | tr '[:lower:]' '[:upper:]'),$(shell echo $(platform) | tr '[:upper:]' '[:lower:]'),$(bitness)))))
474+
# BuildDotNetPlatformAssembly (platform, platform.ToUpper (), platform.ToLower (), 64)
475+
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call BuildDotNetPlatformAssembly,$(platform),$(shell echo $(platform) | tr '[:lower:]' '[:upper:]'),$(shell echo $(platform) | tr '[:upper:]' '[:lower:]'),64)))
489476

490477
define DefineTargets
491478
$(1)_NUGET_TARGETS = \

0 commit comments

Comments
 (0)