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