annotate runtime/CMakeLists.txt @ 786:45d9c218fd32

Add missing CMakeList, apply conf changes to dmd2 frontend.
author Christian Kamm <kamm incasoftware de>
date Mon, 24 Nov 2008 20:02:59 +0100
parents
children 3e0b643090f1
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 # not working, gcc has to be on the path before invoking make
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
6 #set(ENV{PATH} ENV{PATH} CMAKE_C_COMPILER:FILEPATH)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
7
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
8 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
9 if(NOT GCC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
10 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
11 endif(NOT GCC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
12
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
13 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
14 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
15 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
16 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
17
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
18 get_directory_property(PROJECT_PARENT_DIR DIRECTORY ${PROJECT_SOURCE_DIR} PARENT_DIRECTORY)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
19 if(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
20 set(RUNTIME tango)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
21 set(LDC_EXE ldc)
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 set(LDC_EXE ldc2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
25 else(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
26 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
27 endif(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
28
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
29 set(RUNTIME_DIR ${PROJECT_PARENT_DIR}/${RUNTIME} CACHE PATH "runtime source dir" FORCE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
30
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
31 # 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
32 if(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
33 if(NOT LDC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
34 if(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
35 set(LDC_EXE ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
36 elseif(D_VERSION EQUAL 2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
37 set(LDC_EXE ldc2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
38 endif(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
39 endif(NOT LDC_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
40
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
41 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
42 if(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
43 message(SEND_ERROR "ldc not found")
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
44 endif(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
45 endif(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
46 #
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
47
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
48 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
49
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
50 # 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
51 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
52 if(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
53 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
54 else(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
55 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
56 OUTPUT patch-runtime
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
57 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
58 WORKING_DIRECTORY ${RUNTIME_DIR}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
59 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
60 add_custom_target(patch DEPENDS patch-runtime)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
61 endif(NOT PATCH_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
62 #
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
63
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
64 # build tango for D1, druntime for D2
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 # library names
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
67 set(RUNTIME_CC tango-cc-tango)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
68 set(RUNTIME_GC tango-gc-basic)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
69 set(RUNTIME_DC ldc-runtime)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
70 set(RUNTIME_AIO tango-ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
71 # set paths to source files, or fill lists directly
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
72 set(RUNTIME_DC_DIR ${PROJECT_SOURCE_DIR}/internal)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
73 set(RUNTIME_GC_DIR ${RUNTIME_DIR}/lib/gc/basic)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
74 file(GLOB CORE_D ${RUNTIME_DIR}/lib/common/tango/core/*.d)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
75 file(GLOB CORE_C ${RUNTIME_DIR}/lib/common/tango/stdc/*.c)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
76 # copy imports to runtime dir
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
77 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
78 TARGET ldc-runtime
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
79 POST_BUILD
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
80 COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/import/ldc ${RUNTIME_DIR}/ldc
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
81 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/bitmanip.d ${RUNTIME_DIR}/ldc
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
82 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/vararg.d ${RUNTIME_DIR}/ldc
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
83 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
84 elseif(D_VERSION EQUAL 2)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
85 set(RUNTIME_CC druntime-core)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
86 set(RUNTIME_GC druntime-gc-basic)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
87 set(RUNTIME_DC druntime-rt-ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
88 set(RUNTIME_AIO druntime-ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
89 set(RUNTIME_DC_DIR ${RUNTIME_DIR}/src/compiler/ldc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
90 set(RUNTIME_GC_DIR ${RUNTIME_DIR}/src/gc/basic)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
91 file(GLOB CORE_D ${RUNTIME_DIR}/src/common/core/*.d)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
92 file(GLOB CORE_C ${RUNTIME_DIR}/src/common/core/stdc/*.c)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
93 endif(D_VERSION EQUAL 1)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
94
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
95 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
96 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
97 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
98
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
99 # compile d file into outdir, include incdir, and append names of generated .o and .bc to outlist_o and _bc
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
100 macro(dc INPUT_D OUTLIST_O OUTLIST_BC OUTDIR INCDIR)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
101 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
102 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
103 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
104 list(APPEND ${OUTLIST_O} ${OUTPUT_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
105 list(APPEND ${OUTLIST_BC} ${OUTPUT_BC})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
106 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
107 OUTPUT
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
108 ${OUTPUT_O}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
109 ${OUTPUT_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
110 COMMAND ${LDC_LOC} -c -I${INCDIR} -output-bc ${INPUT_D} -of${OUTPUT_O} ${D_FLAGS}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
111 DEPENDS ${LDC_LOC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
112 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
113 endmacro(dc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
114
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
115 foreach(f ${CORE_D})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
116 dc(${f} CORE_O CORE_BC core .)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
117 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
118
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
119 foreach(f ${GC_D})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
120 dc(${f} GC_O GC_BC gc ${RUNTIME_GC_DIR})
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 ${DCRT_D})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
124 dc(${f} DCRT_O DCRT_BC dcrt ${RUNTIME_DC_DIR})
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 if(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
128 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
129 set(LIBS ${RUNTIME_AIO})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
130 else(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
131 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
132 add_library(${RUNTIME_GC} ${GC_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
133 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
134 set(LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
135 ${RUNTIME_CC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
136 ${RUNTIME_GC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
137 ${RUNTIME_DC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
138 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
139 endif(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
140
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
141 if(BUILD_BC_LIBS)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
142 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
143 if(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
144 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
145 endif(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
146
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
147 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
148 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
149 list(APPEND LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
150 ${RUNTIME_CC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
151 ${RUNTIME_DC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
152 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
153 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
154 OUTPUT bclibs
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
155 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
156 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
157 # 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
158 # 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
159 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/../lib
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
160 DEPENDS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
161 ${CORE_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
162 ${GC_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
163 ${DCRT_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
164 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
165 set(BCLIBS bclibs)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
166 endif(BUILD_BC_LIBS)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
167
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
168 set_target_properties(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
169 ${LIBS} PROPERTIES
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
170 LINKER_LANGUAGE C
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
171 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
172 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
173 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
174
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
175 # 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
176 add_custom_target(runtime DEPENDS ${LIBS} ${BCLIBS})