Switch to using autohate :(
authorDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 27 Jun 2011 00:35:35 +0000 (01:35 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 27 Jun 2011 01:27:53 +0000 (02:27 +0100)
I really didn't want to do this, but much as I hate libtool it is the
easiest way to portably build shared libraries, and we really do need
to build libopenconnect as a shared library. And having used libtool
we might as well concede entirely and use autoconf/automake.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Makefile [deleted file]
Makefile.am [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]
openconnect.pc.in

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 4812160..0000000
--- a/Makefile
+++ /dev/null
@@ -1,152 +0,0 @@
-#
-# in order to use a private copy of openssl instead of the installed one,
-# set OPENSSL to the path to the source directory that you built openssl in
-#
-# OPENSSL := ../openssl-0.9.8i
-
-ifdef RPM_OPT_FLAGS
-OPT_FLAGS := $(RPM_OPT_FLAGS)
-else
-OPT_FLAGS := -O2 -g -Wall
-endif
-
-PKGCONFIG=$(shell pkg-config --version)
-ifeq ($(PKGCONFIG),)
-$(error "No pkg-config. Cannot continue");
-endif
-
-# Allow people to override OpenSSL and build it statically, if they need
-# a special build for the DTLS support. $(OPENSSL) points to the build 
-# dir; there's no need to install it anywhere (we link it statically).
-ifdef OPENSSL
-SSL_CFLAGS += -I$(OPENSSL)/include
-SSL_LDFLAGS += $(OPENSSL)/libssl.a $(OPENSSL)/libcrypto.a
-else
-SSL_CFLAGS += $(shell pkg-config --cflags openssl)
-SSL_LDFLAGS += $(shell pkg-config --libs openssl)
-ifeq ($(SSL_LDFLAGS),)
-$(error "No OpenSSL support. Cannot continue");
-endif
-endif
-
-XML2_CFLAGS += $(shell xml2-config --cflags) 
-XML2_LDFLAGS += $(shell xml2-config --libs)
-ifeq ($(XML2_LDFLAGS),)
-$(error "No libxml2 support. Cannot continue");
-endif
-
-CFLAGS := $(OPT_FLAGS) $(SSL_CFLAGS) $(XML2_CFLAGS) $(EXTRA_CFLAGS)
-LDFLAGS := -lz $(SSL_LDFLAGS) $(XML2_LDFLAGS) $(EXTRA_LDFLAGS)
-
-ifdef SSL_UI
-CFLAGS += -DSSL_UI
-endif
-
--include Make.config
-
-ifneq ($(IF_TUN_HDR),)
-CFLAGS_tun.o += -DIF_TUN_HDR=\"$(IF_TUN_HDR)\"
-endif
-
-ifneq ($(LIBPROXY_HDR),)
-CFLAGS += -DOPENCONNECT_LIBPROXY -DLIBPROXY_HDR=\"$(LIBPROXY_HDR)\"
-LDFLAGS += -lproxy
-endif
-
-OPENCONNECT_OBJS := xml.o main.o $(SSL_UI)
-CONNECTION_OBJS := dtls.o cstp.o mainloop.o tun.o 
-AUTH_OBJECTS := ssl.o http.o version.o auth.o library.o
-
-VERSION_OBJS := $(filter-out version.o, \
-               $(OPENCONNECT_OBJS) $(CONNECTION_OBJS) $(AUTH_OBJECTS))
-
-.PHONY: all clean realclean install tag tarball openconnect.pc
-
-all: openconnect
-
-libopenconnect.a: ${AUTH_OBJECTS}
-       $(AR) rcs $@ $^
-
-version.c: $(patsubst %.o,%.c,$(VERSION_OBJS)) Makefile openconnect.h \
-          openconnect-internal.h $(wildcard .git/index .git/refs/tags) \
-          version.sh
-       @./version.sh
-
-openconnect: $(OPENCONNECT_OBJS) $(CONNECTION_OBJS) libopenconnect.a
-       $(CC) -o $@ $^ $(LDFLAGS)
-
-%.o: %.c
-       $(CC) -c -o $@ $(CFLAGS) $(CFLAGS_$@) $< -MD -MF .$@.dep
-
-clean:
-       rm -f *.o *.a openconnect $(wildcard .*.o.dep .*.h.dep) Make.config openconnect.pc
-
-realclean: clean
-       rm -f *~
-
-install: all
-       mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man8
-       install -m 0755 openconnect $(DESTDIR)/usr/bin
-       install -m 0644 openconnect.8 $(DESTDIR)/usr/share/man/man8
-
-include /dev/null $(wildcard .*.o.dep)
-
-HDRTEST = for a in $2 ; do if echo "\#include <$$a>" | $(CC) -o/dev/null -xc - -M -MF $1 -MP -MT Make.config 2>/dev/null; then \
-               echo $$a; break ; fi; done
-
-Make.config: LIBPROXY_H = $(shell $(call HDRTEST,.libproxy.h.dep,proxy.h libproxy/proxy.h))
-Make.config: IF_TUN_H = $(shell $(call HDRTEST,.if_tun.h.dep, linux/if_tun.h net/if_tun.h net/tun/if_tun.h))
-Make.config: Makefile
-       ( echo "IF_TUN_HDR := $(IF_TUN_H)"; echo "LIBPROXY_HDR := $(LIBPROXY_H)" ) > $@
-
--include Make.config
-
-INCDIR := /usr/include
-LIBDIR := /usr/lib
-PKGCONFIGDIR := ${LIBDIR}/pkgconfig
-ifeq ($(LIBPROXY_HDR),)
-LIBPROXYPC :=
-else
-LIBPROXYPC := libproxy-1.0
-endif
-
-openconnect.pc: VERSION = $(shell sed 's/.*v\(.*\)";/\1/' version.c)
-openconnect.pc: openconnect.pc.in version.c
-       sed -e 's^VERSION^$(VERSION)^' -e 's^LIBDIR^$(LIBDIR)^' -e 's^LIBPROXY^$(LIBPROXYPC)^' $< > $@
-
-install-lib: libopenconnect.a openconnect.pc
-       install -D -m 0644 libopenconnect.a $(DESTDIR)$(LIBDIR)/libopenconnect.a
-       install -D -m 0644 openconnect.pc $(DESTDIR)$(PKGCONFIGDIR)/openconnect.pc
-       install -D -m 0644 openconnect.h $(DESTDIR)$(INCDIR)/openconnect.h
-
-ifdef VERSION
-tag:
-       @git update-index --refresh --unmerged
-       @if git diff-index --name-only HEAD | grep ^ ; then \
-               echo Uncommitted changes in above files; exit 1; fi
-       @sed 's/^v=.*/v="v$(VERSION)"/' -i version.sh
-       @( echo "s/Last modified: .*/Last modified: $(shell date)/" ;\
-          echo '/  <LI><B>OpenConnect HEAD/a\' ;\
-          echo '     <UL>\' ;\
-          echo '       <LI><I>No changelog entries yet</I></LI>\';\
-          echo '     </UL><BR>\' ;  echo '  </LI>\' ;\
-          echo '  <LI><B><A HREF="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz">OpenConnect v$(VERSION)</a></B> &mdash; $(shell date +%Y-%m-%d)<BR>' ) | \
-               sed -f - -i openconnect.html
-# stupid syntax highlighting '
-       @git commit -s -m "Tag version $(VERSION)" version.sh openconnect.html
-       @git tag v$(VERSION)
-
-tarball: version.c
-       @if ! grep -q '"v$(VERSION)"' version.c; then \
-               echo "Tree not at v$(VERSION)"; exit 1 ; fi
-       @git update-index --refresh --unmerged
-       @if git diff-index --name-only HEAD | grep ^ ; then \
-               echo Uncommitted changes in above files; exit 1; fi
-       git add -f version.c
-       git write-tree 
-       git commit -m "add version.c for v$(VERSION)" version.c
-       git archive --format=tar --prefix=openconnect-$(VERSION)/ `git write-tree` | gzip -9 > openconnect-$(VERSION).tar.gz
-       git reset v$(VERSION)
-       git gc --prune
-endif
-
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..13408e4
--- /dev/null
@@ -0,0 +1,56 @@
+
+
+lib_LTLIBRARIES = libopenconnect.la
+bin_PROGRAMS = openconnect
+man8_MANS = openconnect.8
+
+openconnect_SOURCES = xml.c main.c dtls.c cstp.c mainloop.c tun.c
+
+openconnect_CFLAGS = $(OPENSSL_CFLAGS) $(LIBXML2_CFLAGS) $(LIBPROXY_CFLAGS)
+openconnect_LDADD = libopenconnect.la $(OPENSSL_LIBS) $(LIBXML2_LIBS) $(LIBPROXY_LIBS)
+
+libopenconnect_la_SOURCES = ssl.c http.c version.c auth.c library.c
+libopenconnect_la_CFLAGS = $(OPENSSL_CFLAGS) $(LIBXML2_CFLAGS) $(LIBPROXY_CFLAGS)
+libopenconnect_la_LIBADD = $(OPENSSL_LIBS) $(LIBXML2_LIBS) $(LIBPROXY_LIBS)
+libopenconnect_la_LDFLAGS = -version-number 1:2
+noinst_HEADERS = openconnect-internal.h openconnect.h
+include_HEADERS = openconnect.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = openconnect.pc
+
+EXTRA_DIST = version.sh openconnect.html openconnect.8 COPYING.LGPL
+
+DISTCLEANFILES = $(pkgconfig_DATA) version.c
+
+version.c: $(filter-out version.c, $(libopenconnect_la_SOURCES)) \
+          $(openconnect_SOURCES) Makefile.am configure.ac \
+          openconnect.h openconnect-internal.h version.sh \
+          $(wildcard .git/index .git/refs/tags)
+       @./version.sh
+
+dist-hook:
+       @git update-index --refresh --unmerged
+       @if git diff-index --name-only HEAD | grep ^ ; then \
+               echo Uncommitted changes in above files; exit 1; fi
+
+ ifdef VERSION
+tag:
+       @git update-index --refresh --unmerged
+       @if git diff-index --name-only HEAD | grep ^ ; then \
+               echo Uncommitted changes in above files; exit 1; fi
+       @sed 's/AC_INIT.*/AC_INIT(openconnect, $(VERSION))/' -i configure.ac
+       @sed 's/^v=.*/v="v$(VERSION)"/' -i version.sh
+       @( echo "s/Last modified: .*/Last modified: $(shell date)/" ;\
+          echo '/  <LI><B>OpenConnect HEAD/a\' ;\
+          echo '     <UL>\' ;\
+          echo '       <LI><I>No changelog entries yet</I></LI>\';\
+          echo '     </UL><BR>\' ;  echo '  </LI>\' ;\
+          echo '  <LI><B><A HREF="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz">OpenConnect v$(VERSION)</a></B> &mdash; $(shell date +%Y-%m-%d)<BR>' ) | \
+               sed -f - -i openconnect.html
+# stupid syntax highlighting '
+       @git commit -s -m "Tag version $(VERSION)" configure.ac version.sh openconnect.html
+       @git tag v$(VERSION)
+       @./autogen.sh
+
+ endif
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..885c0df
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+aclocal && \
+    libtoolize --automake --copy --force && \
+        automake --foreign --add-missing && \
+            autoconf
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..be55123
--- /dev/null
@@ -0,0 +1,43 @@
+
+AC_INIT(openconnect, 3.02)
+PKG_PROG_PKG_CONFIG
+AC_LANG_C
+AM_INIT_AUTOMAKE([foreign])
+
+AC_ARG_WITH([openssl],
+            AS_HELP_STRING([--with-openssl],
+                           [Location of OpenSSL build dir]),
+            [OPENSSL_CFLAGS="-I${with_openssl}/include"
+             OPENSSL_LIBS="${with_openssl}/libssl.a ${with_openssl}/libcrypto.a -ldl -lz"
+            AC_SUBST(OPENSSL_CFLAGS)
+            AC_SUBST(OPENSSL_LIBS)
+            AC_ENABLE_STATIC
+            AC_DISABLE_SHARED],
+           [PKG_CHECK_MODULES(OPENSSL, openssl)
+            AC_ENABLE_SHARED
+            AC_DISABLE_STATIC])
+
+AC_PROG_LIBTOOL
+
+PKG_CHECK_MODULES(LIBXML2, libxml-2.0)
+
+libproxy_hdr=no
+AC_CHECK_HEADER([libproxy.h],
+    [libproxy_hdr='"libproxy.h"'],
+    [AC_CHECK_HEADER([proxy.h],
+        [libproxy_hdr='"libproxy.h"'])])
+if (test "$libproxy_hdr" != "no"); then
+   AC_DEFINE([LIBPROXY_HDR], $libproxy_hdr)
+   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, AC_SUBST(LIBPROXY_PC, libproxy-1.0), dummy=yes)
+fi
+
+AC_CHECK_HEADER([if_tun.h],
+    [AC_DEFINE([IF_TUN_HDR], ["if_tun.h"])],
+    [AC_CHECK_HEADER([linux/if_tun.h],
+        [AC_DEFINE([IF_TUN_HDR], ["linux/if_tun.h"])],
+        [AC_CHECK_HEADER([net/if_tun.h],
+            [AC_DEFINE([IF_TUN_HDR], ["net/if_tun.h"])],
+            [AC_CHECK_HEADER([net/tun/if_tun.h],
+                [AC_DEFINE([IF_TUN_HDR], ["net/tun/if_tun.h"])])])])])
+
+AC_OUTPUT(Makefile openconnect.pc)
index 833022e..28772dd 100644 (file)
@@ -1,8 +1,12 @@
-libdir=LIBDIR
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
 
 Name: openconnect
 Description: OpenConnect VPN client
-Version: VERSION
-Requires: LIBPROXY zlib openssl libxml-2.0
+Version: @VERSION@
+Requires: @LIBPROXY_PC@ zlib openssl libxml-2.0
 Libs: -L${libdir} -lopenconnect
-Cflags: 
+Cflags: -I${includedir}