r665: merge over the new build system from my tmp branch
[bbaumbach/samba-autobuild/.git] / source4 / build / smb_build / public.m4
1 dnl SMB Build System
2 dnl ----------------
3 dnl ----------------
4 dnl
5 dnl SMB_MODULE_DEFAULT(
6 dnl             1:name,
7 dnl             2:default_build
8 dnl             )
9 dnl
10 dnl SMB_MODULE  ( 
11 dnl             1:name,
12 dnl             2:subsystem,
13 dnl             3:default_build,
14 dnl             4:init_obj_files,
15 dnl             5:add_obj_files,
16 dnl             6:required_libs,
17 dnl             7:required_subsystems
18 dnl             )
19 dnl
20 dnl SMB_MODULE_MK(
21 dnl             1:name,
22 dnl             2:subsystem,
23 dnl             3:default_build,
24 dnl             4:config_mk_file
25 dnl             )
26 dnl
27 dnl SMB_SUBSYSTEM_ENABLE(
28 dnl             1:name,
29 dnl             2:default_build
30 dnl             )
31 dnl
32 dnl SMB_SUBSYSTEM(
33 dnl             1:name,
34 dnl             2:init_obj_files,
35 dnl             3:add_obj_files,
36 dnl             4:required_libs,
37 dnl             5:required_subsystems
38 dnl             )
39 dnl
40 dnl SMB_SUBSYSTEM_MK(
41 dnl             1:name,
42 dnl             2:config_mk_file
43 dnl             )
44 dnl
45 dnl SMB_EXT_LIB_ENABLE(
46 dnl             1:name,
47 dnl             2:default_build
48 dnl             )
49 dnl
50 dnl SMB_EXT_LIB(
51 dnl             1:name,
52 dnl             2:libs,
53 dnl             3:cflags,
54 dnl             4:cppflags,
55 dnl             5:ldflags
56 dnl             )
57 dnl
58 dnl SMB_LIBRARY_ENABLE(
59 dnl             1:name,
60 dnl             2:default_build
61 dnl             )
62 dnl
63 dnl SMB_LIBRARY(
64 dnl             1:name,
65 dnl             2:obj_files,
66 dnl             3:required_libs,
67 dnl             4:required_subsystems
68 dnl             )
69 dnl
70 dnl SMB_LIBRARY_MK(
71 dnl             1:name,
72 dnl             2:config_mk_file
73 dnl             )
74 dnl
75 dnl SMB_BINARY_ENABLE(
76 dnl             1:name,
77 dnl             2:default_build
78 dnl             )
79 dnl
80 dnl SMB_BINARY(
81 dnl             1:name,
82 dnl             2:build_targets,
83 dnl             3:install_path
84 dnl             4:obj_files,
85 dnl             5:required_libs,
86 dnl             6:required_subsystems
87 dnl             )
88 dnl
89 dnl SMB_BINARY_MK(
90 dnl             1:name,
91 dnl             2:config_mk_file
92 dnl             )
93 dnl
94 dnl SMB_MAKE_TARGET(
95 dnl             1:name
96 dnl             2:calledname
97 dnl             )
98 dnl
99 dnl SMB_AC_OUTPUT(
100 dnl             1: outputfile
101 dnl             )
102
103 dnl #######################################################
104 dnl ### And now the implementation                      ###
105 dnl #######################################################
106
107 dnl SMB_MODULE_DEFAULT(
108 dnl             1:name,
109 dnl             2:default_build
110 dnl             )
111 AC_DEFUN([SMB_MODULE_DEFAULT],
112 [
113         [SMB_MODULE_DEFAULT_][$1]="$2"
114 ])
115
116 dnl SMB_MODULE  ( 
117 dnl             1:name,
118 dnl             2:subsystem,
119 dnl             3:default_build,
120 dnl             4:init_obj_files,
121 dnl             5:add_obj_files,
122 dnl             6:required_libs,
123 dnl             7:required_subsystems
124 dnl             )
125 AC_DEFUN([SMB_MODULE],
126 [
127
128         if test -z "$[SMB_MODULE_DEFAULT_][$1]"; then
129                 [SMB_MODULE_DEFAULT_][$1]=$3
130         fi
131         
132         if test "$[SMB_MODULE_][$1]"; then
133                 [SMB_MODULE_][$1]=$[SMB_MODULE_][$1]
134         elif test "$[SMB_MODULE_]translit([$2], [A-Z], [a-z])" -a x"$[SMB_MODULE_DEFAULT_][$1]" != xNOT; then
135                 [SMB_MODULE_][$1]=$[SMB_MODULE_]translit([$2], [A-Z], [a-z])
136         else
137                 [SMB_MODULE_][$1]="DEFAULT";
138         fi
139
140 SMB_INFO_MODULES="$SMB_INFO_MODULES
141 ###################################
142 # Start MODULE $1
143 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{NAME} = \"$1\";
144 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{SUBSYSTEM} = \"$2\";
145 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{DEFAULT_BUILD} = \"$[SMB_MODULE_DEFAULT_][$1]\";
146 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_OBJ_FILES}} = str2array(\"$4\");
147 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{ADD_OBJ_FILES}} = str2array(\"$5\");
148 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_LIBRARIES}} = str2array(\"$6\");
149 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_SUBSYSTEMS}} = str2array(\"$7\");
150 #
151 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{CHOSEN_BUILD} = \"$[SMB_MODULE_][$1]\";
152 # End MODULE $1
153 ###################################
154 "
155 ])
156
157 dnl SMB_MODULE_MK(
158 dnl             1:name,
159 dnl             2:subsystem,
160 dnl             3:default_build,
161 dnl             4:config_mk_file
162 dnl             )
163 AC_DEFUN([SMB_MODULE_MK],
164 [
165
166         if test -z "$[SMB_MODULE_DEFAULT_][$1]"; then
167                 [SMB_MODULE_DEFAULT_][$1]=$3
168         fi
169         
170         if test "$[SMB_MODULE_][$1]"; then
171                 [SMB_MODULE_][$1]=$[SMB_MODULE_][$1]
172         elif test "$[SMB_MODULE_]translit([$2], [A-Z], [a-z])" -a x"$[SMB_MODULE_DEFAULT_][$1]" != xNOT; then
173                 [SMB_MODULE_][$1]=$[SMB_MODULE_]translit([$2], [A-Z], [a-z])
174         else
175                 [SMB_MODULE_][$1]="DEFAULT";
176         fi
177
178 SMB_INFO_MODULES="$SMB_INFO_MODULES
179 ###################################
180 # Start MODULE $1
181 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{NAME} = \"$1\";
182 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{SUBSYSTEM} = \"$2\";
183 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{DEFAULT_BUILD} = \"$[SMB_MODULE_DEFAULT_][$1]\";
184 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_OBJ_FILES}} = module_get_array(\"$4\", \"$1\", \"INIT_OBJ_FILES\");
185 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{ADD_OBJ_FILES}} = module_get_array(\"$4\", \"$1\", \"ADD_OBJ_FILES\");
186 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_LIBRARIES}} = module_get_array(\"$4\", \"$1\", \"REQUIRED_LIBRARIES\");
187 @{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_SUBSYSTEMS}} = module_get_array(\"$4\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
188 #
189 \$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{CHOSEN_BUILD} = \"$[SMB_MODULE_][$1]\";
190 # End MODULE $1
191 ###################################
192 "
193 ])
194
195 dnl SMB_SUBSYSTEM_ENABLE(
196 dnl             1:name,
197 dnl             2:default_build
198 dnl             )
199 AC_DEFUN([SMB_SUBSYSTEM_ENABLE],
200 [
201         [SMB_SUBSYSTEM_ENABLE_][$1]="$2"
202 ])
203
204 dnl SMB_SUBSYSTEM(
205 dnl             1:name,
206 dnl             2:init_obj_files,
207 dnl             3:add_obj_files,
208 dnl             4:required_libs,
209 dnl             5:required_subsystems
210 dnl             )
211 AC_DEFUN([SMB_SUBSYSTEM],
212 [
213
214         if test -z "$[SMB_SUBSYSTEM_ENABLE_][$1]"; then
215                 [SMB_SUBSYSTEM_ENABLE_][$1]="YES";
216         fi
217
218 SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS
219 ###################################
220 # Start Subsystem $1
221 \$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NAME} = \"$1\";
222 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_OBJ_FILES}} = str2array(\"$2\");
223 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ADD_OBJ_FILES}} = str2array(\"$3\");
224 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_LIBRARIES}} = str2array(\"$4\");
225 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_SUBSYSTEMS}} = str2array(\"$5\");
226 #
227 \$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ENABLE} = \"$[SMB_SUBSYSTEM_ENABLE_][$1]\";
228 # End Subsystem $1
229 ###################################
230 "
231 ])
232
233 dnl SMB_SUBSYSTEM_MK(
234 dnl             1:name,
235 dnl             2:config_mk_file
236 dnl             )
237 AC_DEFUN([SMB_SUBSYSTEM_MK],
238 [
239
240         if test -z "$[SMB_SUBSYSTEM_ENABLE_][$1]"; then
241                 [SMB_SUBSYSTEM_ENABLE_][$1]="YES";
242         fi
243
244 SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS
245 ###################################
246 # Start Subsystem $1
247 \$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NAME} = \"$1\";
248 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_OBJ_FILES}} = subsystem_get_array(\"$2\", \"$1\", \"INIT_OBJ_FILES\");
249 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ADD_OBJ_FILES}} = subsystem_get_array(\"$2\", \"$1\", \"ADD_OBJ_FILES\");
250 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_LIBRARIES}} = subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\");
251 @{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_SUBSYSTEMS}} = subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
252 #
253 \$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ENABLE} = \"$[SMB_SUBSYSTEM_ENABLE_][$1]\";
254 # End Subsystem $1
255 ###################################
256 "
257 ])
258
259 dnl SMB_EXT_LIB_ENABLE(
260 dnl             1:name,
261 dnl             2:default_build
262 dnl             )
263 AC_DEFUN([SMB_EXT_LIB_ENABLE],
264 [
265         [SMB_EXT_LIB_ENABLE_][$1]="$2"
266 ])
267
268 dnl SMB_EXT_LIB(
269 dnl             1:name,
270 dnl             2:libs,
271 dnl             3:cflags,
272 dnl             4:cppflags,
273 dnl             5:ldflags
274 dnl             )
275 AC_DEFUN([SMB_EXT_LIB],
276 [
277
278         if test -z "$[SMB_EXT_LIB_ENABLE_][$1]"; then
279                 [SMB_EXT_LIB_ENABLE_][$1]="NO";
280         fi
281
282 SMB_INFO_EXT_LIBS="$SMB_INFO_EXT_LIBS
283 ###################################
284 # Start Ext Lib $1
285 \$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{NAME} = \"$1\";
286 @{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{LIBS}} = str2array(\"$2\");
287 @{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{CFLAGS}} = str2array(\"$3\");
288 @{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{CPPFLAGS}} = str2array(\"$4\");
289 @{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{LDFLAGS}} = str2array(\"$5\");
290 #
291 \$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{ENABLE} = \"$[SMB_EXT_LIB_ENABLE_][$1]\";
292 # End Ext Lib $1
293 ###################################
294 "
295 ])
296
297
298 dnl SMB_LIBRARY_ENABLE(
299 dnl             1:name,
300 dnl             2:default_build
301 dnl             )
302 AC_DEFUN([SMB_LIBRARY_ENABLE],
303 [
304         [SMB_LIBRARY_ENABLE_][$1]="$2"
305 ])
306
307 dnl SMB_LIBRARY(
308 dnl             1:name,
309 dnl             2:obj_files,
310 dnl             3:required_libs,
311 dnl             4:required_subsystems
312 dnl             )
313 AC_DEFUN([SMB_LIBRARY],
314 [
315
316         if test -z "$[SMB_LIBRARY_ENABLE_][$1]"; then
317                 [SMB_LIBRARY_ENABLE_][$1]="YES";
318         fi
319
320 SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES
321 ###################################
322 # Start Library $1
323 \$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{NAME} = \"$1\";
324 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{OBJ_FILES}} = str2array(\"$2\");
325 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_LIBRARIES}} = str2array(\"$3\");
326 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_SUBSYSTEMS}} = str2array(\"$4\");
327 #
328 \$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{ENABLE} = \"$[SMB_LIBRARY_ENABLE_][$1]\";
329 # End Library $1
330 ###################################
331 "
332 ])
333
334 dnl SMB_LIBRARY_MK(
335 dnl             1:name,
336 dnl             2:config_mk_file
337 dnl             )
338 AC_DEFUN([SMB_LIBRARY_MK],
339 [
340
341         if test -z "$[SMB_LIBRARY_ENABLE_][$1]"; then
342                 [SMB_LIBRARY_ENABLE_][$1]="YES";
343         fi
344
345 SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES
346 ###################################
347 # Start Library $1
348 \$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{NAME} = \"$1\";
349 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{OBJ_FILES}} = library_get_array(\"$2\", \"$1\", \"OBJ_FILES\");
350 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_LIBRARIES}} = library_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\");
351 @{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_SUBSYSTEMS}} = library_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
352 #
353 \$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{ENABLE} = \"$[SMB_LIBRARY_ENABLE_][$1]\";
354 # End Library $1
355 ###################################
356 "
357 ])
358
359 dnl SMB_BINARY_ENABLE(
360 dnl             1:name,
361 dnl             2:default_build
362 dnl             )
363 AC_DEFUN([SMB_BINARY_ENABLE],
364 [
365         [SMB_BINARY_ENABLE_][$1]="$2";
366 ])
367
368 dnl SMB_BINARY(
369 dnl             1:name,
370 dnl             2:build_targets,
371 dnl             3:install_path
372 dnl             4:objfiles,
373 dnl             5:required_libs,
374 dnl             6:required_subsystems
375 dnl             )
376 AC_DEFUN([SMB_BINARY],
377 [
378
379         if test -z "$[SMB_BINARY_ENABLE_][$1]"; then
380                 [SMB_BINARY_ENABLE_][$1]="YES";
381         fi
382
383 SMB_INFO_BINARIES="$SMB_INFO_BINARIES
384 ###################################
385 # Start Binary $1
386 \$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{NAME} = \"$1\";
387 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{BUILD_TARGETS}} = str2array(\"$2\");
388 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{INSTALL_PATH}} = str2array(\"$3\");
389 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{OBJ_FILES}} = str2array(\"$4\");
390 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_LIBRARIES}} = str2array(\"$5\");
391 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_SUBSYSTEMS}} = str2array(\"$6\");
392 #
393 \$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{ENABLE} = \"$[SMB_BINARY_ENABLE_][$1]\";
394 # End Binary $1
395 ###################################
396 "
397 ])
398
399 dnl SMB_BINARY_MK(
400 dnl             1:name,
401 dnl             2:config_mk_file
402 dnl             )
403 AC_DEFUN([SMB_BINARY_MK],
404 [
405
406         if test -z "$[SMB_BINARY_ENABLE_][$1]"; then
407                 [SMB_BINARY_ENABLE_][$1]="YES";
408         fi
409
410 SMB_INFO_BINARIES="$SMB_INFO_BINARIES
411 ###################################
412 # Start Binary $1
413 \$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{NAME} = \"$1\";
414 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{BUILD_TARGETS}} = binary_get_array(\"$2\", \"$1\", \"BUILD_TARGETS\");
415 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{INSTALL_PATH}} = binary_get_array(\"$2\", \"$1\", \"INSTALL_PATH\");
416 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{OBJ_FILES}} = binary_get_array(\"$2\", \"$1\", \"OBJ_FILES\");
417 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_LIBRARIES}} = binary_get_array(\"$2\", \"$1\",\"REQUIRED_LIBRARIES\");
418 @{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_SUBSYSTEMS}} = binary_get_array(\"$2\", \"$1\",\"REQUIRED_SUBSYSTEMS\");
419 #
420 \$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{ENABLE} = \"$[SMB_BINARY_ENABLE_][$1]\";
421 # End Binary $1
422 ###################################
423 "
424 ])
425
426 dnl SMB_MAKE_TARGET(
427 dnl             1:name
428 dnl             2:calledname
429 dnl             )
430 AC_DEFUN([SMB_MAKE_TARGET],
431 [
432         echo "#SMB_MAKE_TARGET TOTO"
433 ])
434
435 dnl SMB_AC_OUTPUT(
436 dnl             1: outputfile
437 dnl             )
438 AC_DEFUN([SMB_AC_OUTPUT],
439 [
440         AC_OUTPUT([$1],[],[_SMB_BUILD_CORE([[$1][.in]])])
441 ])