diff --git a/CMakeLists.txt b/CMakeLists.txt index 532119b4..40dacc1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules") # We need to find exactly the right LLVM version, our code usually does not # work across LLVM »minor« releases. -find_package(LLVM 3.0 EXACT REQUIRED +find_package(LLVM 3.0 REQUIRED all-targets bitwriter linker ipo instrumentation backend ${EXTRA_LLVM_MODULES}) math(EXPR LDC_LLVM_VER ${LLVM_VERSION_MAJOR}*100+${LLVM_VERSION_MINOR}) @@ -152,16 +152,20 @@ if(MSVC) list(APPEND FE_SRC ${PROJECT_SOURCE_DIR}/vcbuild/strtold.c # See below why this don't work +# if(CMAKE_CL_64) # ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm +# endif(CMAKE_CL_64) ) - # MASM support does not work yet! - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj - COMMAND ${CMAKE_ASM_MASM_COMPILER} /c /Fo${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm - DEPENDS ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm - COMMENT "generate ldfpu.obj") - list(APPEND FE_SRC - ${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj + if(CMAKE_CL_64) + # MASM support does not work yet! + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj + COMMAND ${CMAKE_ASM_MASM_COMPILER} /c /Fo${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm + DEPENDS ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm + COMMENT "generate ldfpu.obj") + list(APPEND FE_SRC + ${CMAKE_CURRENT_BINARY_DIR}/ldfpu.obj ) + endif() endif(MSVC) # disable dmd gc list(REMOVE_ITEM FE_SRC ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/root/dmgcmem.c) diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake index 25121025..24a076eb 100644 --- a/cmake/Modules/FindLLVM.cmake +++ b/cmake/Modules/FindLLVM.cmake @@ -39,6 +39,9 @@ if (NOT LLVM_CONFIG) set(LLVM_VERSION_STRING ${LLVM_PACKAGE_VERSION}) set(LLVM_CXXFLAGS ${LLVM_DEFINITIONS}) set(LLVM_LDFLAGS "") + list(REMOVE_ITEM LLVM_FIND_COMPONENTS "all-targets" index) + list(APPEND LLVM_FIND_COMPONENTS ${LLVM_TARGETS_TO_BUILD}) + list(REMOVE_ITEM LLVM_FIND_COMPONENTS "backend" index) llvm_map_components_to_libraries(tmplibs ${LLVM_FIND_COMPONENTS}) foreach(lib ${tmplibs}) list(APPEND LLVM_LIBRARIES "${LLVM_LIBRARY_DIRS}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}") @@ -50,25 +53,25 @@ if (NOT LLVM_CONFIG) endif() else() macro(llvm_set var flag) - if(LLVM_FIND_QUIETLY) + if(LLVM_FIND_QUIETLY) set(_quiet_arg ERROR_QUIET) endif() execute_process( COMMAND ${LLVM_CONFIG} --${flag} OUTPUT_VARIABLE LLVM_${var} OUTPUT_STRIP_TRAILING_WHITESPACE - ${_quiet_arg} + ${_quiet_arg} ) endmacro() macro(llvm_set_libs var flag prefix) - if(LLVM_FIND_QUIETLY) + if(LLVM_FIND_QUIETLY) set(_quiet_arg ERROR_QUIET) endif() execute_process( COMMAND ${LLVM_CONFIG} --${flag} ${LLVM_FIND_COMPONENTS} OUTPUT_VARIABLE tmplibs OUTPUT_STRIP_TRAILING_WHITESPACE - ${_quiet_arg} + ${_quiet_arg} ) string(REGEX MATCHALL "${prefix}[^ ]+" LLVM_${var} ${tmplibs}) endmacro() @@ -76,9 +79,12 @@ else() llvm_set(VERSION_STRING version) if(${LLVM_VERSION_STRING} MATCHES "3.0[A-Za-z]*") # Version 3.0 does not support component all-targets - llvm_set(TARGETS_BUILT targets-built) + llvm_set(TARGETS_TO_BUILD targets-built) list(REMOVE_ITEM LLVM_FIND_COMPONENTS "all-targets" index) - list(APPEND LLVM_FIND_COMPONENTS ${LLVM_TARGETS_BUILT}) + list(APPEND LLVM_FIND_COMPONENTS ${LLVM_TARGETS_TO_BUILD}) + else() + # Version 3.1+ does not supoort component backend + list(REMOVE_ITEM LLVM_FIND_COMPONENTS "backend" index) endif() llvm_set(CXXFLAGS cxxflags) llvm_set(HOST_TARGET host-target)