mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-20 06:43:14 +01:00
@@ -163,6 +163,26 @@ static llvm::DIType dwarfPointerType(Type* type)
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static llvm::DIType dwarfVectorType(Type* type)
|
||||
{
|
||||
LLType* T = DtoType(type);
|
||||
Type* t = type->toBasetype();
|
||||
|
||||
assert(t->ty == Tvector && "only vectors allowed for debug info in dwarfVectorType");
|
||||
|
||||
// find base type
|
||||
llvm::DIType basetype = dwarfTypeDescription_impl(static_cast<TypeVector*>(t)->elementType(), NULL);
|
||||
|
||||
return gIR->dibuilder.createVectorType(
|
||||
getTypeBitSize(T), // size (bits)
|
||||
getABITypeAlign(T)*8, // align (bits)
|
||||
basetype, // element type
|
||||
llvm::DIArray(0) // subscripts
|
||||
);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static llvm::DIType dwarfMemberType(unsigned linnum, Type* type, llvm::DIFile file, const char* c_name, unsigned offset)
|
||||
{
|
||||
LLType* T = DtoType(type);
|
||||
@@ -392,6 +412,8 @@ static llvm::DIType dwarfTypeDescription_impl(Type* type, const char* c_name)
|
||||
Type* t = type->toBasetype();
|
||||
if (t->ty == Tvoid)
|
||||
return llvm::DIType(NULL);
|
||||
else if (t->ty == Tvector)
|
||||
return dwarfVectorType(type);
|
||||
else if (t->isintegral() || t->isfloating())
|
||||
return dwarfBasicType(type);
|
||||
else if (t->ty == Tpointer)
|
||||
|
||||
@@ -93,9 +93,10 @@ file(GLOB_RECURSE CORE_D_UNIX ${RUNTIME_DIR}/src/core/sys/posix/*.d)
|
||||
file(GLOB_RECURSE CORE_D_OSX ${RUNTIME_DIR}/src/core/sys/osx/*.d)
|
||||
file(GLOB_RECURSE CORE_D_WIN ${RUNTIME_DIR}/src/core/sys/windows/*.d)
|
||||
set(CORE_D_SYS)
|
||||
set(DCRT_ASM)
|
||||
if(UNIX)
|
||||
list(APPEND CORE_D_SYS ${CORE_D_UNIX})
|
||||
list(APPEND DCRT_C ${RUNTIME_DIR}/src/core/threadasm.S)
|
||||
list(APPEND DCRT_ASM ${RUNTIME_DIR}/src/core/threadasm.S)
|
||||
if(APPLE)
|
||||
list(APPEND CORE_D_SYS ${CORE_D_OSX})
|
||||
endif()
|
||||
@@ -114,6 +115,19 @@ list(APPEND CORE_D ${CORE_D_SYNC} ${CORE_D_SYS} ${CORE_D_STDC})
|
||||
list(APPEND CORE_D ${LDC_D} ${RUNTIME_DIR}/src/object_.d)
|
||||
file(GLOB CORE_C ${RUNTIME_DIR}/src/core/stdc/*.c)
|
||||
|
||||
# CMake 2.8.0 on Ubuntu 10.04 LTS chooses /usr/bin/as for the as compiler
|
||||
# instead of passing the file through GCC. Other old CMake versions may be
|
||||
# affected too, but said configuration is critical because it is the officialy
|
||||
# "blessed" host platform for the release packages. The workaround relies on
|
||||
# the fact that the default C compiler is GCC (or compatibile), the driver of
|
||||
# which intelligently handles the different input file types.
|
||||
if(CMAKE_VERSION VERSION_LESS "2.8.1")
|
||||
if(UNIX)
|
||||
message(WARNING "CMake version known not to handle druntime asm source files correctly, forcing them to be treated as C.")
|
||||
set_source_files_properties(${DCRT_ASM} PROPERTIES LANGUAGE C)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(PHOBOS2_DIR)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
# std.net.curl depends on libcurl – when building a shared library, we
|
||||
@@ -297,6 +311,7 @@ macro(build_runtime d_flags c_flags ld_flags lib_suffix path_suffix outlist_targ
|
||||
${GC_O}
|
||||
${DCRT_O}
|
||||
${DCRT_C}
|
||||
${DCRT_ASM}
|
||||
${GCCBUILTINS}
|
||||
)
|
||||
set(lib_targets ${RUNTIME_AIO}${target_suffix})
|
||||
|
||||
Reference in New Issue
Block a user