annotate runtime/CMakeLists.txt @ 984:4c0df37d0421

Removing ldc.conf. (IMPORTANT: run 'cmake .' after pull) Added it to .hgignore. This gets rid of spurious differences caused by CMake regenerating it differently. Just run 'cmake .' to get it back in your local checkout.
author Frits van Bommel <fvbommel wxs.nl>
date Thu, 19 Feb 2009 13:50:05 +0100
parents 6e68054cfc20
children 616d7c90bb6a
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)
983
6e68054cfc20 Fix out-ouf-source build for runtime as well.
Frits van Bommel <fvbommel wxs.nl>
parents: 874
diff changeset
28 set(RUNTIME_DIR ${PROJECT_BINARY_DIR}/../${RUNTIME} CACHE PATH "runtime source dir")
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 # copy imports to runtime dir
983
6e68054cfc20 Fix out-ouf-source build for runtime as well.
Frits van Bommel <fvbommel wxs.nl>
parents: 874
diff changeset
32 set(LDC_IMPORTS ${RUNTIME_DIR}/ldc-imports)
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
33 add_custom_command(
983
6e68054cfc20 Fix out-ouf-source build for runtime as well.
Frits van Bommel <fvbommel wxs.nl>
parents: 874
diff changeset
34 OUTPUT ${LDC_IMPORTS}
862
e8337278f49b temporary fix for runtime buildscript to copy ldc's imports to tango
elrood
parents: 844
diff changeset
35 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/import/ldc/cstdarg.di ${RUNTIME_DIR}/ldc/cstdarg.di
e8337278f49b temporary fix for runtime buildscript to copy ldc's imports to tango
elrood
parents: 844
diff changeset
36 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/import/ldc/intrinsics.di ${RUNTIME_DIR}/ldc/intrinsics.di
e8337278f49b temporary fix for runtime buildscript to copy ldc's imports to tango
elrood
parents: 844
diff changeset
37 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/internal/ldc/bitmanip.d ${RUNTIME_DIR}/ldc/bitmanip.d
e8337278f49b temporary fix for runtime buildscript to copy ldc's imports to tango
elrood
parents: 844
diff changeset
38 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/internal/ldc/vararg.d ${RUNTIME_DIR}/ldc/vararg.d
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
39 )
983
6e68054cfc20 Fix out-ouf-source build for runtime as well.
Frits van Bommel <fvbommel wxs.nl>
parents: 874
diff changeset
40 set_source_files_properties(${LDC_IMPORTS} PROPERTIES SYMBOLIC YES)
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
41 # library names
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
42 set(RUNTIME_CC tango-cc-tango)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
43 set(RUNTIME_GC tango-gc-basic)
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
44 set(RUNTIME_DC ldc-runtime)
844
1a8c6eedd7fd Rename merged runtime to tango-base-ldc, #145.
Christian Kamm <kamm incasoftware de>
parents: 829
diff changeset
45 set(RUNTIME_AIO tango-base-ldc)
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
46 # 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
47 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
48 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
49 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
50 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
51 elseif(D_VERSION EQUAL 2)
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)
828
03b0c817a1a3 added install target and possibility to pre- and suffix ldc's executable name to cmake scripts
elrood
parents: 808
diff changeset
76 set(LDC_EXE_NAME ${LDC_EXE})
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
77 endif(NOT LDC_LOC)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
78
829
0a31c60a6bc1 .. and fixed the install target (hopefully)
elrood
parents: 828
diff changeset
79 configure_file(${PROJECT_PARENT_DIR}/${LDC_EXE}.conf.in ${PROJECT_BINARY_DIR}/../bin/${LDC_EXE}.conf)
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
80
874
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
81 # patch runtime source, uses LDC_EXE for ldc2
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
82 if(D_VERSION EQUAL 2)
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
83 find_program(PATCH_EXE patch DOC "path to patch tool")
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
84 if(NOT PATCH_EXE)
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
85 message(STATUS "patch tool not found, can't automatically patch runtime sources for ldc")
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
86 else(NOT PATCH_EXE)
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
87 add_custom_command(
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
88 OUTPUT patch-runtime
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
89 COMMAND ${PATCH_EXE} -t -N -p0 -i ${PROJECT_SOURCE_DIR}/${LDC_EXE}.diff
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
90 WORKING_DIRECTORY ${RUNTIME_DIR}
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
91 )
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
92 # rebuild cache to include sources added by patch
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
93 add_custom_command(
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
94 OUTPUT recache
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
95 COMMAND ${CMAKE_COMMAND} -H${PROJECT_PARENT_DIR} -B${PROJECT_BINARY_DIR}/..
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
96 )
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
97 add_custom_target(patch DEPENDS patch-runtime recache ${LDC_IMPORTS})
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
98 endif(NOT PATCH_EXE)
2ddee23bd70e Get rid of ex-Tango patch. (merged into Tango)
Christian Kamm <kamm incasoftware de>
parents: 862
diff changeset
99 endif(D_VERSION EQUAL 2)
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
100
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
101 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
102 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
103 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
104
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
105 # 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
106 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
107 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
108 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
109 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
110 list(APPEND ${OUTLIST_O} ${OUTPUT_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
111 list(APPEND ${OUTLIST_BC} ${OUTPUT_BC})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
112 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
113 OUTPUT
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
114 ${OUTPUT_O}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
115 ${OUTPUT_BC}
808
4ad1e7b10378 when building the runtime pass -fPIC for shared libs and -disable-invariants for gc
elrood
parents: 791
diff changeset
116 COMMAND ${LDC_LOC} -c -I${INCDIR} -output-bc ${INPUT_D} -of${OUTPUT_O} ${D_FLAGS} ${MOREFLAGS}
984
4c0df37d0421 Removing ldc.conf. (IMPORTANT: run 'cmake .' after pull)
Frits van Bommel <fvbommel wxs.nl>
parents: 983
diff changeset
117 DEPENDS ${LDC_LOC}
4c0df37d0421 Removing ldc.conf. (IMPORTANT: run 'cmake .' after pull)
Frits van Bommel <fvbommel wxs.nl>
parents: 983
diff changeset
118 ${LDC_IMPORTS}
4c0df37d0421 Removing ldc.conf. (IMPORTANT: run 'cmake .' after pull)
Frits van Bommel <fvbommel wxs.nl>
parents: 983
diff changeset
119 ${PROJECT_BINARY_DIR}/../bin/${LDC_EXE}.conf
786
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
120 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
121 endmacro(dc)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
122
791
3e0b643090f1 Apply Elrood's CMake patch from #132.
Christian Kamm <kamm incasoftware de>
parents: 786
diff changeset
123 # 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
124 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
125 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
126 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
127
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
128 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
129 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
130 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
131
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
132 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
133 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
134 endforeach(f)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
135
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
136 if(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
137 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
138 set(LIBS ${RUNTIME_AIO})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
139 else(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
140 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
141 add_library(${RUNTIME_GC} ${GC_O})
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
142 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
143 set(LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
144 ${RUNTIME_CC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
145 ${RUNTIME_GC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
146 ${RUNTIME_DC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
147 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
148 endif(BUILD_SINGLE_LIB)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
149
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
150 if(BUILD_BC_LIBS)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
151 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
152 if(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
153 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
154 endif(NOT LLVM_AR_EXE)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
155
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
156 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
157 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
158 list(APPEND LIBS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
159 ${RUNTIME_CC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
160 ${RUNTIME_DC}-c
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
161 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
162 add_custom_command(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
163 OUTPUT bclibs
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
164 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
165 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
166 # 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
167 # 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
168 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/../lib
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
169 DEPENDS
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
170 ${CORE_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
171 ${GC_BC}
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
172 ${DCRT_BC}
984
4c0df37d0421 Removing ldc.conf. (IMPORTANT: run 'cmake .' after pull)
Frits van Bommel <fvbommel wxs.nl>
parents: 983
diff changeset
173 ${LDC_IMPORTS}
786
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 set(BCLIBS bclibs)
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
176 endif(BUILD_BC_LIBS)
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 set_target_properties(
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
179 ${LIBS} PROPERTIES
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
180 LINKER_LANGUAGE C
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
181 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
182 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
183 )
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
184
45d9c218fd32 Add missing CMakeList, apply conf changes to dmd2 frontend.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
185 # 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
186 add_custom_target(runtime DEPENDS ${LIBS} ${BCLIBS})