annotate cmake/FindD.cmake @ 414:b2a803c73b89 default tip

Declare tabArray const.
author David Nadlinger <code@klickverbot.at>
date Fri, 06 May 2011 13:39:49 +0200
parents bdc08c8391ad
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
1 ##--------------------------------------------
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
2 ## Variables.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
3 ##--------------------------------------------
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
4
235
b796329e8c38 We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents: 224
diff changeset
5 ## Find D compiler and parse its version.
402
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
6 find_program(DC NAMES dmd ldc gdmd)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
7 if (DC)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
8 get_filename_component(dc_path ${DC} PATH)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
9 if("${dc_path}" STREQUAL ${CMAKE_BINARY_DIR})
402
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
10 get_filename_component(DC ${DC} NAME)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
11 endif("${dc_path}" STREQUAL ${CMAKE_BINARY_DIR})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
12 exec_program(${DC} ARGS "" OUTPUT_VARIABLE d_output)
412
4189f1d51a7d support for new dmd naming
Max Samukha <maxsamukha@gmail.com>
parents: 403
diff changeset
13 string(REGEX MATCH "(Digital Mars|DMD32) D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
14 if (dmd_version)
402
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
15 set(D_IS_MARS true)
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
16 set(D_IS_DMD true)
413
bdc08c8391ad removed unnecessary regex grouping
Max Samukha <maxsamukha@gmail.com>
parents: 412
diff changeset
17 string(REGEX REPLACE "(.+) v[0-9]\\.[0-9]+" "\\1" D_COMPILER_NAME "${dmd_version}")
412
4189f1d51a7d support for new dmd naming
Max Samukha <maxsamukha@gmail.com>
parents: 403
diff changeset
18 string(REGEX REPLACE "${D_COMPILER_NAME} v([0-9])\\.[0-9]+" "\\1" D_VERSION "${dmd_version}")
4189f1d51a7d support for new dmd naming
Max Samukha <maxsamukha@gmail.com>
parents: 403
diff changeset
19 string(REGEX REPLACE "${D_COMPILER_NAME} v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${dmd_version}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
20 else (dmd_version)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
21 string(REGEX MATCH "LLVM-based D Compiler" is_ldc "${d_output}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
22 if (is_ldc)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
23 exec_program(${DC} ARGS "--version" OUTPUT_VARIABLE d_output)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
24 string(REGEX MATCH "based on DMD v[0-9]\\.[0-9]+" ldc_version "${d_output}")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
25 set(D_IS_LLVM true)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
26 set(D_IS_LDC true)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
27 if(ldc_version)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
28 set(D_IS_LLVM true)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
29 set(D_COMPILER_NAME "LLVM-based D Compiler")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
30 string(REGEX REPLACE "based on DMD v([0-9])\\.[0-9]+" "\\1" D_VERSION "${ldc_version}")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
31 string(REGEX REPLACE "based on DMD v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${ldc_version}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
32 else(ldc_version)
235
b796329e8c38 We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents: 224
diff changeset
33 message(FATAL_ERROR "LDC compiler found, but the version can not be processed")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
34 endif(ldc_version)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
35 else (is_ldc)
402
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
36 string(REGEX MATCH "gdc" is_gdc "${d_output}")
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
37 if(is_gdc)
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
38 set(D_COMPILER_NAME "GDC-based D Compiler")
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
39 set(D_VERSION 2)
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
40 else(is_gdc)
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
41 message(FATAL_ERROR "D compiler is not found")
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
42 endif(is_gdc)
e67ce7c21758 gdc & 64 bit changes
Eldar Insafutdinov
parents: 384
diff changeset
43 endif(is_ldc)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
44 endif(dmd_version)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
45 message(STATUS "D compiler found -- ${D_COMPILER_NAME} v${D_VERSION}.${D_FRONTEND}")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
46 else (DC)
401
827147052d8d Corrected typo in CMake error message, fixes #68.
David Nadlinger <code@klickverbot.at>
parents: 384
diff changeset
47 message(FATAL_ERROR "D compiler is not found")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
48 endif (DC)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
49
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
50 ## Get D compiler path.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
51 get_filename_component(DC_PATH ${DC} PATH)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
52 if("${DC_PATH}" STREQUAL "")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
53 find_program(dc_path_tmp ${DC})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
54 get_filename_component(DC_PATH ${dc_path_tmp} PATH)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
55 mark_as_advanced(dc_path_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
56 endif("${DC_PATH}" STREQUAL "")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
57 get_filename_component(dc_parent_dir ${DC_PATH} NAME)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
58 if("${dc_parent_dir}" STREQUAL "bin")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
59 get_filename_component(DC_PATH ${DC_PATH} PATH)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
60 endif("${dc_parent_dir}" STREQUAL "bin")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
61
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
62 #option(ONE_BUILD_COMMAND "Build in one command" "OFF")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
63 set(ONE_BUILD_COMMAND OFF) ## TODO: test it and uncomment the previous line.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
64
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
65 if (NOT ONE_BUILD_COMMAND)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
66 if(D_IS_MARS)
281
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
67 set(opt_tmp "ON")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
68 else(D_IS_MARS)
281
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
69 set(opt_tmp "OFF")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
70 endif(D_IS_MARS)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
71 option(SINGLE_D_OBJECT "Build all d sources to one object file" ${opt_tmp})
181
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
72 if(D_IS_LLVM)
281
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
73 set(D_FLAGS ${D_FLAGS} -singleobj)
181
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
74 endif(D_IS_LLVM)
281
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
75 if(CMAKE_HOST_WIN32 AND D_IS_MARS)
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
76 set(D_MODULES_PER_OBJECT 200 CACHE STRING "Max number of modules per object file")
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
77 else(CMAKE_HOST_WIN32 AND D_IS_MARS)
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
78 set(D_MODULES_PER_OBJECT 10000 CACHE STRING "Max number of modules per object file")
7f2e3ffa1c33 Workaround of the major dmd/optlink bug. All examples that failed on Windows now work.
eldar
parents: 275
diff changeset
79 endif(CMAKE_HOST_WIN32 AND D_IS_MARS)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
80 endif(NOT ONE_BUILD_COMMAND)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
81
235
b796329e8c38 We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents: 224
diff changeset
82 ## Specific flags for build configurations.
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
83 ## TODO: Add another targets.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
84 set(D_RELEASE_FLAGS -O -release)
139
825ac6364d2f CMake: fix debug flags for ldc
SokoL_SD
parents: 132
diff changeset
85 set(D_DEBUG_FLAGS -g )
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
86 if(D_IS_LLVM)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
87 set(D_RELEASE_FLAGS ${D_RELEASE_FLAGS} -enable-inlining)
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
88 set(D_VERSION_FLAG -d-version)
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
89 set(D_DEBUG_FLAG -d-debug)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
90 else(D_IS_LLVM)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
91 set(D_RELEASE_FLAGS ${D_RELEASE_FLAGS} -inline)
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
92 set(D_VERSION_FLAG -version)
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
93 set(D_DEBUG_FLAG -debug)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
94 endif(D_IS_LLVM)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
95 if(CMAKE_HOST_WIN32)
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 366
diff changeset
96 # Linking fails with this. Commenting out for now.
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 366
diff changeset
97 # set(D_RELEASE_FLAGS ${D_RELEASE_FLAGS} -L/subsystem:windows)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
98 endif(CMAKE_HOST_WIN32)
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
99 set(D_DEBUG_FLAGS ${D_DEBUG_FLAGS} ${D_DEBUG_FLAG})
139
825ac6364d2f CMake: fix debug flags for ldc
SokoL_SD
parents: 132
diff changeset
100
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
101 # Unittest flags.
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
102 option(UNITTEST "Includes unittests" "OFF")
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
103 if(UNITTEST)
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
104 set(D_FLAGS ${D_FLAGS} -unittest)
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
105 endif(UNITTEST)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
106
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
107 ## Settings.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
108 if(CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
109 set(D_OBJECT_SUFFIX .obj)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
110 if(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
111 set(D_LIB_SUFFIX .lib)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
112 set(D_LIB_PREFIX )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
113 elseif(D_IS_LDC)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
114 set(D_LIB_SUFFIX .a)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
115 set(D_LIB_PREFIX lib)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
116 endif(D_IS_MARS)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
117 elseif(CMAKE_HOST_UNIX)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
118 set(D_LIB_SUFFIX .a)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
119 set(D_LIB_PREFIX lib)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
120 set(D_OBJECT_SUFFIX .o)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
121 endif(CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
122
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
123 ##--------------------------------------------
224
7f150ad4cb5f spelling fix in CMakeD
SokoL_SD
parents: 215
diff changeset
124 ## Macros and functions.
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
125 ##--------------------------------------------
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
126
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
127 macro(add_d_flags option)
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
128 foreach(arg_tmp ${ARGN})
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
129 set(D_FLAGS ${D_FLAGS} ${option}=${arg_tmp})
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
130 endforeach(arg_tmp ${ARGN})
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
131 endmacro(add_d_flags option)
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
132
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
133 macro(add_d_versions)
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
134 add_d_flags(${D_VERSION_FLAG} ${ARGN})
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
135 endmacro(add_d_versions)
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
136
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
137 macro(add_d_debugs)
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
138 add_d_flags(${D_DEBUG_FLAG} ${ARGN})
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
139 endmacro(add_d_debugs)
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
140
224
7f150ad4cb5f spelling fix in CMakeD
SokoL_SD
parents: 215
diff changeset
141 ## Make a native path.
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
142 ## Usage:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
143 ## set(path c:/file_path/file_name.cpp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
144 ## make_native_path(path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
145 ## message(STATUS ${path})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
146 ## Output:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
147 ## -- "c:\file_path\file_name.cpp"
384
d2f48c4cb3e3 Same behavior of shared libs on linux and windows. Minor build script fixes.
Max Samukha <maxter@spambox.com>
parents: 368
diff changeset
148 ## Command "file(TO_NATIVE_PATH ...)" gives incorrect results on Windows
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
149 macro(make_native_path pathname)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
150 if(CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
151 # An extra \\ escape is necessary to get a \ through CMake's processing.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
152 string(REPLACE "/" "\\" ${pathname} "${${pathname}}")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
153 # Enclose with UNESCAPED quotes. This means we need to escape our
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
154 # quotes once here, i.e. with \"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
155 set(${pathname} \"${${pathname}}\")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
156 endif(CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
157 endmacro(make_native_path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
158
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
159 ##
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
160 ## Example:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
161 ## set(path 24.3+23.bin)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
162 ## obj_path(path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
163 ## message(STATUS ${path})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
164 ## Example output:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
165 ## -- 24\.3\+23\.bin
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
166 macro(regex_safe_string outvariable)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
167 set(${outvariable} ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
168 set(__regex_chars__ ^ $ . ] [ - * + ? | \( \))
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
169 foreach(__regex_char__ ${__regex_chars__})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
170 string(REPLACE "${__regex_char__}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
171 "\\${__regex_char__}" ${outvariable} ${${outvariable}}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
172 )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
173 endforeach(__regex_char__ ${__regex_chars__})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
174 endmacro(regex_safe_string outvariable)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
175
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
176 ## Remove unnecessary path to the object file.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
177 ## path -- path to object file.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
178 ## Example:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
179 ## set(path ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/target.dir/main.d.obj)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
180 ## obj_path(path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
181 ## message(STATUS ${path})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
182 ## Example output:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
183 ## -- CMakeFiles/target.dir/main.d.obj
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
184 macro(obj_path path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
185 regex_safe_string(cbd_safe_tmp ${CMAKE_CURRENT_BINARY_DIR})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
186 regex_safe_string(csd_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
187 set(regexp_str_tmp "(${cbd_safe_tmp}/|${csd_safe_tmp}/|)(.+)")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
188 string(REGEX REPLACE ${regexp_str_tmp} "\\2" ${path} "${${path}}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
189 endmacro(obj_path path)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
190
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
191 ## Compile d files.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
192 ## target -- name of a new target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
193 ## objects_list -- created object files.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
194 ## params -- sources files.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
195 macro(compile_d_files target objects_list)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
196 set(${objects_list})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
197 set(tmp_dir_tmp ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
198
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
199 set(type_tmp SOURCES)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
200 set(SOURCES_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
201 set(FLAGS_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
202
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
203 ## Parse parameters list.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
204 set(params_tmp SOURCES FLAGS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
205 foreach(arg_tmp ${ARGN})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
206 set(found_type_tmp)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
207 if(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
208 foreach(param_tmp ${params_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
209 if(arg_tmp STREQUAL param_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
210 set(type_tmp ${param_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
211 set(found_type_tmp 1)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
212 break(param_tmp ${params_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
213 endif(arg_tmp STREQUAL param_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
214 endforeach(param_tmp ${params_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
215 endif(NOT found_type_tmp)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
216 if(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
217 set(${type_tmp}_tmp ${${type_tmp}_tmp} ${arg_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
218 endif(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
219 endforeach(arg_tmp ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
220
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
221 if(NOT SINGLE_D_OBJECT)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
222 set(${objects_list})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
223 foreach (d_source_p_tmp ${SOURCES_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
224 get_filename_component(ext_tmp ${d_source_p_tmp} EXT)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
225 find_file(d_source_p_tmp ${d_source_p_tmp} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
226 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
227 set (d_source_tmp ${d_source_p_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
228 obj_path(d_source_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
229 set(d_obj_tmp ${tmp_dir_tmp}/${d_source_tmp}${D_OBJECT_SUFFIX})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
230 set(${objects_list} ${${objects_list}} ${d_obj_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
231 get_filename_component(path_tmp ${d_obj_tmp} PATH)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
232 file(MAKE_DIRECTORY ${path_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
233 set(d_obj_out_tmp ${d_obj_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
234 obj_path(d_obj_out_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
235 #get_imported_files(depends_tmp ${d_source_p_tmp}) ## Too slow.....
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
236 add_custom_command(OUTPUT "${d_obj_tmp}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
237 COMMAND "${DC}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
238 ARGS ${FLAGS_tmp} ${d_source_p_tmp} -c -of${d_obj_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
239 COMMENT "Building ${d_obj_out_tmp}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
240 DEPENDS ${d_source_p} ${depends_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
241 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
242 )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
243 endforeach (d_source_p_tmp ${SOURCES_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
244 else(NOT SINGLE_D_OBJECT)
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
245 if(D_IS_LDC)
273
2161595da42b Unittest flags.
SokoL_SD
parents: 245
diff changeset
246 set(FLAGS_tmp ${FLAGS_tmp} -oq )
274
f5606687c578 VERBOSE_DEBUG flag
SokoL_SD
parents: 273
diff changeset
247 endif(D_IS_LDC)
181
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
248 set(count_objects_tmp 0)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
249 set(files${count_objects_tmp}_tmp )
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
250 set(counter_tmp 0)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
251 set(files_tmp )
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
252 set(objects_tmp )
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
253 foreach (d_source_p_tmp ${SOURCES_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
254 math(EXPR counter_tmp "${counter_tmp} + 1")
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
255 set(files${count_objects_tmp}_tmp ${files${count_objects_tmp}_tmp} ${d_source_p_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
256 if(counter_tmp GREATER D_MODULES_PER_OBJECT)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
257 math(EXPR count_objects_tmp "${count_objects_tmp} + 1")
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
258 set(files${count_objects_tmp}_tmp )
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
259 set(counter_tmp 0)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
260 endif(counter_tmp GREATER D_MODULES_PER_OBJECT)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
261 endforeach (d_source_p_tmp ${SOURCES_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
262
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
263 if(files${count_objects_tmp}_tmp)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
264 math(EXPR count_objects_tmp "${count_objects_tmp} + 1")
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
265 endif(files${count_objects_tmp}_tmp)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
266
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
267 set(id_tmp 0)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
268 while(id_tmp LESS ${count_objects_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
269 set(object_tmp ${tmp_dir_tmp}/${target}${id_tmp}${D_OBJECT_SUFFIX})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
270 set(d_obj_out_tmp ${${object_tmp}})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
271 obj_path(d_obj_out_tmp)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
272 set(parameters_tmp ${FLAGS_tmp} -c ${files${id_tmp}_tmp} -of${object_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
273 set(parameters_list_file_tmp ${tmp_dir_tmp}/parameters${id_tmp}_obj)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
274 if(CMAKE_HOST_WIN32)
181
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
275 file(REMOVE ${parameters_list_file_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
276 foreach(arg_tmp ${parameters_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
277 file(APPEND ${parameters_list_file_tmp} "${arg_tmp}\n")
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
278 endforeach(arg_tmp)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
279 set(param_tmp @${parameters_list_file_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
280 elseif(CMAKE_HOST_UNIX)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
281 set(param_tmp ${parameters_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
282 endif(CMAKE_HOST_WIN32)
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
283 #get_imported_files(depends_tmp ${ARGN})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
284 add_custom_command(OUTPUT "${object_tmp}"
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
285 COMMAND "${DC}"
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
286 ARGS ${param_tmp}
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
287 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
288 DEPENDS ${files${id_tmp}_tmp} ${depends_tmp}
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
289 COMMENT ""
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
290 )
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
291 set(objects_tmp ${objects_tmp} ${object_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
292 math(EXPR id_tmp "${id_tmp} + 1")
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
293 endwhile(id_tmp LESS ${count_objects_tmp})
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
294
b426da0c9720 CMake: New option D_MODULES_PER_OBJECT.
SokoL_SD
parents: 166
diff changeset
295 set(${objects_list} ${objects_tmp})
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
296 endif(NOT SINGLE_D_OBJECT)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
297 #add_custom_target(${target} DEPENDS "${${objects_list}}")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
298 endmacro(compile_d_files objects_list)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
299
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
300
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
301 ## Add D target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
302 ## name -- target name.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
303 ## Params:
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
304 ## TYPE -- target type.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
305 ## STATIC -- static library.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
306 ## SHARED -- shared library.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
307 ## BINARY -- executable.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
308 ## SOURCES -- sources of the target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
309 ## INCLUDES -- include paths.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
310 ## FLAGS -- build flags.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
311 ## LIBS -- libraries for link.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
312 ## LIB_PATHS -- libraries paths.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
313 ## DEPENDS -- target depends.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
314 macro(add_d_target name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
315 set(type_tmp SOURCES)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
316 set(TYPE_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
317 set(INCLUDES_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
318 set(FLAGS_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
319 set(SOURCES_tmp )
203
d3383b16f1d7 Add a 'NO_DEPS_SOURCES' option to the 'add_d_target' macro. And use it for resources and forms in QtD examples.
SokoL_SD
parents: 181
diff changeset
320 set(GEN_FILES_tmp )
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
321 set(OBJECTS_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
322 set(LIBS_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
323 set(LIB_PATHS_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
324 set(DEPENDS_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
325 set(OUTPUT_PATH_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
326 set(compile_flags_tmp ${D_FLAGS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
327 set(additional_commands_tmp )
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
328 set(detect_deps_tmp 1)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
329 set(link_flags_tmp )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
330
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
331 ## Parse parameters list.
203
d3383b16f1d7 Add a 'NO_DEPS_SOURCES' option to the 'add_d_target' macro. And use it for resources and forms in QtD examples.
SokoL_SD
parents: 181
diff changeset
332 set(params_tmp TYPE INCLUDES FLAGS SOURCES NO_DEPS_SOURCES OBJECTS LIBS LIB_PATHS DEPENDS OUTPUT_PATH)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
333
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
334 foreach(arg_tmp ${ARGN})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
335 set(found_type_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
336 if(${arg_tmp} STREQUAL "NOT_DETECT_DEPENDS")
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
337 set(detect_deps_tmp 0)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
338 set(found_type_tmp 1)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
339 endif(${arg_tmp} STREQUAL "NOT_DETECT_DEPENDS")
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
340 if(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
341 foreach(param_tmp ${params_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
342 if(arg_tmp STREQUAL param_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
343 set(type_tmp ${param_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
344 set(found_type_tmp 1)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
345 break(param_tmp ${params_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
346 endif(arg_tmp STREQUAL param_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
347 endforeach(param_tmp ${params_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
348 endif(NOT found_type_tmp)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
349 if(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
350 set(${type_tmp}_tmp ${${type_tmp}_tmp} ${arg_tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
351 endif(NOT found_type_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
352 endforeach(arg_tmp ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
353
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
354 ## Init target type.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
355 if (OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
356 set(output_name_tmp "${OUTPUT_PATH_tmp}")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
357 endif (OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
358 if("${TYPE_tmp}" STREQUAL "STATIC")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
359 set(link_flags_tmp ${link_flags_tmp} -lib)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
360 if(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
361 if(ARCHIVE_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
362 set(output_name_tmp ${ARCHIVE_OUTPUT_DIRECTORY})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
363 else(ARCHIVE_OUTPUT_DIRECTORY)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
364 set(output_name_tmp ${CMAKE_CURRENT_BINARY_DIR}/lib)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
365 endif(ARCHIVE_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
366 endif(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
367 set(output_name_tmp ${output_name_tmp}/${D_LIB_PREFIX}${name}${D_LIB_SUFFIX})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
368 elseif("${TYPE_tmp}" STREQUAL "BINARY")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
369 set(build_binary_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
370 if(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
371 if(RUNTIME_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
372 set(output_name ${RUNTIME_OUTPUT_DIRECTORY})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
373 else(RUNTIME_OUTPUT_DIRECTORY)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
374 set(output_name_tmp ${CMAKE_CURRENT_BINARY_DIR}/bin)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
375 endif(RUNTIME_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
376 endif(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
377 set(output_name_tmp ${output_name_tmp}/${name}${CMAKE_EXECUTABLE_SUFFIX})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
378 elseif("${TYPE_tmp}" STREQUAL "SHARED")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
379 if(D_IS_MARS)
355
08c1ca7975ab obviated redundant virtual dispatch callbacks
Max Samukha <maxter@spambox.com>
parents: 281
diff changeset
380 message(FATAL_ERROR "DMD does not support building shared libraries")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
381 endif(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
382 if(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
383 if(LIBRARY_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
384 set(output_name_tmp ${LIBRARY_OUTPUT_DIRECTORY})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
385 else(LIBRARY_OUTPUT_DIRECTORY)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
386 set(output_name_tmp ${CMAKE_CURRENT_BINARY_DIR}/lib)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
387 endif(LIBRARY_OUTPUT_DIRECTORY)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
388 endif(NOT OUTPUT_PATH_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
389 set(build_binary 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
390 set(output_name_tmp ${output_name_tmp}/${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
391 set(link_flags_tmp ${compile_flags_tmp} -L-shared)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
392 else("${TYPE_tmp}" STREQUAL "STATIC")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
393 message(FATAL_ERROR "D target ${TYPE_tmp} not supported")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
394 endif("${TYPE_tmp}" STREQUAL "STATIC")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
395
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
396 ## Include paths.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
397 foreach(inc_tmp ${INCLUDES_tmp} ${D_INCLUDES})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
398 set(compile_flags_tmp ${compile_flags_tmp} -I${inc_tmp})
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
399 endforeach(inc_tmp ${INCLUDES_tmp} ${D_INCLUDES})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
400
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
401 ## Libraries and paths of them.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
402 set(libs_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
403 if(build_binary_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
404 if(D_IS_MARS AND CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
405 foreach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
406 make_native_path(lib_path_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
407 string(REPLACE "/" "\\" lib_path_tmp "${lib_path_tmp}//")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
408 set(lib_path_tmp \"${lib_path_tmp}\")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
409 set(link_flags_tmp ${link_flags_tmp} -L+${lib_path_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
410 endforeach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
411 #set(additional_commands_tmp COMMAND set ARGS LIB=)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
412 #foreach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
413 #MAKE_NATIVE_PATH(lib_path_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
414 #set(additional_commands_tmp ${additional_commands_tmp}${lib_path_tmp};)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
415 #endforeach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
416 else(D_IS_MARS AND CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
417 foreach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
418 set(link_flags_tmp ${link_flags_tmp} -L-L${lib_path_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
419 endforeach(lib_path_tmp ${LIB_PATHS_tmp} ${D_LIB_PATHS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
420 endif(D_IS_MARS AND CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
421 foreach(lib_tmp ${LIBS_tmp} ${D_LIBS})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
422 if(D_IS_MARS AND CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
423 set(link_flags_tmp ${link_flags_tmp} -L+${lib_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
424 else(D_IS_MARS AND CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
425 set(link_flags_tmp ${link_flags_tmp} -L-l${lib_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
426 endif(D_IS_MARS AND CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
427 endforeach(lib_tmp ${LIBS_tmp} ${D_LIBS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
428 endif(build_binary_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
429
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
430 set(not_obj_tmp ${ONE_BUILD_COMMAND})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
431 ## Ldc not support -lib flag.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
432 if(ONE_BUILD_COMMAND AND ${TYPE_tmp} STREQUAL "STATIC" AND D_IS_LLVM)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
433 set(not_obj_tmp OFF)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
434 endif(ONE_BUILD_COMMAND AND ${TYPE_tmp} STREQUAL "STATIC" AND D_IS_LLVM)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
435
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
436 if(build_binary_tmp AND NOT D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
437 set(compile_flags_tmp ${compile_flags_tmp} -od${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}.dir)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
438 endif(build_binary_tmp AND NOT D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
439
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
440 if(CMAKE_BUILD_TYPE)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
441 string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
442 set(compile_flags_tmp ${compile_flags_tmp} ${D_${CMAKE_BUILD_TYPE_UPPER}_FLAGS})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
443 endif(CMAKE_BUILD_TYPE)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
444
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
445 if(detect_deps_tmp)
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
446 message(STATUS "Getting dependencies for ${name}")
203
d3383b16f1d7 Add a 'NO_DEPS_SOURCES' option to the 'add_d_target' macro. And use it for resources and forms in QtD examples.
SokoL_SD
parents: 181
diff changeset
447 get_files_depends(tmp ${SOURCES_tmp})
d3383b16f1d7 Add a 'NO_DEPS_SOURCES' option to the 'add_d_target' macro. And use it for resources and forms in QtD examples.
SokoL_SD
parents: 181
diff changeset
448 set(SOURCES_tmp ${tmp})
215
8aaa84d48451 Improve examples.
SokoL_SD
parents: 212
diff changeset
449 endif(detect_deps_tmp)
212
bc1525b955d8 a small fix in cmake for the build_example macro.
SokoL_SD
parents: 203
diff changeset
450 set(SOURCES_tmp ${SOURCES_tmp} ${NO_DEPS_SOURCES_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
451
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
452 set(used_ar_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
453 get_filename_component(output_path_tmp ${output_name_tmp} PATH)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
454 if (NOT not_obj_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
455 compile_d_files(${name} objs_tmp ${SOURCES_tmp} FLAGS ${compile_flags_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
456 set(SOURCES_tmp ${objs_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
457 if(NOT D_IS_MARS AND ${TYPE_tmp} STREQUAL "STATIC")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
458 set(parameters_tmp rcs ${output_name_tmp} ${SOURCES_tmp} ${OBJECTS_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
459 set(parameters_list_file_tmp ${tmp_dir_tmp}/parameters)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
460 if(CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
461 file(REMOVE ${parameters_list_file_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
462 foreach(arg_tmp ${parameters_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
463 file(APPEND ${parameters_list_file_tmp} "${arg_tmp}\n")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
464 endforeach(arg_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
465 set(param_tmp @${parameters_list_file_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
466 elseif(CMAKE_HOST_UNIX)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
467 set(param_tmp ${parameters_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
468 endif(CMAKE_HOST_WIN32)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
469 add_custom_command(
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
470 OUTPUT "${output_name_tmp}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
471 COMMAND "${CMAKE_AR}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
472 ARGS ${param_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
473 DEPENDS ${SOURCES_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
474 COMMENT "Linking ${lib_name}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
475 )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
476 set(used_ar_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
477 endif(NOT D_IS_MARS AND ${TYPE_tmp} STREQUAL "STATIC")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
478 endif (NOT not_obj_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
479
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
480 if (NOT used_ar_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
481 set(output_name_native_tmp ${output_name_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
482 if(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
483 set(additional_commands_tmp ${additional_commands_tmp} COMMAND ${CMAKE_COMMAND} -E make_directory ${output_path_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
484 make_native_path(output_name_native_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
485 endif(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
486 set(parameters_tmp ${compile_flags_tmp} ${link_flags_tmp} ${SOURCES_tmp} ${OBJECTS_tmp} -of${output_name_native_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
487 set(parameters_list_file_tmp ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}.dir/parameters)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
488 if(CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
489 file(REMOVE ${parameters_list_file_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
490 foreach(arg_tmp ${parameters_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
491 file(APPEND ${parameters_list_file_tmp} "${arg_tmp}\n")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
492 endforeach(arg_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
493 set(param_tmp @${parameters_list_file_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
494 elseif(CMAKE_HOST_UNIX)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
495 set(param_tmp ${parameters_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
496 endif(CMAKE_HOST_WIN32)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
497 #get_imported_files(depends_tmp ${SOURCES_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
498 add_custom_command(
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
499 OUTPUT ${output_name_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
500 ${additional_commands_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
501 COMMAND ${DC}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
502 ARGS ${param_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
503 DEPENDS ${SOURCES_tmp} ${depends_tmp}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
504 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
505 COMMENT "Linking ${name}"
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
506 )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
507 endif(NOT used_ar_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
508 add_custom_target(${name} ALL DEPENDS ${DEPENDS_tmp} ${output_name_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
509 endmacro(add_d_target name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
510
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
511 ## Add static library target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
512 macro(add_d_static_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
513 add_d_target(${name} TYPE STATIC SOURCES ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
514 endmacro(add_d_static_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
515
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
516 ## Add binary target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
517 macro(add_d_program name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
518 add_d_target(${name} TYPE BINARY SOURCES ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
519 endmacro(add_d_program name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
520
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
521 ## Add shared library target.
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
522 macro(add_d_shared_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
523 add_d_target(${name} TYPE SHARED SOURCES ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
524 endmacro(add_d_shared_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
525
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
526 ## Add library target.
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
527 ## Library will shared if it supported.
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
528 macro(add_d_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
529 if(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
530 add_d_target(${name} TYPE STATIC ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
531 else(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
532 add_d_target(${name} TYPE SHARED ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
533 endif(D_IS_MARS)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
534 endmacro(add_d_lib name)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
535
245
SokoL_SD
parents: 237
diff changeset
536 ##
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
537 macro(get_imported_files_old imported)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
538 execute_process(COMMAND ${DC} -c -o- -v ${compile_flags_tmp} ${ARGN}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
539 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
540 OUTPUT_VARIABLE dc_output_tmp
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
541
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
542 )
245
SokoL_SD
parents: 237
diff changeset
543 string(REGEX MATCHALL "import[^(]*([^)]*)" dc_output_tmp "${dc_output_tmp}")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
544
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
545 ## Initial filter.
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
546 regex_safe_string(tmp ${CMAKE_CURRENT_SOURCE_DIR})
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
547 regex_safe_string(tmp2 ${CMAKE_CURRENT_BINARY_DIR})
245
SokoL_SD
parents: 237
diff changeset
548 set(regex_includes_tmp "${tmp}|${tmp2}")
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
549
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
550 set(${imported})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
551 foreach(import_tmp ${dc_output_tmp})
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
552 ## Getting a next import.
245
SokoL_SD
parents: 237
diff changeset
553 string(REGEX REPLACE "import[^(]*\\(([^)]*)" "\\1" import_tmp ${import_tmp})
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
554 ## Filtering.
245
SokoL_SD
parents: 237
diff changeset
555 string(REPLACE "\\" "/" import_tmp ${import_tmp})
SokoL_SD
parents: 237
diff changeset
556 string(REGEX MATCH "(${regex_includes_tmp})" found "${import_tmp}")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
557 if(CMAKE_HOST_WIN32)
245
SokoL_SD
parents: 237
diff changeset
558 string(SUBSTRING "${import_tmp}" 1 2 first_sym_tmp)
SokoL_SD
parents: 237
diff changeset
559 set(full_path_tmp)
SokoL_SD
parents: 237
diff changeset
560 if(${first_sym_tmp} STREQUAL ":/")
SokoL_SD
parents: 237
diff changeset
561 set(full_path_tmp 1)
SokoL_SD
parents: 237
diff changeset
562 endif(${first_sym_tmp} STREQUAL ":/")
SokoL_SD
parents: 237
diff changeset
563 elseif(CMAKE_HOST_UNIX)
SokoL_SD
parents: 237
diff changeset
564 string(SUBSTRING "${import_tmp}" 0 1 first_sym_tmp)
SokoL_SD
parents: 237
diff changeset
565 set(full_path_tmp)
SokoL_SD
parents: 237
diff changeset
566 if(${first_sym_tmp} STREQUAL "/")
SokoL_SD
parents: 237
diff changeset
567 set(full_path_tmp 1)
SokoL_SD
parents: 237
diff changeset
568 endif(${first_sym_tmp} STREQUAL "/")
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
569 endif(CMAKE_HOST_WIN32)
245
SokoL_SD
parents: 237
diff changeset
570 if(found OR NOT full_path_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
571 set(${imported} ${${imported}} ${import_tmp})
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
572 endif(found OR NOT full_path_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
573 endforeach(import_tmp ${dc_output_tmp})
237
62d0dce52dac CMake: improvements && fixes
SokoL_SD
parents: 235
diff changeset
574 endmacro(get_imported_files_old imported)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
575
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
576 macro(filter_paths result)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
577 set(${result})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
578 set(read_now_tmp paths)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
579 set(include_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
580 set(paths_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
581 foreach(arg_tmp ${ARGN})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
582 set(founded_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
583 if(${arg_tmp} STREQUAL "INCLUDE_PATHS")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
584 set(read_now_tmp includes)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
585 set(founded_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
586 elseif(${arg_tmp} STREQUAL "INCLUDE_CURRENT_DIR")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
587 set(locale_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
588 set(read_now_tmp paths)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
589 set(founded_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
590 endif(${arg_tmp} STREQUAL "INCLUDE_PATHS")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
591 if(NOT founded_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
592 set(${read_now_tmp}_tmp ${${read_now_tmp}_tmp} ${arg_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
593 endif(NOT founded_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
594 endforeach(arg_tmp ${ARGN})
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
595 regex_safe_string(include_tmp ${includes_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
596 set(regex_include_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
597 set(is_first_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
598 foreach(include_tmp ${includes_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
599 if(is_first_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
600 set(is_first_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
601 else(is_first_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
602 set(regex_includes_tmp ${regex_includes_tmp}|)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
603 endif(is_first_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
604 set(regex_includes_tmp ${regex_includes_tmp}${include_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
605 endforeach(include_tmp ${include_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
606 foreach(path_tmp ${paths_tmp})
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
607 file(TO_CMAKE_PATH path_tmp ${path_tmp})
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
608 string(REGEX MATCH "(${regex_includes_tmp})[^/]*" found "${path_tmp}")
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
609 set(full_path_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
610 if(locale_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
611 string(SUBSTRING "${path_tmp}" 0 1 first_sym_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
612 set(full_path_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
613 if(${first_sym_tmp} STREQUAL "/")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
614 set(full_path_tmp 1)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
615 endif(${first_sym_tmp} STREQUAL "/")
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
616 endif(locale_tmp)
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
617 if(NOT found AND full_path_tmp)
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
618 else(NOT found AND full_path_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
619 set(${result} ${${result}} ${path_tmp})
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 355
diff changeset
620 endif(NOT found AND full_path_tmp)
132
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
621 endforeach(path_tmp ${paths_tmp})
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
622 endmacro(filter_paths )
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
623
a860544c5ee8 CMake: initial version of CMakeD script.
SokoL_SD
parents:
diff changeset
624 macro(get_files_depends out)
275
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
625 set(deps_file_tmp ${CMAKE_CURRENT_BINARY_DIR}/${ARGN}.deps)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
626 set(update_deps_tmp 0)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
627 foreach(arg_tmp ${ARGN})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
628 if(NOT IS_ABSOLUTE arg_tmp)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
629 set(arg_tmp ${CMAKE_CURRENT_SOURCE_DIR}/${arg_tmp})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
630 endif(NOT IS_ABSOLUTE arg_tmp)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
631 if(${arg_tmp} IS_NEWER_THAN ${deps_file_tmp})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
632 set(update_deps_tmp 1)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
633 break(arg_tmp ${ARGN})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
634 endif(${arg_tmp} IS_NEWER_THAN ${deps_file_tmp})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
635 endforeach(arg_tmp ${ARGN})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
636 if(update_deps_tmp)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
637 get_imported_files_old(${out} ${ARGN})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
638 #filter_paths(${out} ${${out}} INCLUDE_CURRENT_DIR INCLUDE_PATHS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
639 set(${out} ${ARGN} ${${out}})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
640 file(WRITE ${deps_file_tmp} "${${out}}")
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
641 else(update_deps_tmp)
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
642 file(STRINGS ${deps_file_tmp} ${out})
bb0f228c27cd Caching dependencies for d sources.
SokoL_SD
parents: 274
diff changeset
643 endif(update_deps_tmp)
412
4189f1d51a7d support for new dmd naming
Max Samukha <maxsamukha@gmail.com>
parents: 403
diff changeset
644 endmacro(get_files_depends out)