Skip to content

Commit 6cb9edb

Browse files
LLVM 19 is incompatible with static library inclusion.
1 parent b9fcf21 commit 6cb9edb

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

.github/workflows/main.yml

+23-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
llvm: ['11', '12', '13', '14', '15', '16', '17', '18', '19']
2525
cuda: ['0', '1']
2626
lua: ['luajit', 'moonjit']
27+
slib: ['0', '1']
2728
exclude:
2829
# macOS: exclude cuda
2930
- os: 'macos-13'
@@ -100,6 +101,26 @@ jobs:
100101
lua: 'moonjit'
101102
- llvm: '19'
102103
lua: 'moonjit'
104+
105+
# LLVM 19 is incompatible with SLIB_INCLUDE_LLVM
106+
- llvm: '11'
107+
slib: '0'
108+
- llvm: '12'
109+
slib: '0'
110+
- llvm: '13'
111+
slib: '0'
112+
- llvm: '14'
113+
slib: '0'
114+
- llvm: '15'
115+
slib: '0'
116+
- llvm: '16'
117+
slib: '0'
118+
- llvm: '17'
119+
slib: '0'
120+
- llvm: '18'
121+
slib: '0'
122+
- llvm: '19'
123+
slib: '1'
103124
steps:
104125
- uses: actions/checkout@v4
105126
- run: ./travis.sh
@@ -109,7 +130,7 @@ jobs:
109130
USE_CUDA: ${{ matrix.cuda }}
110131
STATIC_LLVM: 1
111132
STATIC_LUAJIT: 1
112-
SLIB_INCLUDE_LLVM: 1
133+
SLIB_INCLUDE_LLVM: ${{ matrix.slib }}
113134
SLIB_INCLUDE_LUAJIT: 1
114135
TERRA_LUA: ${{ matrix.lua }}
115136
- uses: actions/upload-artifact@v4
@@ -178,7 +199,7 @@ jobs:
178199
lua: 'luajit'
179200
cuda: '0'
180201
variant: 'prebuilt'
181-
slib: '1'
202+
slib: '0'
182203
static: '1'
183204

184205
# LLVM 12, 13, 14 on Ubuntu 22.04

CMakeLists.txt

+8-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set(TERRA_ENABLE_CUDA ${CUDA_FOUND} CACHE BOOL "Build Terra with support for CUD
1717
if(DEFINED TERRA_STATIC_LINK_LLVM)
1818
set(DEFAULT_TERRA_SLIB_INCLUDE_LLVM ${TERRA_STATIC_LINK_LLVM})
1919
else()
20-
if(WIN32)
20+
if(WIN32 OR LLVM_VERSION_MAJOR GREATER 18)
2121
set(DEFAULT_TERRA_SLIB_INCLUDE_LLVM OFF)
2222
else()
2323
set(DEFAULT_TERRA_SLIB_INCLUDE_LLVM ON)
@@ -26,6 +26,13 @@ endif()
2626
set(TERRA_SLIB_INCLUDE_LLVM ${DEFAULT_TERRA_SLIB_INCLUDE_LLVM} CACHE BOOL "Include LLVM in Terra static libraries")
2727
set(TERRA_STATIC_LINK_LLVM ON CACHE BOOL "Statically link Terra against LLVM")
2828

29+
if(LLVM_VERSION_MAJOR GREATER 18)
30+
set(DEFAULT_TERRA_WHOLE_ARCHIVE_LLVM OFF)
31+
else()
32+
set(DEFAULT_TERRA_WHOLE_ARCHIVE_LLVM ON)
33+
endif()
34+
set(TERRA_WHOLE_ARCHIVE_LLVM ${DEFAULT_TERRA_WHOLE_ARCHIVE_LLVM} CACHE BOOL "When statically linking LLVM, force inclusion of all objects")
35+
2936
if(TERRA_SLIB_INCLUDE_LLVM AND NOT TERRA_STATIC_LINK_LLVM)
3037
message(FATAL_ERROR "TERRA_SLIB_INCLUDE_LLVM requires TERRA_STATIC_LINK_LLVM to be set")
3138
endif()

cmake/Modules/ExtractLLVM.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,22 @@ elseif(TERRA_STATIC_LINK_LLVM)
6969
endif()
7070
endforeach()
7171

72-
if(UNIX AND NOT APPLE)
72+
if(UNIX AND NOT APPLE AND TERRA_WHOLE_ARCHIVE_LLVM)
7373
list(APPEND ALL_LLVM_LIBRARIES
7474
-Wl,-export-dynamic
7575
-Wl,--whole-archive
7676
)
7777
endif()
7878

7979
foreach(LLVM_LIB_PATH ${LLVM_LIBRARIES} ${CLANG_LIBRARIES})
80-
if(APPLE)
80+
if(APPLE AND TERRA_WHOLE_ARCHIVE_LLVM)
8181
list(APPEND ALL_LLVM_LIBRARIES "-Wl,-force_load,${LLVM_LIB_PATH}")
8282
else()
8383
list(APPEND ALL_LLVM_LIBRARIES "${LLVM_LIB_PATH}")
8484
endif()
8585
endforeach()
8686

87-
if(UNIX AND NOT APPLE)
87+
if(UNIX AND NOT APPLE AND TERRA_WHOLE_ARCHIVE_LLVM)
8888
list(APPEND ALL_LLVM_LIBRARIES
8989
-Wl,--no-whole-archive
9090
)

0 commit comments

Comments
 (0)