mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-03 16:41:06 +03:00
Don't link ldc-build-runtime and ldc-prune-cache against LLVM libs
This commit is contained in:
parent
1c79b5bf65
commit
dd04ea5191
2 changed files with 20 additions and 25 deletions
|
@ -626,24 +626,12 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan
|
|||
message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}")
|
||||
message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}")
|
||||
endif()
|
||||
list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS})
|
||||
|
||||
if(NOT "${CMAKE_EXE_LINKER_FLAGS}" STREQUAL "")
|
||||
separate_arguments(flags UNIX_COMMAND "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
list(APPEND LDC_LINKERFLAG_LIST ${flags})
|
||||
endif()
|
||||
else()
|
||||
# Use D compiler for linking, trying to translate a few common linker flags.
|
||||
set(LDC_TRANSLATED_LINKER_FLAGS "")
|
||||
foreach(f ${LDC_LINKERFLAG_LIST})
|
||||
string(REPLACE "-LIBPATH:" "/LIBPATH:" f ${f})
|
||||
list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L${f}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# CONFIG generator expressions need to be repeated due to https://cmake.org/Bug/view.php?id=14353
|
||||
if(MSVC_IDE)
|
||||
separate_arguments(LDC_FLAG_LIST WINDOWS_COMMAND "${LDC_TRANSLATED_LINKER_FLAGS} ${D_COMPILER_FLAGS} ${DDMD_DFLAGS} ${DDMD_LFLAGS}")
|
||||
translate_linker_args(linker_args translated_linker_args)
|
||||
separate_arguments(LDC_FLAG_LIST WINDOWS_COMMAND "${D_COMPILER_FLAGS} ${DDMD_DFLAGS} ${DDMD_LFLAGS} ${translated_linker_args}")
|
||||
add_custom_command(
|
||||
OUTPUT ${LDC_EXE_FULL}
|
||||
COMMAND ${D_COMPILER} -L$<TARGET_LINKER_FILE:${LDC_LIB}> ${LDC_FLAG_LIST} -of${LDC_EXE_FULL} ${LDC_D_SOURCE_FILES} $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:-g> $<$<NOT:$<CONFIG:Debug>>:-O> $<$<NOT:$<CONFIG:Debug>>:-inline> $<$<NOT:$<CONFIG:Debug>>:-release>
|
||||
|
@ -656,7 +644,7 @@ else()
|
|||
"${LDC_EXE_FULL}"
|
||||
"${LDC_D_SOURCE_FILES}"
|
||||
""
|
||||
"$<TARGET_LINKER_FILE:${LDC_LIB}>"
|
||||
"$<TARGET_LINKER_FILE:${LDC_LIB}>;${LDC_LINKERFLAG_LIST}"
|
||||
"${FE_RES}"
|
||||
"${LDC_LIB}"
|
||||
${COMPILE_D_MODULES_SEPARATELY}
|
||||
|
@ -699,7 +687,7 @@ build_d_executable(
|
|||
"${LDMD_EXE_FULL}"
|
||||
"${LDMD_D_SOURCE_FILES}"
|
||||
""
|
||||
"$<TARGET_LINKER_FILE:LDMD_CXX_LIB>"
|
||||
"$<TARGET_LINKER_FILE:LDMD_CXX_LIB>;${LDC_LINKERFLAG_LIST}"
|
||||
""
|
||||
"LDMD_CXX_LIB"
|
||||
${COMPILE_D_MODULES_SEPARATELY}
|
||||
|
@ -858,7 +846,7 @@ build_d_executable(
|
|||
"${LDC_UNITTEST_EXE_FULL}"
|
||||
"${LDC_D_SOURCE_FILES}"
|
||||
"-unittest"
|
||||
"$<TARGET_LINKER_FILE:${LDC_LIB}>"
|
||||
"$<TARGET_LINKER_FILE:${LDC_LIB}>;${LDC_LINKERFLAG_LIST}"
|
||||
""
|
||||
"${LDC_LIB}"
|
||||
ON # always build separately (faster with parallelization)
|
||||
|
|
|
@ -1,11 +1,21 @@
|
|||
# Translates linker args for usage in DMD-compatible command-line (prepend -L).
|
||||
macro(translate_linker_args in_var out_var)
|
||||
set(${out_var} "")
|
||||
foreach(f IN LISTS "${in_var}")
|
||||
if(NOT "${f}" STREQUAL "")
|
||||
string(REPLACE "-LIBPATH:" "/LIBPATH:" f ${f})
|
||||
list(APPEND ${out_var} "-L${f}")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Depends on these global variables:
|
||||
# - D_COMPILER
|
||||
# - D_COMPILER_FLAGS
|
||||
# - DDMD_DFLAGS
|
||||
# - DDMD_LFLAGS
|
||||
# - LDC_LINK_MANUALLY
|
||||
# - LDC_LINKERFLAG_LIST
|
||||
# - LDC_TRANSLATED_LINKER_FLAGS
|
||||
# - D_LINKER_ARGS
|
||||
function(build_d_executable target_name output_exe d_src_files compiler_args linker_args extra_compile_deps link_deps compile_separately)
|
||||
set(dflags "${D_COMPILER_FLAGS} ${DDMD_DFLAGS}")
|
||||
if(UNIX)
|
||||
|
@ -51,7 +61,7 @@ function(build_d_executable target_name output_exe d_src_files compiler_args lin
|
|||
RUNTIME_OUTPUT_DIRECTORY ${output_dir}
|
||||
LINKER_LANGUAGE CXX
|
||||
)
|
||||
target_link_libraries(${target_name} ${linker_args} ${LDC_LINKERFLAG_LIST})
|
||||
target_link_libraries(${target_name} ${linker_args} ${D_LINKER_ARGS})
|
||||
else()
|
||||
# Use a response file on Windows when compiling separately, in order not to
|
||||
# exceed the max command-line length.
|
||||
|
@ -62,13 +72,10 @@ function(build_d_executable target_name output_exe d_src_files compiler_args lin
|
|||
set(objects_args "@${output_exe}.rsp")
|
||||
endif()
|
||||
|
||||
set(translated_linker_args "")
|
||||
foreach(f ${linker_args})
|
||||
list(APPEND translated_linker_args "-L${f}")
|
||||
endforeach()
|
||||
translate_linker_args(linker_args translated_linker_args)
|
||||
add_custom_command(
|
||||
OUTPUT ${output_exe}
|
||||
COMMAND ${D_COMPILER} ${dflags} ${DDMD_LFLAGS} -of${output_exe} ${objects_args} ${translated_linker_args} ${LDC_TRANSLATED_LINKER_FLAGS}
|
||||
COMMAND ${D_COMPILER} ${dflags} ${DDMD_LFLAGS} -of${output_exe} ${objects_args} ${translated_linker_args}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
DEPENDS ${object_files} ${link_deps}
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue