ncurses 5.7 - patch 20090110
[ncurses.git] / Ada95 / gen / Makefile.in
1 ##############################################################################
2 # Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.                #
3 #                                                                            #
4 # Permission is hereby granted, free of charge, to any person obtaining a    #
5 # copy of this software and associated documentation files (the "Software"), #
6 # to deal in the Software without restriction, including without limitation  #
7 # the rights to use, copy, modify, merge, publish, distribute, distribute    #
8 # with modifications, sublicense, and/or sell copies of the Software, and to #
9 # permit persons to whom the Software is furnished to do so, subject to the  #
10 # following conditions:                                                      #
11 #                                                                            #
12 # The above copyright notice and this permission notice shall be included in #
13 # all copies or substantial portions of the Software.                        #
14 #                                                                            #
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
18 # THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
20 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
21 # DEALINGS IN THE SOFTWARE.                                                  #
22 #                                                                            #
23 # Except as contained in this notice, the name(s) of the above copyright     #
24 # holders shall not be used in advertising or otherwise to promote the sale, #
25 # use or other dealings in this Software without prior written               #
26 # authorization.                                                             #
27 ##############################################################################
28 #
29 #  Author:  Juergen Pfeifer, 1996
30 #
31 #  $Id: Makefile.in,v 1.63 2009/01/11 01:11:35 tom Exp $
32 #
33 .SUFFIXES:
34
35 SHELL           = /bin/sh
36 THIS            = Makefile
37
38 x               = @PROG_EXT@
39
40 top_srcdir      = @top_srcdir@
41 DESTDIR         = @DESTDIR@
42 srcdir          = @srcdir@
43 prefix          = @prefix@
44 exec_prefix     = @exec_prefix@
45 bindir          = @bindir@
46
47 ADA_INCLUDE     = $(DESTDIR)@ADA_INCLUDE@
48 ADA_OBJECTS     = $(DESTDIR)@ADA_OBJECTS@
49
50 INSTALL         = @INSTALL@
51 INSTALL_PROG    = @INSTALL_PROGRAM@
52 INSTALL_DATA    = @INSTALL_DATA@
53
54 AWK             = @AWK@
55 LN_S            = @LN_S@
56
57 CC              = @CC@
58 HOST_CC         = @BUILD_CC@
59 CFLAGS          = @CFLAGS@
60
61 CPPFLAGS        = @ACPPFLAGS@ \
62                   -DHAVE_CONFIG_H -I$(srcdir)
63
64 CCFLAGS         = $(CPPFLAGS) $(CFLAGS)
65 CFLAGS_NORMAL   = $(CCFLAGS)
66 CFLAGS_DEBUG    = $(CCFLAGS) @CC_G_OPT@ -DTRACE
67 CFLAGS_PROFILE  = $(CCFLAGS) -pg
68 CFLAGS_SHARED   = $(CCFLAGS) @CC_SHARED_OPTS@
69
70 CFLAGS_DEFAULT  = $(CFLAGS_@DFT_UPR_MODEL@)
71
72 REL_VERSION     = @cf_cv_rel_version@
73 ABI_VERSION     = @cf_cv_abi_version@
74 LOCAL_LIBDIR    = @top_builddir@/lib
75
76 LINK            = $(HOST_CC)
77 LD_FLAGS        = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_ARGS2@
78
79 RANLIB          = @RANLIB@
80
81 M4              = m4
82 M4FLAGS         = -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@
83
84 ADACURSES_CONFIG = adacurses@DFT_ARG_SUFFIX@-config
85
86 WRAPPER         = sh $(top_srcdir)/misc/shlib
87 GENERATE        = ./gen$x '@DFT_ARG_SUFFIX@'
88 DEL_ADAMODE     = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
89
90 GNATHTML        = `type -p gnathtml || type -p gnathtml.pl`
91 GNATHP          = www.gnat.com
92
93 ################################################################################
94 ALIB            = @cf_ada_package@
95 ABASE           = $(ALIB)-curses
96
97 ADA_SRCDIR      = ../src
98
99 GEN_FILES0      = Base_Defs
100
101 GEN_FILES1      = ACS_Map                               \
102                   AC_Rep                                \
103                   Base_Defs                             \
104                   Character_Attribute_Set_Rep           \
105                   Color_Defs                            \
106                   Key_Definitions                       \
107                   Linker_Options                        \
108                   Old_Keys                              \
109                   Public_Variables                      \
110                   Trace_Defs                            \
111                   Version_Info                          \
112                   Window_Offsets
113
114 GEN_FILES2      = Menu_Opt_Rep                          \
115                   Menu_Base_Defs                        \
116                   Menu_Linker_Options                   \
117                   Item_Rep
118
119 GEN_FILES3      = Form_Opt_Rep                          \
120                   Form_Base_Defs                        \
121                   Form_Linker_Options                   \
122                   Field_Rep
123
124 GEN_FILES4      = Mouse_Base_Defs                       \
125                   Mouse_Event_Rep                       \
126                   Mouse_Events                          \
127                   Panel_Linker_Options
128
129 GEN_FILES5      = Chtype_Def                            \
130                   Eti_Defs
131
132 GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                            \
133                   $(ADA_SRCDIR)/$(ABASE).adb                            \
134                   $(ADA_SRCDIR)/$(ABASE)-aux.ads                        \
135                   $(ADA_SRCDIR)/$(ABASE)-trace.ads                      \
136                   $(ADA_SRCDIR)/$(ABASE)-menus.ads                      \
137                   $(ADA_SRCDIR)/$(ABASE)-forms.ads                      \
138                   $(ADA_SRCDIR)/$(ABASE)-mouse.ads                      \
139                   $(ADA_SRCDIR)/$(ABASE)-panels.ads                     \
140                   $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads       \
141                   $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads       \
142                   $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads       \
143                   $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads          \
144                   $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads      \
145                   $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads
146
147 GEN_SRC         = $(srcdir)/$(ABASE).ads.m4                             \
148                   $(srcdir)/$(ABASE).adb.m4                             \
149                   $(srcdir)/$(ABASE)-aux.ads.m4                         \
150                   $(srcdir)/$(ABASE)-trace.ads.m4                       \
151                   $(srcdir)/$(ABASE)-menus.ads.m4                       \
152                   $(srcdir)/$(ABASE)-forms.ads.m4                       \
153                   $(srcdir)/$(ABASE)-mouse.ads.m4                       \
154                   $(srcdir)/$(ABASE)-panels.ads.m4                      \
155                   $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4        \
156                   $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4        \
157                   $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4        \
158                   $(srcdir)/$(ABASE)-forms-field_types.ads.m4           \
159                   $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4       \
160                   $(srcdir)/$(ABASE)-panels-user_data.ads.m4
161
162
163 all \
164 libs :  $(GEN_TARGETS)
165         @echo made $@
166
167 sources:
168
169 $(DESTDIR)$(bindir) \
170 $(ADA_INCLUDE) \
171 $(ADA_OBJECTS) :
172         sh $(top_srcdir)/mkdirs.sh $@
173
174 install \
175 install.libs :: $(ADA_INCLUDE)
176         @echo installing package $(ALIB) in $(ADA_INCLUDE)
177         @$(top_srcdir)/tar-copy.sh '$(ALIB)*.ad?' $(ADA_SRCDIR) $(ADA_INCLUDE)
178         @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(ADA_SRCDIR) $(ADA_INCLUDE)
179         @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ALIB)*.ad?' $(srcdir)/../src $(ADA_INCLUDE)
180         @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(srcdir)/../src $(ADA_INCLUDE)
181
182 install \
183 install.libs :: $(ADA_OBJECTS)
184         @echo installing package $(ALIB) in $(ADA_OBJECTS)
185         @-chmod a-wx $(ADA_SRCDIR)/*.ali
186         @$(top_srcdir)/tar-copy.sh '$(ALIB)*.ali' $(ADA_SRCDIR) $(ADA_OBJECTS)
187         @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ali' $(ADA_SRCDIR) $(ADA_OBJECTS)
188         @-chmod u+x $(ADA_SRCDIR)/*.ali
189
190 install \
191 install.libs :: $(DESTDIR)$(bindir) $(ADACURSES_CONFIG)
192         $(INSTALL_PROG) $(ADACURSES_CONFIG) $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG)
193
194 uninstall \
195 uninstall.libs ::
196         @echo removing package $(ALIB) from $(ADA_INCLUDE)
197         -@cd $(ADA_INCLUDE) && rm -f $(ALIB)[-.]*
198
199 uninstall \
200 uninstall.libs ::
201         @echo removing package $(ALIB) from $(ADA_OBJECTS)
202         -@cd $(ADA_OBJECTS) && rm -f $(ALIB)[-.]*
203
204 uninstall \
205 uninstall.libs ::
206         -rm -f $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG)
207
208 gen$x:  gen.o
209         @ECHO_LINK@ $(LINK) $(CFLAGS_NORMAL) gen.o $(LD_FLAGS) -o $@
210
211 gen.o:  $(srcdir)/gen.c
212         $(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c
213 ################################################################################
214 Character_Attribute_Set_Rep: gen$x
215         $(WRAPPER) "$(GENERATE) B A" >$@
216
217 Base_Defs: gen$x
218         $(WRAPPER) "$(GENERATE) B B" >$@
219
220 Color_Defs: gen$x
221         $(WRAPPER) "$(GENERATE) B C" >$@
222
223 Window_Offsets: gen$x
224         $(WRAPPER) "$(GENERATE) B D" >$@
225
226 Key_Definitions: gen$x
227         $(WRAPPER) "$(GENERATE) B K" >$@
228
229 Linker_Options: gen$x
230         $(WRAPPER) "$(GENERATE) B L" >$@
231
232 ACS_Map: gen$x
233         $(WRAPPER) "$(GENERATE) B M" >$@
234
235 Old_Keys: gen$x
236         $(WRAPPER) "$(GENERATE) B O" >$@
237
238 Public_Variables: gen$x
239         $(WRAPPER) "$(GENERATE) B P" >$@
240
241 AC_Rep: gen$x
242         $(WRAPPER) "$(GENERATE) B R" >$@
243
244 Version_Info: gen$x
245         $(WRAPPER) "$(GENERATE) B V" >$@
246
247 Trace_Defs: gen$x
248         $(WRAPPER) "$(GENERATE) B T" >$@
249 ################################################################################
250 Menu_Opt_Rep: gen$x
251         $(WRAPPER) "$(GENERATE) M R" >$@
252
253 Menu_Base_Defs: gen$x
254         $(WRAPPER) "$(GENERATE) M B" >$@
255
256 Menu_Linker_Options: gen$x
257         $(WRAPPER) "$(GENERATE) M L" >$@
258
259 Item_Rep: gen$x
260         $(WRAPPER) "$(GENERATE) M I" >$@
261 ################################################################################
262 Form_Opt_Rep: gen$x
263         $(WRAPPER) "$(GENERATE) F R" >$@
264
265 Form_Base_Defs: gen$x
266         $(WRAPPER) "$(GENERATE) F B" >$@
267
268 Form_Linker_Options: gen$x
269         $(WRAPPER) "$(GENERATE) F L" >$@
270
271 Field_Rep: gen$x
272         $(WRAPPER) "$(GENERATE) F I" >$@
273 ################################################################################
274 Mouse_Base_Defs: gen$x
275         $(WRAPPER) "$(GENERATE) P B" >$@
276
277 Mouse_Event_Rep: gen$x
278         $(WRAPPER) "$(GENERATE) P M" >$@
279
280 Mouse_Events: gen$x
281         $(WRAPPER) "$(GENERATE) B E" >$@
282
283 Panel_Linker_Options: gen$x
284         $(WRAPPER) "$(GENERATE) P L" >$@
285
286 Chtype_Def: gen$x
287         $(WRAPPER) "$(GENERATE) E C" >$@
288
289 Eti_Defs: gen$x
290         $(WRAPPER) "$(GENERATE) E E" >$@
291 ################################################################################
292 $(ADA_SRCDIR)/$(ABASE).ads:     $(srcdir)/$(ABASE).ads.m4 \
293                                 $(GEN_FILES1) $(srcdir)/normal.m4
294         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
295         $(srcdir)/$(ABASE).ads.m4 |\
296         $(DEL_ADAMODE) >$@
297
298 $(ADA_SRCDIR)/$(ABASE).adb:     $(srcdir)/$(ABASE).adb.m4 \
299                                 $(GEN_FILES1) $(srcdir)/normal.m4
300         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
301         $(srcdir)/$(ABASE).adb.m4 |\
302         $(DEL_ADAMODE) >$@
303
304 $(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
305                                 $(GEN_FILES5) $(srcdir)/normal.m4
306         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
307         $(srcdir)/$(ABASE)-aux.ads.m4 |\
308         $(DEL_ADAMODE) >$@
309
310 $(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \
311                                 $(GEN_FILES5) $(srcdir)/normal.m4
312         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
313         $(srcdir)/$(ABASE)-trace.ads.m4 |\
314         $(DEL_ADAMODE) >$@
315
316 $(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \
317                                   $(GEN_FILES2) $(srcdir)/normal.m4
318         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
319         $(srcdir)/$(ABASE)-menus.ads.m4 |\
320         $(DEL_ADAMODE) >$@
321
322 $(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \
323                                   $(GEN_FILES3) $(srcdir)/normal.m4
324         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
325         $(srcdir)/$(ABASE)-forms.ads.m4 |\
326         $(DEL_ADAMODE) >$@
327
328 $(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \
329                                   $(GEN_FILES4) $(srcdir)/normal.m4
330         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
331         $(srcdir)/$(ABASE)-mouse.ads.m4 |\
332         $(DEL_ADAMODE) >$@
333
334 $(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \
335                                    $(srcdir)/normal.m4
336         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
337         $(srcdir)/$(ABASE)-panels.ads.m4 |\
338         $(DEL_ADAMODE) >$@
339
340 $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads: \
341                 $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \
342                 $(srcdir)/normal.m4
343         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
344         $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 |\
345         $(DEL_ADAMODE) >$@
346
347 $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads: \
348                 $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \
349                 $(srcdir)/normal.m4
350         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
351         $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 |\
352         $(DEL_ADAMODE) >$@
353
354 $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads: \
355                 $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \
356                 $(srcdir)/normal.m4
357         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
358         $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 |\
359         $(DEL_ADAMODE) >$@
360
361 $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads: \
362                 $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \
363                 $(srcdir)/normal.m4
364         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
365         $(srcdir)/$(ABASE)-forms-field_types.ads.m4 |\
366         $(DEL_ADAMODE) >$@
367
368 $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads: \
369                 $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \
370                 $(srcdir)/normal.m4
371         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
372         $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 |\
373         $(DEL_ADAMODE) >$@
374
375 $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads: \
376                 $(srcdir)/$(ABASE)-panels-user_data.ads.m4 \
377                 $(srcdir)/normal.m4
378         $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
379         $(srcdir)/$(ABASE)-panels-user_data.ads.m4 |\
380         $(DEL_ADAMODE) >$@
381
382 install.progs ::
383
384 tags:
385         ctags *.[ch]
386
387 @MAKE_UPPER_TAGS@TAGS:
388 @MAKE_UPPER_TAGS@       etags *.[ch]
389
390 mostlyclean ::
391         -rm -f a.out core gen$x *.o
392         -rm -f $(GEN_FILES1)
393         -rm -f $(GEN_FILES2)
394         -rm -f $(GEN_FILES3)
395         -rm -f $(GEN_FILES4)
396         -rm -f $(GEN_FILES5)
397
398 clean :: mostlyclean
399         -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
400
401 distclean :: clean
402         -rm -f $(ADACURSES_CONFIG)
403         -rm -f Makefile
404
405 realclean :: distclean
406
407 HTML_DIR = ../../doc/html/ada
408
409 instab.tmp : table.m4 $(GEN_SRC)
410         @rm -f $@
411         @for f in $(GEN_SRC) ; do \
412           $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\
413         done;
414
415 $(HTML_DIR)/table.html : instab.tmp
416         @-touch $@
417         @-chmod +w $@
418         @echo '<!DOCTYPE HTML'  > $@
419         @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@
420         @echo '<HTML>' >> $@
421         @echo '<HEAD>' >> $@
422         @echo '<TITLE>Correspondence between ncurses C and Ada functions</TITLE>' >>$@
423         @echo '</HEAD>' >> $@
424         @echo '<BODY>' >> $@
425         @echo '<H1>Correspondence between ncurses C and Ada functions</H1>' >>$@
426         @echo '<H2>Sorted by C function name</H2>' >>$@
427         @echo '<TABLE ALIGN=CENTER BORDER>' >>$@
428         @echo '<TR ALIGN=LEFT>' >>$@
429         @echo '<TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>' >>$@
430         @sort < instab.tmp >> $@
431         @echo '</TABLE></BODY></HTML>' >>$@
432         @rm -f instab.tmp
433
434 adahtml:
435         @find $(HTML_DIR) -type f -exec rm -f {} \;
436         @mkdir -p $(HTML_DIR)
437         cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb]
438         ln -sf ../src/*.ali .
439         @echo "Filtering generated files"
440         @for f in $(GEN_SRC); do \
441            h=`basename $$f` ;\
442            g=`basename $$f .ads.m4` ;\
443            if test "$$g" != "$$h" ; then \
444               $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\
445               echo "... $$g.ads" ;\
446            fi \
447         done
448         @-rm -f $(HTML_DIR)/$(ALIB)*.htm*
449         $(GNATHTML) -d -f $(ALIB)*.ads
450         for f in html/$(ALIB)*.htm*; do \
451            a=`basename $$f` ; \
452            sed -e 's/You may also.*body.*//' <$$f |\
453            sed -e 's%GNAT%<A HREF="http://$(GNATHP)">GNAT</A>%g' |\
454            sed -e 's%&lt;A HREF%<A HREF%g' |\
455            sed -e 's%"&gt;%">%g' |\
456            sed -e 's/3X/3x/g' |\
457            sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\
458            sed -e 's%&lt;/A&gt;%</A>%g' > $$a.tmp ;\
459            mv $$a.tmp $$f ;\
460         done
461         @rm -f *.ad[sb] *.ali *.tmp
462         @for f in funcs.htm main.htm ; do \
463           sed -e "\%<A HREF=funcs/ .htm>\[ \]</A>%d" < html/$$f > $$f ;\
464           mv $$f html/$$f ;\
465         done
466         @rm -f "html/funcs/ .htm"
467         @cp -pdrf html/* $(HTML_DIR)/
468         @rm -rf html
469
470 html : adahtml $(HTML_DIR)/table.html
471         @echo made $@
472
473 ###############################################################################
474 # The remainder of this file is automatically generated during configuration
475 ###############################################################################