uClibc building support (fli4l 2.1.x)

This commit is contained in:
Thomas Ries 2003-03-23 01:11:45 +00:00
parent 191b6e06dc
commit b724b16780
4 changed files with 171 additions and 8 deletions

View File

@ -1,5 +1,6 @@
0.2.8 0.2.8
===== =====
- 24-Mar-2003: - made compile with uClibc (see doc/FLI4L_HOWTO.txt)
- 22-Mar-2003: - made compile on SUSE5.3 (libc5) - 22-Mar-2003: - made compile on SUSE5.3 (libc5)
- added --enable-almost-static feature switch. This will - added --enable-almost-static feature switch. This will
build siproxd statically linked against libosip & pthreads build siproxd statically linked against libosip & pthreads

4
README
View File

@ -39,9 +39,7 @@ HOW TO GET STARTED
- ./configure - ./configure
For Flifl: use ./configure --enable-almost-static For Flifl: see doc/FLI4L_HOWTO.txt
This will build siproxd statically linked against libosib, pthreads and
dynamically against libc.
- make - make

View File

@ -6,7 +6,8 @@ dnl 8-Sep-2002 tries included more tests for used functions
dnl 17-Sep-2002 tries fail configure if needed libs not there dnl 17-Sep-2002 tries fail configure if needed libs not there
dnl 14-Nov-2002 tries support for *BSD systems dnl 14-Nov-2002 tries support for *BSD systems
dnl 22-Mar-2003 tries check for sockaddr_t, hstrerror() dnl 22-Mar-2003 tries check for sockaddr_t, hstrerror()
dnl feature almost-static (for Fli4l use) dnl --enable-almost-static (for Fli4l use)
dnl --enable-uclibc (uClibc building support)
dnl dnl
dnl dnl
dnl dnl
@ -106,6 +107,41 @@ case "$target" in
;; ;;
esac esac
dnl
dnl uClibc support (only available on Linux, yet)
dnl
case "$target" in
*-*-linux*)
uclibc_path="/usr/i386-linux-uclibc/"
AC_MSG_CHECKING("uClibc path")
AC_ARG_WITH(uclibc-path,
[ --with-uclibc-path=DIR directory to uClibc development],
uclibc_path="$withval" )
AC_MSG_RESULT($uclibc_path)
AC_MSG_CHECKING("build against uClibc")
AC_ARG_ENABLE(uclibc,
[ --enable-uclibc build against a uClibc],
build_uclibc=$enableval,
build_uclibc="no")
AC_MSG_RESULT($build_uclibc)
;;
*)
AC_MSG_RESULT("FEATURE uclibc not available on this platform")
;;
esac
if test "x$build_uclibc" = "xyes"; then
CC=$uclibc_path/bin/i386-uclibc-gcc
LDD=$uclibc_path/bin/i386-uclibc-ldd
LD=$uclibc_path/bin/i386-uclibc-ld
CPPFLAGS=" -I $uclibc_path/include/ $CPPFLAGS"
LIBS=" -L $uclibc_path/lib/ $LIBS"
fi
dnl dnl
dnl Features: dnl Features:
dnl almost-static (only available on Linux, yet) dnl almost-static (only available on Linux, yet)
@ -124,12 +160,26 @@ case "$target" in
AC_MSG_RESULT("FEATURE almost-static not available on this platform") AC_MSG_RESULT("FEATURE almost-static not available on this platform")
;; ;;
esac esac
if test "x$build_almost_static" = "xyes"; then
if test "x$build_uclibc" = "xyes"; then
dnl uClibc: make libosip static
build_static_libosip="yes"
build_static_pthread="no"
else
dnl must be standard libc: make libosip and libpthread static
build_static_libosip="yes"
build_static_pthread="yes"
fi
else
build_static_libosip="no"
build_static_pthread="no"
fi
dnl dnl
dnl Check for libosip dnl Check for libosip
dnl dnl
if test "x$build_almost_static" = "xno"; then if test "x$build_static_libosip" = "xno"; then
dnl link dynamically (default) dnl link dynamically (default)
AC_CHECK_LIB(osip, parser_init,, AC_CHECK_LIB(osip, parser_init,,
echo "*** ERROR: libosip is required!";exit 1;) echo "*** ERROR: libosip is required!";exit 1;)
@ -137,7 +187,7 @@ else
dnl link statically to this lib dnl link statically to this lib
dnl (this probably only will work on linux yet...) dnl (this probably only will work on linux yet...)
AC_MSG_CHECKING("where I can find libosip.a") AC_MSG_CHECKING("where I can find libosip.a")
libosip_static=`find /lib /usr/lib /usr/local/lib $extra_libs \ libosip_static=`find $extra_libs /lib /usr/lib /usr/local/lib \
-name libosip.a 2>/dev/null|head -1` -name libosip.a 2>/dev/null|head -1`
if test "x$libosip_static" != "x"; then if test "x$libosip_static" != "x"; then
LIBS="$libosip_static $LIBS" LIBS="$libosip_static $LIBS"
@ -153,7 +203,7 @@ dnl Check for pthreads
dnl dnl
ACX_PTHREAD(, ACX_PTHREAD(,
echo "*** ERROR: pthreads is required!"; exit 1;) echo "*** ERROR: pthreads is required!"; exit 1;)
if test "x$build_almost_static" = "xno"; then if test "x$build_static_pthread" = "xno"; then
dnl link dynamically (default) dnl link dynamically (default)
LIBS="$PTHREAD_LIBS $LIBS" LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
@ -162,7 +212,7 @@ else
dnl link statically to this lib dnl link statically to this lib
dnl (this probably only will work on linux yet...) dnl (this probably only will work on linux yet...)
AC_MSG_CHECKING("where I can find static threads library") AC_MSG_CHECKING("where I can find static threads library")
libpthreads_static=`find /lib /usr/lib /usr/local/lib $extra_libs \ libpthreads_static=`find $extra_libs /lib /usr/lib /usr/local/lib \
-name 'lib*thread*.a' 2>/dev/null| \ -name 'lib*thread*.a' 2>/dev/null| \
egrep 'lib[p]?thread[s]?.a' |head -1` egrep 'lib[p]?thread[s]?.a' |head -1`
if test "x$libpthreads_static" != "x"; then if test "x$libpthreads_static" != "x"; then

114
doc/FLI4L_HOWTO.txt Normal file
View File

@ -0,0 +1,114 @@
compiling siproxd for FLI4L
===========================
2.0.x (libc5 based):
1) LIBOSIP
On an libc5 system (eg SUSE 5.3), first build and install
libosip. Probably you get an error when building in file
parser/port_misc.c, telling you about a non existing include
file sys/unistd.h. To fix this, simply edit the .c file and
replace the erroneous include statement to include <unistd.h>
instead of <sys/unistd.h>
$ ./configure
$ make
$ make install
2) SIPROXD
Delete the config.cache file.
Configure siproxd:
$ ./configure --enable-almost-static
This will build siproxd statically linked against libosib,
pthreads and dynamically against libc. Then
$ make
2.1.x (uClibc based):
Prerequisite: uClibc development enviroment installed
1) LIBOSIP
Does not build very smoothly and properly. However, to link siproxd
STATICALLY against libosip this procedure might work.
Apply same fix to port_misc as described above.
Apply the following path to configure.in
---snipp---
--- configure.in.orig Sat Jun 15 02:26:59 2002
+++ configure.in Sun Mar 23 01:44:12 2003
@@ -52,6 +52,38 @@
dnl declare --enable-* args and collect ac_help strings
+dnl&&&&&&&&&&&&&&&&&&
+dnl
+dnl uClib support (only available on Linux, yet)
+dnl
+uclib_path="/usr/i386-linux-uclibc/"
+AC_MSG_CHECKING("uClib path")
+AC_ARG_WITH(uclib-path,
+ [ --with-uclib-path=DIR directory to uClib development],
+ uclib_path="$withval" )
+AC_MSG_RESULT($uclib_path)
+
+AC_MSG_CHECKING("build against uClib")
+AC_ARG_ENABLE(uclib,
+ [ --enable-uclib build against a uClib],
+ build_uclib=$enableval,
+ build_uclib="no")
+AC_MSG_RESULT($build_uclib)
+
+
+if test "x$build_uclib" = "xyes"; then
+
+dnl export PATH=$uclib_path/bin:$PATH
+dnl export UCLIBC_DEVEL_PREFIX=$uclib_path
+
+ CC=$uclib_path/bin/i386-uclibc-gcc
+ LDD=$uclib_path/bin/i386-uclibc-ldd
+ LD=$uclib_path/bin/i386-uclibc-ld
+ CPPFLAGS=" -I $uclib_path/include/ $CPPFLAGS"
+ LIBS="-L $uclib_path/lib/ $LIBS"
+fi
+dnl&&&&&&&&&&&&&&&&&&
+
AC_ARG_ENABLE(debug,
[ --disable-debug turn off debugging.],
disable_debug=$enableval,disable_debug="yes")
---snipp---
Create new ./configure script
$ aclocal -I scripts/
$ autoconf
Configure and build libosip:
$ ./configure --prefix=<libosip_install_prefix>
--with-uclib-path=<path_to_your/usr/i386-linux-uclibc>
--enable-uclib
$ make -i clean
$ make -i
$ make -i install
Ignore any compile errors!
(This is just a very dirty hack to get libosip half way built)
2) SIPROXD
Delete the config.cache file.
Configure siproxd:
$ ./configure --with-uclibc-path=<path_to_your/usr/i386-linux-uclibc>
--enable-uclibc --with-extra-includes=<libosip_install_prefix>/include
--with-extra-libs=<libosip_install_prefix>/lib --enable-almost-static
This will build siproxd statically linked against libosib and
dynamically linked against uClibc.
$ make
"$ ldd src/siproxd" reports:
libpthread.so.0 => <path_to/i386-linux-uclibc>/lib/libpthread.so.0
libc.so.0 => <path_to/i386-linux-uclibc>/lib/libc.so.0
ld-uClibc.so.0 => <path_to/i386-linux-uclibc>/lib/ld-uClibc.so.0
Does Flifl 2.1.x include the full uClibc dynamic libraries (especially
the pthreads.so)?