gnu: ldc: Work towards building on aarch64-linux.

* gnu/packages/dlang.scm (ldc)[arguments]: Adjust configure-flags to not
dynamically compile. Adjust custom 'fix-compiler-rt-library-discovery
phase to add a case for aarch64. Adjust custom'disable-problematic-tests
phase to remove some tests for aarch64-linux.
This commit is contained in:
Efraim Flashner 2022-06-26 14:33:12 +03:00
parent 25e5daf1b1
commit daa83c69f6
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -227,7 +227,8 @@ (define-public ldc
"ldc2-unittest" "all-test-runners")) "ldc2-unittest" "all-test-runners"))
((#:configure-flags flags) ((#:configure-flags flags)
`(,@flags "-DBUILD_SHARED_LIBS=ON" `(,@flags "-DBUILD_SHARED_LIBS=ON"
"-DLDC_LINK_MANUALLY=OFF")) "-DLDC_LINK_MANUALLY=OFF"
"-DLDC_DYNAMIC_COMPILE=OFF"))
((#:tests? _) #t) ((#:tests? _) #t)
((#:phases phases) ((#:phases phases)
`(modify-phases ,phases `(modify-phases ,phases
@ -248,7 +249,8 @@ (define (gnu-triplet->clang-arch system)
system))))) system)))))
(matches ("x86_64" => "x86_64") (matches ("x86_64" => "x86_64")
("i686" => "i386") ("i686" => "i386")
("armhf" => "armhf")))) ("armhf" => "armhf")
("aarch64" => "aarch64"))))
;; Coax LLVM into agreeing with Clang about system target ;; Coax LLVM into agreeing with Clang about system target
;; naming. ;; naming.
(substitute* "driver/linker-gcc.cpp" (substitute* "driver/linker-gcc.cpp"
@ -313,6 +315,12 @@ (define (gnu-triplet->clang-arch system)
"sanitizers/msan_noerror.d" "sanitizers/msan_noerror.d"
"sanitizers/msan_uninitialized.d" "sanitizers/msan_uninitialized.d"
"d2/dmd-testsuite/runnable_cxx/cppa.d"))) "d2/dmd-testsuite/runnable_cxx/cppa.d")))
(,(target-aarch64?)
(for-each delete-file
'("d2/dmd-testsuite/runnable/ldc_cabi1.d"
"sanitizers/fuzz_basic.d"
"sanitizers/msan_noerror.d"
"sanitizers/msan_uninitialized.d")))
(#t '()))))) (#t '())))))
(add-before 'configure 'set-cc-and-cxx-to-use-clang (add-before 'configure 'set-cc-and-cxx-to-use-clang
;; The tests require to be built with Clang; build everything ;; The tests require to be built with Clang; build everything