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); 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