Changeset 750:d05fc504a3a0
- Timestamp:
- 11/03/08 06:25:25
(2 months ago)
- Author:
- Christian Kamm <kamm incasoftware de>
- branch:
- default
- Message:
Improve CMake build file.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r749 |
r750 |
|
| 24 | 24 | dmd/hdrgen.c |
|---|
| 25 | 25 | dmd/html.c |
|---|
| 26 | | dmd/id.c |
|---|
| 27 | 26 | dmd/identifier.c |
|---|
| 28 | | dmd/impcnvtab.c |
|---|
| 29 | 27 | dmd/import.c |
|---|
| 30 | 28 | dmd/inifile.c |
|---|
| … | … | |
| 85 | 83 | ir/irsymbol.cpp |
|---|
| 86 | 84 | ir/irtype.cpp |
|---|
| 87 | | ir/irvar.cpp) |
|---|
| | 85 | ir/irvar.cpp |
|---|
| | 86 | ) |
|---|
| 88 | 87 | |
|---|
| 89 | | add_executable (ldc ${LDC_SOURCE_FILES}) |
|---|
| 90 | | set_source_files_properties (${LDC_SOURCE_FILES} PROPERTIES LANGUAGE CXX) |
|---|
| | 88 | set (LDC_GENERATED_SOURCE_FILES |
|---|
| | 89 | ${CMAKE_CURRENT_BINARY_DIR}/impcnvtab.c |
|---|
| | 90 | ${CMAKE_CURRENT_BINARY_DIR}/id.c |
|---|
| | 91 | ) |
|---|
| | 92 | set (LDC_GENERATED_HEADER_FILES |
|---|
| | 93 | ${CMAKE_CURRENT_BINARY_DIR}/id.h |
|---|
| | 94 | ) |
|---|
| 91 | 95 | |
|---|
| 92 | | execute_process (COMMAND llvm-config --cxxflags OUTPUT_VARIABLE LLVM_CXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) |
|---|
| 93 | | #execute_process (COMMAND llvm-config --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR) |
|---|
| 94 | | #execute_process (COMMAND llvm-config --libs bitwriter linker ipo instrumentation backend OUTPUT_VARIABLE LLVM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) |
|---|
| 95 | | execute_process (COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config.guess OUTPUT_VARIABLE DEFAULT_TRIPLE OUTPUT_STRIP_TRAILING_WHITESPACE) |
|---|
| | 96 | # some sources are generated |
|---|
| | 97 | set_source_files_properties ( |
|---|
| | 98 | ${LDC_GENERATED_SOURCE_FILES} |
|---|
| | 99 | ${LDC_GENERATED_HEADER_FILES} |
|---|
| | 100 | PROPERTIES GENERATED 1 |
|---|
| | 101 | ) |
|---|
| 96 | 102 | |
|---|
| | 103 | # mark all source as c++ |
|---|
| | 104 | set_source_files_properties ( |
|---|
| | 105 | ${LDC_SOURCE_FILES} ${LDC_GENERATED_SOURCE_FILES} |
|---|
| | 106 | PROPERTIES LANGUAGE CXX |
|---|
| | 107 | ) |
|---|
| | 108 | |
|---|
| | 109 | # build and run idgen and impcnvgen |
|---|
| | 110 | set_source_files_properties ( |
|---|
| | 111 | dmd/impcnvgen.c |
|---|
| | 112 | dmd/idgen.c |
|---|
| | 113 | PROPERTIES LANGUAGE CXX |
|---|
| | 114 | ) |
|---|
| | 115 | add_executable (impcnvgen dmd/impcnvgen.c) |
|---|
| | 116 | add_executable (idgen dmd/idgen.c) |
|---|
| | 117 | set_target_properties (impcnvgen idgen PROPERTIES LINKER_LANGUAGE CXX) |
|---|
| | 118 | get_target_property (IMPCNVGEN_EXE impcnvgen LOCATION) |
|---|
| | 119 | get_target_property (IDGEN_EXE idgen LOCATION) |
|---|
| | 120 | add_custom_command ( |
|---|
| | 121 | OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/impcnvtab.c |
|---|
| | 122 | COMMAND ${IMPCNVGEN_EXE} |
|---|
| | 123 | DEPENDS impcnvgen |
|---|
| | 124 | ) |
|---|
| | 125 | add_custom_command ( |
|---|
| | 126 | OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/id.c ${CMAKE_CURRENT_BINARY_DIR}/id.h |
|---|
| | 127 | COMMAND ${IDGEN_EXE} |
|---|
| | 128 | DEPENDS idgen |
|---|
| | 129 | ) |
|---|
| | 130 | |
|---|
| | 131 | # ldc itself |
|---|
| | 132 | add_executable (ldc ${LDC_SOURCE_FILES} ${LDC_GENERATED_SOURCE_FILES} ${LDC_GENERATED_HEADER_FILES}) |
|---|
| | 133 | |
|---|
| | 134 | |
|---|
| | 135 | # setup DEFAULT_TARGET_TRIPLE |
|---|
| | 136 | execute_process (COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config.guess OUTPUT_VARIABLE DEFAULT_TARGET_TRIPLE_GUESS OUTPUT_STRIP_TRAILING_WHITESPACE) |
|---|
| | 137 | set (DEFAULT_TARGET_TRIPLE ${DEFAULT_TARGET_TRIPLE_GUESS} CACHE STRING "the default target triple LDC should compile for") |
|---|
| | 138 | |
|---|
| | 139 | # setup POSIX |
|---|
| | 140 | if (WIN32) |
|---|
| | 141 | set (POSIX_GUESS 0) |
|---|
| | 142 | else (WIN32) |
|---|
| | 143 | set (POSIX_GUESS 1) |
|---|
| | 144 | endif (WIN32) |
|---|
| | 145 | set (POSIX ${POSIX_GUESS} CACHE BOOL "is LDC build on POSIX?") |
|---|
| | 146 | |
|---|
| | 147 | # setup defines |
|---|
| 97 | 148 | set (LDC_DEFINES |
|---|
| 98 | 149 | -DIN_LLVM |
|---|
| … | … | |
| 101 | 152 | -DUSE_BOEHM_GC=0 |
|---|
| 102 | 153 | -DDMDV1 |
|---|
| 103 | | -DPOSIX=1 |
|---|
| 104 | | -DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TRIPLE}\\" |
|---|
| | 154 | -DPOSIX=${POSIX} |
|---|
| | 155 | -DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET_TRIPLE}\\" |
|---|
| 105 | 156 | -DX86_REVERSE_PARAMS=1 |
|---|
| 106 | 157 | -DX86_PASS_IN_EAX=1) |
|---|
| 107 | | |
|---|
| | 158 | execute_process (COMMAND llvm-config --cxxflags OUTPUT_VARIABLE LLVM_CXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) |
|---|
| 108 | 159 | # passing CXXFLAGS here is not good style |
|---|
| 109 | 160 | add_definitions (${LDC_DEFINES} ${LLVM_CXXFLAGS}) |
|---|
| 110 | | include_directories (. dmd) |
|---|
| | 161 | |
|---|
| | 162 | include_directories (. dmd ${CMAKE_CURRENT_BINARY_DIR}) |
|---|
| 111 | 163 | |
|---|
| 112 | 164 | # this is hackish, but works |
|---|
| 113 | 165 | target_link_libraries (ldc "`llvm-config --ldflags` `llvm-config --libs bitwriter linker ipo instrumentation backend`") |
|---|
| 114 | 166 | |
|---|
| 115 | | #TODO: POSIX detection, runtime build |
|---|
| | 167 | #TODO: runtime build |
|---|