diff options
author | Reuben Thomas <rrt@sc3d.org> | 2009-08-06 21:50:03 +0100 |
---|---|---|
committer | Reuben Thomas <rrt@sc3d.org> | 2009-08-06 21:50:03 +0100 |
commit | acfeda168692bb2ad4de38f5d8122020ed28d6e8 (patch) | |
tree | 7f10c3058afb3772fe6fb44a8a9c00973e540fbc /m4/ax_rpm_init.m4 | |
parent | 81176a2db59b9f55dc171ea36000be225dc8aa83 (diff) | |
download | autoconf-archive-acfeda168692bb2ad4de38f5d8122020ed28d6e8.tar.gz |
Rename AM_ prefixes (those of aa macros only!) to AX_.
Diffstat (limited to 'm4/ax_rpm_init.m4')
-rw-r--r-- | m4/ax_rpm_init.m4 | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/m4/ax_rpm_init.m4 b/m4/ax_rpm_init.m4 new file mode 100644 index 0000000..f5cc3fa --- /dev/null +++ b/m4/ax_rpm_init.m4 @@ -0,0 +1,259 @@ +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/ax_rpm_init.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_RPM_INIT +# +# DESCRIPTION +# +# 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) +# +# AX_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 ---------- +# +# LICENSE +# +# Copyright (c) 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. + +dnl AX_RPM_INIT +dnl Figure out how to create rpms for this system and setup for an +dnl automake target + +AC_DEFUN([AX_RPM_INIT], +[dnl +AC_REQUIRE([AC_CANONICAL_HOST]) +dnl Find the RPM program +AC_ARG_WITH(rpm-prog,[ --with-rpm-prog=PROG Which rpm to use (optional)], + rpm_prog="$withval", rpm_prog="") + +AC_ARG_ENABLE(rpm-rules, [ --enable-rpm-rules Try to create rpm make rules (defaults to yes for Linux)], + enable_rpm_rules="$withval",enable_rpm_rules=no) + +AC_ARG_WITH(rpm-extra-args, [ --with-rpm-extra-args=ARGS Run rpm with extra arguments (defaults to none)], + rpm_extra_args="$withval", rpm_extra_args="") + +dnl AC_ARG_ENABLE(rpm-topdir, [ --enable-rpm Try to create rpm make rules (defaults to yes for Linux)], +dnl enable_rpm_rules="$withval",no) + +dnl echo enable_rpm_rules is $enable_rpm_rules +dnl echo rpm_prog is $rpm_prog + + RPM_TARGET="" + + if test x$enable_rpm_rules = xno ; then + echo "Not trying to build rpms for your system (use --enable-rpm-rules to override) " + no_rpm=yes + else + if test x$rpm_prog != x ; then + if test x${RPM_PROG+set} != xset ; then + RPM_PROG=$rpm_prog + fi + fi + + AC_PATH_PROG(RPM_PROG, rpm, no) + no_rpm=no + if test "$RPM_PROG" = "no" ; then +echo *** RPM Configuration Failed +echo *** Failed to find the rpm program. If you want to build rpm packages +echo *** indicate the path to the rpm program using --with-rpm-prog=PROG + no_rpm=yes + RPM_MAKE_RULES="" + else + AC_MSG_CHECKING(how rpm sets %{_rpmdir}) + rpmdir=`rpm --eval %{_rpmdir}` + if test x$rpmdir = x"%{_rpmdir}" ; then + AC_MSG_RESULT([not set (cannot build rpms?)]) + echo *** Could not determine the value of %{_rpmdir} + echo *** This could be because it is not set, or your version of rpm does not set it + echo *** It must be set in order to generate the correct rpm generation commands + echo *** + echo *** You might still be able to create rpms, but I could not automate it for you + echo *** BTW, if you know this is wrong, please help to improve the rpm.m4 module + echo *** Send corrections, updates and fixes to dhawkins@cdrgts.com. Thanks. + else + AC_MSG_RESULT([$rpmdir]) + fi + AC_MSG_CHECKING(how rpm sets %{_rpmfilename}) + rpmfilename=$rpmdir/`rpm --eval %{_rpmfilename} | sed "s/%{ARCH}/${host_cpu}/g" | sed "s/%{NAME}/$PACKAGE/g" | sed "s/%{VERSION}/${VERSION}/g" | sed "s/%{RELEASE}/${RPM_RELEASE}/g"` + AC_MSG_RESULT([$rpmfilename]) + + RPM_DIR=${rpmdir} + RPM_TARGET=$rpmfilename + RPM_ARGS="-ta $rpm_extra_args" + RPM_TARBALL=${PACKAGE}-${VERSION}.tar.gz + fi + fi + + case "${no_rpm}" in + yes) make_rpms=false;; + no) make_rpms=true;; + *) AC_MSG_WARN([bad value ${no_rpm} for no_rpm (not making rpms)]) + make_rpms=false;; + esac + AC_SUBST(RPM_DIR) + AC_SUBST(RPM_TARGET) + AC_SUBST(RPM_ARGS) + AC_SUBST(RPM_TARBALL) + + RPM_CONFIGURE_ARGS=${ac_configure_args} + AC_SUBST(RPM_CONFIGURE_ARGS) +]) |