Skip to content

Commit 68728a6

Browse files
author
Rye
committed
Clean up cmake linking to avoid implicit link to system libraries
1 parent 21b22dd commit 68728a6

16 files changed

+75
-98
lines changed

indra/cmake/00-Common.cmake

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ if (LINUX)
170170
)
171171

172172
add_link_options(
173-
"LINKER:--build-id"
173+
"LINKER:--build-id"
174174
"LINKER:--as-needed"
175175
"LINKER:-z,relro"
176176
"LINKER:-z,now"
@@ -201,15 +201,9 @@ if (DARWIN)
201201
set(CLANG_DISABLE_FATAL_WARNINGS OFF)
202202
set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
203203
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
204-
# Ensure that CMAKE_CXX_FLAGS has the correct -g debug information format --
205-
# see Variables.cmake.
206-
string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}"
207-
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
208-
# NOTE: it's critical that the optimization flag is put in front.
209-
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
210-
## Really?? On developer machines too?
211-
##set(ENABLE_SIGNING TRUE)
212-
##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
204+
205+
# Ensure debug symbols are always generated
206+
add_compile_options(-g --debug) # --debug is a clang synonym for -g that bypasses cmake behaviors
213207
endif(DARWIN)
214208

215209
if(LINUX OR DARWIN)

indra/cmake/Audio.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ if (WINDOWS)
2121
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbis.lib
2222
)
2323
else (WINDOWS)
24-
target_link_libraries(ll::vorbis INTERFACE vorbisfile vorbis ogg vorbisenc )
24+
target_link_libraries(ll::vorbis INTERFACE
25+
${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.a
26+
${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.a
27+
${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.a
28+
${ARCH_PREBUILT_DIRS_RELEASE}/libogg.a
29+
)
2530
endif (WINDOWS)
2631

indra/cmake/Boost.cmake

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,29 @@ if (WINDOWS)
2525
libboost_regex-mt${addrsfx}
2626
libboost_system-mt${addrsfx}
2727
libboost_thread-mt${addrsfx}
28-
libboost_url-mt${addrsfx})
29-
elseif (LINUX)
30-
target_link_libraries( ll::boost INTERFACE
31-
boost_fiber-mt${addrsfx}
32-
boost_context-mt${addrsfx}
33-
boost_filesystem-mt${addrsfx}
34-
boost_program_options-mt${addrsfx}
35-
boost_regex-mt${addrsfx}
36-
boost_system-mt${addrsfx}
37-
boost_thread-mt${addrsfx}
38-
boost_url-mt${addrsfx})
28+
libboost_url-mt${addrsfx}
29+
)
3930
elseif (DARWIN)
4031
target_link_libraries( ll::boost INTERFACE
41-
boost_context-mt${addrsfx}
42-
boost_fiber-mt${addrsfx}
43-
boost_filesystem-mt${addrsfx}
44-
boost_program_options-mt${addrsfx}
45-
boost_regex-mt${addrsfx}
46-
boost_system-mt${addrsfx}
47-
boost_thread-mt${addrsfx}
48-
boost_url-mt${addrsfx})
49-
endif (WINDOWS)
50-
51-
if (LINUX)
52-
set(BOOST_SYSTEM_LIBRARY ${BOOST_SYSTEM_LIBRARY} rt)
53-
set(BOOST_THREAD_LIBRARY ${BOOST_THREAD_LIBRARY} rt)
54-
endif (LINUX)
32+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_context-mt.a
33+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_fiber-mt.a
34+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_filesystem-mt.a
35+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_program_options-mt.a
36+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_regex-mt.a
37+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_system-mt.a
38+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_thread-mt.a
39+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_url-mt.a
40+
)
41+
else ()
42+
target_link_libraries( ll::boost INTERFACE
43+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_context-mt${addrsfx}.a
44+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_fiber-mt${addrsfx}.a
45+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_filesystem-mt${addrsfx}.a
46+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_program_options-mt${addrsfx}.a
47+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_regex-mt${addrsfx}.a
48+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_system-mt${addrsfx}.a
49+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_thread-mt${addrsfx}.a
50+
${ARCH_PREBUILT_DIRS_RELEASE}/libboost_url-mt${addrsfx}.a
51+
)
52+
endif ()
5553

indra/cmake/Copy3rdPartyLibs.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ elseif(DARWIN)
171171
set(release_files
172172
libndofdev.dylib
173173
libSDL2.dylib
174-
libSDL2-2.0.dylib
175174
)
176175

177176
if(LLCOMMON_LINK_SHARED)

indra/cmake/LLKDU.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ if (USE_KDU)
1414
include(Prebuilt)
1515
use_prebuilt_binary(kdu)
1616
if (WINDOWS)
17-
target_link_libraries( ll::kdu INTERFACE kdu.lib)
17+
target_link_libraries( ll::kdu INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/kdu.lib)
1818
else (WINDOWS)
19-
target_link_libraries( ll::kdu INTERFACE libkdu.a)
19+
target_link_libraries( ll::kdu INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libkdu.a)
2020
endif (WINDOWS)
2121

2222
target_include_directories( ll::kdu SYSTEM INTERFACE
2323
${AUTOBUILD_INSTALL_DIR}/include/kdu
2424
${LIBS_OPEN_DIR}/llkdu
2525
)
26-
target_compile_definitions(ll::kdu INTERFACE KDU_X86_INTRINSICS=1 KDU_NO_THREADS=1)
26+
target_compile_definitions(ll::kdu INTERFACE KDU_NO_THREADS=1)
2727
endif (USE_KDU)

indra/cmake/LLPrimitive.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ target_include_directories( ll::colladadom SYSTEM INTERFACE
4343
if (WINDOWS)
4444
target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ll::libxml ll::minizip-ng )
4545
elseif (DARWIN)
46-
target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
46+
target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a ll::boost ll::libxml ll::minizip-ng)
4747
elseif (LINUX)
48-
target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
48+
target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a ll::boost ll::libxml ll::minizip-ng)
4949
endif()

indra/cmake/LibVLCPlugin.cmake

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@ if (WINDOWS)
2424
)
2525
elseif (DARWIN)
2626
target_link_libraries( ll::libvlc INTERFACE
27-
libvlc.dylib
28-
libvlccore.dylib
29-
)
30-
elseif (LINUX)
31-
# Specify a full path to make sure we get a static link
32-
target_link_libraries( ll::libvlc INTERFACE
33-
${LIBS_PREBUILT_DIR}/lib/libvlc.a
34-
${LIBS_PREBUILT_DIR}/lib/libvlccore.a
27+
${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.dylib
28+
${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.dylib
3529
)
3630
endif (WINDOWS)

indra/cmake/Linking.cmake

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins)
88
set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
99
set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
1010

11-
if (WINDOWS OR DARWIN )
11+
if (WINDOWS OR DARWIN)
1212
# Kludge for older cmake versions, 3.20+ is needed to use a genex in add_custom_command( OUTPUT <var> ... )
1313
# Using this will work okay-ish, as Debug is not supported anyway. But for property multi config and also
1414
# ninja support the genex version is preferred.
@@ -32,17 +32,6 @@ elseif (LINUX)
3232
set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
3333
endif ()
3434

35-
# Autobuild packages must provide 'release' versions of libraries, but may provide versions for
36-
# specific build types. AUTOBUILD_LIBS_INSTALL_DIRS lists first the build type directory and then
37-
# the 'release' directory (as a default fallback).
38-
# *NOTE - we have to take special care to use CMAKE_CFG_INTDIR on IDE generators (like mac and
39-
# windows) and CMAKE_BUILD_TYPE on Makefile based generators (like linux). The reason for this is
40-
# that CMAKE_BUILD_TYPE is essentially meaningless at configuration time for IDE generators and
41-
# CMAKE_CFG_INTDIR is meaningless at build time for Makefile generators
42-
43-
link_directories(${AUTOBUILD_INSTALL_DIR}/lib/$<LOWER_CASE:$<CONFIG>>)
44-
link_directories(${AUTOBUILD_INSTALL_DIR}/lib/release)
45-
4635
add_library( ll::oslibraries INTERFACE IMPORTED )
4736

4837
if (LINUX)
@@ -68,7 +57,6 @@ elseif (WINDOWS)
6857
legacy_stdio_definitions
6958
)
7059
else()
71-
include(CMakeFindFrameworks)
7260
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
7361
find_library(CARBON_LIBRARY Carbon)
7462
find_library(COCOA_LIBRARY Cocoa)

indra/cmake/Meshoptimizer.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use_system_binary(meshoptimizer)
1010
use_prebuilt_binary(meshoptimizer)
1111

1212
if (WINDOWS)
13-
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)
13+
target_link_libraries( ll::meshoptimizer INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/meshoptimizer.lib)
1414
elseif (LINUX)
15-
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
15+
target_link_libraries( ll::meshoptimizer INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libmeshoptimizer.a)
1616
elseif (DARWIN)
17-
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
17+
target_link_libraries( ll::meshoptimizer INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libmeshoptimizer.a)
1818
endif (WINDOWS)
1919

2020
target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer)

indra/cmake/NDOF.cmake

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ if (NDOF)
1414
endif (WINDOWS OR DARWIN)
1515

1616
if (WINDOWS)
17-
target_link_libraries( ll::ndof INTERFACE libndofdev)
18-
elseif (DARWIN OR LINUX)
19-
target_link_libraries( ll::ndof INTERFACE ndofdev)
17+
target_link_libraries( ll::ndof INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libndofdev.lib)
18+
elseif (DARWIN)
19+
target_link_libraries( ll::ndof INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libndofdev.dylib)
20+
elseif (LINUX)
21+
target_link_libraries( ll::ndof INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libndofdev.a)
2022
endif (WINDOWS)
2123
target_compile_definitions( ll::ndof INTERFACE LIB_NDOF=1)
2224
else()

0 commit comments

Comments
 (0)