mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-01 15:40:55 +03:00
Fix space handling for different paths.
E.g. on my machine LLVM is installed in folder C:\My Program Files\LLVM. Fixes part of issue #1465. (PR 1466 is required for complete fix.)
This commit is contained in:
parent
1508bafccc
commit
cb0f2e7e6a
4 changed files with 26 additions and 20 deletions
|
@ -235,9 +235,8 @@ string(REPLACE "-Werror " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS})
|
|||
if (UNIX AND NOT "${LLVM_LDFLAGS}" STREQUAL "")
|
||||
# LLVM_LDFLAGS may contain -l-lld which is a wrong library reference (AIX)
|
||||
string(REPLACE "-l-lld " "-lld " LLVM_LDFLAGS ${LLVM_LDFLAGS})
|
||||
# LLVM_LDFLAGS may have a space at the end
|
||||
string(REGEX REPLACE " $" "" LLVM_LDFLAGS ${LLVM_LDFLAGS})
|
||||
endif()
|
||||
separate_arguments(LLVM_LDFLAGS)
|
||||
# LLVM_CXXFLAGS may contain -Wcovered-switch-default and -fcolor-diagnostics
|
||||
# which are clang-only options
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
@ -461,7 +460,7 @@ endif()
|
|||
append("-version=IN_LLVM" DDMD_DFLAGS)
|
||||
append("-DIN_LLVM" CMAKE_CXX_FLAGS)
|
||||
append("-DOPAQUE_VTBLS" CMAKE_CXX_FLAGS)
|
||||
append("-DLDC_INSTALL_PREFIX=\\\"${CMAKE_INSTALL_PREFIX}\\\"" CMAKE_CXX_FLAGS)
|
||||
append("-DLDC_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\"" CMAKE_CXX_FLAGS)
|
||||
append("-DLDC_LLVM_VER=${LDC_LLVM_VER}" CMAKE_CXX_FLAGS)
|
||||
|
||||
if(GENERATE_OFFTI)
|
||||
|
@ -527,7 +526,7 @@ set(TEST_COVERAGE OFF CACHE BOOL "instrument compiler for code coverage analysis
|
|||
if(TEST_COVERAGE)
|
||||
if(CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
|
||||
append("-O0 -g -fprofile-arcs -ftest-coverage" EXTRA_CXXFLAGS)
|
||||
append("-lgcov" LLVM_LDFLAGS)
|
||||
list(APPEND LLVM_LDFLAGS "-lgcov")
|
||||
else()
|
||||
message(WARNING "Coverage testing is not available.")
|
||||
endif()
|
||||
|
@ -556,7 +555,7 @@ set_target_properties(
|
|||
LINK_FLAGS "${SANITIZE_LDFLAGS}"
|
||||
)
|
||||
# LDFLAGS should actually be in target property LINK_FLAGS, but this works, and gets around linking problems
|
||||
target_link_libraries(${LDC_LIB} ${LLVM_LIBRARIES} ${PTHREAD_LIBS} ${TERMINFO_LIBS} "${LLVM_LDFLAGS}")
|
||||
target_link_libraries(${LDC_LIB} ${LLVM_LIBRARIES} ${PTHREAD_LIBS} ${TERMINFO_LIBS} ${LLVM_LDFLAGS})
|
||||
if(WIN32)
|
||||
target_link_libraries(${LDC_LIB} imagehlp psapi)
|
||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
|
@ -570,13 +569,12 @@ set(LDC_EXE_FULL ${PROJECT_BINARY_DIR}/bin/${LDC_EXE_NAME}${EXECUTABLE_EXTENSION
|
|||
set(LDMD_EXE_FULL ${PROJECT_BINARY_DIR}/bin/${LDMD_EXE_NAME}${EXECUTABLE_EXTENSION})
|
||||
add_custom_target(${LDC_EXE} ALL DEPENDS ${LDC_EXE_FULL})
|
||||
add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL})
|
||||
string (REPLACE ";" " " LDC_LINKERFLAG_LIST "${SANITIZE_LDFLAGS} ${WINDOWS_STACK_SIZE} ${LIBCONFIG_LIBRARY} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS}")
|
||||
string (REPLACE "-Wl," "" LDC_LINKERFLAG_LIST ${LDC_LINKERFLAG_LIST})
|
||||
separate_arguments(LDC_LINKERFLAG_LIST WINDOWS_COMMAND ${LDC_LINKERFLAG_LIST})
|
||||
set(LDC_LINKERFLAG_LIST "${SANITIZE_LDFLAGS};${WINDOWS_STACK_SIZE};${LIBCONFIG_LIBRARY};${LLVM_LIBRARIES};${LLVM_LDFLAGS}")
|
||||
set(tempVar "")
|
||||
FOREACH(f ${LDC_LINKERFLAG_LIST})
|
||||
append("-L${f}" tempVar)
|
||||
ENDFOREACH(f)
|
||||
foreach(f ${LDC_LINKERFLAG_LIST})
|
||||
string (REPLACE "-Wl," "" f ${f})
|
||||
append("-L\"${f}\"" tempVar)
|
||||
endforeach(f)
|
||||
if(MSVC)
|
||||
# Issue 1297
|
||||
# The default system-allocated stack size is 8MB on Linux and Mac, but only 1MB on Windows
|
||||
|
@ -639,7 +637,7 @@ else()
|
|||
string(REGEX REPLACE "/llvm(/IR)?$" "" LLVM_INTRINSIC_TD_PATH ${LLVM_INTRINSIC_TD_PATH})
|
||||
message(STATUS "Using path for Intrinsics.td: ${LLVM_INTRINSIC_TD_PATH}")
|
||||
endif()
|
||||
append("-DLLVM_INTRINSIC_TD_PATH=\\\"${LLVM_INTRINSIC_TD_PATH}\\\"" CMAKE_CXX_FLAGS)
|
||||
append("-DLLVM_INTRINSIC_TD_PATH=\"${LLVM_INTRINSIC_TD_PATH}\"" CMAKE_CXX_FLAGS )
|
||||
|
||||
add_executable(gen_gccbuiltins utils/gen_gccbuiltins.cpp)
|
||||
|
||||
|
@ -649,7 +647,7 @@ set_target_properties(
|
|||
COMPILE_FLAGS "${LLVM_CXXFLAGS} ${LDC_CXXFLAGS}"
|
||||
LINK_FLAGS "${SANITIZE_LDFLAGS}"
|
||||
)
|
||||
target_link_libraries(gen_gccbuiltins ${LLVM_TABLEGEN_LIBRARY} ${LLVM_LIBRARIES} ${PTHREAD_LIBS} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} "${LLVM_LDFLAGS}")
|
||||
target_link_libraries(gen_gccbuiltins ${LLVM_TABLEGEN_LIBRARY} ${LLVM_LIBRARIES} ${PTHREAD_LIBS} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} ${LLVM_LDFLAGS})
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
target_link_libraries(gen_gccbuiltins dl)
|
||||
endif()
|
||||
|
@ -665,7 +663,7 @@ if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${FILECHECK_SRC})
|
|||
COMPILE_FLAGS "${LLVM_CXXFLAGS} ${LDC_CXXFLAGS}"
|
||||
LINK_FLAGS "${SANITIZE_LDFLAGS}"
|
||||
)
|
||||
target_link_libraries(FileCheck ${LLVM_LIBRARIES} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} "${LLVM_LDFLAGS}")
|
||||
target_link_libraries(FileCheck ${LLVM_LIBRARIES} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} ${LLVM_LDFLAGS})
|
||||
else()
|
||||
message(STATUS "Skip building FileCheck, assuming it can be found in LLVM bin directory")
|
||||
endif()
|
||||
|
@ -678,7 +676,7 @@ set_target_properties(
|
|||
COMPILE_FLAGS "${LLVM_CXXFLAGS} ${LDC_CXXFLAGS}"
|
||||
LINK_FLAGS "${SANITIZE_LDFLAGS}"
|
||||
)
|
||||
target_link_libraries(not ${LLVM_LIBRARIES} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} "${LLVM_LDFLAGS}")
|
||||
target_link_libraries(not ${LLVM_LIBRARIES} ${TERMINFO_LIBS} ${CMAKE_DL_LIBS} ${LLVM_LDFLAGS})
|
||||
|
||||
#
|
||||
# LDMD
|
||||
|
|
|
@ -178,7 +178,7 @@ else()
|
|||
# but code for it is not in shared library
|
||||
if("${LLVM_FIND_COMPONENTS}" MATCHES "tablegen")
|
||||
if (NOT "${LLVM_LIBRARIES}" MATCHES "LLVMTableGen")
|
||||
set(LLVM_LIBRARIES "${LLVM_LIBRARIES} -lLLVMTableGen")
|
||||
set(LLVM_LIBRARIES "${LLVM_LIBRARIES};-lLLVMTableGen")
|
||||
endif()
|
||||
endif()
|
||||
llvm_set(TARGETS_TO_BUILD targets-built)
|
||||
|
|
|
@ -131,16 +131,20 @@ bool ConfigFile::locate() {
|
|||
APPEND_FILENAME_AND_RETURN_IF_EXISTS
|
||||
}
|
||||
#else
|
||||
#define STR(x) #x
|
||||
#define XSTR(x) STR(x)
|
||||
// try the install-prefix/etc
|
||||
p = LDC_INSTALL_PREFIX;
|
||||
p = XSTR(LDC_INSTALL_PREFIX);
|
||||
sys::path::append(p, "etc");
|
||||
APPEND_FILENAME_AND_RETURN_IF_EXISTS
|
||||
|
||||
// try the install-prefix/etc/ldc
|
||||
p = LDC_INSTALL_PREFIX;
|
||||
p = XSTR(LDC_INSTALL_PREFIX);
|
||||
sys::path::append(p, "etc");
|
||||
sys::path::append(p, "ldc");
|
||||
APPEND_FILENAME_AND_RETURN_IF_EXISTS
|
||||
#undef XSTR
|
||||
#undef STR
|
||||
|
||||
// try /etc (absolute path)
|
||||
p = "/etc";
|
||||
|
|
|
@ -201,13 +201,17 @@ int main(int argc, char** argv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
llvm::SmallString<128> file(LLVM_INTRINSIC_TD_PATH);
|
||||
#define STR(x) #x
|
||||
#define XSTR(x) STR(x)
|
||||
llvm::SmallString<128> file(XSTR(LLVM_INTRINSIC_TD_PATH));
|
||||
sys::path::append(file, "llvm");
|
||||
sys::path::append(file, "IR");
|
||||
sys::path::append(file, "Intrinsics.td");
|
||||
|
||||
string iStr = string("-I=") + string(LLVM_INTRINSIC_TD_PATH);
|
||||
string iStr = string("-I=") + string(XSTR(LLVM_INTRINSIC_TD_PATH));
|
||||
string oStr = string("-o=") + argv[1];
|
||||
#undef XSTR
|
||||
#undef STR
|
||||
|
||||
vector<char*> args2(argv, argv + 1);
|
||||
args2.push_back(const_cast<char*>(file.c_str()));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue