diff --git a/CMakeLists.txt b/CMakeLists.txt index 66300645..5b334382 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,10 @@ file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/gen ) +if(MSVC) + ENABLE_LANGUAGE(ASM_MASM) +endif(MSVC) + # # Run idgen and impcnvgen. # @@ -226,6 +230,17 @@ list(REMOVE_ITEM FE_SRC ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/id.c ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/impcnvtab.c ) +# Add/remove files for MSVC +if(MSVC) + list(REMOVE_ITEM FE_SRC + ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/root/gnuc.c + ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/root/gnuc.h + ) + list(APPEND FE_SRC + ${PROJECT_SOURCE_DIR}/vcbuild/strtold.c + ${PROJECT_SOURCE_DIR}/vcbuild/ldfpu.asm + ) +endif(MSVC) # disable dmd gc list(REMOVE_ITEM FE_SRC ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/root/dmgcmem.c) set(LDC_SOURCE_FILES @@ -255,6 +270,10 @@ include_directories( ${LLVM_INCLUDE_DIRS} ) +if(MSVC) + include_directories(${PROJECT_SOURCE_DIR}/vcbuild) +endif() + add_definitions( -DIN_LLVM -DOPAQUE_VTBLS diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake index 4c243a3a..5e29bc8b 100644 --- a/cmake/Modules/FindLLVM.cmake +++ b/cmake/Modules/FindLLVM.cmake @@ -39,7 +39,10 @@ if (NOT LLVM_CONFIG) set(LLVM_VERSION_STRING ${LLVM_PACKAGE_VERSION}) set(LLVM_CXXFLAGS ${LLVM_DEFINITIONS}) set(LLVM_LDFLAGS "") - llvm_map_components_to_libraries(LLVM_LIBRARIES ${LLVM_FIND_COMPONENTS}) + 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}") + endforeach() else() if (NOT FIND_LLVM_QUIETLY) message(WARNING "Could not find llvm-config. Consider manually setting LLVM_ROOT_DIR.")