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:
Kai Nacke 2016-05-15 01:47:14 +02:00
parent 1508bafccc
commit cb0f2e7e6a
4 changed files with 26 additions and 20 deletions

View file

@ -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

View file

@ -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)

View file

@ -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";

View file

@ -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()));