* more fixups for the generated .c file
[olsrd.git] / src / cfgparser / Makefile
index 0b24f14..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.11 2004/12/01 18:38:53 kattemat Exp $
-
-CC ?=          gcc
-BISON ?=       bison
-FLEX ?=                flex
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes -g 
-LIBDIR ?=      $(INSTALL_PREFIX)/usr/lib
-DEPFILE =      .depend
-INCLUDES =     -I..
-SRCS =         olsrd_conf.c  oparse.c  oscan.c
-HDRS =         olsrd_conf.h  oparse.h
-PIPETONULL =
+# $Id: Makefile,v 1.26 2007/05/13 22:02:57 bernd67 Exp $
 
-ifeq ($(OS), linux)
-PIPETONULL =  >/dev/null 2>&1
-endif
+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
-
-PORT_CFLAGS =  -mno-cygwin -I../win32 -DWIN32_STDIO_HACK
-PORT_LDFLAGS = -mno-cygwin
-PORT_OBJS =    ../win32/compat.o
-PORT_LIBS =    -lws2_32
-DEPFLAGS +=    -DWIN32_STDIO_HACK
-INCLUDES +=    ../win32
+CFLAGS +=      -DWIN32_STDIO_HACK
+OBJS +=                ../win32/compat.o
 
 else
 
 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
-
 endif
 
 
-ifdef MAKELIB
-
-LDFLAGS +=     -shared -Wl,-soname,$(LIBNAME)
-CFLAGS +=      -DMAKELIB
-NAME =         $(LIBNAME)
-
-DEPFLAGS +=    -DMAKELIB 
-
-else 
 ifdef MAKEBIN
 
 CFLAGS +=      -DMAKEBIN 
 NAME =         $(BINNAME)
 
-DEPFLAGS +=    -DMAKEBIN
+else 
 
-endif
+# build lib per default
+
+ifeq (${OS}, osx)
+LDFLAGS +=     -dynamiclib -single_module
+else
+LDFLAGS +=     -shared -Wl,-soname,$(LIBNAME)
 endif
 
-MAKEDEPEND =   makedepend -f $(DEPFILE) -Y $(INCLUDES) $(DEPFLAGS) $(SRCS) $(PIPETONULL)
+ifeq (${OS}, win32)
+LDFLAGS +=     -Wl,--out-implib=libolsrd_cfgparser.a -Wl,--export-all-symbols
+endif
 
-OBJS =         olsrd_conf.o oparse.o oscan.o $(PORT_OBJS)
-LIBS +=                $(PORT_LIBS)
-CFLAGS +=      -I.. $(PORT_CFLAGS)
-LDFLAGS +=     $(PORT_LDFLAGS)
+CFLAGS +=      -DMAKELIB
+NAME =         $(LIBNAME)
 
+endif
 
-all:           $(OBJS) $(NAME)
 
-$(DEPFILE):    $(SRCS) $(HDRS)
-ifdef MAKEDEPEND
-               @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
-               $(MAKEDEPEND)
-endif
+default_target: $(NAME)
 
 $(NAME):       $(OBJS)
                $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
 
-oscan.c:       oscan.lex
-               $(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.c:      oparse.y olsrd_conf.h
-               $(BISON) -d -ooparse.c oparse.y
+#oscan.o oparse.o:: CFLAGS := $(filter-out -Wunreachable-code, $(CFLAGS))
 
 .PHONY: install clean uberclean
 
@@ -129,12 +111,10 @@ install:
                /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 $(DEPFILE) $(DEPFILE).bak
                rm -f oparse.c oparse.h oscan.c
-
-sinclude       $(DEPFILE)