From 90417cc148e01b746957dbcf375daa3378a50c58 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Tue, 14 Nov 2017 21:17:10 +0100 Subject: libnftables: Split code into frontend and library This finally creates the libnftables shared object. For some reason, this causes two compiler warnings to appear: | parser_bison.y: In function 'nft_parse': | parser_bison.y:131:3: warning: implicit declaration of function 'nft_set_debug' [-Wimplicit-function-declaration] | nft_set_debug(1, scanner); | ^~~~~~~~~~~~~ | parser_bison.c:64:25: warning: implicit declaration of function 'nft_lex' [-Wimplicit-function-declaration] | #define yylex nft_lex | ^ | parser_bison.c:4745:16: note: in expansion of macro 'yylex' | yychar = yylex (&yylval, &yylloc, scanner); So this patch contains a workaround, namely declaring both functions in src/parser_bison.y. During linking the objects are found, so this is rather a matter of cosmetics. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- .gitignore | 3 +++ Makefile.am | 3 +++ configure.ac | 4 ++++ libnftables.pc.in | 15 +++++++++++++++ src/.gitignore | 1 + src/Makefile.am | 24 +++++++++++++++--------- src/parser_bison.y | 4 ++++ 7 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 libnftables.pc.in diff --git a/.gitignore b/.gitignore index 009f7d00..64af328e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Dependency and object files .*.d +*.lo *.o # Generated by autoconf/configure/automake @@ -8,6 +9,7 @@ Makefile Makefile.in src/Makefile.in src/.deps/ +src/.libs/ stamp-h1 config.h config.h.in @@ -17,6 +19,7 @@ config.status configure autom4te.cache build-aux/ +libnftables.pc libtool missing depcomp diff --git a/Makefile.am b/Makefile.am index 10aa40f1..9af25ded 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,3 +6,6 @@ SUBDIRS = src \ files EXTRA_DIST = tests + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libnftables.pc diff --git a/configure.ac b/configure.ac index 099a4a5e..a97d9e73 100644 --- a/configure.ac +++ b/configure.ac @@ -56,6 +56,9 @@ then exit 1 fi +AM_PROG_AR +AM_PROG_LIBTOOL + AC_CHECK_PROG(DOCBOOK2X_MAN, [docbook2x-man], [docbook2x-man], [no]) AC_CHECK_PROG(DOCBOOK2MAN, [docbook2man], [docbook2man], [no]) AC_CHECK_PROG(DB2X_DOCBOOK2MAN, [db2x_docbook2man], [db2x_docbook2man], [no]) @@ -138,6 +141,7 @@ AC_CHECK_FUNCS([memmove memset strchr strdup strerror strtoull]) AC_CONFIG_FILES([ \ Makefile \ + libnftables.pc \ src/Makefile \ include/Makefile \ include/nftables/Makefile \ diff --git a/libnftables.pc.in b/libnftables.pc.in new file mode 100644 index 00000000..6431d48c --- /dev/null +++ b/libnftables.pc.in @@ -0,0 +1,15 @@ +# libnftables pkg-config file + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libnftables +Description: Netfilter nf_tables user library +URL: http://netfilter.org/projects/nftables/ +Version: @VERSION@ +Requires: +Conflicts: +Libs: -L${libdir} -lnftables +Cflags: -I${includedir} diff --git a/src/.gitignore b/src/.gitignore index 23e6ae03..36d6acd1 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,4 @@ +libnftables.la parser.c parser.h scanner.c diff --git a/src/Makefile.am b/src/Makefile.am index 4d613a73..9f7a4bfb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,9 @@ parser_bison.o scanner.o: AM_CFLAGS += -Wno-missing-prototypes -Wno-missing-decl BUILT_SOURCES = parser_bison.h -nft_SOURCES = main.c \ +lib_LTLIBRARIES = libnftables.la + +libnftables_la_SOURCES = \ rule.c \ statement.c \ datatype.c \ @@ -59,19 +61,23 @@ nft_SOURCES = main.c \ parser_bison.y \ libnftables.c -if BUILD_CLI -nft_SOURCES += cli.c -endif - if BUILD_MINIGMP mini-gmp.o: AM_CFLAGS += -Wno-sign-compare -nft_SOURCES += mini-gmp.c +libnftables_la_SOURCES += mini-gmp.c endif -nft_LDADD = ${LIBMNL_LIBS} ${LIBNFTNL_LIBS} +libnftables_la_LIBADD = ${LIBMNL_LIBS} ${LIBNFTNL_LIBS} if BUILD_XTABLES -nft_SOURCES += xt.c -nft_LDADD += ${XTABLES_LIBS} +libnftables_la_SOURCES += xt.c +libnftables_la_LIBADD += ${XTABLES_LIBS} endif + +nft_SOURCES = main.c + +if BUILD_CLI +nft_SOURCES += cli.c +endif + +nft_LDADD = libnftables.la diff --git a/src/parser_bison.y b/src/parser_bison.y index 2c59fa78..c64c3979 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -105,6 +105,10 @@ static void location_update(struct location *loc, struct location *rhs, int n) #define symbol_value(loc, str) \ symbol_expr_alloc(loc, SYMBOL_VALUE, current_scope(state), str) + +/* Declare those here to avoid compiler warnings */ +void nft_set_debug(int, void *); +int nft_lex(void *, void *, void *); %} /* Declaration section */ -- cgit v1.2.3