autoconfiscate
authorJeremy Kerr <jk@ozlabs.org>
Tue, 9 Dec 2008 06:48:45 +0000 (17:48 +1100)
committerJeremy Kerr <jk@ozlabs.org>
Tue, 9 Dec 2008 06:48:45 +0000 (17:48 +1100)
Add autoconf, but keep non-recursive Makefile structure.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Makefile [deleted file]
Makefile.in [new file with mode: 0644]
bootstrap [new file with mode: 0644]
configure.ac [new file with mode: 0644]
install-sh [new file with mode: 0644]
rules.mk [new file with mode: 0644]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 2da6f86..0000000
--- a/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-PREFIX?=/usr
-VERSION=0.2
-PACKAGE=petitboot
-CC=gcc
-INSTALL=install
-TWIN_CFLAGS?=$(shell pkg-config --cflags libtwin)
-TWIN_LDFLAGS?=$(shell pkg-config --libs libtwin)
-
-LDFLAGS =
-CFLAGS = --std=gnu99 -O0 -ggdb -Wall '-DPREFIX="$(PREFIX)"'
-
-PARSERS = native yaboot kboot
-ARTWORK = background.jpg cdrom.png hdd.png usbpen.png tux.png cursor.gz
-
-all: petitboot petitboot-udev-helper
-
-petitboot: petitboot.o devices.o
-       $(CC) $(LDFLAGS) -o $@ $^
-
-petitboot: LDFLAGS+=$(TWIN_LDFLAGS)
-petitboot: CFLAGS+=$(TWIN_CFLAGS)
-
-petitboot-udev-helper: devices/petitboot-udev-helper.o devices/params.o \
-               devices/parser.o devices/paths.o devices/yaboot-cfg.o \
-               $(foreach p,$(PARSERS),devices/$(p)-parser.o)
-       $(CC) $(LDFLAGS) -o $@ $^
-
-parser-test: devices/parser-test.o devices/params.o devices/parser.o \
-               devices/paths.o devices/yaboot-cfg.o \
-               $(foreach p,$(PARSERS),devices/$(p)-parser.o)
-       $(CC) $(LDFLAGS) -o $@ $^
-
-devices/%: CFLAGS+=-I.
-
-install: all
-       $(INSTALL) -D petitboot $(DESTDIR)$(PREFIX)/sbin/petitboot
-       $(INSTALL) -D petitboot-udev-helper \
-               $(DESTDIR)$(PREFIX)/sbin/petitboot-udev-helper
-       $(INSTALL) -Dd $(DESTDIR)$(PREFIX)/share/petitboot/artwork/
-       $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/petitboot/artwork/ \
-               $(foreach a,$(ARTWORK),artwork/$(a))
-
-dist:  $(PACKAGE)-$(VERSION).tar.gz
-
-check: parser-test
-       devices/parser-test.sh
-
-distcheck: dist
-       tar -xvf $(PACKAGE)-$(VERSION).tar.gz
-       cd $(PACKAGE)-$(VERSION) && make check
-
-$(PACKAGE)-$(VERSION).tar.gz: $(PACKAGE)-$(VERSION)
-       tar czvf $@ $^
-
-$(PACKAGE)-$(VERSION): clean
-       for f in $$(git-ls-files); do \
-               d=$@/$$(dirname $$f); \
-               mkdir -p $$d; \
-               cp -a $$f $$d; \
-       done
-clean:
-       rm -rf $(PACKAGE)-$(VERSION)
-       rm -f petitboot
-       rm -f petitboot-udev-helper
-       rm -f *.o devices/*.o
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..0da5a4e
--- /dev/null
@@ -0,0 +1,30 @@
+
+# general package info
+VERSION = @PACKAGE_VERSION@
+PACKAGE = @PACKAGE_NAME@
+
+# toolchain
+CC = @CC@
+LDFLAGS = @LDFLAGS@
+CFLAGS = @CFLAGS@
+DEFS = @DEFS@
+CPPFLAGS = @CPPFLAGS@ $(DEFS)
+
+# dependencies
+twin_CFLAGS = @twin_CFLAGS@
+twin_LDFLAGS = @twin_LIBS@
+
+# other programs
+INSTALL = @INSTALL@
+
+# paths
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+sbindir = @sbindir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+pkgdatadir = ${datadir}/${PACKAGE}
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+include $(top_srcdir)/rules.mk
diff --git a/bootstrap b/bootstrap
new file mode 100644 (file)
index 0000000..bf4d77f
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,5 @@
+#!/bin/sh -ex
+
+aclocal
+autoheader
+autoconf
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..5ef5aa0
--- /dev/null
@@ -0,0 +1,35 @@
+## configure.ac -- Process this file with autoconf to produce configure
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; version 2 of the License.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+AC_INIT([petitboot], [0.2], [Jeremy Kerr <jk@ozlabs.org>])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([Makefile])
+
+default_CFLAGS='--std=gnu99 -O2 -Wall -g'
+
+if test "x$CFLAGS" = "x"; then
+    CFLAGS="$default_CFLAGS"
+fi
+
+AC_PROG_CC
+AC_PROG_INSTALL
+
+PKG_CHECK_MODULES([twin], [libtwin])
+
+mkdir devices
+
+AC_OUTPUT
diff --git a/install-sh b/install-sh
new file mode 100644 (file)
index 0000000..4d4a951
--- /dev/null
@@ -0,0 +1,323 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2005-05-14.22
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t) dstarg=$2
+       shift
+       shift
+       continue;;
+
+    -T) no_target_directory=true
+       shift
+       continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+       # When -t is used, the destination is already specified.
+       test -n "$dir_arg$dstarg" && break
+        # Otherwise, the last argument is the destination.  Remove it from $@.
+       for arg
+       do
+          if test -n "$dstarg"; then
+           # $@ is not empty: it contains at least $arg.
+           set fnord "$@" "$dstarg"
+           shift # fnord
+         fi
+         shift # arg
+         dstarg=$arg
+       done
+       break;;
+  esac
+done
+
+if test -z "$1"; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src ;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    src=
+
+    if test -d "$dst"; then
+      mkdircmd=:
+      chmodcmd=
+    else
+      mkdircmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dstarg: Is a directory" >&2
+       exit 1
+      fi
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+  # Make sure that the destination directory exists.
+
+  # Skip lots of stat calls in the usual case.
+  if test ! -d "$dstdir"; then
+    defaultIFS='
+        '
+    IFS="${IFS-$defaultIFS}"
+
+    oIFS=$IFS
+    # Some sh's can't handle IFS=/ for some reason.
+    IFS='%'
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+       # mkdir can fail with a `File exist' error in case several
+       # install-sh are creating the directory concurrently.  This
+       # is OK.
+       test -d "$pathcomp" || exit
+      fi
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $mkdircmd "$dst" \
+      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+  else
+    dstfile=`basename "$dst"`
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+    # Now rename the file to the real destination.
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+          # The rename failed, perhaps because mv can't rename something else
+          # to itself, or perhaps because mv is so ancient that it does not
+          # support -f.
+
+          # Now remove or move aside any old file at destination location.
+          # We try this two ways since rm can't unlink itself on some
+          # systems and the destination file might be busy for other
+          # reasons.  In this case, the final cleanup might fail but the new
+          # file should still install successfully.
+          {
+            if test -f "$dstdir/$dstfile"; then
+              $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+              || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+              || {
+                echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+                (exit 1); exit 1
+              }
+            else
+              :
+            fi
+          } &&
+
+          # Now rename the file to the real destination.
+          $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+        }
+    }
+  fi || { (exit 1); exit 1; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit 0
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/rules.mk b/rules.mk
new file mode 100644 (file)
index 0000000..9239d29
--- /dev/null
+++ b/rules.mk
@@ -0,0 +1,65 @@
+
+VPATH = $(srcdir)
+
+# we need paths to be overridable at build-time
+DEFS += '-DPREFIX="$(prefix)"' '-DPKG_SHARE_DIR="$(pkgdatadir)"'
+
+parsers = native yaboot kboot
+artwork = background.jpg cdrom.png hdd.png usbpen.png tux.png cursor.gz
+
+petitboot_objs = petitboot.o devices.o
+
+parser_objs = devices/params.o devices/parser.o devices/paths.o \
+             devices/yaboot-cfg.o \
+             $(foreach p,$(parsers),devices/$(p)-parser.o)
+
+petitboot_udev_helper_objs = devices/petitboot-udev-helper.o $(parser_objs)
+parser_test_objs = parser-test.o $(parser_objs)
+
+all: petitboot petitboot-udev-helper
+
+petitboot: LDFLAGS+=$(twin_LDFLAGS)
+petitboot: CFLAGS+=$(twin_CFLAGS)
+
+petitboot: $(petitboot_objs)
+       $(LINK.o) -o $@ $^
+
+petitboot-udev-helper: $(petitboot_udev_helper_objs)
+       $(LINK.o) -o $@ $^
+
+parser-test: $(parser_test_objs)
+       $(LINK.o) -o $@ $^
+
+petitboot-udev-helper: CFLAGS+=-I$(top_srcdir)
+
+install: all
+       $(INSTALL) -D petitboot $(DESTDIR)$(sbindir)/petitboot
+       $(INSTALL) -D petitboot-udev-helper \
+               $(DESTDIR)$(sbindir)/petitboot-udev-helper
+       $(INSTALL) -Dd $(DESTDIR)$(pkgdatadir)/artwork/
+       $(INSTALL) -t $(DESTDIR)$(pkgdatadir)/artwork/ \
+               $(foreach a,$(artwork),$(top_srcdir)/artwork/$(a))
+
+dist:  $(PACKAGE)-$(VERSION).tar.gz
+
+check: parser-test
+       devices/parser-test.sh
+
+distcheck: dist
+       tar -xvf $(PACKAGE)-$(VERSION).tar.gz
+       cd $(PACKAGE)-$(VERSION) && make check
+
+$(PACKAGE)-$(VERSION).tar.gz: $(PACKAGE)-$(VERSION)
+       tar czvf $@ $^
+
+$(PACKAGE)-$(VERSION): clean
+       for f in $$(git-ls-files); do \
+               d=$@/$$(dirname $$f); \
+               mkdir -p $$d; \
+               cp -a $$f $$d; \
+       done
+clean:
+       rm -rf $(PACKAGE)-$(VERSION)
+       rm -f petitboot
+       rm -f petitboot-udev-helper
+       rm -f *.o devices/*.o