[Buildroot] [PATCH v2] radlib: new package

Kinsella, Ray ray.kinsella at intel.com
Mon Mar 28 19:40:27 UTC 2016


Delta's from v1:-

 * Complete rework of patch for the package's autotools implementation
  * Removed references to prefix.
  * Reworked database support to use PKG_CHECK_MODULES and
AC_PATH_PROG.
  * Used '--with--somedb' to indicate which database backend to build
with. (The radlib build ends up with conflicting symbols if more than
one is enabled at the same time, we prevent this in the package's .mk).
 * Complete rework of the Kconfig.
  * Database support is only enabled when BR2_PACKAGE_(mysql, sqlite or
postgresql) are set.
  * Database backend is selected by 'choice' when more than one is
enabled. 
 * Other tidy up's recommended for the v1 patch. 
  * Included a comment on radlib.hash.
  * Added signed off line and description to the patch.
  * Removed no_sync from mysql.
  * etc.

radlib is a rapid application development library for unix
multi-process applications. It uses SYS V IPC facilities and
FIFOs to provide an RTOS-like, event-driven, distributed
framework. Processes may be run as daemons or have a controlling
terminal.

Signed-off-by: Ray Kinsella <ray.kinsella at intel.com>
---
 package/Config.in                                  |   1 +
 ...0001-Update-to-autoconf-to-use-pkg-config.patch | 388
+++++++++++++++++++++
 package/radlib/Config.in                           |  37 ++
 package/radlib/radlib.hash                         |   2 +
 package/radlib/radlib.mk                           |  28 ++
 5 files changed, 456 insertions(+)
 create mode 100644 package/radlib/0001-Update-to-autoconf-to-use-pkg
-config.patch
 create mode 100644 package/radlib/Config.in
 create mode 100644 package/radlib/radlib.hash
 create mode 100644 package/radlib/radlib.mk

diff --git a/package/Config.in b/package/Config.in
index 8208da8..13fb380 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1260,6 +1260,7 @@ endif
 	source "package/protobuf-c/Config.in"
 	source "package/qhull/Config.in"
 	source "package/qlibc/Config.in"
+	source "package/radlib/Config.in"
 	source "package/startup-notification/Config.in"
 	source "package/tz/Config.in"
 	source "package/tzdata/Config.in"
diff --git a/package/radlib/0001-Update-to-autoconf-to-use-pkg
-config.patch b/package/radlib/0001-Update-to-autoconf-to-use-pkg
-config.patch
new file mode 100644
index 0000000..f98b9d5
--- /dev/null
+++ b/package/radlib/0001-Update-to-autoconf-to-use-pkg-config.patch
@@ -0,0 +1,388 @@
+From d4c1b74a6624da7cc217c6b1aef59dc60b7d20c0 Mon Sep 17 00:00:00 2001
+From: Ray Kinsella <ray.kinsella at intel.com>
+Date: Sun, 27 Mar 2016 16:38:16 +0100
+Subject: [PATCH] Update to autoconf to use pkg-config
+
+Updates to autoconf as follows;
+
+ * Use pkg-config for postgresql and sqlite
+ * Use mysql-config for mysql
+ * Also removed unecessary conditionals from sub-makefiles
+
+Signed-off-by: Ray Kinsella <ray.kinsella at intel.com>
+---
+ configure.ac          | 88
+++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.in          | 91 ------------------------------------------
---------
+ debug/Makefile.am     | 32 +++---------------
+ msgRouter/Makefile.am | 34 ++++---------------
+ src/Makefile.am       | 36 ++++++++------------
+ 5 files changed, 112 insertions(+), 169 deletions(-)
+ create mode 100644 configure.ac
+ delete mode 100644 configure.in
+
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..ba493f5
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,88 @@
++# Process this file with autoconf to produce a configure script.
++
++AC_PREREQ(2.5)
++AC_INIT([radlib],[2.12.0],[mteel2005 at gmail.com])
++AC_CONFIG_SRCDIR([h/radmsgLog.h])
++AM_INIT_AUTOMAKE([subdir-objects])
++AM_CONFIG_HEADER([config.h])
++
++AC_ARG_WITH([postgresql], AS_HELP_STRING([--with-postgresql], [Build
with postgresql]))
++if test "x$with_postgresql" = "xyes"; then
++ PKG_CHECK_MODULES([POSTGRESQL], [libpq], [have_libpq=yes],
[have_libpq=no])
++fi
++AM_CONDITIONAL([HAVE_POSTGRESQL],  [test "$have_libpq" = "yes"])
++
++AC_ARG_WITH([mysql], AS_HELP_STRING([--with-mysql], [Build with
mysql]))
++if test "x$with_mysql" = "xyes"; then
++        AC_PATH_PROG([MYSQL_CONFIG], [mysql_config])
++        if test "x$MYSQL_CONFIG" != "x";then
++                MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
++                MYSQL_LIBS=`$MYSQL_CONFIG --libs`
++                AC_SUBST([MYSQL_CFLAGS])
++                AC_SUBST([MYSQL_LIBS])
++        fi
++fi
++AM_CONDITIONAL([HAVE_MYSQL],  [test "x$MYSQL_CONFIG" != "x"])
++
++AC_ARG_WITH([sqlite], AS_HELP_STRING([--with-sqlite], [Build with
sqlite]))
++if test "x$with_sqlite" = "xyes"; then
++	PKG_CHECK_MODULES([SQLITE3], [sqlite3],
[have_libsqlite3=yes], [have_libsqlite3=no])
++fi
++AM_CONDITIONAL([HAVE_SQLITE3],  [test "$have_libsqlite3" = "yes"])
++
++# Check for big endian host:
++AC_C_BIGENDIAN()
++
++# Checks for programs.
++AC_PROG_CC
++AC_PROG_INSTALL
++AC_PROG_LIBTOOL
++
++# Set a flag here if we are cross compiling (must be after
AC_PROG_CC)
++AM_CONDITIONAL(CROSSCOMPILE, test x$cross_compiling = xyes)
++
++# Checks for libraries.
++AC_CHECK_LIB([c], [strncpy])
++AC_CHECK_LIB([m], [exp])
++
++# Checks for header files.
++AC_HEADER_STDC
++AC_HEADER_SYS_WAIT
++AC_CHECK_HEADERS([fcntl.h \
++                  stdlib.h \
++                  string.h \
++                  sys/time.h \
++                  syslog.h \
++                  termios.h \
++                  unistd.h])
++
++# Checks for typedefs, structures, and compiler characteristics.
++AC_C_CONST
++AC_TYPE_PID_T
++AC_HEADER_TIME
++AC_STRUCT_TM
++
++# Checks for library functions.
++AC_FUNC_FORK
++AC_FUNC_MALLOC
++AC_FUNC_SELECT_ARGTYPES
++AC_TYPE_SIGNAL
++AC_FUNC_STAT
++AC_FUNC_VPRINTF
++AC_CHECK_FUNCS([getcwd \
++                gethostname \
++                gettimeofday \
++                memset \
++                mkdir \
++                mkfifo \
++                select \
++                strchr \
++                strerror \
++                strrchr])
++
++AC_CONFIG_FILES([Makefile \
++                 src/Makefile \
++                 msgRouter/Makefile \
++                 debug/Makefile])
++AC_OUTPUT
++
+diff --git a/configure.in b/configure.in
+deleted file mode 100644
+index 47e507e..0000000
+--- a/configure.in
++++ /dev/null
+@@ -1,91 +0,0 @@
+-# Process this file with autoconf to produce a configure script.
+-
+-AC_PREREQ(2.5)
+-AC_INIT([radlib],[2.12.0],[mteel2005 at gmail.com])
+-AC_CONFIG_SRCDIR([h/radmsgLog.h])
+-AM_INIT_AUTOMAKE([radlib],[2.12.0])
+-AM_CONFIG_HEADER([config.h])
+-
+-AC_ARG_ENABLE(mysql,
+-[  --enable-mysql                 include radlib MySQL database
support],
+-[case "${enableval}" in
+-  yes) mysql=true ;;
+-  no)  mysql=false ;;
+-  *) mysql=false ;;
+-esac],[mysql=false])
+-AM_CONDITIONAL(MYSQL, test x$mysql = xtrue)
+-
+-AC_ARG_ENABLE(pgresql,
+-[  --enable-pgresql               include radlib postgreSQL database
support],
+-[case "${enableval}" in
+-  yes) pgresql=true ;;
+-  no)  pgresql=false ;;
+-  *) pgresql=false ;;
+-esac],[pgresql=false])
+-AM_CONDITIONAL(PGRESQL, test x$pgresql = xtrue)
+-
+-AC_ARG_ENABLE(sqlite,
+-[  --enable-sqlite                include radlib sqlite database
support],
+-[case "${enableval}" in
+-  yes) sqlite=true ;;
+-  no)  sqlite=false ;;
+-  *) sqlite=false ;;
+-esac],[sqlite=false])
+-AM_CONDITIONAL(SQLITE, test x$sqlite = xtrue)
+-
+-# Check for big endian host:
+-AC_C_BIGENDIAN()
+-
+-# Checks for programs.
+-AC_PROG_CC
+-AC_PROG_INSTALL
+-AC_PROG_LIBTOOL
+-
+-# Set a flag here if we are cross compiling (must be after
AC_PROG_CC)
+-AM_CONDITIONAL(CROSSCOMPILE, test x$cross_compiling = xyes)
+-
+-# Checks for libraries.
+-AC_CHECK_LIB([c], [strncpy])
+-AC_CHECK_LIB([m], [exp])
+-
+-# Checks for header files.
+-AC_HEADER_STDC
+-AC_HEADER_SYS_WAIT
+-AC_CHECK_HEADERS([fcntl.h \
+-                  stdlib.h \
+-                  string.h \
+-                  sys/time.h \
+-                  syslog.h \
+-                  termios.h \
+-                  unistd.h])
+-
+-# Checks for typedefs, structures, and compiler characteristics.
+-AC_C_CONST
+-AC_TYPE_PID_T
+-AC_HEADER_TIME
+-AC_STRUCT_TM
+-
+-# Checks for library functions.
+-AC_FUNC_FORK
+-AC_FUNC_MALLOC
+-AC_FUNC_SELECT_ARGTYPES
+-AC_TYPE_SIGNAL
+-AC_FUNC_STAT
+-AC_FUNC_VPRINTF
+-AC_CHECK_FUNCS([getcwd \
+-                gethostname \
+-                gettimeofday \
+-                memset \
+-                mkdir \
+-                mkfifo \
+-                select \
+-                strchr \
+-                strerror \
+-                strrchr])
+-
+-AC_CONFIG_FILES([Makefile \
+-                 src/Makefile \
+-                 msgRouter/Makefile \
+-                 debug/Makefile])
+-AC_OUTPUT
+-
+diff --git a/debug/Makefile.am b/debug/Makefile.am
+index 00f3b13..fde57d5 100644
+--- a/debug/Makefile.am
++++ b/debug/Makefile.am
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = raddebug
+ 
+ # define include directories
+-INCLUDES = \
++AM_CFLAGS = \
+ 		-I$(top_srcdir)/h \
+ 		-D_GNU_SOURCE
+ 
+@@ -15,30 +15,8 @@ raddebug_SOURCES  = \
+ # define libraries
+ raddebug_LDADD   = -lrad -lpthread 
+ 
+-if MYSQL
+-raddebug_LDADD   += -lmysqlclient
+-else
+-if PGRESQL
+-raddebug_LDADD   += -lpq
+-endif
+-endif
+-if SQLITE
+-raddebug_LDADD   += -lsqlite3
+-endif
+-
+ # define library directories
+-raddebug_LDFLAGS = -L../src/.libs -L$(prefix)/lib -L/usr/lib
+-INCLUDES         += -I$(prefix)/include -I/usr/include
+-
+-if MYSQL
+-raddebug_LDFLAGS += -L$(prefix)/lib64/mysql -L$(prefix)/lib/mysql 
-L/usr/lib64/mysql -L/usr/lib/mysql
+-else
+-if PGRESQL
+-raddebug_LDFLAGS += -L$(prefix)/pgsql/lib
+-INCLUDES         += -I$(prefix)/pgsql/include
+-endif
+-endif
+-
+-if CROSSCOMPILE
+-raddebug_LDFLAGS += $(prefix)/lib/crt1.o $(prefix)/lib/crti.o
$(prefix)/lib/crtn.o
+-endif
++raddebug_LDFLAGS = -L../src/.libs \
++		$(SQLITE3_LIBS) \
++		$(MYSQL_LIBS) \
++		$(POSTGRESQL_LIBS)
+diff --git a/msgRouter/Makefile.am b/msgRouter/Makefile.am
+index 5a20421..6f13a4e 100644
+--- a/msgRouter/Makefile.am
++++ b/msgRouter/Makefile.am
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = radmrouted
+ 
+ # define include directories
+-INCLUDES = \
++AM_CFLAGS = \
+ 		-I$(top_srcdir)/h \
+ 		-D_GNU_SOURCE
+ 
+@@ -13,32 +13,10 @@ radmrouted_SOURCES  = \
+ 		$(top_srcdir)/msgRouter/msgRouter.c
+ 
+ # define libraries
+-radmrouted_LDADD   = -lrad -lpthread
+-
+-if MYSQL
+-radmrouted_LDADD   += -lmysqlclient
+-else
+-if PGRESQL
+-radmrouted_LDADD   += -lpq
+-endif
+-endif
+-if SQLITE
+-radmrouted_LDADD   += -lsqlite3
+-endif
++radmrouted_LDADD  = -lrad -lpthread
+ 
+ # define library directories
+-radmrouted_LDFLAGS = -L../src/.libs -L$(prefix)/lib -L/usr/lib
+-INCLUDES           += -I$(prefix)/include -I/usr/include
+-
+-if MYSQL
+-radmrouted_LDFLAGS += -L$(prefix)/lib64/mysql -L$(prefix)/lib/mysql 
-L/usr/lib64/mysql -L/usr/lib/mysql
+-else
+-if PGRESQL
+-radmrouted_LDFLAGS += -L$(prefix)/lib -L$(prefix)/pgsql/lib
+-INCLUDES           += -I$(prefix)/pgsql/include
+-endif
+-endif
+-
+-if CROSSCOMPILE
+-radmrouted_LDFLAGS += $(prefix)/lib/crt1.o $(prefix)/lib/crti.o
$(prefix)/lib/crtn.o
+-endif
++radmrouted_LDFLAGS = -L../src/.libs \
++			$(SQLITE3_LIBS) \
++			$(MYSQL_LIBS) \
++			$(POSTGRESQL_LIBS)
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 38b2ac8..25d16cf 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -12,45 +12,35 @@ SUBDIRS =
+ #define the library to be built
+ lib_LTLIBRARIES = librad.la
+ 
+-if MYSQL
+-MY_INCLUDES 	= \
+-		-I$(prefix)/include/mysql \
+-		-I/usr/include/mysql
+-MY_SOURCES  	= \
++if HAVE_MYSQL
++MYSQL_SOURCES  	= \
+ 		$(top_srcdir)/database/mysql/my_database.c \
+ 		$(top_srcdir)/src/raddatabase.c
+ MYSQL_HDRS	= \
+ 		$(top_srcdir)/h/raddatabase.h
+ endif
+-if PGRESQL
+-PG_INCLUDES 	= \
+-		-I$(prefix)/include \
+-		-I/usr/include
+-PG_SOURCES	= \
++if HAVE_POSTGRESQL
++PGSQL_SOURCES	= \
+ 		$(top_srcdir)/database/postgresql/pg_database.c \
+ 		$(top_srcdir)/src/raddatabase.c
+ PGSQL_HDRS	= \
+ 		$(top_srcdir)/h/raddatabase.h \
+ 		$(top_srcdir)/database/postgresql/_pg-types.h
+ endif
+-if SQLITE
+-SQ_INCLUDES 	= \
+-		-I$(prefix)/include \
+-		-I/usr/include
+-SQ_SOURCES	= \
++if HAVE_SQLITE3
++SQLITE_SOURCES	= \
+ 		$(top_srcdir)/src/radsqlite.c
+ SQLITE_HDRS	= \
+ 		$(top_srcdir)/h/radsqlite.h
+ endif
+ 
+ # define include directories
+-INCLUDES = \
++AM_CFLAGS = \
+ 		-I$(top_srcdir)/h \
+-		-I$(prefix)/include \
+ 		-D_GNU_SOURCE \
+-		$(MY_INCLUDES) \
+-		$(PG_INCLUDES) \
+-		$(SQ_INCLUDES)
++		$(MYSQL_CFLAGS) \
++		$(SQLITE3_CFLAGS) \
++		$(POSTGRESQL_CFLAGS)
+ 
+ 
+ 
+@@ -86,9 +76,9 @@ librad_la_SOURCES  = \
+ 		$(top_srcdir)/src/radtimers.c \
+ 		$(top_srcdir)/src/radtimeUtils.c \
+ 		$(top_srcdir)/src/radUDPsocket.c \
+-		$(MY_SOURCES) \
+-		$(PG_SOURCES) \
+-		$(SQ_SOURCES)
++		$(MYSQL_SOURCES) \
++		$(PGSQL_SOURCES) \
++		$(SQLITE_SOURCES)
+ 
+ 
+ # define the header files we install for the library
+-- 
+2.4.3
+
diff --git a/package/radlib/Config.in b/package/radlib/Config.in
new file mode 100644
index 0000000..e77e03c
--- /dev/null
+++ b/package/radlib/Config.in
@@ -0,0 +1,37 @@
+config BR2_PACKAGE_RADLIB
+	bool "radlib"
+	help
+	  radlib is a rapid application development library for unix
+	  multi-process applications. It uses SYS V IPC facilities and
+	  FIFOs to provide an RTOS-like, event-driven, distributed
framework.
+	  Processes may be run as daemons or have a controlling
terminal.
+	  
+	  http://sourceforge.net/projects/radlib/
+
+choice
+	prompt "radlib database backend"
+	depends on BR2_PACKAGE_RADLIB
+	depends on BR2_PACKAGE_SQLITE \
+		|| BR2_PACKAGE_MYSQL \
+		|| BR2_PACKAGE_POSTGRESQL
+	help$
+		Selects the backend database: sqlite, mysql or
postgresql
+
+config BR2_PACKAGE_RADLIB_SQLITE
+	bool "sqlite"
+	depends on BR2_PACKAGE_SQLITE
+	help
+		Configure radlib to use a sqlite database backend
+
+config BR2_PACKAGE_RADLIB_MYSQL
+	bool "mysql"
+	depends on BR2_PACKAGE_MYSQL
+	help
+		Configure radlib to use a mysql database backend
+
+config BR2_PACKAGE_RADLIB_POSTGRESQL
+	bool "postgresql"
+	depends on BR2_PACKAGE_POSTGRESQL
+	help
+		Configure radlib to use a postgresql database backend
+endchoice
diff --git a/package/radlib/radlib.hash b/package/radlib/radlib.hash
new file mode 100644
index 0000000..2fbfbba
--- /dev/null
+++ b/package/radlib/radlib.hash
@@ -0,0 +1,2 @@
+# From http://sourceforge.net/projects/radlib/files/
+sha256 
 82b98bb5e08a500dea1e4252843b9c772fa1fb67ac8ab89ed64abdd5e22eca66 
 radlib-2.12.0.tar.gz
diff --git a/package/radlib/radlib.mk b/package/radlib/radlib.mk
new file mode 100644
index 0000000..5ff55ac
--- /dev/null
+++ b/package/radlib/radlib.mk
@@ -0,0 +1,28 @@
+######################################################################
##########
+#
+# radlib
+#
+######################################################################
##########
+
+RADLIB_VERSION = 2.12.0
+RADLIB_SITE = http://downloads.sourceforge.net/radlib
+RADLIB_INSTALL_STAGING = YES
+RADLIB_LICENSE = BSD-2c
+RADLIB_LICENSE_FILES = COPYING
+RADLIB_AUTORECONF = YES
+RADLIB_DEPENDENCIES = host-pkgconf
+
+ifeq ($(BR2_PACKAGE_RADLIB_SQLITE),y)
+	RADLIB_CONF_OPTS += --with-sqlite
+endif
+
+ifeq ($(BR2_PACKAGE_RADLIB_MYSQL),y)
+	RADLIB_CONF_ENV=ac_cv_path_MYSQL_CONFIG="$(STAGING_DIR)/usr/bi
n/mysql_config"
+	RADLIB_CONF_OPTS += --with-mysql
+endif
+
+ifeq ($(BR2_PACKAGE_RADLIB_POSTGRESQL),y)
+	RADLIB_CONF_OPTS += --with-postgresql
+endif
+
+$(eval $(autotools-package))
-- 
2.4.3


More information about the buildroot mailing list