annotate CMakeLists.txt @ 843:880b7aa29aa4

Automated merge with http://hg.dsource.org/projects/ldc
author Christian Kamm <kamm incasoftware de>
date Fri, 12 Dec 2008 08:18:30 +0100
parents 0a31c60a6bc1
children 82ad6c0c601c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
27 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --cxxflags
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
28 OUTPUT_VARIABLE LLVM_CXXFLAGS
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
29 OUTPUT_STRIP_TRAILING_WHITESPACE
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
30 )
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
31 execute_process(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
32 COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --ldflags
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
33 OUTPUT_VARIABLE LLVM_LDFLAGS
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} --libfiles bitwriter linker ipo instrumentation backend
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
38 OUTPUT_VARIABLE LLVM_LIBS
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
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")
828
03b0c817a1a3 added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents: 821
diff changeset
43 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
44 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
45 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
46 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
47
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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
60 file(MAKE_DIRECTORY
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
61 ${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
62 ${PROJECT_BINARY_DIR}/${DMDFE_PATH}
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
63 )
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
64
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
65 # idgen and impcnvgen
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
66 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
67 ${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
68 ${DMDFE_PATH}/impcnvgen.c
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
69 PROPERTIES LANGUAGE CXX
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
70 )
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
71 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
72 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
73 # cmake 2.4
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
74 set_target_properties(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
75 idgen impcnvgen PROPERTIES
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
76 LINKER_LANGUAGE CXX
785
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
77 RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH}
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
78 )
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
79 get_target_property(IDGEN_LOC idgen LOCATION)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
80 get_target_property(IMPCNVGEN_LOC impcnvgen LOCATION)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
81 #
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
82 add_custom_command(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
83 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
84 ${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
85 ${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
86 # 2.4
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
87 COMMAND ${IDGEN_LOC}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
88 #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
89 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
90 DEPENDS idgen
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
91 )
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
92 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
93 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
94 # 2.4
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
95 COMMAND ${IMPCNVGEN_LOC}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
96 #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
97 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
98 DEPENDS impcnvgen
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
99 )
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
100 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
101 ${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
102 ${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
103 ${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
104 )
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
105 # idgen and impcnvgen done
749
db2dd9861600 Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
106
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
107 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
108
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
109 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
110
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
111 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
112 file(GLOB GEN_SRC gen/*.cpp)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
113 file(GLOB IR_SRC ir/*.cpp)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
114 # 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
115 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
116 ${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
117 ${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
118 ${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
119 ${PROJECT_SOURCE_DIR}/${DMDFE_PATH}/impcnvtab.c
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
120 )
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
121 set(LDC_SOURCE_FILES
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
122 ${LDC_GENERATED}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
123 ${FE_SRC}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
124 ${GEN_SRC}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
125 ${IR_SRC}
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
126 )
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
127 set_source_files_properties(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
128 ${LDC_SOURCE_FILES} PROPERTIES
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
129 LANGUAGE CXX
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
130 )
749
db2dd9861600 Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
131
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
132 add_definitions(
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
133 -DIN_LLVM
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
134 -D_DH
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
135 -DOPAQUE_VTBLS
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
136 -DX86_REVERSE_PARAMS
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
137 -DX86_PASS_IN_EAX
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
138 )
753
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(UNIX)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
141 add_definitions(-DPOSIX)
829
0a31c60a6bc1 .. and fixed the install target (hopefully)
elrood
parents: 828
diff changeset
142 set(CONF_INST_DIR bin)
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
143 endif(UNIX)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
144
785
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
145 if(USE_BOEHM_GC)
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
146 add_definitions(-DUSE_BOEHM_GC)
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
147 endif(USE_BOEHM_GC)
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
148
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
149 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
150 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
151 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
152
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
153 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
154 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
155 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
156 add_definitions(-DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET}\\")
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
157 else(CMAKE_MINOR_VERSION LESS 6)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
158 add_definitions(-DDEFAULT_TARGET_TRIPLE="${DEFAULT_TARGET}")
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
159 endif(CMAKE_MINOR_VERSION LESS 6)
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
160
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
161 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
162
828
03b0c817a1a3 added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents: 821
diff changeset
163 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
164
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
165 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
166 ${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
167 OUTPUT_NAME ${LDC_EXE_NAME}
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
168 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
169 COMPILE_FLAGS "${LLVM_CXXFLAGS} -Wno-deprecated -Wno-write-strings"
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
170 )
749
db2dd9861600 Add basic CMake build file.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
171
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
172 # 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
173 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
174 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
175 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
176 set(CONF_INST_DIR bin)
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
177 endif(WIN32)
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
178
785
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
179 if(USE_BOEHM_GC)
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
180 target_link_libraries(${LDC_EXE} gc)
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
181 endif(USE_BOEHM_GC)
750
d05fc504a3a0 Improve CMake build file.
Christian Kamm <kamm incasoftware de>
parents: 749
diff changeset
182
785
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
diff changeset
183 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
184
753
405e40f20ef9 Switch to Elrood's rewritten CMakeLists.txt.
Christian Kamm <kamm incasoftware de>
parents: 750
diff changeset
185 # TODO: testrun
785
ac39e5449ca5 Apply Elrood's CMake changes from #124. Thanks a lot!
Christian Kamm <kamm incasoftware de>
parents: 758
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 install(TARGETS ${LDC_EXE} DESTINATION bin)
829
0a31c60a6bc1 .. and fixed the install target (hopefully)
elrood
parents: 828
diff changeset
188 install(FILES ${PROJECT_BINARY_DIR}/bin/${LDC_EXE}.conf DESTINATION ${CONF_INST_DIR})
0a31c60a6bc1 .. and fixed the install target (hopefully)
elrood
parents: 828
diff changeset
189 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
190
829
0a31c60a6bc1 .. and fixed the install target (hopefully)
elrood
parents: 828
diff changeset
191 add_subdirectory(runtime EXCLUDE_FROM_ALL)