annotate runtime/CMakeLists.txt @ 812:6c2ff06c4201

Fixed a nasty bug with how interface vtables for class initializers were output, causing some class fields to be skipped. Fixed a problem in definition of ClassInfos where an invalid constant was potentially used. This needs to be looked into proper as it might happen again in the future.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Mon, 01 Dec 2008 04:37:54 +0100
parents 4ad1e7b10378
children 03b0c817a1a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
1 project(runtime)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
2
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
3 cmake_minimum_required(VERSION 2.6)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
4
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
5 find_program(GCC_EXE gcc DOC "path to gcc binary")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
6 if(NOT GCC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
7 message(STATUS "gcc needs to be on your path to build the runtime")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
8 endif(NOT GCC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
9
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
10 option(BUILD_SHARED_LIBS "build the runtime as shared libraries (linux only)")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
11 option(BUILD_BC_LIBS "build the runtime as bytecode libraries")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
12 option(BUILD_SINGLE_LIB "build single runtime library" ON)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
13 set(D_FLAGS -g -w -d CACHE STRING "runtime build flags, separated by ;")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
14
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
15 if(BUILD_SHARED_LIBS)
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
16 list(APPEND D_FLAGS -fPIC)
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
17 endif(BUILD_SHARED_LIBS)
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
18
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
19 # build tango for D1, druntime for D2
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
20 if(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
21 set(RUNTIME tango)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
22 elseif(D_VERSION EQUAL 2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
23 set(RUNTIME druntime)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
24 else(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
25 message(FATAL_ERROR "set d version to 1 or 2")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
26 endif(D_VERSION EQUAL 1)
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
27 get_directory_property(PROJECT_PARENT_DIR DIRECTORY ${PROJECT_SOURCE_DIR} PARENT_DIRECTORY)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
28 set(RUNTIME_DIR ${PROJECT_PARENT_DIR}/${RUNTIME} CACHE PATH "runtime source dir" FORCE)
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
29
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
30 if(D_VERSION EQUAL 1)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
31 set(LDC_EXE ldc)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
32 # copy imports to runtime dir
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
33 add_custom_command(
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
34 OUTPUT ldc-imports
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
35 COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/import/ldc ${RUNTIME_DIR}/ldc
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
36 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/bitmanip.d ${RUNTIME_DIR}/ldc
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
37 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/vararg.d ${RUNTIME_DIR}/ldc
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
38 )
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
39 set(LDC_IMPORTS ldc-imports)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
40 # library names
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
41 set(RUNTIME_CC tango-cc-tango)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
42 set(RUNTIME_GC tango-gc-basic)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
43 set(RUNTIME_DC ldc-runtime)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
44 set(RUNTIME_AIO tango-ldc)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
45 # set paths to source files, or fill lists directly
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
46 set(RUNTIME_DC_DIR ${PROJECT_SOURCE_DIR}/internal)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
47 set(RUNTIME_GC_DIR ${RUNTIME_DIR}/lib/gc/basic)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
48 file(GLOB CORE_D ${RUNTIME_DIR}/lib/common/tango/core/*.d)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
49 file(GLOB CORE_C ${RUNTIME_DIR}/lib/common/tango/stdc/*.c)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
50 elseif(D_VERSION EQUAL 2)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
51 set(LDC_EXE ldc2)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
52 set(RUNTIME_CC druntime-core)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
53 set(RUNTIME_GC druntime-gc-basic)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
54 set(RUNTIME_DC druntime-rt-ldc)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
55 set(RUNTIME_AIO druntime-ldc)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
56 set(RUNTIME_DC_DIR ${RUNTIME_DIR}/src/compiler/ldc)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
57 set(RUNTIME_GC_DIR ${RUNTIME_DIR}/src/gc/basic)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
58 file(GLOB CORE_D ${RUNTIME_DIR}/src/common/core/*.d)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
59 file(GLOB CORE_C ${RUNTIME_DIR}/src/common/core/stdc/*.c)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
60 endif(D_VERSION EQUAL 1)
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
61
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
62 # should only be necessary if run independently from ldc cmake project
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
63 if(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
64 if(NOT LDC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
65 if(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
66 set(LDC_EXE ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
67 elseif(D_VERSION EQUAL 2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
68 set(LDC_EXE ldc2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
69 endif(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
70 endif(NOT LDC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
71
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
72 find_program(LDC_LOC ${LDC_EXE} ../bin DOC "path to ldc binary")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
73 if(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
74 message(SEND_ERROR "ldc not found")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
75 endif(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
76 endif(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
77
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
78 configure_file(${PROJECT_PARENT_DIR}/${LDC_EXE}.conf.in ${PROJECT_BINARY_DIR}/../bin/${LDC_EXE}.conf)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
79
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
80 # patch runtime source, uses LDC_EXE for ldc / ldc2
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
81 find_program(PATCH_EXE patch DOC "path to patch tool")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
82 if(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
83 message(STATUS "patch tool not found, can't automatically patch runtime sources for ldc")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
84 else(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
85 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
86 OUTPUT patch-runtime
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
87 COMMAND ${PATCH_EXE} -t -N -p0 -i ${PROJECT_SOURCE_DIR}/${LDC_EXE}.diff
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
88 WORKING_DIRECTORY ${RUNTIME_DIR}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
89 )
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
90 # rebuild cache to include sources added by patch
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
91 add_custom_command(
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
92 OUTPUT recache
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
93 COMMAND ${CMAKE_COMMAND} -H${PROJECT_PARENT_DIR} -B${PROJECT_BINARY_DIR}/..
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
94 )
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
95 add_custom_target(patch DEPENDS patch-runtime recache ${LDC_IMPORTS})
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
96 endif(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
97
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
98 file(GLOB GC_D ${RUNTIME_GC_DIR}/*.d)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
99 file(GLOB_RECURSE DCRT_D ${RUNTIME_DC_DIR}/*.d)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
100 file(GLOB DCRT_C ${RUNTIME_DC_DIR}/*.c)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
101
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
102 # compile d file into outdir, include incdir, and append names of generated .o and .bc to outlist_o and _bc
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
103 macro(dc INPUT_D OUTLIST_O OUTLIST_BC OUTDIR INCDIR MOREFLAGS)
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
104 get_filename_component(BASENAME ${INPUT_D} NAME_WE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
105 set(OUTPUT_O ${PROJECT_BINARY_DIR}/${OUTDIR}/${BASENAME}.o)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
106 set(OUTPUT_BC ${PROJECT_BINARY_DIR}/${OUTDIR}/${BASENAME}.bc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
107 list(APPEND ${OUTLIST_O} ${OUTPUT_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
108 list(APPEND ${OUTLIST_BC} ${OUTPUT_BC})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
109 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
110 OUTPUT
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
111 ${OUTPUT_O}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
112 ${OUTPUT_BC}
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
113 COMMAND ${LDC_LOC} -c -I${INCDIR} -output-bc ${INPUT_D} -of${OUTPUT_O} ${D_FLAGS} ${MOREFLAGS}
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
114 DEPENDS ${LDC_LOC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
115 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
116 endmacro(dc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
117
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
118 # dc_dir include for core and gc only necessary with druntime
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
119 foreach(f ${CORE_D})
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
120 dc(${f} CORE_O CORE_BC core ${RUNTIME_DC_DIR} "")
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
121 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
122
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
123 foreach(f ${GC_D})
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
124 dc(${f} GC_O GC_BC gc "${RUNTIME_GC_DIR} ${RUNTIME_DC_DIR}" "-disable-invariants")
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
125 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
126
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
127 foreach(f ${DCRT_D})
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
128 dc(${f} DCRT_O DCRT_BC dcrt ${RUNTIME_DC_DIR} "")
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
129 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
130
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
131 if(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
132 add_library(${RUNTIME_AIO} ${CORE_O} ${CORE_C} ${GC_O} ${DCRT_O} ${DCRT_C})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
133 set(LIBS ${RUNTIME_AIO})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
134 else(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
135 add_library(${RUNTIME_CC} ${CORE_O} ${CORE_C})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
136 add_library(${RUNTIME_GC} ${GC_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
137 add_library(${RUNTIME_DC} ${DCRT_O} ${DCRT_C})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
138 set(LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
139 ${RUNTIME_CC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
140 ${RUNTIME_GC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
141 ${RUNTIME_DC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
142 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
143 endif(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
144
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
145 if(BUILD_BC_LIBS)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
146 find_program(LLVM_AR_EXE llvm-ar ${LLVM_INSTDIR}/bin DOC "path to llvm-ar tool")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
147 if(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
148 message(SEND_ERROR "llvm-ar not found")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
149 endif(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
150
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
151 add_library(${RUNTIME_CC}-c ${CORE_C})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
152 add_library(${RUNTIME_DC}-c ${DCRT_C})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
153 list(APPEND LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
154 ${RUNTIME_CC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
155 ${RUNTIME_DC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
156 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
157 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
158 OUTPUT bclibs
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
159 COMMAND ${LLVM_AR_EXE} rs lib${RUNTIME_CC}-bc.a ${CORE_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
160 COMMAND ${LLVM_AR_EXE} rs lib${RUNTIME_GC}-bc.a ${GC_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
161 # cannot parse genobj.bc if built with -g
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
162 # COMMAND ${LLVM_AR_EXE} rs lib${RUNTIME_DC}-bc.a ${DCRT_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
163 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/../lib
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
164 DEPENDS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
165 ${CORE_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
166 ${GC_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
167 ${DCRT_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
168 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
169 set(BCLIBS bclibs)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
170 endif(BUILD_BC_LIBS)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
171
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
172 set_target_properties(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
173 ${LIBS} PROPERTIES
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
174 LINKER_LANGUAGE C
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
175 ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../lib
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
176 LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../lib
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
177 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
178
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
179 # BCLIBS is empty if BUILD_BC_LIBS is not selected
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
180 add_custom_target(runtime DEPENDS ${LIBS} ${BCLIBS})