Mercurial > projects > ldc
annotate CMakeLists.txt @ 758:f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 11 Nov 2008 01:38:48 +0100 |
parents | 405e40f20ef9 |
children | ac39e5449ca5 |
rev | line source |
---|---|
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
1 project(ldc) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
2 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
3 cmake_minimum_required(VERSION 2.6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
4 # actually, 2.4 will work, with a warning |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
5 # if we required 2.4, 2.6+ would switch to a compatibility mode and cause problems on 2.6+ specifics |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
6 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
7 include(FindPerl) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
8 if(NOT PERL) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
9 message(FATAL_ERROR "perl not found") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
10 endif(NOT PERL) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
11 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
12 set(LLVM_INSTDIR CACHE PATH "LLVM installation directory") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
13 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
14 find_program(LLVM_CONFIG llvm-config ${LLVM_INSTDIR}/bin DOC "path to llvm-config tool") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
15 if(NOT LLVM_CONFIG) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
16 message(FATAL_ERROR "llvm-config not found") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
17 endif(NOT LLVM_CONFIG) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
18 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
19 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
20 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --host-target |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
21 OUTPUT_VARIABLE HOST_TARGET |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
22 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
23 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
24 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
25 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --cxxflags |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
26 OUTPUT_VARIABLE LLVM_CXXFLAGS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
27 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
28 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
29 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
30 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --ldflags |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
31 OUTPUT_VARIABLE LLVM_LDFLAGS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
32 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
33 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
34 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
35 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --libfiles bitwriter linker ipo instrumentation backend |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
36 OUTPUT_VARIABLE LLVM_LIBS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
37 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
38 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
39 # get llvm's install dir. a little hackish, we could do something like llvm-config --prefix, but this does as well |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
40 string(REPLACE "/bin/llvm-config" "" LLVM_INSTDIR ${LLVM_CONFIG}) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
41 |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
42 set(D_VERSION 1 CACHE STRING "D language version") |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
43 if(D_VERSION EQUAL 1) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
44 set(DMDFE_PATH dmd) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
45 set(LDC_EXE ldc) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
46 add_definitions(-DDMDV1) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
47 elseif(D_VERSION EQUAL 2) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
48 set(DMDFE_PATH dmd2) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
49 set(LDC_EXE ldc2) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
50 add_definitions(-DDMDV2) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
51 else(D_VERSION EQUAL 1) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
52 message(FATAL_ERROR "unsupported D version") |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
53 endif(D_VERSION EQUAL 1) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
54 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
55 file(MAKE_DIRECTORY |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
56 ${PROJECT_BINARY_DIR}/bin |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
57 ${PROJECT_BINARY_DIR}/${DMDFE_PATH} |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
58 ) |
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
59 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
60 # idgen and impcnvgen |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
61 set_source_files_properties( |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
62 ${DMDFE_PATH}/idgen.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
63 ${DMDFE_PATH}/impcnvgen.c |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
64 PROPERTIES LANGUAGE CXX |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
65 ) |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
66 add_executable(idgen ${DMDFE_PATH}/idgen.c) |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
67 add_executable(impcnvgen ${DMDFE_PATH}/impcnvgen.c) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
68 # cmake 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
69 set_target_properties( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
70 idgen impcnvgen PROPERTIES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
71 LINKER_LANGUAGE CXX |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
72 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
73 get_target_property(IDGEN_LOC idgen LOCATION) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
74 get_target_property(IMPCNVGEN_LOC impcnvgen LOCATION) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
75 # |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
76 add_custom_command( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
77 OUTPUT |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
78 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/id.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
79 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/id.h |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
80 # 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
81 COMMAND ${IDGEN_LOC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
82 #COMMAND idgen |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
83 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
84 DEPENDS idgen |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
85 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
86 add_custom_command( |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
87 OUTPUT ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/impcnvtab.c |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
88 # 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
89 COMMAND ${IMPCNVGEN_LOC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
90 #COMMAND impcnvgen |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
91 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
92 DEPENDS impcnvgen |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
93 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
94 set(LDC_GENERATED |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
95 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/id.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
96 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/id.h |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
97 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/impcnvtab.c |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
98 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
99 # idgen and impcnvgen done |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
100 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
101 set(DEFAULT_TARGET ${HOST_TARGET} CACHE STRING "default target") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
102 |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
103 include_directories(. ${DMDFE_PATH} ${PROJECT_BINARY_DIR}/${DMDFE_PATH} ${LLVM_INSTDIR}/include) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
104 |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
105 file(GLOB FE_SRC ${DMDFE_PATH}/*.c) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
106 file(GLOB GEN_SRC gen/*.cpp) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
107 file(GLOB IR_SRC ir/*.cpp) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
108 # exclude idgen and impcnvgen and generated sources, just in case |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
109 list(REMOVE_ITEM FE_SRC |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
110 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/idgen.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
111 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/impcnvgen.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
112 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/id.c |
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
113 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/impcnvtab.c |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
114 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
115 set(LDC_SOURCE_FILES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
116 ${LDC_GENERATED} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
117 ${FE_SRC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
118 ${GEN_SRC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
119 ${IR_SRC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
120 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
121 set_source_files_properties( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
122 ${LDC_SOURCE_FILES} PROPERTIES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
123 LANGUAGE CXX |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
124 ) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
125 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
126 add_definitions( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
127 -DIN_LLVM |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
128 -D_DH |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
129 -DOPAQUE_VTBLS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
130 -DUSE_BOEHM_GC=0 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
131 -DX86_REVERSE_PARAMS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
132 -DX86_PASS_IN_EAX |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
133 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
134 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
135 if(UNIX) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
136 add_definitions(-DPOSIX) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
137 #set(CONF_SUFFIX conf) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
138 endif(UNIX) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
139 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
140 if(CMAKE_MINOR_VERSION LESS 6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
141 add_definitions(-DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET}\\") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
142 else(CMAKE_MINOR_VERSION LESS 6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
143 add_definitions(-DDEFAULT_TARGET_TRIPLE="${DEFAULT_TARGET}") |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
144 endif(CMAKE_MINOR_VERSION LESS 6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
145 |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
146 add_executable(${LDC_EXE} ${LDC_SOURCE_FILES}) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
147 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
148 set_target_properties( |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
149 ${LDC_EXE} PROPERTIES |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
150 RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
151 COMPILE_FLAGS "${LLVM_CXXFLAGS} -Wno-deprecated -Wno-write-strings" |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
152 ) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
153 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
154 # LDFLAGS should actually be in target property LINK_FLAGS, but this works, and gets around linking problems |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
155 target_link_libraries(${LDC_EXE} "${LLVM_LDFLAGS} ${LLVM_LIBS}") |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
156 if(WIN32) |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
157 target_link_libraries(${LDC_EXE} psapi) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
158 #set(CONF_SUFFIX ini) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
159 endif(WIN32) |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
160 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
161 # cmake pre 2.6 doesn't support the RUNTIME_OUTPUT_DIRECTORY target property |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
162 if(CMAKE_MINOR_VERSION LESS 6) |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
163 get_target_property(LDC_LOC ${LDC_EXE} LOCATION) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
164 add_custom_command( |
758
f04dde6e882c
Added initial D2 support, D2 frontend and changes to codegen to make things compile.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
753
diff
changeset
|
165 TARGET ${LDC_EXE} |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
166 POST_BUILD |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
167 COMMAND ${CMAKE_COMMAND} -E copy ${LDC_LOC} ${PROJECT_BINARY_DIR}/bin/ |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
168 COMMAND ${CMAKE_COMMAND} -E remove ${LDC_LOC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
169 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
170 endif(CMAKE_MINOR_VERSION LESS 6) |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
171 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
172 #configure_file(${PROJECT_SOURCE_DIR}/ldc.conf.in ${PROJECT_BINARY_DIR}/bin/ldc.${CONF_SUFFIX}) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
173 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
174 # TODO: runtime build |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
175 # possible problems: |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
176 # with an oos-build, how to set up a working environment, with conf/ini and tango in place? |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
177 # patch tango? how to determine if that's already been done? |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
178 # std but compatible runtime build, or shared, which doesn't yet work on every platform |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
179 # |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
180 # TODO: install target |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
181 # TODO: testrun |