Provide libltdl in source tarballs

Initializing libltdl is now done by the LTDL_INIT macro in configure.ac.
This now creates a libltdl directory in the tree (not tracked in Git)
when autoreconf is run.  The downside is that this complicates the build
a little bit with the advantage that the build can now take place on a
system that does not have libltdl-dev installed as Hamlib will build on
such systems by passing the '--with-included-ltdl' flag to the configure
script.  In particular, this simplifies the build on Linux for the mingw32
host by not having to run libtoolize manually and assures that libltdl
is built with the same build and host architectures as Hamlib.

Now check if '--with-included-ltdl' has been passed to configure and if
not, only then test for the presence of an installed ltdl.h.

Commented out AM_MAINTAINER_MODE macro.  It is recommended by the
Automake manual that this macro and its configure options not be used as
the Autotools system is designed to regenerate its files.  Let me know
if this is problem as it can be reversed easily enough.  The autogen.sh
script no longer passes the '--enable-maintainer-mode' option to
configure when bootstrapping the build system from Git.

Minor edits in configure.ac to improve readability.

Updated build-win32 files in scripts/
Hamlib-3.0
Nate Bargmann 2012-10-07 08:31:10 -05:00
rodzic 674d4375db
commit 52be3c47b8
7 zmienionych plików z 131 dodań i 83 usunięć

3
.gitignore vendored
Wyświetl plik

@ -32,9 +32,12 @@ hamlib-*.tar.gz
include/config.h
include/config.h.in
include/stamp-h1
libltdl/
macros/argz.m4
macros/libtool.m4
macros/ltoptions.m4
macros/ltsugar.m4
macros/ltdl.m4
macros/ltversion.m4
macros/lt~obsolete.m4
rpcrig/rpc.rigd

Wyświetl plik

@ -10,7 +10,7 @@ EXTRA_DIST = PLAN TODO LICENSE hamlib.m4 hamlib.pc.in README.developer \
README.betatester README.win32
# BINDINGS_LIST subdirs are no longer built
SUBDIRS = macros include lib $(subdirs) src @BACKEND_LIST@ @ROT_BACKEND_LIST@ \
SUBDIRS = libltdl macros include lib $(subdirs) src @BACKEND_LIST@ @ROT_BACKEND_LIST@ \
@BINDINGS@ tests doc
# perl and kylix subdirs are no longer distributed

Wyświetl plik

@ -77,4 +77,5 @@ if test -z "$*"; then
echo "to pass any to it, please specify them on the $0 command line."
fi
$SRCDIR/configure --enable-maintainer-mode "$@"
# $SRCDIR/configure --enable-maintainer-mode "$@"
$SRCDIR/configure "$@"

Wyświetl plik

@ -21,6 +21,7 @@ AC_INIT([Hamlib],
AC_CONFIG_SRCDIR([include/hamlib/rig.h])
AC_CONFIG_MACRO_DIR([macros])
AC_CONFIG_HEADERS([include/config.h])
## ------------------------ ##
@ -29,14 +30,13 @@ AC_CONFIG_MACRO_DIR([macros])
dnl Passing AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION to AM_INIT_AUTOMAKE is
dnl obsolete as these values are obtained from the AC_INIT macro.
AM_INIT_AUTOMAKE([-Wall])
AC_CONFIG_HEADERS([include/config.h])
dnl Clean compilation output makes compiler warnings more visible
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl TODO: Maintainer mode has arguments against its use.
dnl Consider its removal at some point.
AM_MAINTAINER_MODE
dnl AM_MAINTAINER_MODE
## ------------------------------ ##
@ -162,7 +162,7 @@ dnl Checks for libraries.
AC_CHECK_FUNC([sin], [MATH_LIBS=""], [MATH_LIBS="-lm"])
AC_SUBST([MATH_LIBS])
dnl Interactive UNIX? You've got to be kidding!
dnl Interactive UNIX? You have got to be kidding!
dnl #--------------------------------------------------------------------
dnl # Interactive UNIX requires -linet instead of -lsocket, plus it
dnl # needs net/errno.h to define the socket-related error codes.
@ -176,10 +176,10 @@ dnl AC_CHECK_LIB([inet], [main], [LIBS="$LIBS -linet"], [], [])
# special considerations:
# 1. Use "connect" and "accept" to check for -lsocket, and
# "gethostbyname" to check for -lnsl.
# 2. Use each function name only once: can't redo a check because
# autoconf caches the results of the last check and won't redo it.
# 2. Use each function name only once: cannot redo a check because
# autoconf caches the results of the last check and will not redo it.
# 3. Use -lnsl and -lsocket only if they supply procedures that
# aren't already present in the normal libraries. This is because
# are not already present in the normal libraries. This is because
# IRIX 5.2 has libraries, but they aren't needed and they're
# bogus: they goof up name resolution if used.
# 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
@ -243,7 +243,7 @@ AC_CHECK_FUNCS([strcasecmp strchr strdup strerror strrchr strstr strtol])
AC_CHECK_FUNCS([cfmakeraw setitimer ioctl sigaction])
AC_FUNC_ALLOCA
dnl Doesn't seem to be needed anymore
dnl Does not seem to be needed anymore
dnl AC_FUNC_MALLOC
dnl Obsolecent macro
@ -258,59 +258,70 @@ AC_LIBOBJ([dummy])
## ------------------------ ##
## N.b. LT_INIT([dlopen], [win32-dll]) does not work for older libtool
LT_PREREQ([2.2.6b])
# Name the subdirectory that contains libltdl sources
LT_CONFIG_LTDL_DIR([libltdl])
# Name the subdirectory that contains libltdl sources
LT_INIT([dlopen win32-dll])
# Enable building of the convenience libltdl library
# (requires --with-included-ltdl be given to configure for the included
# libltdl to be used), useful on systems where libltdl-dev is not installed.
LTDL_INIT([convenience])
dnl AC_LIBTOOL_DLOPEN
dnl AC_LIBTOOL_WIN32_DLL
dnl AC_PROG_LIBTOOL
dnl AM_PROG_LIBTOOL
INCLTDL=""
LIBLTDL="-lltdl"
AC_SUBST([INCLTDL])
AC_SUBST([LIBLTDL])
dnl INCLTDL=""
dnl LIBLTDL="-lltdl"
dnl AC_SUBST([INCLTDL])
dnl AC_SUBST([LIBLTDL])
## ---------------------------------- ##
## Custom host libtool configurations ##
## ---------------------------------- ##
## -------------------------- ##
## Custom host configurations ##
## -------------------------- ##
AS_CASE(["$host_os"],
[freebsd*], [
AM_CPPFLAGS="-I/usr/local/include ${AM_CPPFLAGS}"
AM_LDFLAGS="${AM_LDFLAGS} -L/usr/local/lib"
AC_SUBST([AM_LDFLAGS])],
AM_CPPFLAGS="-I/usr/local/include ${AM_CPPFLAGS}"
AM_LDFLAGS="${AM_LDFLAGS} -L/usr/local/lib"
AC_SUBST([AM_LDFLAGS])],
[darwin* | rhapsody*], [
# Trick from http://fink.sourceforge.net/doc/porting/
# TODO: check the compiler actually does support these options
CFLAGS="${CFLAGS} -no-cpp-precomp"
CXXFLAGS="${CXXFLAGS} -no-cpp-precomp"
# Trick from http://fink.sourceforge.net/doc/porting/
# TODO: check the compiler actually does support these options
CFLAGS="${CFLAGS} -no-cpp-precomp"
CXXFLAGS="${CXXFLAGS} -no-cpp-precomp"
# Tell the OS X linker to allocate enough space inside the
# libhamlib.X.dylib shared object for install_name_tool(1) to
# work. This is useful when including hamlib in an app bundle.
OSXLDFLAGS="-Wl,-headerpad_max_install_names"
AC_SUBST([OSXLDFLAGS])],
# Tell the OS X linker to allocate enough space inside the
# libhamlib.X.dylib shared object for install_name_tool(1) to
# work. This is useful when including hamlib in an app bundle.
OSXLDFLAGS="-Wl,-headerpad_max_install_names"
AC_SUBST([OSXLDFLAGS])],
[mingw* | pw32* | cygwin*], [
WINLDFLAGS="-Wl,--output-def,libhamlib.def -Wl,--add-stdcall-alias"
AC_SUBST([WINLDFLAGS])
WINLDFLAGS="-Wl,--output-def,libhamlib.def -Wl,--add-stdcall-alias"
AC_SUBST([WINLDFLAGS])
# Prerequisite for Mingw build (import and build internal ./libltdl):
# $ libtoolize --ltdl
# $ ( cd libltdl; ./configure --host=i586-mingw32msvc && make )
# Use internal ./libltdl during configure:
CFLAGS="${CFLAGS} -I./libltdl"
dnl # Prerequisite for Mingw build (import and build internal ./libltdl):
dnl # $ libtoolize --ltdl
dnl # $ ( cd libltdl; ./configure --host=i586-mingw32msvc && make )
dnl # Use internal ./libltdl during configure:
dnl CFLAGS="${CFLAGS} -I./libltdl"
# use internal $(top_builddir)/libltdl during build:
INCLTDL="-I\$(top_builddir)/libltdl"
AC_SUBST([INCLTDL])
dnl # use internal $(top_builddir)/libltdl during build:
dnl INCLTDL="-I\$(top_builddir)/libltdl"
dnl AC_SUBST([INCLTDL])
# - use internal $(top_builddir)/libltdl during build and library 'ltdlc':
LIBLTDL="-L\$(top_builddir)/libltdl -lltdlc"
AC_SUBST([LIBLTDL])
dnl # - use internal $(top_builddir)/libltdl during build and library 'ltdlc':
dnl LIBLTDL="-L\$(top_builddir)/libltdl -lltdlc"
dnl AC_SUBST([LIBLTDL])
# Enable ld's "auto import" for executables
WINEXELDFLAGS="-Wl,--enable-auto-import"
AC_SUBST([WINEXELDFLAGS])
# Enable ld's "auto import" for executables
WINEXELDFLAGS="-Wl,--enable-auto-import"
AC_SUBST([WINEXELDFLAGS])
])
## ---------------------- ##
@ -318,12 +329,15 @@ AS_CASE(["$host_os"],
## ---------------------- ##
dnl Check whether we can actually find ltdl.h
AC_CHECK_HEADER([ltdl.h],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([ltdl.h not found. Please install the libltdl development
files package which provides /usr/include/ltdl.h
(perhaps called 'libltdl-dev' or 'libltdl-devel').])
])
dnl (only needed if not using included libltdl).
AS_IF([test "${with_included_ltdl}" = "no"], [
AC_CHECK_HEADER([ltdl.h],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([ltdl.h not found. Please install the libltdl development
files package which provides /usr/include/ltdl.h
(perhaps called 'libltdl-dev' or 'libltdl-devel').])
])
])
dnl Check if C99 struct initializers are supported
@ -406,7 +420,7 @@ AS_IF([test "${cf_with_cxx_binding}" = "yes"],
[BINDINGS="${BINDINGS} c++"])
dnl Check if perl-binding not wanted, default is to not build it
dnl Check if perl-binding is wanted, default is to not build it
# Perl binding
AC_MSG_CHECKING([whether to build perl binding and demo])
@ -442,7 +456,7 @@ AC_ARG_WITH([tcl-binding],
[build_tcl=no])
AC_MSG_RESULT([$build_tcl])
dnl SC_PATH_TCLCONFIG and SC_LOAD_TCLCONFIG from macros/tcl.m4
dnl SC_PATH_TCLCONFIG and SC_LOAD_TCLCONFIG from macros/tcl.m4
AS_IF([test x"${build_tcl}" = "xyes"],[
SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG
@ -690,6 +704,8 @@ echo \
With Perl binding ${cf_with_perl_binding}
With Python binding ${cf_with_python_binding}
With TCL binding ${build_tcl}
With included ltdl ${with_included_ltdl}
Enable Rig Matrix ${enable_rigmatrix}
Enable WinRadio ${cf_with_winradio}
Enable USRP ${cf_with_usrp}

Wyświetl plik

@ -11,10 +11,9 @@ In these steps the release or daily snapshot tarball is unpacked in ~/builds
for the Win32 build and all operations are done from there unless otherwise
noted.
Under Linux you need the mingw32 package to cross-compile it, an internal
copy of libltdl (configured and built as below), zip to create the archive,
the tofrodos or dos2unix package installed to convert to DOS text format,
and Wine plus the free MVC++Toolkit available from:
Under Linux you need the mingw32 package to cross-compile it, zip to create
the archive, the tofrodos or dos2unix package installed to convert to DOS
text format, and Wine plus the free MVC++Toolkit available from:
http://uploading.com/files/HNH73WB3/VCToolkitSetup%28v1.01%29%282004.07.06%29.zip.html
@ -64,13 +63,19 @@ Build for Win32, cross-compile on Linux:
Extract the Hamlib tarball into ~/builds (if you prefer another directory
be sure to edit the BUILD_DIR variable in the build-win32.sh script):
$ tar xvfz ~/Downloads/hamlib-1.2.14~git-72c52d6-20110618.tar.gz
$ tar xvfz ~/Downloads/hamlib-3.0~git-???????-20121007.tar.gz
Invoke the build-win32.sh script (it requires a Bash shell) with the name
of the directory/Hamlib version to build (you need not cd into the hamlib
directory, although it won't hurt. The script uses absolute paths):
Invoke the build-win32.sh script (it requires a Bash shell) with the name of
the directory/Hamlib version to build (you need not cd into the hamlib
directory, although it won't hurt. The build-win32 script uses absolute
paths):
build-win32.sh hamlib-1.2.14~git
$ build-win32.sh hamlib-3.0~git
Note: As of 7 Oct 2012 the build should be independent of installed libtool
versions as libltdl is included in the source tarball (enabled with the
--with-included-ltdl option to the configure script (which this script
passes to configure)). The note below should now be obsolete.
Note: At this time (18 Jun 2011) the build will fail on Debian Unstable due
to a libtool version mismatch between libtool 2.2.6b included in the

Wyświetl plik

@ -1,5 +1,7 @@
#!/bin/bash
# Builds Hamlib 3.x Win32 binary distribution.
# A script to build a set of Win32 binary DLLs from a Hamlib tarball.
# This script assumes that the Hamlib tarball has been extracted to the
# directory specified in $build_dir and that libusb-win32-bin-1.x.y.z has also
@ -37,8 +39,6 @@ else
exit $EX_NOINPUT
fi
# FIXME: Determine RELEASE only from AC_INIT line to avoid any other similar
# values and avoid hard coded version number.
RELEASE=`/usr/bin/awk 'BEGIN{FS="["; RS="]"} /\[3\./ {print $2}' ./configure.ac`
INST_DIR=`pwd`/mingw-inst
ZIP_DIR=`pwd`/hamlib-win32-${RELEASE}
@ -50,7 +50,7 @@ cat > README.win32-bin <<END_OF_README
What is it?
===========
This ZIP archive contains a build of Hamlib-$RELEASE
This ZIP archive or Windows installer contains a build of Hamlib-$RELEASE
cross-compiled for Win32 using MinGW under Xubuntu Linux 10.10 (nice, heh!).
The DLL has a cdecl interface for MS VC++.
@ -68,20 +68,32 @@ reasonable choice.
Make sure *all* the .DLL files are in your PATH (leave them in the bin
directory and set the PATH). To set the PATH environment variable in
Windows 2000 and Windows XP (need info on Vista and Win 7) do the following:
Windows 2000, Windows XP, and Windows 7 (need info on Vista) do the
following:
* W2k/XP: Right-click on "My Computer"
Win7: Right-click on "Computer"
* W2k/XP: Click the "Advanced" tab of the "System Properties" dialog
Win7: Click the "Advanced system settings" link in the System dialog
* Click the "Environment Variables" button of the pop-up dialog
* Right-click on "My Computer"
* Select "Properties" from the pop-up menu
* Click the "Advanced" tab of the "System Properties" dialog
* Click the "Environment Variables" button
* Select "Path" in the "System variables" box of the "Environment Variables"
dialog
NB: If you are not the administrator, system policy may not allow editing
the path variable. The complete path to an executable file will need to
be given to run one of the Hamlib programs.
* Click the Edit button
* Now add the Hamlib path in the "Variable Value: edit box. Be sure to put
* Now add the Hamlib path in the "Variable Value:" edit box. Be sure to put
a semi-colon ';' after the last path before adding the Hamlib path (NB. The
entire path is highlighted and will be erased upon typing a character so
click in the box to unselect the text first. The PATH is important!!)
Append the Hamlib path, e.g. C:\Program Files\hamlib-win32-1.2.14~git\bin
Append the Hamlib path, e.g. C:\Program Files\hamlib-win32-3.0~git\bin
* Click OK for all three dialog boxes to save your changes.
@ -99,10 +111,10 @@ In short, the command syntax is of the form:
rigctl -m 120 -r COM1 -vvvvv
-m -> Radio model 120, or Yaesu FT-817 (use -l for a list)
-m -> Radio model 120, or Yaesu FT-817 (use 'rigctl -l' for a list)
-r -> Radio device, in this case COM1
-v -> Verbosity level. For testing four or five v characters are required.
Five v's set a debug level of TRACE which generates a lot of screen
Five 'v's set a debug level of TRACE which generates a lot of screen
output showing communication to the radio and values of important
variables. These traces are vital information for Hamlib rig backend
development.
@ -118,12 +130,19 @@ Edit|Paste from the typical GUI menu).
All feedback is welcome to the mail address below.
Uninstall
=========
To uninstall, simply delete the Hamlib directory. You may wish to edit the
PATH as above to remove the Hamlib bin path, if desired.
Information for Win32 Programmers
=================================
There's a .LIB import library for MS-VC++ in lib/msvc. Simply #include
There is a .LIB import library for MS-VC++ in lib/msvc. Simply #include
<hamlib/rig.h> (add directory to include path), include the .LIB in your
project and you're done. Note: MS-VC++ cannot compile all the Hamlib code,
project and you are done. Note: MS-VC++ cannot compile all the Hamlib code,
but the API defined by rig.h has been made MSVC friendly :-)
As the source code for the library DLLs is licensed under the LGPL, your
@ -149,19 +168,16 @@ http://www.hamlib.org
END_OF_README
# Import internal ./libltdl and build it for mingw32
libtoolize --ltdl
cd libltdl; ./configure --host=i586-mingw32msvc && make; cd ..
# Configure and build hamlib for mingw32, with libusb-win32
./configure --disable-static \
--host=i586-mingw32msvc \
--prefix=`pwd`/mingw-inst \
--without-rpc-backends \
--without-cxx-binding \
--with-included-ltdl \
PKG_CONFIG_LIBDIR=${LIBUSB_WIN32_BIN_PATH}/lib/pkgconfig
make install
mkdir -p ${ZIP_DIR}/bin ${ZIP_DIR}/lib/msvc ${ZIP_DIR}/lib/gcc ${ZIP_DIR}/include ${ZIP_DIR}/pdf
@ -178,7 +194,7 @@ for f in AUTHORS ChangeLog COPYING COPYING.LIB LICENSE README README.betatester
cd tests
for f in rigctl.1 rigctld.8 rigmem.1 rigsmtr.1 rigswr.1 rotctl.1 rotctld.8 ; do \
groff -mandoc >${f}.ps ${f} ; ps2pdf ${f}.ps ; rm ${f}.ps ; \
groff -mandoc >${f}.ps ${f} ; ps2pdf ${f}.ps ; rm ${f}.ps ; \
cp -a ${f}.pdf ${ZIP_DIR}/pdf/. ; done
cd ${BUILD_DIR}/$1
@ -196,3 +212,4 @@ cp -a ${LIBUSB_WIN32_BIN_PATH}/bin/x86/libusb0_x86.dll ${ZIP_DIR}/bin/libusb0.dl
# Need VC++ free toolkit installed (default Wine directory installation shown)
( cd ${ZIP_DIR}/lib/msvc/ && wine ~/.wine/drive_c/Program\ Files/Microsoft\ Visual\ C++\ Toolkit\ 2003/bin/link.exe /lib /machine:i386 /def:libhamlib-2.def )
zip -r hamlib-win32-${RELEASE}.zip `basename ${ZIP_DIR}`

Wyświetl plik

@ -1,4 +1,8 @@
AM_CPPFLAGS = @AM_CPPFLAGS@ @INCLTDL@
# src/Makefile.am
# $(LTDLINCL) is set by LTDL_INIT macro in configure.ac
AM_CPPFLAGS = @AM_CPPFLAGS@ $(LTDLINCL)
RIGSRC = rig.c serial.c misc.c register.c event.c cal.c conf.c tones.c \
rotator.c locator.c rot_reg.c rot_conf.c iofunc.c ext.c \
mem.c settings.c parallel.c usb_port.c debug.c network.c \
@ -8,7 +12,9 @@ lib_LTLIBRARIES = libhamlib.la
libhamlib_la_SOURCES = $(RIGSRC)
libhamlib_la_LDFLAGS = $(WINLDFLAGS) $(OSXLDFLAGS) -no-undefined -version-info @ABI_VERSION@:0:0
libhamlib_la_CFLAGS = -DIN_HAMLIB $(AM_CFLAGS) -DHAMLIB_MODULE_DIR=\"$(pkglibdir)\"
libhamlib_la_LIBADD = @LIBLTDL@ $(top_builddir)/lib/libmisc.la \
# $(LIBLTDL) is set by LTDL_INIT macro
libhamlib_la_LIBADD = $(LIBLTDL) $(top_builddir)/lib/libmisc.la \
@NET_LIBS@ @MATH_LIBS@ $(LIBUSB_LIBS)
noinst_HEADERS = event.h misc.h serial.h iofunc.h cal.h tones.h \