From dcaa93d9843d6e0ac77c48541036a69bc4cadd21 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Fri, 17 Dec 2010 11:13:04 +0100 Subject: [PATCH] build: Switch to autotools --- .gitignore | 13 +++ Makefile | 237 -------------------------------------------- Makefile.am | 19 ++++ autogen | 5 + configure.ac | 50 ++++++++++ get-version | 3 +- include/Makefile.am | 31 ++++++ man/Makefile.am | 45 +++++++++ src/Makefile.am | 85 ++++++++++++++++ 9 files changed, 250 insertions(+), 238 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100755 autogen create mode 100644 configure.ac create mode 100644 include/Makefile.am create mode 100644 man/Makefile.am create mode 100644 src/Makefile.am diff --git a/.gitignore b/.gitignore index 799fb3d..20f33d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,19 @@ ChangeLog *.pc +*.la *.lo *.o *.so* *.a +.deps/ +.libs/ +Makefile +Makefile.in +aclocal.m4 +autom4te.cache/ +build-aux/ +configure +config.* +libtool +m4/ +stamp-h1 diff --git a/Makefile b/Makefile deleted file mode 100644 index ca7cb0e..0000000 --- a/Makefile +++ /dev/null @@ -1,237 +0,0 @@ -VERSION := $(shell ./get-version) - -LIB_NAME := libbsd -LIB_VERSION_MAJOR := 0 -LIB_VERSION_MINOR := 3 -LIB_VERSION_MICRO := 0 -LIB_VERSION := $(LIB_VERSION_MAJOR).$(LIB_VERSION_MINOR).$(LIB_VERSION_MICRO) - -LIB_PKGCONFIG := src/$(LIB_NAME).pc -LIB_PKGCONFIG_OVERLAY := src/$(LIB_NAME)-overlay.pc -LIB_STATIC := $(LIB_NAME).a -LIB_SHARED_SO := $(LIB_NAME).so -LIB_SONAME := $(LIB_SHARED_SO).$(LIB_VERSION_MAJOR) -LIB_SHARED := $(LIB_SONAME).$(LIB_VERSION_MINOR).$(LIB_VERSION_MICRO) - -TAR_NAME := $(LIB_NAME)-$(VERSION) -TAR_FILE := $(TAR_NAME).tar.gz - -LIB_DIST := \ - ChangeLog - -LIB_SRCS_GEN := \ - hash/md5hl.c -LIB_SRCS := \ - arc4random.c \ - bsd_getopt.c \ - err.c \ - fgetln.c \ - flopen.c \ - fpurge.c \ - getpeereid.c \ - heapsort.c \ - merge.c \ - humanize_number.c \ - dehumanize_number.c \ - inet_net_pton.c \ - hash/md5.c \ - pidfile.c \ - readpassphrase.c \ - reallocf.c \ - setmode.c \ - setproctitle.c \ - strmode.c \ - strtonum.c \ - strlcat.c strlcpy.c \ - fmtcheck.c \ - nlist.c \ - progname.c \ - radixsort.c \ - vis.c unvis.c \ - $(LIB_SRCS_GEN) -LIB_SRCS_GEN := $(patsubst %,src/%,$(LIB_SRCS_GEN)) -LIB_SRCS := $(patsubst %,src/%,$(LIB_SRCS)) - -LIB_INCLUDES := \ - bsd/cdefs.h \ - bsd/queue.h \ - bsd/ip_icmp.h \ - bsd/sys/cdefs.h \ - bsd/sys/bitstring.h \ - bsd/sys/endian.h \ - bsd/sys/poll.h \ - bsd/sys/queue.h \ - bsd/sys/tree.h \ - bsd/netinet/ip_icmp.h \ - bsd/err.h \ - bsd/getopt.h \ - bsd/inet.h \ - bsd/random.h \ - bsd/md5.h \ - bsd/string.h \ - bsd/bsd.h \ - bsd/stdio.h \ - bsd/stdlib.h \ - bsd/readpassphrase.h \ - bsd/unistd.h \ - bsd/nlist.h \ - bsd/vis.h \ - bsd/libutil.h \ - nlist.h \ - vis.h \ - libutil.h - -LIB_MANS_GEN := \ - md5.3bsd -LIB_MANS := \ - arc4random.3 \ - arc4random_addrandom.3 \ - arc4random_buf.3 \ - arc4random_stir.3 \ - arc4random_uniform.3 \ - dehumanize_number.3 \ - strtonum.3 \ - strlcpy.3 \ - strlcat.3 \ - fgetln.3 \ - flopen.3 \ - getpeereid.3 \ - readpassphrase.3 \ - reallocf.3 \ - heapsort.3 \ - humanize_number.3 \ - fmtcheck.3 \ - mergesort.3 \ - radixsort.3 \ - sradixsort.3 \ - nlist.3 \ - pidfile.3 \ - setmode.3 \ - getmode.3 \ - strmode.3 \ - unvis.3 \ - vis.3 \ - $(LIB_MANS_GEN) -LIB_MANS_GEN := $(patsubst %,man/%,$(LIB_MANS_GEN)) -LIB_MANS := $(patsubst %,man/%,$(LIB_MANS)) - -LIB_STATIC_OBJS := $(LIB_SRCS:%.c=%.o) -LIB_SHARED_OBJS := $(LIB_SRCS:%.c=%.lo) - -AR = ar -CC = gcc -CCLD = $(CC) - -# Set default values for user variables -CPPFLAGS ?= -CFLAGS ?= -g -Wall -Wextra -Wno-unused-variable -LDFLAGS ?= - -# Internal makefile variables -MK_CPPFLAGS := -isystem include/bsd/ \ - -DLIBBSD_OVERLAY -DLIBBSD_DISABLE_DEPRECATED \ - -D_GNU_SOURCE -D__REENTRANT -MK_CFLAGS := -MK_LDFLAGS := - -COMPILE = $(CC) $(MK_CPPFLAGS) $(CPPFLAGS) $(MK_CFLAGS) $(CFLAGS) -LINK = $(CCLD) $(MK_CFLAGS) $(CFLAGS) $(MK_LDFLAGS) $(LDFLAGS) - -prefix = /usr -exec_prefix = -libdir = ${exec_prefix}/lib -usrlibdir = ${prefix}/lib -includedir = ${prefix}/include -pkgconfigdir = ${usrlibdir}/pkgconfig -mandir = ${prefix}/share/man - -.PHONY: libs -libs: $(LIB_STATIC) $(LIB_SHARED_SO) $(LIB_PKGCONFIG) $(LIB_PKGCONFIG_OVERLAY) - -.PHONY: man -man: $(LIB_MANS) - -%.lo: %.c - $(COMPILE) -o $@ -DPIC -fPIC -c $< - -%.o: %.c - $(COMPILE) -o $@ -c $< - -man/md5.3bsd: man/mdX.3 - sed -e 's/mdX/md5/g' -e 's/mdY/md4/g' -e 's/MDX/MD5/g' $< > $@ - -src/hash/md5hl.c: src/hash/helper.c - sed -e 's:hashinc:bsd/md5.h:g' -e 's:HASH:MD5:g' $< > $@ - -%.pc: %.pc.in - sed -e 's:@VERSION@:$(VERSION):' \ - -e 's:@prefix@:$(value prefix):' \ - -e 's:@exec_prefix@:$(value exec_prefix):' \ - -e 's:@libdir@:$(value usrlibdir):' \ - -e 's:@includedir@:$(value includedir):' \ - $< > $@ - -$(LIB_STATIC): $(LIB_STATIC_OBJS) - $(AR) rcs $@ $^ - -$(LIB_SHARED_SO): $(LIB_SONAME) - ln -fs $^ $@ - -$(LIB_SONAME): $(LIB_SHARED) - ln -fs $^ $@ - -$(LIB_SHARED): $(LIB_SHARED_OBJS) - $(LINK) \ - -shared \ - -Wl,-soname -Wl,$(LIB_SONAME) \ - -Wl,--version-script=src/libbsd.map \ - -o $@ $^ - -.PHONY: ChangeLog -ChangeLog: - -git log --stat -C >$@ - -.PHONY: dist -dist: $(LIB_DIST) - mkdir $(TAR_NAME) - echo $(VERSION) >$(TAR_NAME)/.dist-version - cp -a --parents $(LIB_DIST) `git ls-files` $(TAR_NAME) - tar czf $(TAR_FILE) --exclude=.gitignore $(TAR_NAME) - rm -rf $(TAR_NAME) - gpg -a -b $(TAR_FILE) - -.PHONY: install -install: libs man - mkdir -p $(DESTDIR)$(libdir) - mkdir -p $(DESTDIR)$(usrlibdir) - mkdir -p $(DESTDIR)$(includedir)/bsd/ - mkdir -p $(DESTDIR)$(includedir)/bsd/sys/ - mkdir -p $(DESTDIR)$(includedir)/bsd/netinet/ - mkdir -p $(DESTDIR)$(mandir)/man3 - mkdir -p $(DESTDIR)$(pkgconfigdir) - install -m644 $(LIB_STATIC) $(DESTDIR)$(usrlibdir) - install -m755 $(LIB_SHARED) $(DESTDIR)$(libdir) - for i in $(LIB_INCLUDES); do \ - install -m644 include/$$i $(DESTDIR)$(includedir)/$$i; \ - done - install -m644 $(LIB_MANS) $(DESTDIR)$(mandir)/man3 - install -m644 $(LIB_PKGCONFIG) $(DESTDIR)$(pkgconfigdir) - install -m644 $(LIB_PKGCONFIG_OVERLAY) $(DESTDIR)$(pkgconfigdir) -ifeq ($(libdir),$(usrlibdir)) - # If both dirs are the same, do a relative symlink. - ln -sf $(LIB_SHARED) $(DESTDIR)$(usrlibdir)/$(LIB_SHARED_SO) -else - # Otherwise, do an absolute one. - ln -sf $(libdir)/$(LIB_SHARED) $(DESTDIR)$(usrlibdir)/$(LIB_SHARED_SO) -endif - ln -sf $(LIB_SHARED) $(DESTDIR)$(libdir)/$(LIB_SONAME) - -.PHONY: clean -clean: - rm -f $(LIB_PKGCONFIG) - rm -f $(LIB_PKGCONFIG_OVERLAY) - rm -f $(LIB_SRCS_GEN) $(LIB_MANS_GEN) - rm -f $(LIB_STATIC_OBJS) - rm -f $(LIB_STATIC) - rm -f $(LIB_SHARED_OBJS) - rm -f $(LIB_SHARED) $(LIB_SONAME) $(LIB_SHARED_SO) diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..4a6a326 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,19 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = include man src + +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = \ + autogen \ + get-version \ + $(nil) + +DISTCLEANFILES = ChangeLog +.PHONY: ChangeLog + +ChangeLog: + git log --stat -C >$@ + +dist-hook: + echo $(VERSION) >$(distdir)/.dist-version diff --git a/autogen b/autogen new file mode 100755 index 0000000..7cf1815 --- /dev/null +++ b/autogen @@ -0,0 +1,5 @@ +#!/bin/sh + +mkdir -p m4 +autoreconf -f -i +rm -rf autom4te.cache diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..b34b416 --- /dev/null +++ b/configure.ac @@ -0,0 +1,50 @@ +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.67]) +AC_INIT([libbsd], m4_esyscmd([./get-version]), [libbsd@lists.freedesktop.org]) +AC_CONFIG_SRCDIR([src/fgetln.c]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE([1.8 foreign nostdinc]) + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], + [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) + +# Checks for operating system services and capabilities. +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE + +LT_INIT + +# Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_LN_S + +# Checks for libraries. + +# Checks for header files. + +# Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_UID_T +AC_C_INLINE +AC_TYPE_INT64_T +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T + +# Checks for library functions. + +AC_CONFIG_FILES([ + Makefile + include/Makefile + man/Makefile + src/Makefile + src/libbsd.pc + src/libbsd-overlay.pc +]) +AC_CONFIG_HEADERS([config.h]) +AC_OUTPUT diff --git a/get-version b/get-version index 21f5dfd..591f593 100755 --- a/get-version +++ b/get-version @@ -44,4 +44,5 @@ else exit 1 fi -echo "$version" +# Use printf to avoid the trailing new line that m4_esyscmd would not handle. +printf "$version" diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..0201c28 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,31 @@ +## Process this file with automake to produce Makefile.in + +nobase_include_HEADERS = \ + bsd/sys/bitstring.h \ + bsd/sys/cdefs.h \ + bsd/sys/endian.h \ + bsd/sys/poll.h \ + bsd/sys/queue.h \ + bsd/sys/tree.h \ + bsd/netinet/ip_icmp.h \ + bsd/bsd.h \ + bsd/cdefs.h \ + bsd/err.h \ + bsd/getopt.h \ + bsd/inet.h \ + bsd/ip_icmp.h \ + bsd/libutil.h \ + bsd/md5.h \ + bsd/nlist.h \ + bsd/queue.h \ + bsd/random.h \ + bsd/readpassphrase.h \ + bsd/stdio.h \ + bsd/stdlib.h \ + bsd/string.h \ + bsd/unistd.h \ + bsd/vis.h \ + libutil.h \ + nlist.h \ + vis.h \ + $(nil) diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..129949a --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,45 @@ +## Process this file with automake to produce Makefile.in + +EXTRA_DIST = \ + mdX.3 \ + $(nil) + +CLEANFILES = \ + md5.3bsd \ + $(nil) + +SED_MD5_SUBST = -e 's/mdX/md5/g' -e 's/mdY/md4/g' -e 's/MDX/MD5/g' + +md5.3bsd: $(srcdir)/mdX.3 + $(AM_V_GEN) sed $(SED_MD5_SUBST) $< > $@ + +dist_man_MANS = \ + arc4random.3 \ + arc4random_addrandom.3 \ + arc4random_buf.3 \ + arc4random_stir.3 \ + arc4random_uniform.3 \ + dehumanize_number.3 \ + fgetln.3 \ + flopen.3 \ + fmtcheck.3 \ + getmode.3 \ + getpeereid.3 \ + heapsort.3 \ + humanize_number.3 \ + md5.3bsd \ + mergesort.3 \ + nlist.3 \ + pidfile.3 \ + radixsort.3 \ + readpassphrase.3 \ + reallocf.3 \ + setmode.3 \ + sradixsort.3 \ + strlcat.3 \ + strlcpy.3 \ + strmode.3 \ + strtonum.3 \ + unvis.3 \ + vis.3 \ + $(nil) diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..9bd9257 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,85 @@ +## Process this file with automake to produce Makefile.in + +# Set default values for user variables +CFLAGS = -Wall -Wextra -Wno-unused-variable + +AM_CPPFLAGS = \ + -I$(top_builddir) \ + -isystem $(top_srcdir)/include/bsd/ \ + -DLIBBSD_OVERLAY -DLIBBSD_DISABLE_DEPRECATED \ + -D_GNU_SOURCE -D__REENTRANT + +EXTRA_DIST = \ + libbsd.map \ + libbsd.pc.in \ + libbsd-overlay.pc.in \ + hash/helper.c \ + $(nil) + +CLEANFILES = \ + hash/md5hl.c \ + $(nil) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = \ + libbsd.pc \ + libbsd-overlay.pc \ + $(nil) + +lib_LTLIBRARIES = libbsd.la + +hash/md5hl.c: $(srcdir)/hash/helper.c + $(MKDIR_P) hash + $(AM_V_GEN) sed -e 's:hashinc:bsd/md5.h:g' -e 's:HASH:MD5:g' $< > $@ + +libbsd_la_DEPENDENCIES = \ + libbsd.map +libbsd_la_LDFLAGS = \ + -Wl,--version-script=$(srcdir)/libbsd.map \ + -version-number 0:3:0 +libbsd_la_SOURCES = \ + arc4random.c \ + bsd_getopt.c \ + dehumanize_number.c \ + err.c \ + fgetln.c \ + flopen.c \ + fmtcheck.c \ + fpurge.c \ + getpeereid.c \ + hash/md5.c \ + hash/md5hl.c \ + heapsort.c \ + humanize_number.c \ + inet_net_pton.c \ + local-elf.h \ + merge.c \ + nlist.c \ + pidfile.c \ + progname.c \ + radixsort.c \ + readpassphrase.c \ + reallocf.c \ + setmode.c \ + setproctitle.c \ + strlcat.c \ + strlcpy.c \ + strmode.c \ + strtonum.c \ + unvis.c \ + vis.c \ + $(nil) + +install-exec-hook: + if [ "$(libdir)" != "$(runtimelibdir)" ]; then \ + mkdir -p $(DESTDIR)$(runtimelibdir); \ + mv $(DESTDIR)$(libdir)/libbsd*.so.* \ + $(DESTDIR)$(runtimelibdir)/; \ + soname=`readlink $(DESTDIR)$(libdir)/libbsd.so`; \ + sorelprefix=`echo $(libdir) | sed -r -e 's:(^/)?[^/]+:..:g'`; \ + ln -sf $$sorelprefix$(runtimelibdir)/$$soname \ + $(DESTDIR)$(libdir)/libbsd.so; \ + fi + +uninstall-hook: + rm -f $(DESTDIR)$(runtimelibdir)/libbsd*.so*