| Macros by Category | Revision History | 
   AM_RPM_INIT
  
Setup variables for creation of rpms. It will define several variables useful for creating rpms on a system where rpms are supported. Currently, I requires changes to Makefile.am to function properly (see the example below).
Also note that I do not use any non-UNIX OSs (and for the most part, I only use RedHat), so this is probably generally not useful for other systems.
Required setup:
In configure.in:
dnl For my rpm.m4 macros RPM_RELEASE=1 AC_SUBST(RPM_RELEASE) AM_RPM_INIT dnl Enable or disable the rpm making rules in Makefile.am AM_CONDITIONAL(MAKE_RPMS, test x$make_rpms = xtrue)
Furthermore, the %GNUconfigure rpm macro has a problem in that it does not define CXXFLAGS for the target system correctly, so for compiling C++ code, add the following line _before_ calling AC_PROG_CXX:
  dnl This is a little hack to make this work with rpm better (see mysql++.spec.in)
  test -z "$CXXFLAGS" && CXXFLAGS="${CFLAGS}"
   Changes to Makefile.am (I am trying to get rid of this step; suggestions invited):
  if MAKE_RPMS
  rpm: @RPM_TARGET@
  .PHONY: rpm
  $(RPM_TARGET): $(DISTFILES)
    ${MAKE} dist
    -mkdir -p $(RPM_DIR)/SRPMS
    -mkdir -p `dirname $(RPM_TARGET)`
    $(RPM_PROG) $(RPM_ARGS) $(RPM_TARBALL)
    @echo Congratulations, $(RPM_TARGET) "(and friends)" should now exist.
  else
  endif
   Also, it works best with a XXXX.spec.in file like the following (this is way down on the wishlist, but a program to generate the skeleton spec.in much like autoscan would just kick butt!):
  ---------- 8< ----------
  # -*- Mode:rpm-spec -*-
  # mysql++.spec.in
  Summary: Your package description goes here
  %define rel @RPM_RELEASE@
  %define version @VERSION@
  %define pkgname @PACKAGE@
  %define prefix /usr
  %define lt_release @LT_RELEASE@
  %define lt_version @LT_CURRENT@.@LT_REVISION@.@LT_AGE@
  # This is a hack until I can figure out how to better handle replacing
  # autoconf macros... (gotta love autoconf...)
  %define __aclocal   aclocal || aclocal -I ./macros
  %define configure_args  @RPM_CONFIGURE_ARGS@
  Name: %{pkgname}
  Version: %{version}
  Release: %{rel}
  Copyright: LGPL
  Group: # your group name goes here
  Source: %{pkgname}-%{version}.tar.gz
  Requires: # additional requirements
  Buildroot: /tmp/%{pkgname}-root
  URL: http://yoururl.go.here
  Prefix: %{prefix}
  BuildArchitectures: # Target platforms, i.e., i586
  Packager: Your Name <youremail@your.address>
  %description
  Your package description
  %changelog
  %prep
  %setup
  #%patch
  %build
  %GNUconfigure %{configure_args}
  # This is why we copy the CFLAGS to the CXXFLAGS in configure.in
  # CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix}
  make
  %install
  # To make things work with BUILDROOT
  if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ]
  then
    echo
    echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    echo @                                                                    @
    echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
    echo @                                                                    @
    echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    echo
  else
    echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
    rm -rf "$RPM_BUILD_ROOT"
  fi
  make DESTDIR="$RPM_BUILD_ROOT" install
  %clean
  # Call me paranoid, but I do not want to be responsible for nuking
  # someone's harddrive!
  if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ]
  then
    echo
    echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    echo @                                                                    @
    echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
    echo @                                                                    @
    echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    echo
  else
    echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
    rm -rf "$RPM_BUILD_ROOT"
  fi
  %files
  %defattr(-, root, root)
  # Your application file list goes here
  # %{prefix}/lib/lib*.so*
  %doc COPYRIGHT ChangeLog README AUTHORS NEWS
  %doc doc/*
  # If you install a library
  %post -p /sbin/ldconfig
  # If you install a library
  %postun -p /sbin/ldconfig
  %package devel
  Summary: Development files for %{pkgname}
  Group: Applications/Databases
  %description devel
  Development files for %{pkgname}.
  %files devel
  %defattr(-, root, root)
  # Your development files go here
  # Programmers documentation goes here
  %doc doc
  # end of file
  ---------- >8 ----------
  http://autoconf-archive.cryp.to/am_rpm_init.m4
Copyright © 2008 Dale K. Hawkins <dhawkins@cdrgts.com>
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.