* more fixups for the generated .c file
[olsrd.git] / src / cfgparser / Makefile
index 1138b91..c5b50a3 100644 (file)
-CC ?= gcc
 
-LDNAME ?= olsrd_cfgparser.so.0.1
+# The olsr.org Optimized Link-State Routing daemon(olsrd)
+# Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without 
+# modification, are permitted provided that the following conditions 
+# are met:
+#
+# * Redistributions of source code must retain the above copyright 
+#   notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright 
+#   notice, this list of conditions and the following disclaimer in 
+#   the documentation and/or other materials provided with the 
+#   distribution.
+# * Neither the name of olsr.org, olsrd nor the names of its 
+#   contributors may be used to endorse or promote products derived 
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# Visit http://www.olsr.org for more information.
+#
+# If you find this software useful feel free to make a donation
+# to the project. For more information see the website or contact
+# the copyright holders.
+#
+# $Id: Makefile,v 1.26 2007/05/13 22:02:57 bernd67 Exp $
+
+TOPDIR=../..
+include $(TOPDIR)/Makefile.inc
+
+SRCS =         olsrd_conf.c  oparse.c  oscan.c cfgfile_gen.c
+HDRS =         olsrd_conf.h  oparse.h
+
+ifeq ($(OS), win32)
+
+LIBNAME ?=     olsrd_cfgparser.dll
+BINNAME ?=     olsrd_cfgparser.exe
+CFLAGS +=      -DWIN32_STDIO_HACK
+OBJS +=                ../win32/compat.o
+
+else
+
+LIBNAME ?=     olsrd_cfgparser.so.0.1
+BINNAME ?=     olsrd_cfgparser
 
-OBJS  = olsrd_conf.o oparse.o oscan.o
+endif
+
+
+ifdef MAKEBIN
+
+CFLAGS +=      -DMAKEBIN 
+NAME =         $(BINNAME)
 
-ifdef MAKELIB
-NAME ?= $(LDNAME)
-LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
-LDFLAGS ?= -shared -Wl,-soname,$(NAME)
-CFLAGS ?= -Wall -fPIC -g -DMAKELIB -I..
-LIBS  ?= -lm -lc
-DEP = libclean
 else 
-NAME ?= olsrd_cfgparser
-LDFLAGS ?=
-CFLAGS ?= -Wall -g -DMAKEBIN -I..
-endif
 
-BISON ?= bison
-FLEX ?= flex
+# build lib per default
 
+ifeq (${OS}, osx)
+LDFLAGS +=     -dynamiclib -single_module
+else
+LDFLAGS +=     -shared -Wl,-soname,$(LIBNAME)
+endif
 
-all:   $(NAME)
+ifeq (${OS}, win32)
+LDFLAGS +=     -Wl,--out-implib=libolsrd_cfgparser.a -Wl,--export-all-symbols
+endif
 
-$(NAME):       $(DEP) $(OBJS)
-               $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
+CFLAGS +=      -DMAKELIB
+NAME =         $(LIBNAME)
 
-oscan.c:       oscan.lex oparse.h olsrd_conf.h
-               $(FLEX) -ooscan.c oscan.lex
+endif
 
-oparse.h:      oparse.c
 
-oparse.c:      oparse.y olsrd_conf.h
-               $(BISON) -d -ooparse.c oparse.y
+default_target: $(NAME)
 
-install:
-       install -D -m 755 $(NAME) $(LIBDIR)/$(NAME)
-       /sbin/ldconfig -n $(LIBDIR)
+$(NAME):       $(OBJS)
+               $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
 
-clean:
-               rm -f *.o
-               rm -f $(NAME)
-               rm -f $(LDNAME)
-               rm -f *~
-               rm -f oscan.c
-               rm -f oparse.c oparse.h
+oscan.c:       oscan.lex Makefile
+               $(FLEX) -Cem -ooscan.c-tmp oscan.lex
+               sed     -e '/^static/s/yy_get_next_buffer[\(][\)]/yy_get_next_buffer(void)/' \
+                       -e '/^static/s/yy_get_previous_state[\(][\)]/yy_get_previous_state(void)/' \
+                       -e '/^static/s/yygrowstack[\(][\)]/yygrowstack(void)/' \
+                       -e '/^static/s/input[\(][\)]/input(void)/' \
+                       -e '/^static  *void  *yy_fatal_error/s/^\(.*)\);$$/\1 __attribute__((noreturn));/' \
+                       < oscan.c-tmp >oscan.c
+               $(RM) oscan.c-tmp
 
+oparse.c:      oparse.y olsrd_conf.h Makefile
+               $(BISON) -d -o oparse.c oparse.y
 
-libclean:
-               rm -f *.o
+#oscan.o oparse.o:: CFLAGS := $(filter-out -Wunreachable-code, $(CFLAGS))
 
+.PHONY: install clean uberclean
 
+install:
+               install -D -m 755 $(NAME) $(LIBDIR)/$(NAME)
+               /sbin/ldconfig -n $(LIBDIR)
+
+clean:
+               rm -f *.[od~] oscan.c oparse.[ch]
+               rm -f $(LIBNAME)
+               rm -f $(BINNAME)
+               $(RM) oparse.c-tmp
 
+uberclean:     clean
+               rm -f oparse.c oparse.h oscan.c