From 8a89446f90d1216c4b8066d023541a3a86d45b82 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Thu, 2 Jan 2025 09:19:15 +0100 Subject: [PATCH 1/2] fix: Make a test more platform-independent This will support ARM64 (Mac OS) and might be more future proof. --- test/issue1447-build-settings-vars.sh | 10 +++++++--- test/issue1447-build-settings-vars/view-aarch64/arch | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 test/issue1447-build-settings-vars/view-aarch64/arch diff --git a/test/issue1447-build-settings-vars.sh b/test/issue1447-build-settings-vars.sh index b2500e579..f06a7fa04 100755 --- a/test/issue1447-build-settings-vars.sh +++ b/test/issue1447-build-settings-vars.sh @@ -3,10 +3,14 @@ set -e . $(dirname "${BASH_SOURCE[0]}")/common.sh -if [[ `uname -m` == "x86_64" ]]; then - ARCH=x86_64 -else +if [[ `uname -m` == "i386" ]]; then + ARCH=x86 +elif [[ `uname -m` == "i686" ]]; then ARCH=x86 +elif [[ `uname -m` == "arm64" ]]; then + ARCH="aarch64" +else + ARCH=$(uname -m) fi rm -rf ${CURR_DIR}/issue1447-build-settings-vars/.dub diff --git a/test/issue1447-build-settings-vars/view-aarch64/arch b/test/issue1447-build-settings-vars/view-aarch64/arch new file mode 100644 index 000000000..ec4184194 --- /dev/null +++ b/test/issue1447-build-settings-vars/view-aarch64/arch @@ -0,0 +1 @@ +aarch64 \ No newline at end of file From 560788d2d963bb65b4418dafef3a969e82443638 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Mon, 17 Jun 2024 16:57:16 +0200 Subject: [PATCH 2/2] feat: Test Dub on macOS-14 / arm64 --- .github/workflows/main.yml | 2 ++ source/dub/compilers/dmd.d | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8916253b6..de451ba6d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,6 +72,8 @@ jobs: - { dc: ldc-latest, do_test: true } - { dc: dmd-master, do_test: true } - { dc: ldc-master, do_test: true } + # Test on ARM64 + - { os: macOS-14, dc: ldc-latest, do_test: true } exclude: # Error with those versions: # ld: multiple errors: symbol count from symbol table and dynamic symbol table differ in [.../dub.o]; address=0x0 points to section(2) with no content in '[...]/osx/lib/libphobos2.a[3177](config_a68_4c3.o)' diff --git a/source/dub/compilers/dmd.d b/source/dub/compilers/dmd.d index ff7f64a51..64df463d8 100644 --- a/source/dub/compilers/dmd.d +++ b/source/dub/compilers/dmd.d @@ -174,10 +174,20 @@ config /etc/dmd.conf version (LDC) unittest { import std.conv : to; + version (ARM) + enum isARM = true; + version (AArch64) + enum isARM = true; + else + enum isARM = false; + BuildSettings settings; auto compiler = new DMDCompiler; auto bp = compiler.determinePlatform(settings, "ldmd2", "x86"); - assert(bp.architecture.canFind("x86"), bp.architecture.to!string); + static if (isARM) + assert(bp.architecture.canFind("arm"), bp.architecture.to!string); + else + assert(bp.architecture.canFind("x86"), bp.architecture.to!string); bp = compiler.determinePlatform(settings, "ldmd2", ""); version (X86) assert(bp.architecture.canFind("x86"), bp.architecture.to!string); version (X86_64) assert(bp.architecture.canFind("x86_64"), bp.architecture.to!string);