Mercurial > projects > ldc
comparison CMakeLists.txt @ 1518:26d061e61b02
Initialize LLVM target and asmprinter for the native and extra targets.
Uses some CMake hackery to get the native LLVM target name, since it only
provides a conveniance function for initializing the native target and not the
native asmprinter.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Fri, 26 Jun 2009 21:02:23 +0200 |
parents | f35a9a77d256 |
children | 6182ceeb336a |
comparison
equal
deleted
inserted
replaced
1517:a7a9e461512a | 1518:26d061e61b02 |
---|---|
52 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --ldflags | 52 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --ldflags |
53 OUTPUT_VARIABLE LLVM_LDFLAGS | 53 OUTPUT_VARIABLE LLVM_LDFLAGS |
54 OUTPUT_STRIP_TRAILING_WHITESPACE | 54 OUTPUT_STRIP_TRAILING_WHITESPACE |
55 ) | 55 ) |
56 | 56 |
57 set(EXTRA_LLVM_MODULES "" CACHE STRING "extra llvm components to link in (see llvm-config --components)") | |
58 execute_process( | |
59 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --libfiles bitwriter linker ipo instrumentation backend ${EXTRA_LLVM_MODULES} | |
60 OUTPUT_VARIABLE LLVM_LIBS | |
61 OUTPUT_STRIP_TRAILING_WHITESPACE | |
62 ) | |
63 | |
64 set(D_VERSION 1 CACHE STRING "D language version") | 57 set(D_VERSION 1 CACHE STRING "D language version") |
65 set(PROGRAM_PREFIX CACHE STRING "prepended to ldc binary name") | 58 set(PROGRAM_PREFIX CACHE STRING "prepended to ldc binary name") |
66 set(PROGRAM_SUFFIX CACHE STRING "appended to ldc binary name") | 59 set(PROGRAM_SUFFIX CACHE STRING "appended to ldc binary name") |
67 option(USE_BOEHM_GC "use the Boehm garbage collector internally") | 60 option(USE_BOEHM_GC "use the Boehm garbage collector internally") |
68 option(GENERATE_OFFTI "generate complete ClassInfo.offTi arrays") | 61 option(GENERATE_OFFTI "generate complete ClassInfo.offTi arrays") |
133 set(DEFAULT_TARGET ${HOST_TARGET} CACHE STRING "default target") | 126 set(DEFAULT_TARGET ${HOST_TARGET} CACHE STRING "default target") |
134 set(DEFAULT_ALT_TARGET ${HOST_ALT_TARGET} CACHE STRING "default alt target") | 127 set(DEFAULT_ALT_TARGET ${HOST_ALT_TARGET} CACHE STRING "default alt target") |
135 | 128 |
136 include_directories(. ${DMDFE_PATH} ${DMDFE_PATH}/root ${PROJECT_BINARY_DIR}/${DMDFE_PATH} ${PROJECT_BINARY_DIR} ${LLVM_INSTDIR}/include) | 129 include_directories(. ${DMDFE_PATH} ${DMDFE_PATH}/root ${PROJECT_BINARY_DIR}/${DMDFE_PATH} ${PROJECT_BINARY_DIR} ${LLVM_INSTDIR}/include) |
137 | 130 |
131 set(EXTRA_LLVM_MODULES "" CACHE STRING "extra llvm components to link in (see llvm-config --components)") | |
132 separate_arguments(EXTRA_LLVM_MODULES) | |
133 execute_process( | |
134 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --libfiles bitwriter linker ipo instrumentation backend ${EXTRA_LLVM_MODULES} | |
135 OUTPUT_VARIABLE LLVM_LIBS | |
136 OUTPUT_STRIP_TRAILING_WHITESPACE | |
137 ) | |
138 | |
139 # build a define that contains all LLVM targets required and is usable for | |
140 # preprocessor code generation. start with the native target. | |
141 file(STRINGS ${LLVM_INSTDIR}/include/llvm/Config/config.h LLVM_NATIVE_ARCH REGEX "^#define LLVM_NATIVE_ARCH") | |
142 string(REGEX REPLACE "^#define LLVM_NATIVE_ARCH (.*)Target$" "\\1" LLVM_NATIVE_ARCH ${LLVM_NATIVE_ARCH}) | |
143 set(LLVM_MODULES_DEFINE "LLVM_TARGET(${LLVM_NATIVE_ARCH})") | |
144 # chain the extra target list to the define | |
145 foreach(EXTRA_TARGET ${EXTRA_LLVM_MODULES}) | |
146 set(LLVM_MODULES_DEFINE "${LLVM_MODULES_DEFINE} LLVM_TARGET(${EXTRA_TARGET})") | |
147 endforeach(EXTRA_TARGET) | |
148 set_source_files_properties( | |
149 ${PROJECT_SOURCE_DIR}/gen/main.cpp PROPERTIES | |
150 COMPILE_DEFINITIONS LDC_TARGETS=${LLVM_MODULES_DEFINE} | |
151 ) | |
152 | |
153 | |
138 file(GLOB FE_SRC ${DMDFE_PATH}/*.c) | 154 file(GLOB FE_SRC ${DMDFE_PATH}/*.c) |
139 file(GLOB FE_SRC_ROOT ${DMDFE_PATH}/root/*.c) | 155 file(GLOB FE_SRC_ROOT ${DMDFE_PATH}/root/*.c) |
140 file(GLOB_RECURSE GEN_SRC gen/*.cpp) | 156 file(GLOB_RECURSE GEN_SRC gen/*.cpp) |
141 file(GLOB IR_SRC ir/*.cpp) | 157 file(GLOB IR_SRC ir/*.cpp) |
142 # exclude idgen and impcnvgen and generated sources, just in case | 158 # exclude idgen and impcnvgen and generated sources, just in case |