2 # Copyright (c) 2010-2013 Todd C. Miller <Todd.Miller@courtesan.com>
4 # Permission to use, copy, modify, and distribute this software for any
5 # purpose with or without fee is hereby granted, provided that the above
6 # copyright notice and this permission notice appear in all copies.
8 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 #### Start of system configuration section. ####
24 top_builddir = @top_builddir@
25 top_srcdir = @top_srcdir@
26 incdir = $(top_srcdir)/include
27 cross_compiling = @CROSS_COMPILING@
29 # Compiler & tools to use
31 LIBTOOL = @LIBTOOL@ @LT_STATIC@
33 # Our install program supports extra flags...
34 INSTALL = $(SHELL) $(top_srcdir)/install-sh -c
37 LT_LIBS = $(top_builddir)/common/libcommon.la $(LIBOBJDIR)libreplace.la
38 LIBS = @LIBS@ @SUDO_LIBS@ @GETGROUPS_LIB@ @NET_LIBS@ @LIBINTL@ $(LT_LIBS)
40 # C preprocessor flags
41 CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) -I. @CPPFLAGS@
43 # Usually -O and/or -g
46 # Flags to pass to the link stage
48 LT_LDFLAGS = @LT_LDFLAGS@
51 PIE_CFLAGS = @PIE_CFLAGS@
52 PIE_LDFLAGS = @PIE_LDFLAGS@
54 # Stack smashing protection flags
55 SSP_CFLAGS = @SSP_CFLAGS@
56 SSP_LDFLAGS = @SSP_LDFLAGS@
58 # Where to install things...
60 exec_prefix = @exec_prefix@
63 sysconfdir = @sysconfdir@
64 libexecdir = @libexecdir@
65 datarootdir = @datarootdir@
66 localedir = @localedir@
67 localstatedir = @localstatedir@
68 noexecfile = @NOEXECFILE@
69 noexecdir = @NOEXECDIR@
71 # User and group ids the installed files should be "owned" by
75 # File mode to use for shared libraries/objects
76 shlib_mode = @SHLIB_MODE@
78 TEST_PROGS = check_ttyname
79 TEST_LIBS = @LIBS@ @LIBINTL@ $(LT_LIBS)
80 TEST_LDFLAGS = @LDFLAGS@
82 # OS dependent defines
83 DEFS = @OSDEFS@ -DLOCALEDIR=\"$(localedir)\"
85 #### End of system configuration section. ####
91 OBJS = conversation.o env_hooks.o exec.o exec_common.o exec_pty.o get_pty.o \
92 hooks.o net_ifs.o load_plugins.o parse_args.o signal.o sudo.o \
93 sudo_edit.o tgetpass.o ttyname.o utmp.o @SUDO_OBJS@
95 SESH_OBJS = sesh.o locale_stub.o exec_common.o
97 CHECK_TTYNAME_OBJS = check_ttyname.o locale_stub.o ttyname.o
99 LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/
101 VERSION = @PACKAGE_VERSION@
105 Makefile: $(srcdir)/Makefile.in
106 (cd $(top_builddir) && ./config.status --file src/Makefile)
108 .SUFFIXES: .c .h .lo .o
111 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $<
114 $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $<
116 sudo: $(OBJS) $(LT_LIBS)
117 $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJS) $(LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
119 libsudo_noexec.la: sudo_noexec.lo
120 $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ sudo_noexec.lo -avoid-version -rpath $(noexecdir)
122 sesh: $(SESH_OBJS) @LIBINTL@ $(LT_LIBS)
123 $(LIBTOOL) --mode=link $(CC) -o $@ $(SESH_OBJS) $(LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) @LIBINTL@ $(LIBS)
125 check_ttyname: $(CHECK_TTYNAME_OBJS) $(top_builddir)/common/libcommon.la $(LIBOBJDIR)libreplace.la
126 $(LIBTOOL) --mode=link $(CC) -o $@ $(CHECK_TTYNAME_OBJS) $(TEST_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LIBS)
130 install: install-binaries @INSTALL_NOEXEC@
133 $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) \
134 $(DESTDIR)$(libexecdir)/sudo $(DESTDIR)$(noexecdir)
136 install-binaries: install-dirs $(PROGS)
137 $(INSTALL) -b~ -O $(install_uid) -G $(install_gid) -m 04755 sudo $(DESTDIR)$(bindir)/sudo
138 rm -f $(DESTDIR)$(bindir)/sudoedit
139 ln -s sudo $(DESTDIR)$(bindir)/sudoedit
140 if [ -f sesh ]; then $(INSTALL) -b~ -O $(install_uid) -G $(install_gid) -M 0755 sesh $(DESTDIR)$(libexecdir)/sudo/sesh; fi
146 # We install sudo_noexec by hand so we can avoid a "lib" prefix
147 # and a version number. Since we use LD_PRELOAD, neither is needed.
148 install-noexec: install-dirs libsudo_noexec.la
149 if [ -f .libs/lib$(noexecfile) ]; then $(INSTALL) -b~ -O $(install_uid) -G $(install_gid) -m $(shlib_mode) .libs/lib$(noexecfile) $(DESTDIR)$(noexecdir)/$(noexecfile); fi
154 -rm -f $(DESTDIR)$(bindir)/sudo $(DESTDIR)$(bindir)/sudoedit \
155 $(DESTDIR)$(libexecdir)/sudo/sesh \
156 $(DESTDIR)$(noexecdir)/$(noexecfile)
162 -$(LIBTOOL) --mode=clean rm -f $(PROGS) $(TEST_PROGS) *.lo *.o *.la *.a stamp-* core *.core core.*
167 -rm -rf Makefile .libs sudo_usage.h
176 # Autogenerated dependencies, do not modify
177 check_ttyname.o: $(srcdir)/regress/ttyname/check_ttyname.c \
178 $(top_builddir)/config.h $(incdir)/missing.h \
179 $(incdir)/alloc.h $(incdir)/error.h
180 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/regress/ttyname/check_ttyname.c
181 conversation.o: $(srcdir)/conversation.c $(top_builddir)/config.h \
182 $(srcdir)/sudo.h $(top_builddir)/pathnames.h \
183 $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \
184 $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \
185 $(incdir)/list.h $(incdir)/sudo_conf.h $(incdir)/list.h \
186 $(incdir)/sudo_debug.h $(incdir)/gettext.h \
187 $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h
188 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/conversation.c
189 env_hooks.o: $(srcdir)/env_hooks.c $(top_builddir)/config.h \
190 $(top_srcdir)/compat/dlfcn.h $(srcdir)/sudo.h \
191 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
192 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
193 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
194 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
195 $(incdir)/sudo_plugin.h
196 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/env_hooks.c
197 exec.o: $(srcdir)/exec.c $(top_builddir)/config.h $(srcdir)/sudo.h \
198 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
199 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
200 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
201 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
202 $(srcdir)/sudo_exec.h $(incdir)/sudo_plugin.h \
203 $(srcdir)/sudo_plugin_int.h
204 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/exec.c
205 exec_common.o: $(srcdir)/exec_common.c $(top_builddir)/config.h \
206 $(srcdir)/sudo.h $(top_builddir)/pathnames.h \
207 $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \
208 $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \
209 $(incdir)/list.h $(incdir)/sudo_conf.h $(incdir)/list.h \
210 $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/sudo_exec.h
211 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/exec_common.c
212 exec_pty.o: $(srcdir)/exec_pty.c $(top_builddir)/config.h $(srcdir)/sudo.h \
213 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
214 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
215 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
216 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
217 $(srcdir)/sudo_exec.h $(incdir)/sudo_plugin.h \
218 $(srcdir)/sudo_plugin_int.h
219 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/exec_pty.c
220 get_pty.o: $(srcdir)/get_pty.c $(top_builddir)/config.h $(srcdir)/sudo.h \
221 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
222 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
223 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
224 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
225 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/get_pty.c
226 hooks.o: $(srcdir)/hooks.c $(top_builddir)/config.h $(srcdir)/sudo.h \
227 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
228 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
229 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
230 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
231 $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h \
232 $(incdir)/sudo_debug.h
233 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/hooks.c
234 load_plugins.o: $(srcdir)/load_plugins.c $(top_builddir)/config.h \
235 $(top_srcdir)/compat/dlfcn.h $(srcdir)/sudo.h \
236 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
237 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
238 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
239 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
240 $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h \
241 $(incdir)/sudo_conf.h $(incdir)/list.h $(incdir)/sudo_debug.h
242 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/load_plugins.c
243 locale_stub.o: $(srcdir)/locale_stub.c $(top_builddir)/config.h \
244 $(incdir)/missing.h $(incdir)/error.h
245 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/locale_stub.c
246 net_ifs.o: $(srcdir)/net_ifs.c $(top_builddir)/config.h $(incdir)/missing.h \
247 $(incdir)/alloc.h $(incdir)/error.h $(incdir)/sudo_debug.h \
249 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/net_ifs.c
250 openbsd.o: $(srcdir)/openbsd.c $(top_builddir)/config.h $(srcdir)/sudo.h \
251 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
252 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
253 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
254 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
255 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/openbsd.c
256 parse_args.o: $(srcdir)/parse_args.c $(top_builddir)/config.h ./sudo_usage.h \
257 $(srcdir)/sudo.h $(top_builddir)/pathnames.h \
258 $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \
259 $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \
260 $(incdir)/list.h $(incdir)/sudo_conf.h $(incdir)/list.h \
261 $(incdir)/sudo_debug.h $(incdir)/gettext.h $(incdir)/lbuf.h
262 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/parse_args.c
263 preload.o: $(srcdir)/preload.c $(top_builddir)/config.h $(incdir)/sudo_plugin.h
264 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/preload.c
265 selinux.o: $(srcdir)/selinux.c $(top_builddir)/config.h $(srcdir)/sudo.h \
266 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
267 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
268 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
269 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
270 $(srcdir)/sudo_exec.h
271 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/selinux.c
272 sesh.o: $(srcdir)/sesh.c $(top_builddir)/config.h \
273 $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h $(incdir)/alloc.h \
274 $(incdir)/error.h $(incdir)/gettext.h $(incdir)/sudo_conf.h \
275 $(incdir)/list.h $(incdir)/sudo_debug.h $(srcdir)/sudo_exec.h \
276 $(incdir)/sudo_plugin.h
277 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/sesh.c
278 signal.o: $(srcdir)/signal.c $(top_builddir)/config.h $(srcdir)/sudo.h \
279 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
280 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
281 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
282 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
283 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/signal.c
284 solaris.o: $(srcdir)/solaris.c $(top_builddir)/config.h $(srcdir)/sudo.h \
285 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
286 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
287 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
288 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
289 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/solaris.c
290 sudo.o: $(srcdir)/sudo.c $(top_builddir)/config.h $(srcdir)/sudo.h \
291 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
292 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
293 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
294 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
295 $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h ./sudo_usage.h
296 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/sudo.c
297 sudo_edit.o: $(srcdir)/sudo_edit.c $(top_builddir)/config.h $(srcdir)/sudo.h \
298 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
299 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
300 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
301 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
302 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/sudo_edit.c
303 sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(top_builddir)/config.h \
305 $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/sudo_noexec.c
306 tgetpass.o: $(srcdir)/tgetpass.c $(top_builddir)/config.h $(srcdir)/sudo.h \
307 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
308 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
309 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
310 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
311 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/tgetpass.c
312 ttyname.o: $(srcdir)/ttyname.c $(top_builddir)/config.h $(srcdir)/sudo.h \
313 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
314 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
315 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
316 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h
317 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/ttyname.c
318 utmp.o: $(srcdir)/utmp.c $(top_builddir)/config.h $(srcdir)/sudo.h \
319 $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \
320 $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
321 $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_conf.h \
322 $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \
323 $(srcdir)/sudo_exec.h
324 $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(DEFS) $(srcdir)/utmp.c