Skip to content

Commit 87ae838

Browse files
authored
Merge pull request #4901 from arrowd/freebsd
Switch FreeBSD CI to LLVM 19
2 parents 4091898 + 7d341e6 commit 87ae838

File tree

4 files changed

+33
-12
lines changed

4 files changed

+33
-12
lines changed

.circleci/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ commonSteps: &commonSteps
4242
rm ldc2.tar.xz
4343
fi
4444
- checkout
45+
- run:
46+
name: Merge PR with target branch
47+
command: |
48+
set -ux
49+
if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then
50+
git fetch origin "+refs/pull/$CIRCLE_PR_NUMBER/merge:"
51+
git checkout -f FETCH_HEAD
52+
fi
4553
- run:
4654
name: Checkout git submodules
4755
command: git submodule update --init

.cirrus.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# For PRs: check out the current *merge* ref, i.e., merge with target branch
2+
clone_steps_template: &CLONE_STEPS_TEMPLATE
3+
merge_with_target_branch_script: |
4+
if [ -n "${CIRRUS_PR:-}" ]; then
5+
git fetch origin "+refs/pull/$CIRRUS_PR/merge:"
6+
git checkout -f FETCH_HEAD
7+
fi
8+
19
# Installs lit, clones the git submodules, builds LDC and the test
210
# runners and runs the tests.
311
# Requires env variables CI_ARCH, CI_OS, EXTRA_CMAKE_FLAGS and PARALLELISM.
@@ -76,10 +84,7 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
7684
# Run dynamic-compile integration test
7785
run_dynamic_compile_integration_test_script: |
7886
cd $CIRRUS_WORKING_DIR/..
79-
# FreeBSD's LLVM 15 is too old (need LLVM 18+ for dynamic-compile)
80-
if [[ "$CI_OS" != "freebsd" ]]; then
81-
installed/bin/ldc2 -enable-dynamic-compile -run $CIRRUS_WORKING_DIR/tests/dynamiccompile/array.d
82-
fi
87+
installed/bin/ldc2 -enable-dynamic-compile -run $CIRRUS_WORKING_DIR/tests/dynamiccompile/array.d
8388
# Run ImportC integration test
8489
run_importC_integration_test_script: |
8590
cd $CIRRUS_WORKING_DIR/..
@@ -193,6 +198,7 @@ task:
193198
# for gdmd:
194199
LANG: C.UTF-8
195200
<< : *INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
201+
<< : *CLONE_STEPS_TEMPLATE
196202
# to get the LTO lit-tests working:
197203
make_lld_the_default_linker_script: |
198204
ln -sf ld.lld /usr/bin/ld
@@ -220,17 +226,18 @@ task:
220226
-DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto"
221227
-DEXTRA_CXXFLAGS=-flto=full
222228
PARALLELISM: 4
223-
CC: clang15
224-
CXX: clang++15
229+
CC: clang19
230+
CXX: clang++19
225231
install_prerequisites_script: |
226232
cd $CIRRUS_WORKING_DIR/..
227233
sysctl -n hw.ncpu
228-
pkg install -y git cmake ninja gmake llvm15 bash gtar 7-zip ldc
234+
pkg install -y git cmake ninja gmake llvm19 bash gtar 7-zip ldc
229235
python3 --version
230236
python3 -m ensurepip
231237
# set up default llvm-config
232238
ls -l /usr/local/bin/llvm-config*
233-
ln -sf llvm-config15 /usr/local/bin/llvm-config
239+
ln -sf llvm-config19 /usr/local/bin/llvm-config
240+
<< : *CLONE_STEPS_TEMPLATE
234241
clone_submodules_early_script: |
235242
cd $CIRRUS_WORKING_DIR
236243
git submodule update --init --depth $CIRRUS_CLONE_DEPTH

CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,21 @@ if(LDC_WITH_LLD)
619619
else()
620620
set(LDC_LINKERFLAG_LIST -lLLVMSymbolize ${LDC_LINKERFLAG_LIST})
621621
endif()
622-
set(LLD_MACHO lldMachO)
623622
if(MSVC)
624-
list(APPEND LDC_LINKERFLAG_LIST lldMinGW.lib lldCOFF.lib lldELF.lib ${LLD_MACHO}.lib lldWasm.lib lldCommon.lib)
623+
list(APPEND LDC_LINKERFLAG_LIST lldMinGW.lib lldCOFF.lib lldELF.lib lldMachO.lib lldWasm.lib lldCommon.lib)
625624
else()
626-
set(LDC_LINKERFLAG_LIST -llldMinGW -llldCOFF -llldELF -l${LLD_MACHO} -llldWasm -llldCommon ${LDC_LINKERFLAG_LIST})
625+
set(LDC_LINKERFLAG_LIST -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldCommon ${LDC_LINKERFLAG_LIST})
627626
endif()
628627
if(APPLE)
629628
# LLD 13.0.0 on Mac needs libxar
630629
list(APPEND LDC_LINKERFLAG_LIST -lxar)
631630
endif()
631+
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
632+
# FreeBSD LLVM port links to zstd, but does not convey this information via CMake
633+
# Workaround it here until it is fixed in the port
634+
find_package(zstd)
635+
list(APPEND LDC_LINKERFLAG_LIST "$<TARGET_LINKER_FILE:zstd::libzstd_shared>")
636+
endif()
632637
endif()
633638

634639
if(NOT DEFINED LDC_LINK_MANUALLY)

tools/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ if(LDC_BUNDLE_LLVM_TOOLS)
3030
# Build ldc-profdata for converting profile data formats (source version depends on LLVM version)
3131
set(LDCPROFDATA_SRC ldc-profdata/llvm-profdata-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.cpp)
3232
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LDCPROFDATA_SRC})
33+
find_package(Threads)
3334
add_executable(ldc-profdata ${LDCPROFDATA_SRC})
3435
set_target_properties(
3536
ldc-profdata PROPERTIES
3637
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin
3738
COMPILE_FLAGS "${LLVM_CXXFLAGS} ${LDC_CXXFLAGS}"
3839
LINK_FLAGS "${SANITIZE_LDFLAGS} ${FULLY_STATIC_LDFLAG}"
3940
)
40-
target_link_libraries(ldc-profdata ${LLVM_LIBRARIES} ${CMAKE_DL_LIBS} ${LLVM_LDFLAGS})
41+
target_link_libraries(ldc-profdata ${LLVM_LIBRARIES} ${CMAKE_DL_LIBS} ${LLVM_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT})
4142
install(TARGETS ldc-profdata DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
4243

4344
# Set path to executable, used by the lit testsuite.

0 commit comments

Comments
 (0)