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