summaryrefslogtreecommitdiff
path: root/macros.in
blob: 904825492bf2d874387f108ab8c2da511fc5f438 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# $Id: macros.in,v 1.21 1999/04/01 22:26:47 jbj Exp $
#==============================================================================
# Macro naming conventions (preliminary):
#
#	Macros that begin with an underscore are "local" in the sense that
#	they (if used) will not be exported in rpm headers. Some macros
#	that don't start with an underscore (but look like they should)
#	are compatible with macros generated by rpm-2.5.x and will be made
#	more consistent in a future release.
#

#==============================================================================
# ---- filesystem macros.
#
%_usr			@prefix@
%_usrsrc		%{_usr}/src
%_var			@varprefix@

#==============================================================================
# ---- path macros
#	XXX The use of which here is overly simple.
#
%__bzip2		%(which bzip2)
%__cat			%(which cat)
%__chgrp		%(which chgrp)
%__chmod		%(which chmod)
%__chown		%(which chown)
%__cpio			%(which cpio)
%__gzip			%(which gzip)
%__install		%(which install)
%__make			%(which make)
%__mkdir		%(which mkdir)
%__patch		%(which patch)
%__ranlib		%(which ranlib)
%__rm			%(which rm)
%__strip		%(which strip)
%__tar			%(which tar)

# XXX avoid weird failures from which if tools are not installed
%__libtoolize		libtoolize
%__aclocal		aclocal
%__autoheader		autoheader
%__automake		automake
%__autoconf		autoconf

#==============================================================================
# ---- Required rpmrc macros.
#	Macros that used to be initialized as a side effect of rpmrc parsing.
#	These are the default values that can be overridden by other
#	(e.g. per-platform, per-system, per-packager) macro files.
#
%_builddir		%{_topdir}/BUILD
%_buildshell		/bin/sh
%_bzip2bin		@BZIP2BIN@
%_dbpath		%{_var}/lib/rpm
%_defaultdocdir		%{_usr}/doc
#
# XXX fixowner, fixgroup, and fixperms are run at the end of hardcoded setup
%_fixowner		[ `id -u` = '0' ] && chown -R root
%_fixgroup		[ `id -u` = '0' ] && chgrp -R @ROOT_GROUP@
%_fixperms		chmod -R @FIXPERMS@
#
%_gzipbin		@GZIPBIN@
%_instchangelog		5
%_pgpbin		@PGPBIN@
%_rpmdir		%{_topdir}/RPMS
#
# XXX Note escaped %% for use in headerSprintf
%_rpmfilename		%%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
%_signature		none
%_sourcedir		%{_topdir}/SOURCES
%_specdir		%{_topdir}/SPECS
%_srcrpmdir		%{_topdir}/SRPMS
%_tmppath		%{_var}/tmp
%_topdir		%{_usrsrc}/redhat
#
#==============================================================================
# ---- Optional rpmrc macros.
#	Macros that used to be initialized as a side effect of rpmrc and/or
#	spec file parsing but were not set in the distributed configuration 
#	/usr/lib/rpm/rpmrc file.
#
#%buildroot
#%distribution
#%_excludedocs
#%_ftpport
#%_ftpproxy
#%_gpg_name
#%_gpg_path
#%_httpport
#%_httpproxy
#%_langpatt
#%_netsharedpath
#%packager
#%_pgp_name
#%_pgp_path
#%_provides
#%_timecheck
#%vendor

#==============================================================================
# ---- per-platform macros.
#	Macros that are specific to an individual platform. The values here
#	will be used if the per-platform macro file does not exist..
#
%_arch			@RPMCANONARCH@
%_vendor		@RPMCANONVENDOR@
%_os			@RPMCANONOS@
%_target_platform	%{_target_cpu}-%{_vendor}-%{_target_os}
#
# XXX use the rpmrc instantiated macro for now
#%optflags		-O2

#==============================================================================
# ---- script environment macros.
#	Macro(s) that establish the environment for running a script.
#
%_preScriptEnvironment	\
	RPM_SOURCE_DIR=\"%{_sourcedir}\"\
	RPM_BUILD_DIR=\"%{_builddir}\"\
	RPM_OPT_FLAGS=\"%{optflags}\"\
	RPM_ARCH=\"%{_arch}\"\
	RPM_OS=\"%{_os}\"\
	export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\
	RPM_DOC_DIR=\"%{_docdir}\"\
	export RPM_DOC_DIR\
	RPM_PACKAGE_NAME=\"%{name}\"\
	RPM_PACKAGE_VERSION=\"%{version}\"\
	RPM_PACKAGE_RELEASE=\"%{release}\"\
	export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\
	%{?buildroot:RPM_BUILD_ROOT=\"%{buildroot}\"\
	export RPM_BUILD_ROOT\
	}

#==============================================================================
# ---- configure macros.
#	Macro(s) similar to those used by configure.
#
%_prefix		@prefix@
%_build			%{_host}
%_build_alias		%{_host_alias}
%_build_cpu		%{_host_cpu}
%_build_vendor		%{_host_vendor}
%_build_os		%{_host_os}
%_host			@host@
%_host_alias		@host_alias@
%_host_cpu		@host_cpu@
%_host_vendor		@host_vendor@
%_host_os		@host_os@
%_target		%{_host}
%_target_alias		%{_host_alias}
%_target_cpu		%{_host_cpu}
%_target_vendor		%{_host_vendor}
%_target_os		%{_host_os}

#==============================================================================
# ---- specfile macros.
#	Macro(s) here can be used reliably for reproducible builds.
#	(Note: Above is the goal, below are the macros under development)
#
# The configure macro does the following:
#	optionally change to a subdirectory (not implemented).
#	attempt to update config.guess and config.sub.
#	run configure with correct prefix, platform, and CFLAGS.
#	optionally restore current directory (not implemented).
# The configure macro should be invoked as %configure (rather than %{configure})
# because the rest of the arguments will be expanded using %*. Another
# gotcha is that arguments, if present, should be on the same line as the
# %configure.
#
%configure	\
  %{?__libtoolize:[ -f configure.in ] && %{__libtoolize} --copy --force} \
  CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix}

#------------------------------------------------------------------------------
# The GNUconfigure macro does the following:
#	update config.guess and config.sub.
#	regenerate all autoconf/automake files
#	run configure with correct prefix, platform, and CFLAGS.
#
%GNUconfigure	\
  %{__libtoolize} --copy --force \
  %{__aclocal} \
  %{__autoheader} \
  %{__automake} \
  %{__autoconf} \
  CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix}