0a3212af1caf425acd8cdb82943d46c990f1ef6a
[olsrd.git] / src / cfgparser / local.mk
1
2 # The olsr.org Optimized Link-State Routing daemon(olsrd)
3 # Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without 
7 # modification, are permitted provided that the following conditions 
8 # are met:
9 #
10 # * Redistributions of source code must retain the above copyright 
11 #   notice, this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above copyright 
13 #   notice, this list of conditions and the following disclaimer in 
14 #   the documentation and/or other materials provided with the 
15 #   distribution.
16 # * Neither the name of olsr.org, olsrd nor the names of its 
17 #   contributors may be used to endorse or promote products derived 
18 #   from this software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
23 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
24 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
25 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
26 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
27 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
28 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
29 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
30 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
31 # POSSIBILITY OF SUCH DAMAGE.
32 #
33 # Visit http://www.olsr.org for more information.
34 #
35 # If you find this software useful feel free to make a donation
36 # to the project. For more information see the website or contact
37 # the copyright holders.
38 #
39
40 # avoid the $(if) everywhere
41 C=$(if $(CFGDIR),$(CFGDIR)/)
42
43 # add the variables as we may have others already there
44 SRCS += $(foreach file,olsrd_conf oparse oscan cfgfile_gen,$(C)$(file).c)
45 OBJS += $(foreach file,olsrd_conf oparse oscan cfgfile_gen,$(C)$(file).o)
46 HDRS += $(foreach file,olsrd_conf oparse,$(C)$(file).h)
47
48 $(C)oscan.c: $(C)oscan.lex $(C)Makefile
49         @echo "[FLEX] $@"
50         @$(FLEX) -Cem -o"$@-tmp" "$<"
51         @sed    -e '/^static/s/yy_get_next_buffer[\(][\)]/yy_get_next_buffer(void)/' \
52                 -e '/^static/s/yy_get_previous_state[\(][\)]/yy_get_previous_state(void)/' \
53                 -e '/^static/s/yygrowstack[\(][\)]/yygrowstack(void)/' \
54                 -e '/^static/s/input[\(][\)]/input(void)/' \
55                 -e '/^static  *void  *yy_fatal_error/s/^\(.*)\);$$/\1 __attribute__((noreturn));/' \
56                 -e 's/register //' \
57                 -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \
58                 < "$@-tmp" >"$@"
59         @$(RM) "$@-tmp"
60
61 # we need a dependency to generate oparse before we compile oscan.c
62 $(C)oscan.o: $(C)oparse.c
63 $(C)oscan.o: CFLAGS := $(filter-out -Wunreachable-code -Wsign-compare,$(CFLAGS)) -Wno-sign-compare -Wno-switch-default
64 # we need potentially another -I directory
65 $(C)oscan.o: CPPFLAGS += $(if $(CFGDIR),-I$(CFGDIR)) -DYY_NO_INPUT
66
67 $(C)oparse.c: $(C)oparse.y $(C)olsrd_conf.h $(C)Makefile
68         @echo "[BISON] $@"
69         @$(BISON) -d -o "$@-tmp" "$<"
70         @sed    -e 's/register //' \
71                 -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \
72                 < "$@-tmp" >"$@"
73         @mv "$(subst .c,.h,$@-tmp)" "$(subst .c,.h,$@)"
74         @$(RM) "$@-tmp" "$(subst .c,.h,$@-tmp)"
75
76 $(C)oparse.o: CFLAGS := $(filter-out -Wunreachable-code,$(CFLAGS))
77
78 # and a few files to be cleaned
79 TMPFILES += $(foreach pat,oscan.c oparse.c oparse.h,$(C)$(pat) $(C)$(pat)-tmp)