Mercurial > projects > ldc
annotate CMakeLists.txt @ 1083:c1e9f612e2e2
Fix for dual operand form of fistp, also make reg ST(0) explicit and fix lindquists
previous code that allowed dual operand form of fstp but dissallowed the single
operand form accidently
author | Kelly Wilson <wilsonk cpsc.ucalgary.ca> |
---|---|
date | Tue, 10 Mar 2009 06:23:26 -0600 |
parents | d9820e08bb84 |
children | b30fe7e1dbb9 |
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 |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
12 find_program(LLVM_CONFIG llvm-config ${LLVM_INSTDIR}/bin DOC "path to llvm-config tool") |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
13 # get llvm's install dir. a little hackish, we could do something like llvm-config --prefix, but this does as well |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
14 string(REPLACE "/bin/llvm-config" "" LLVM_DIR ${LLVM_CONFIG}) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
15 |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
16 set(LLVM_INSTDIR ${LLVM_DIR} CACHE PATH "LLVM installation directory" FORCE) |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
17 if(NOT LLVM_INSTDIR) |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
18 message(FATAL_ERROR "llvm not found") |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
19 endif(NOT LLVM_INSTDIR) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
20 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
21 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
22 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --host-target |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
23 OUTPUT_VARIABLE HOST_TARGET |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
24 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
25 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
26 execute_process( |
1021
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
27 COMMAND /bin/sh ${PROJECT_SOURCE_DIR}/find-alt-triple.sh ${HOST_TARGET} |
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
28 OUTPUT_VARIABLE HOST_ALT_TARGET |
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
29 OUTPUT_STRIP_TRAILING_WHITESPACE |
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
30 ) |
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
31 execute_process( |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
32 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --cxxflags |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
33 OUTPUT_VARIABLE LLVM_CXXFLAGS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
34 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
35 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
36 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
37 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --ldflags |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
38 OUTPUT_VARIABLE LLVM_LDFLAGS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
39 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
40 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
41 execute_process( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
42 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
|
43 OUTPUT_VARIABLE LLVM_LIBS |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
44 OUTPUT_STRIP_TRAILING_WHITESPACE |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
45 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
46 |
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
|
47 set(D_VERSION 1 CACHE STRING "D language version") |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
48 set(PROGRAM_PREFIX CACHE STRING "prepended to ldc binary name") |
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
49 set(PROGRAM_SUFFIX CACHE STRING "appended to ldc binary name") |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
50 option(USE_BOEHM_GC "use the Boehm garbage collector internally") |
821
8f0b24bc55f0
Added CMake option to disable generation of ClassInfo.offTi arrays, defaults to OFF.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
785
diff
changeset
|
51 option(GENERATE_OFFTI "generate complete ClassInfo.offTi arrays") |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
52 |
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
|
53 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
|
54 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
|
55 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
|
56 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
|
57 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
|
58 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
|
59 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
|
60 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
|
61 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
|
62 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
|
63 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
|
64 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
65 file(MAKE_DIRECTORY |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
66 ${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
|
67 ${PROJECT_BINARY_DIR}/${DMDFE_PATH} |
1065
dc576c7e4b1e
Fix to make sure to create gen/ in build dir and unbreak build with older perl
Frits van Bommel <fvbommel wxs.nl>
parents:
1064
diff
changeset
|
68 ${PROJECT_BINARY_DIR}/gen |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
69 ) |
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
70 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
71 # idgen and impcnvgen |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
72 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
|
73 ${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
|
74 ${DMDFE_PATH}/impcnvgen.c |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
75 PROPERTIES LANGUAGE CXX |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
76 ) |
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
|
77 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
|
78 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
|
79 # cmake 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
80 set_target_properties( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
81 idgen impcnvgen PROPERTIES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
82 LINKER_LANGUAGE CXX |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
83 RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} |
1051
dc608dc33081
Make IrFuncTy a member of TypeFunction. Reset between modules compiled in the
Christian Kamm <kamm incasoftware de>
parents:
1032
diff
changeset
|
84 COMPILE_FLAGS ${LLVM_CXXFLAGS} |
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 get_target_property(IDGEN_LOC idgen LOCATION) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
87 get_target_property(IMPCNVGEN_LOC impcnvgen LOCATION) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
88 # |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
89 add_custom_command( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
90 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
|
91 ${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
|
92 ${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
|
93 # 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
94 COMMAND ${IDGEN_LOC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
95 #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
|
96 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
|
97 DEPENDS idgen |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
98 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
99 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
|
100 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
|
101 # 2.4 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
102 COMMAND ${IMPCNVGEN_LOC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
103 #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
|
104 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
|
105 DEPENDS impcnvgen |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
106 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
107 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
|
108 ${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
|
109 ${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
|
110 ${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
|
111 ) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
112 # idgen and impcnvgen done |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
113 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
114 set(DEFAULT_TARGET ${HOST_TARGET} CACHE STRING "default target") |
1021
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
115 set(DEFAULT_ALT_TARGET ${HOST_ALT_TARGET} CACHE STRING "default alt target") |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
116 |
1071
7d9957c6350e
Fix out of source build by adding the build dir to the include path.
Christian Kamm <kamm incasoftware de>
parents:
1065
diff
changeset
|
117 include_directories(. ${DMDFE_PATH} ${PROJECT_BINARY_DIR}/${DMDFE_PATH} ${PROJECT_BINARY_DIR} ${LLVM_INSTDIR}/include) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
118 |
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
|
119 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
|
120 file(GLOB GEN_SRC gen/*.cpp) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
121 file(GLOB IR_SRC ir/*.cpp) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
122 # 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
|
123 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
|
124 ${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
|
125 ${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
|
126 ${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
|
127 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/impcnvtab.c |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
128 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
129 set(LDC_SOURCE_FILES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
130 ${LDC_GENERATED} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
131 ${FE_SRC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
132 ${GEN_SRC} |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
133 ${IR_SRC} |
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 set_source_files_properties( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
136 ${LDC_SOURCE_FILES} PROPERTIES |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
137 LANGUAGE CXX |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
138 ) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
139 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
140 add_definitions( |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
141 -DIN_LLVM |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
142 -D_DH |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
143 -DOPAQUE_VTBLS |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
144 ) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
145 |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
146 if(UNIX) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
147 add_definitions(-DPOSIX) |
829 | 148 set(CONF_INST_DIR bin) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
149 endif(UNIX) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
150 |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
151 if(USE_BOEHM_GC) |
883
b52d5de7783f
GC defines and linkage changes.
Christian Kamm <kamm incasoftware de>
parents:
853
diff
changeset
|
152 add_definitions(-DREDIRECT_MALLOC=GC_malloc -DIGNORE_FREE) |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
153 endif(USE_BOEHM_GC) |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
154 |
821
8f0b24bc55f0
Added CMake option to disable generation of ClassInfo.offTi arrays, defaults to OFF.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
785
diff
changeset
|
155 if(GENERATE_OFFTI) |
8f0b24bc55f0
Added CMake option to disable generation of ClassInfo.offTi arrays, defaults to OFF.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
785
diff
changeset
|
156 add_definitions(-DGENERATE_OFFTI) |
8f0b24bc55f0
Added CMake option to disable generation of ClassInfo.offTi arrays, defaults to OFF.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
785
diff
changeset
|
157 endif(GENERATE_OFFTI) |
8f0b24bc55f0
Added CMake option to disable generation of ClassInfo.offTi arrays, defaults to OFF.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
785
diff
changeset
|
158 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
159 if(CMAKE_MINOR_VERSION LESS 6) |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
160 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "output dir for built executables") |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
161 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib CACHE PATH "output dir for built libraries") |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
162 add_definitions(-DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET}\\") |
1021
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
163 add_definitions(-DDEFAULT_ALT_TARGET_TRIPLE=\\"${DEFAULT_ALT_TARGET}\\") |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
164 else(CMAKE_MINOR_VERSION LESS 6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
165 add_definitions(-DDEFAULT_TARGET_TRIPLE="${DEFAULT_TARGET}") |
1021
d1ec9ff0e9ba
Implemented basic -m32 and -m64 options.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
982
diff
changeset
|
166 add_definitions(-DDEFAULT_ALT_TARGET_TRIPLE="${DEFAULT_ALT_TARGET}") |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
167 endif(CMAKE_MINOR_VERSION LESS 6) |
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
168 |
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
|
169 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
|
170 |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
171 # generate revision info |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
172 configure_file( |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
173 ${PROJECT_SOURCE_DIR}/revisions.pl.in |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
174 ${PROJECT_BINARY_DIR}/revisions.pl |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
175 @ONLY |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
176 ) |
1074
d9820e08bb84
Make sure revisions.pl always runs so revisions.h doesn't get out of date.
Frits van Bommel <fvbommel wxs.nl>
parents:
1071
diff
changeset
|
177 add_custom_target( |
d9820e08bb84
Make sure revisions.pl always runs so revisions.h doesn't get out of date.
Frits van Bommel <fvbommel wxs.nl>
parents:
1071
diff
changeset
|
178 gen_revs_h |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
179 COMMAND ${PERL_EXECUTABLE} ${PROJECT_BINARY_DIR}/revisions.pl |
1074
d9820e08bb84
Make sure revisions.pl always runs so revisions.h doesn't get out of date.
Frits van Bommel <fvbommel wxs.nl>
parents:
1071
diff
changeset
|
180 DEPENDS ${PROJECT_BINARY_DIR}/revisions.pl |
d9820e08bb84
Make sure revisions.pl always runs so revisions.h doesn't get out of date.
Frits van Bommel <fvbommel wxs.nl>
parents:
1071
diff
changeset
|
181 COMMENT "Generating revisions.h" |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
1051
diff
changeset
|
182 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/gen |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
183 ) |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
184 add_dependencies(${LDC_EXE} gen_revs_h) |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
185 # |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
829
diff
changeset
|
186 |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
187 set(LDC_EXE_NAME ${PROGRAM_PREFIX}${LDC_EXE}${PROGRAM_SUFFIX}) |
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
188 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
189 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
|
190 ${LDC_EXE} PROPERTIES |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
191 OUTPUT_NAME ${LDC_EXE_NAME} |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
192 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
|
193 COMPILE_FLAGS "${LLVM_CXXFLAGS} -Wno-deprecated -Wno-write-strings" |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
194 ) |
749
db2dd9861600
Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
195 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
196 # 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
|
197 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
|
198 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
|
199 target_link_libraries(${LDC_EXE} psapi) |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
200 set(CONF_INST_DIR bin) |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
201 endif(WIN32) |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
202 |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
203 if(USE_BOEHM_GC) |
883
b52d5de7783f
GC defines and linkage changes.
Christian Kamm <kamm incasoftware de>
parents:
853
diff
changeset
|
204 target_link_libraries(${LDC_EXE} ${PROJECT_SOURCE_DIR}/libgc.a) |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
205 endif(USE_BOEHM_GC) |
750
d05fc504a3a0
Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
749
diff
changeset
|
206 |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
207 get_target_property(LDC_LOC ${LDC_EXE} LOCATION) |
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
208 |
753
405e40f20ef9
Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents:
750
diff
changeset
|
209 # TODO: testrun |
785
ac39e5449ca5
Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents:
758
diff
changeset
|
210 |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
211 install(TARGETS ${LDC_EXE} DESTINATION bin) |
829 | 212 install(FILES ${PROJECT_BINARY_DIR}/bin/${LDC_EXE}.conf DESTINATION ${CONF_INST_DIR}) |
213 install(DIRECTORY ${PROJECT_BINARY_DIR}/lib DESTINATION . USE_SOURCE_PERMISSIONS) | |
828
03b0c817a1a3
added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents:
821
diff
changeset
|
214 |
829 | 215 add_subdirectory(runtime EXCLUDE_FROM_ALL) |