* more fixups for the generated .c file
[olsrd.git] / src / cfgparser / Makefile
index c05a7dd..c5b50a3 100644 (file)
 # Visit http://www.olsr.org for more information.
 #
 # If you find this software useful feel free to make a donation
-# to the projcet. For more information see the website or contact
+# to the project. For more information see the website or contact
 # the copyright holders.
 #
-# $Id: Makefile,v 1.9 2004/11/21 17:10:27 tlopatic Exp $
+# $Id: Makefile,v 1.26 2007/05/13 22:02:57 bernd67 Exp $
 
+TOPDIR=../..
+include $(TOPDIR)/Makefile.inc
 
-
-
-#OS =          linux
-#OS =          fbsd
-#OS =          win32
-#OS =          osx
+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
-
-PORT_CFLAGS =  -mno-cygwin -I../win32 -DWIN32_STDIO_HACK
-PORT_LDFLAGS = -mno-cygwin
-PORT_OBJS =    ../win32/compat.o
-PORT_LIBS =    -lws2_32
+CFLAGS +=      -DWIN32_STDIO_HACK
+OBJS +=                ../win32/compat.o
 
 else
-ifeq ($(OS), linux)
 
 LIBNAME ?=     olsrd_cfgparser.so.0.1
 BINNAME ?=     olsrd_cfgparser
 
-PORT_CFLAGS =  -fPIC
-PORT_LDFLAGS = -Wl,--version-script=version-script.txt
-PORT_OBJS =
-PORT_LIBS =    -lm -lc
-
-else
-ifeq ($(OS), fbsd)
+endif
 
-LIBNAME ?=     olsrd_cfgparser.so.0.1
-BINNAME ?=     olsrd_cfgparser
 
-PORT_CFLAGS =  -fPIC
-PORT_LDFLAGS = -Wl,--version-script=version-script.txt
-PORT_OBJS =
-PORT_LIBS =    -lm -lc
+ifdef MAKEBIN
 
-else
-ifeq ($(OS), osx)
+CFLAGS +=      -DMAKEBIN 
+NAME =         $(BINNAME)
 
-LIBNAME ?=     olsrd_cfgparser.so.0.1
-BINNAME ?=     olsrd_cfgparser
+else 
 
-PORT_CFLAGS =  -fPIC
-PORT_LDFLAGS = -Wl,--version-script=version-script.txt
-PORT_OBJS =
-PORT_LIBS =    -lm -lc
+# build lib per default
 
+ifeq (${OS}, osx)
+LDFLAGS +=     -dynamiclib -single_module
+else
+LDFLAGS +=     -shared -Wl,-soname,$(LIBNAME)
 endif
-endif
-endif
-endif
-
-CC ?=          gcc
-OBJS =         olsrd_conf.o oparse.o oscan.o $(PORT_OBJS)
 
-ifdef MAKELIB
-
-LIBDIR ?=      $(PREFIX)/usr/lib
-LDFLAGS ?=     -shared -Wl,-soname,$(LIBNAME) $(PORT_LDFLAGS)
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes \
-               -g -DMAKELIB -I.. $(PORT_CFLAGS)
-LIBS ?=                $(PORT_LIBS)
+ifeq (${OS}, win32)
+LDFLAGS +=     -Wl,--out-implib=libolsrd_cfgparser.a -Wl,--export-all-symbols
+endif
 
+CFLAGS +=      -DMAKELIB
 NAME =         $(LIBNAME)
 
-else 
-
-LDFLAGS ?=     $(PORT_LDFLAGS)
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes \
-               -g -DMAKEBIN -I.. $(PORT_CFLAGS)
-LIBS ?=                $(PORT_LIBS)
-
-NAME =         $(BINNAME)
-
 endif
 
-BISON ?=       bison
-FLEX ?=                flex
 
-all:           clean $(NAME)
+default_target: $(NAME)
 
 $(NAME):       $(OBJS)
                $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
-               rm -f *.o
 
-oscan.c:       oscan.lex oparse.h olsrd_conf.h
-               $(FLEX) -ooscan.c oscan.lex
+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
 
-oparse.h:      oparse.c
+#oscan.o oparse.o:: CFLAGS := $(filter-out -Wunreachable-code, $(CFLAGS))
 
-oparse.c:      oparse.y olsrd_conf.h
-               $(BISON) -d -ooparse.c oparse.y
+.PHONY: install clean uberclean
 
 install:
                install -D -m 755 $(NAME) $(LIBDIR)/$(NAME)
                /sbin/ldconfig -n $(LIBDIR)
 
 clean:
-               rm -f *.o
+               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