mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
More changes to the build system.
- Relax version checking because we intend to have only a single branch - Exclude ldfpu.asm from build with MSVC-32 (reported by huynh van sen) - Fix FindLLVM.cmake to work on Windows again
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user