build with 3rdparty objects
use -static linking when linking libr3 AM_CFLAGS and AM_LDFLAGS are Makefile.am scope options disable valgrind tracing check-tree Makefile.am fix Add json support remove useless c files
This commit is contained in:
parent
b139d8d3f2
commit
7d6209d99c
9 changed files with 111 additions and 50 deletions
|
@ -6,9 +6,9 @@ compiler:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
env: CONFIGURE_OPTION='--enable-debug --with-malloc=jemalloc' COVERALLS=yes VALGRIND=no
|
env: CONFIGURE_OPTION='--enable-debug --with-malloc=jemalloc' COVERALLS=yes VALGRIND=no DEBUG=yes
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
env: CONFIGURE_OPTION='--enable-debug' COVERALLS=yes VALGRIND=yes LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
|
env: CONFIGURE_OPTION='--enable-debug' COVERALLS=yes VALGRIND=yes DEBUG=yes LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/local/clang-3.4/bin/llvm-symbolizer CFLAGS='-fsanitize=address -g -O1'
|
env: ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/local/clang-3.4/bin/llvm-symbolizer CFLAGS='-fsanitize=address -g -O1'
|
||||||
|
|
||||||
|
@ -28,7 +28,8 @@ script:
|
||||||
- make V=1
|
- make V=1
|
||||||
- sudo make install
|
- sudo make install
|
||||||
- if [ "x$VALGRIND" == xyes ]; then make check > /dev/null 2>&1; else make check V=1; fi
|
- if [ "x$VALGRIND" == xyes ]; then make check > /dev/null 2>&1; else make check V=1; fi
|
||||||
- if [ "x$VALGRIND" == xyes ]; then valgrind ./tests/.libs/check_* -v --trace-children=yes --show-leak-kinds=full --leak-check=full; fi
|
# XXX: tracing memory leak, disabled for some mystery reason for automake...
|
||||||
|
# - if [ "x$VALGRIND" == xyes && "x$DEBUG" == xyes ]; then valgrind ./tests/check_* -v --trace-children=yes --show-leak-kinds=full --leak-check=full; fi
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- if [ x$COVERALLS == xyes ]; then coveralls ; fi
|
- if [ x$COVERALLS == xyes ]; then coveralls ; fi
|
||||||
|
|
16
3rdparty/Makefile.am
vendored
Normal file
16
3rdparty/Makefile.am
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99
|
||||||
|
AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS)
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = libr3ext.la
|
||||||
|
libr3ext_la_SOURCES = zmalloc.c
|
||||||
|
libr3ext_la_LIBADD=$(DEPS_LIBS)
|
||||||
|
# noinst_LIBRARIES = libr3ext.la
|
||||||
|
libr3ext_la_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/3rdparty -Wall -std=c99
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
ujdecode.h \
|
||||||
|
zmalloc.h \
|
||||||
|
ultrajson.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
0
src/zmalloc.c → 3rdparty/zmalloc.c
vendored
0
src/zmalloc.c → 3rdparty/zmalloc.c
vendored
0
include/zmalloc.h → 3rdparty/zmalloc.h
vendored
0
include/zmalloc.h → 3rdparty/zmalloc.h
vendored
19
Makefile.am
19
Makefile.am
|
@ -1,7 +1,23 @@
|
||||||
SUBDIRS=src tests
|
SUBDIRS=3rdparty src tests
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libr3.la
|
||||||
|
libr3_la_SOURCES =
|
||||||
|
libr3_la_LIBADD = 3rdparty/libr3ext.la src/libr3core.la
|
||||||
|
libr3_la_LDFLAGS = -static
|
||||||
|
|
||||||
|
AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99
|
||||||
|
AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS)
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS=-I m4
|
ACLOCAL_AMFLAGS=-I m4
|
||||||
|
|
||||||
|
if ENABLE_DEBUG
|
||||||
|
AM_CFLAGS += -ggdb -fprofile-arcs -ftest-coverage
|
||||||
|
endif
|
||||||
|
|
||||||
|
if USE_JEMALLOC
|
||||||
|
AM_LDFLAGS += -ljemalloc
|
||||||
|
endif
|
||||||
|
|
||||||
r3_includedir = $(includedir)/r3
|
r3_includedir = $(includedir)/r3
|
||||||
r3_include_HEADERS = \
|
r3_include_HEADERS = \
|
||||||
include/r3.h \
|
include/r3.h \
|
||||||
|
@ -10,7 +26,6 @@ r3_include_HEADERS = \
|
||||||
include/r3_str.h \
|
include/r3_str.h \
|
||||||
include/r3_gvc.h \
|
include/r3_gvc.h \
|
||||||
include/str_array.h \
|
include/str_array.h \
|
||||||
include/zmalloc.h \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
|
20
configure.ac
20
configure.ac
|
@ -2,12 +2,11 @@ AC_INIT([r3], 1.0.0)
|
||||||
AC_PREREQ([2.64])
|
AC_PREREQ([2.64])
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AM_INIT_AUTOMAKE([foreign])
|
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||||
LT_INIT
|
LT_INIT
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_CC_STDC
|
AC_PROG_CC_STDC
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([stdlib.h string.h sys/time.h])
|
AC_CHECK_HEADERS([stdlib.h string.h sys/time.h])
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
@ -74,14 +73,30 @@ AM_CONDITIONAL(USE_JEMALLOC, test "x$have_jemalloc" = "xyes")
|
||||||
# AC_DEFINE(USE_JEMALLOC, test "x$found_jemalloc" = "xyes" , "use jemalloc")
|
# AC_DEFINE(USE_JEMALLOC, test "x$found_jemalloc" = "xyes" , "use jemalloc")
|
||||||
|
|
||||||
AM_CONDITIONAL(ENABLE_DEBUG, test "x$enable_debug" = "xyes")
|
AM_CONDITIONAL(ENABLE_DEBUG, test "x$enable_debug" = "xyes")
|
||||||
|
AM_CONDITIONAL(ENABLE_JSON, test "x$enable_json" = "xyes")
|
||||||
AM_CONDITIONAL(ENABLE_GRAPHVIZ, test "x$enable_graphviz" = "xyes")
|
AM_CONDITIONAL(ENABLE_GRAPHVIZ, test "x$enable_graphviz" = "xyes")
|
||||||
|
|
||||||
AC_DEFINE(ENABLE_GRAPHVIZ, test "x$enable_graphviz" = "xyes", "whether graphviz is enable")
|
AC_DEFINE(ENABLE_GRAPHVIZ, test "x$enable_graphviz" = "xyes", "whether graphviz is enable")
|
||||||
|
AC_DEFINE(ENABLE_JSON, test "x$enable_json" = "xyes", "whether json is enable")
|
||||||
|
|
||||||
PKG_CHECK_MODULES(DEPS, [libpcre])
|
PKG_CHECK_MODULES(DEPS, [libpcre])
|
||||||
AC_SUBST(DEPS_CFLAGS)
|
AC_SUBST(DEPS_CFLAGS)
|
||||||
AC_SUBST(DEPS_LIBS)
|
AC_SUBST(DEPS_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(json,
|
||||||
|
AS_HELP_STRING([--enable-json],
|
||||||
|
[enable json encoder]),
|
||||||
|
, enable_json=unset)
|
||||||
|
|
||||||
|
|
||||||
|
if test "x$enable_json" != "xunset" ; then
|
||||||
|
PKG_CHECK_MODULES(JSONC, [json-c])
|
||||||
|
AC_SUBST(JSONC_CFLAGS)
|
||||||
|
AC_SUBST(JSONC_LIBS)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# This does not work because configure does not look into /opt/local/include...
|
# This does not work because configure does not look into /opt/local/include...
|
||||||
# AC_CHECK_HEADERS([check.h],[ enable_check=yes ],[ enable_check=unset ])
|
# AC_CHECK_HEADERS([check.h],[ enable_check=yes ],[ enable_check=unset ])
|
||||||
AC_ARG_ENABLE(check,
|
AC_ARG_ENABLE(check,
|
||||||
|
@ -104,6 +119,7 @@ AM_CONDITIONAL(HAVE_CHECK, test x"$have_check" = "xyes")
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
r3.pc
|
r3.pc
|
||||||
Makefile
|
Makefile
|
||||||
|
3rdparty/Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
tests/Makefile
|
tests/Makefile
|
||||||
])
|
])
|
||||||
|
|
14
include/r3.h
14
include/r3.h
|
@ -16,6 +16,11 @@
|
||||||
#include "str_array.h"
|
#include "str_array.h"
|
||||||
#include "match_entry.h"
|
#include "match_entry.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_JSON
|
||||||
|
#include <json-c/json.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
struct _edge;
|
struct _edge;
|
||||||
struct _node;
|
struct _node;
|
||||||
struct _route;
|
struct _route;
|
||||||
|
@ -170,7 +175,14 @@ enum { NODE_COMPARE_STR, NODE_COMPARE_PCRE, NODE_COMPARE_OPCODE };
|
||||||
|
|
||||||
enum { OP_EXPECT_MORE_DIGITS = 1, OP_EXPECT_MORE_WORDS, OP_EXPECT_NOSLASH, OP_EXPECT_NODASH, OP_EXPECT_MORE_ALPHA };
|
enum { OP_EXPECT_MORE_DIGITS = 1, OP_EXPECT_MORE_WORDS, OP_EXPECT_NOSLASH, OP_EXPECT_NODASH, OP_EXPECT_MORE_ALPHA };
|
||||||
|
|
||||||
|
#ifdef ENABLE_JSON
|
||||||
|
json_object * r3_edge_to_json_object(const edge * e);
|
||||||
|
json_object * r3_node_to_json_object(const node * n);
|
||||||
|
json_object * r3_route_to_json_object(const route * r);
|
||||||
|
|
||||||
|
const char * r3_node_to_json_string_ext(const node * n, int options);
|
||||||
|
const char * r3_node_to_json_pretty_string(const node * n);
|
||||||
|
const char * r3_node_to_json_string(const node * n);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* !R3_NODE_H */
|
#endif /* !R3_NODE_H */
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
lib_LTLIBRARIES = libr3.la
|
AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) $(JSONC_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99
|
||||||
|
AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS) $(JSONC_LIBS)
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = libr3core.la
|
||||||
# lib_LIBRARIES = libr3.a
|
# lib_LIBRARIES = libr3.a
|
||||||
libr3_la_SOURCES = node.c edge.c str.c token.c zmalloc.c match_entry.c
|
libr3core_la_SOURCES = node.c edge.c str.c token.c match_entry.c
|
||||||
|
|
||||||
|
if ENABLE_JSON
|
||||||
|
libr3core_la_SOURCES += json.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# libr3_la_LDFLAGS = -export-symbols-regex '^r3_|^match_'
|
# libr3_la_LDFLAGS = -export-symbols-regex '^r3_|^match_'
|
||||||
|
|
||||||
libr3_la_LIBADD=$(DEPS_LIBS)
|
# libr3_la_LIBADD=$(DEPS_LIBS) $(LIBOBJS) $(ALLOCA)
|
||||||
AM_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -Wall -std=c99
|
# libr3core_la_LIBADD=$(DEPS_LIBS)
|
||||||
|
# libr3core_la_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99
|
||||||
if USE_JEMALLOC
|
|
||||||
AM_CFLAGS += -ljemalloc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ENABLE_DEBUG
|
|
||||||
AM_CFLAGS += -ggdb -fprofile-arcs -ftest-coverage
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ENABLE_GRAPHVIZ
|
if ENABLE_GRAPHVIZ
|
||||||
libr3_la_SOURCES += gvc.c
|
libr3core_la_SOURCES += gvc.c
|
||||||
libr3_la_LIBADD += $(GVC_DEPS_LIBS)
|
|
||||||
AM_CFLAGS += $(GVC_DEPS_CFLAGS)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# AM_CFLAGS=$(DEPS_CFLAGS)
|
# AM_CFLAGS=$(DEPS_CFLAGS)
|
||||||
|
|
|
@ -4,9 +4,14 @@
|
||||||
# else
|
# else
|
||||||
# TESTS =
|
# TESTS =
|
||||||
# endif
|
# endif
|
||||||
TESTS = check_tree
|
TESTS =
|
||||||
AM_CFLAGS = -ggdb -Wall $(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include @CHECK_CFLAGS@
|
|
||||||
AM_LDFLAGS = $(DEPS_LIBS) -L$(top_builddir)/src -lr3 -lcheck @CHECK_LIBS@
|
AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99 -ggdb -Wall
|
||||||
|
AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS) -L$(top_builddir) -lr3 -lcheck @CHECK_LIBS@
|
||||||
|
|
||||||
|
if USE_JEMALLOC
|
||||||
|
AM_CFLAGS += -ljemalloc
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
|
@ -16,37 +21,32 @@ noinst_HEADERS = \
|
||||||
dist_noinst_DATA = \
|
dist_noinst_DATA = \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
if USE_JEMALLOC
|
|
||||||
AM_CFLAGS += -ljemalloc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ENABLE_GRAPHVIZ
|
|
||||||
TESTS += check_gvc
|
|
||||||
check_gvc_SOURCES = check_gvc.c
|
|
||||||
# check_gvc_LDADD = $(GVC_DEPS_LIBS) $(DEPS_LIBS) -L$(top_builddir)/src -lr3 @CHECK_LIBS@
|
|
||||||
# check_gvc_CFLAGS = $(GVC_DEPS_CFLAGS) $(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include @CHECK_CFLAGS@
|
|
||||||
AM_CFLAGS += $(GVC_DEPS_CFLAGS)
|
|
||||||
AM_LDFLAGS += $(GVC_DEPS_LIBS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
TESTS += benchmark
|
|
||||||
benchmark_SOURCES = bench.c
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# noinst_PROGRAMS = $(TESTS)
|
|
||||||
check_tree_SOURCES = check_tree.c
|
|
||||||
# check_tree_LDADD=$(DEPS_LIBS) -L$(top_builddir)/src -lr3 @CHECK_LIBS@
|
|
||||||
# check_tree_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include @CHECK_CFLAGS@
|
|
||||||
|
|
||||||
TESTS += check_slug
|
TESTS += check_slug
|
||||||
check_slug_SOURCES = check_slug.c
|
check_slug_SOURCES = check_slug.c
|
||||||
|
|
||||||
|
|
||||||
check_PROGRAMS = $(TESTS)
|
TESTS += check_tree
|
||||||
|
check_tree_SOURCES = check_tree.c
|
||||||
|
|
||||||
|
|
||||||
|
if ENABLE_JSON
|
||||||
|
TESTS += check_json
|
||||||
|
check_json_SOURCES = check_json.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if ENABLE_GRAPHVIZ
|
||||||
|
TESTS += check_gvc
|
||||||
|
check_gvc_SOURCES = check_gvc.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
TESTS += benchmark
|
||||||
|
benchmark_SOURCES = bench.c
|
||||||
|
|
||||||
|
check_PROGRAMS = $(TESTS)
|
||||||
|
|
||||||
# AM_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir)/include
|
# AM_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir)/include
|
||||||
# AM_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include
|
# AM_CFLAGS=$(DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include
|
||||||
CLEANFILES = check_tree.log
|
CLEANFILES = check_tree.log
|
||||||
|
# noinst_PROGRAMS = $(TESTS)
|
||||||
|
|
Loading…
Reference in a new issue