#==============================================================================
# $Id: xemacsen-macros,v 1.40 2006/09/10 17:18:35 me Exp $
#==============================================================================
# macro version
%__xemacsen__ 0.4-alt1

# xemacs binary
%__xemacs %_bindir/xemacs

# deal with gamma/beta
%xeversion  %(v=%version; [ "${v%%.*}" == "21.5" ] && echo ${v%%.*}-b${v##*.} || echo $v)

#------------------------------------------------------------------------------
# directory layout
#------------------------------------------------------------------------------
%_xemacs_confdir %_sysconfdir/xemacs
%_xemacs_sitestartdir %_xemacs_confdir/site-start.d

#------------------------------------------------------------------------------
# version/arch specific
#------------------------------------------------------------------------------
%_xemacs_libdir %_libdir/%name-%xeversion
%_xemacs_archlibdir %_xemacs_libdir/%_target_platform

%_xemacs_datadir %_datadir/%name-%xeversion
%_xemacs_etcdir %_xemacs_datadir/etc
%_xemacs_docdir %_xemacs_datadir/doc
%_xemacs_lispdir %_xemacs_datadir/lisp

#------------------------------------------------------------------------------
# info related stuff
#------------------------------------------------------------------------------
%_xemacs_infodir %_infodir/xemacs
%_xemacs_infosection --section=XEmacs
%_xemacs_infodirfile --dir-file=%_xemacs_infodir/dir
%_xemacs_installinfo %__install_info %_xemacs_infosection %_xemacs_infodirfile

#==============================================================================
# xemacs' packages
#==============================================================================
%__xemacs_package_root %_datadir/xemacs

%__xemacs_package() \
%{expand: %%global xemacs_package %{1}} \
%(echo Url: http://www.xemacs.org) \
%(echo Source: http://ftp.xemacs.org/pub/xemacs/packages/%xemacs_package-%version-pkg.tar.bz2) \
%(echo BuildArch: noarch) \
%(echo BuildRequires: %{?__mule__:xemacs-mule}%{?!__mule__:xemacs} xemacsen \\>= %__xemacsen__) \
%(echo PreReq: xemacsen \\>= %__xemacsen__) \
%_xemacs_package_requires \
%nil

%define_xemacs_package() \
%{expand: %%global _xemacs_package_dir %__xemacs_package_root/xemacs-packages} \
%{expand: %%__xemacs_package %{*}} \
%nil

%define_xemacs_mule_package() \
%{expand: %%global __mule__ 1} \
%{expand: %%global _xemacs_package_dir %__xemacs_package_root/mule-packages} \
%{expand: %%__xemacs_package %{*}} \
%nil

%define_xemacs_site_package() \
%{expand: %%global _xemacs_package_dir %__xemacs_package_root/site-packages} \
%{expand: %%global xemacs_package %{1}} \
%(echo BuildArch: noarch) \
%(echo BuildRequires: %{?__mule__:xemacs-mule}%{?!__mule__:xemacs} xemacsen \\>= %__xemacsen__) \
%(echo PreReq: xemacsen \\>= %__xemacsen__) \
%(echo Requires: %{?__mule__:xemacs-mule-base}%{?!__mule__:xemacs-base}) \
%nil

%_xemacs_package_etc_dir %_xemacs_package_dir/etc
%_xemacs_package_lisp_dir %_xemacs_package_dir/lisp
%_xemacs_package_lib_dir %_xemacs_package_dir/lib-src

#------------------------------------------------------------------------------
# xemacs' packages, convenience macros
#------------------------------------------------------------------------------
%_xemacsen_el %__xemacs_package_root/xemacsen.el
%_xemacs_getrequires_cmd -batch -vanilla -l %_xemacsen_el \\\
 --eval '(xemacsen-get-rpm-requires (quote %xemacs_package))' \\\
 2> /dev/null |grep -vE '^$'
%_xemacs_package_requires %(%__xemacs %_xemacs_getrequires_cmd)

#------------------------------------------------------------------------------
# xemacs' packages, build macros
#------------------------------------------------------------------------------
%_xemacs_bytecompile_load_path --eval '(setq load-path (append (list ".") load-path))'
%_xemacs_bytecompile_cmd -batch -no-site-file %_xemacs_bytecompile_load_path -f batch-byte-compile
%_xemacs_byterecompile_cmd -batch -no-site-file %_xemacs_bytecompile_load_path -f batch-byte-recompile-directory
%_xemacs_make_autoloads_cmd -batch -no-site-file \\\
--eval '(setq autoload-package-name \"%xemacs_package\")' \\\
--eval '(setq generated-autoload-file \"./auto-autoloads.el\")' \\\
-f batch-update-autoloads

%xemacs_bytecompile(C:) \
%{-C:_mydir="`pwd`"; cd %{-C*}} \
find . -type f -name \\\*.el -a -not -name _pkg.el -print0 |\\\
xargs -r0 %__xemacs %_xemacs_bytecompile_cmd \
%{-C:cd ${_mydir}; unset _mydir} \
%nil

%xemacs_byterecompile(C:) \
%{-C:_mydir="`pwd`"; cd %{-C*}} \
%__xemacs %_xemacs_byterecompile_cmd . \
%{-C:cd ${_mydir}; unset _mydir} \
%nil

%xemacs_make_pkgel \
printf ";;;###autoload\\\n(package-provide '%%s\\\n\\\t:version %%s\\\n\\\t:author-version \\\"%%s\\\"\\\n\\\t:type 'regular)\\\n" \\\
%xemacs_package %version %version \\\
 > %buildroot%_xemacs_package_lisp_dir/%xemacs_package/_pkg.el \
%nil

%xemacs_make_autoloads \
_mydir="`pwd`" \
cd %buildroot%_xemacs_package_lisp_dir/%xemacs_package \
%__xemacs %_xemacs_make_autoloads_cmd *.el \
cd ${_mydir}; unset _mydir \
%nil

%xemacs_package_make \
%xemacs_make_pkgel \
%xemacs_make_autoloads \
%xemacs_bytecompile -C %buildroot%_xemacs_package_lisp_dir/%xemacs_package \
%nil

#------------------------------------------------------------------------------
# xemacs' packages, install macros
#------------------------------------------------------------------------------
%xemacs_package_install \
%__mkdir_p %buildroot%_xemacs_package_dir \
if test -d info; then \
%__mkdir_p %buildroot%_xemacs_infodir \
%__cp -a info/*.info* %buildroot%_xemacs_infodir \
fi \
if test -d etc; then \
%__mkdir_p %buildroot%_xemacs_package_etc_dir \
%__cp -a etc/* %buildroot%_xemacs_package_etc_dir \
fi \
if test -d lisp; then \
%__mkdir_p %buildroot%_xemacs_package_lisp_dir \
%__cp -a lisp/* %buildroot%_xemacs_package_lisp_dir \
fi \
%nil

# finds xemacs package files, assuming these are in standard places
%xemacs_package_find_files \
(if test -d %buildroot%_xemacs_package_etc_dir; then \
	find %buildroot%_xemacs_package_etc_dir -type d \\\
		-mindepth 1 -printf '%%%%dir %%p\\\n' \
	find %buildroot%_xemacs_package_etc_dir -type f \
fi \
if test -d %buildroot%_xemacs_package_lisp_dir; then \
	find %buildroot%_xemacs_package_lisp_dir -type d \\\
		-mindepth 1 -printf '%%%%dir %%p\\\n' \
	find %buildroot%_xemacs_package_lisp_dir -type f \\\
		-name \\\*.elc -a -not -name _pkg.elc -o -name _pkg.el \
	find %buildroot%_xemacs_package_lisp_dir -type f \\\
		-name \\\*.el -a -not -name _pkg.el -exec \\\
		/bin/sh -c 'test -f "{}c" || echo {}' \\\; \
fi \
if test -d %buildroot%_xemacs_package_lib_dir; then \
	find %buildroot%_xemacs_package_lib_dir -type d \\\
		-mindepth 1 -printf '%%%%dir %%p\\\n' \
	find %buildroot%_xemacs_package_lib_dir -type f \
fi \
if test -d %buildroot%_xemacs_infodir; then \
	find %buildroot%_xemacs_infodir -type f -printf '%%p.*\\\n' \
fi \
) |sed 's|%buildroot||' > %name-files \
%nil

#------------------------------------------------------------------------------
# 
#------------------------------------------------------------------------------
%xemacs_makeinstall \
	%{__make} INSTALL="%__install -p" EMACS=%__xemacs \\\
		prefix=%{?buildroot:%{buildroot}}%_prefix \\\
		lispdir=%{?buildroot:%{buildroot}}%{_xemacs_package_lisp_dir} \\\
		infodir=%{?buildroot:%{buildroot}}%{_xemacs_infodir} \\\
  %{?_makeinstall_target:%{_makeinstall_target}}

#------------------------------------------------------------------------------
# xemacs' packages, pre/post scriptlets
#------------------------------------------------------------------------------
%xemacs_install_info() \
for f in %*; do \
	if [ "$f" = "${f##*/}" ]; then \
		f="%_xemacs_infodir/$f" \
	fi \
	%_xemacs_installinfo --info-file="$f" \
done \
%nil

%xemacs_uninstall_info() \
if [ $1 = 0 ]; then \
	for f in %*; do \
		if [ "$f" = "${f##*/}" ]; then \
			f="%_xemacs_infodir/$f" \
		fi \
		%_xemacs_installinfo --delete --info-file="$f" \
  done \
fi \
%nil

#==========================================
#local variables:
#mode: rpm-spec
#fill-column: 80
#tab-width: 2
#end:
