Makefile.am 26.5 KB
Newer Older
D
Daniel Veillard 已提交
1 2
## Process this file with automake to produce Makefile.in

3
## Copyright (C) 2005-2018 Red Hat, Inc.
E
Eric Blake 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17
##
## This library is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser General Public
## License as published by the Free Software Foundation; either
## version 2.1 of the License, or (at your option) any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
## Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library.  If not, see
## <http://www.gnu.org/licenses/>.
18

19 20
# No libraries with the exception of LIBXML should be listed
# here. List them against the individual XXX_la_CFLAGS targets
21
# that actually use them.
22
AM_CPPFLAGS =	-I../gnulib/lib \
23 24 25 26 27 28 29
		-I$(top_srcdir)/gnulib/lib \
		-I$(top_srcdir) \
		-I../include \
		-I$(top_srcdir)/include \
		-I$(srcdir)/util \
		-I./util \
		-DIN_LIBVIRT \
30 31
		-Dabs_top_builddir="\"$(abs_top_builddir)\"" \
		-Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
32
		$(NULL)
E
Eric Blake 已提交
33

34 35
WARN_CFLAGS += $(STRICT_FRAME_LIMIT_CFLAGS)

36 37 38 39
AM_CFLAGS =	$(LIBXML_CFLAGS) \
		$(WARN_CFLAGS) \
		$(LOCK_CHECKING_CFLAGS) \
		$(WIN32_EXTRA_CFLAGS) \
40
		$(NULL)
41 42 43 44 45
AM_LDFLAGS =	$(DRIVER_MODULES_LDFLAGS) \
		$(RELRO_LDFLAGS) \
		$(NO_INDIRECT_LDFLAGS) \
		$(CYGWIN_EXTRA_LDFLAGS) \
		$(MINGW_EXTRA_LDFLAGS) \
G
Guido Günther 已提交
46
		$(NULL)
47 48 49 50 51
AM_LDFLAGS_MOD = \
	-module \
	-avoid-version \
	$(LIBVIRT_NODELETE) \
	$(AM_LDFLAGS)
52
AM_LDFLAGS_MOD_NOUNDEF = $(AM_LDFLAGS_MOD) $(NO_UNDEFINED_LDFLAGS)
53

54 55
POD2MAN = pod2man -c "Virtualization Support" -r "$(PACKAGE)-$(VERSION)"

56
EXTRA_DIST = $(conf_DATA)
57

58
BUILT_SOURCES =
59 60 61
CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
62
nodist_conf_DATA =
63 64 65 66 67
DRIVER_SOURCE_FILES =
STATEFUL_DRIVER_SOURCE_FILES =
noinst_LTLIBRARIES =
mod_LTLIBRARIES =
INSTALL_DATA_DIRS =
68 69
INSTALL_DATA_LOCAL =
UNINSTALL_LOCAL =
70
libvirt_la_BUILT_LIBADD =
71 72 73
SYM_FILES =
USED_SYM_FILES =
GENERATED_SYM_FILES =
74 75 76 77 78 79 80
augeas_DATA =
augeastest_DATA =
conf_DATA =
AUGEAS_DIRS =
if WITH_DTRACE_PROBES
tapset_DATA =
endif WITH_DTRACE_PROBES
81 82
libexec_PROGRAMS =
RPC_PROBE_FILES =
83 84 85 86 87 88 89
LOGROTATE_FILES_IN =
PODFILES =
MANINFILES =
SYSTEMD_UNIT_FILES_IN =
SYSCONF_FILES =
sbin_PROGRAMS =
man8_MANS =
90
DRIVER_SOURCES =
91
man7_MANS =
92

93
include util/Makefile.inc.am
94
include conf/Makefile.inc.am
95
include cpu/Makefile.inc.am
96
include cpu_map/Makefile.inc.am
97
include security/Makefile.inc.am
98
include access/Makefile.inc.am
99
include logging/Makefile.inc.am
100
include locking/Makefile.inc.am
101
include admin/Makefile.inc.am
102
include rpc/Makefile.inc.am
103
include phyp/Makefile.inc.am
104
include test/Makefile.inc.am
105
include esx/Makefile.inc.am
106
include hyperv/Makefile.inc.am
107
include vmx/Makefile.inc.am
108
include vmware/Makefile.inc.am
109
include vbox/Makefile.inc.am
110
include openvz/Makefile.inc.am
111
include qemu/Makefile.inc.am
112
include bhyve/Makefile.inc.am
113
include xenconfig/Makefile.inc.am
114
include libxl/Makefile.inc.am
115
include xenapi/Makefile.inc.am
116
include vz/Makefile.inc.am
117
include lxc/Makefile.inc.am
118
include interface/Makefile.inc.am
119
include network/Makefile.inc.am
120
include nwfilter/Makefile.inc.am
121
include node_device/Makefile.inc.am
122
include secret/Makefile.inc.am
123
include storage/Makefile.inc.am
124
include remote/Makefile.inc.am
125

126

E
Eric Blake 已提交
127 128
THREAD_LIBS = $(LIB_PTHREAD) $(LTLIBMULTITHREAD)

J
Jim Fehlig 已提交
129
SECDRIVER_CFLAGS =
130 131
SECDRIVER_LIBS =
if WITH_SECDRIVER_SELINUX
J
Jim Fehlig 已提交
132
SECDRIVER_CFLAGS += $(SELINUX_CFLAGS)
133
SECDRIVER_LIBS += $(SELINUX_LIBS)
134
endif WITH_SECDRIVER_SELINUX
135
if WITH_SECDRIVER_APPARMOR
J
Jim Fehlig 已提交
136
SECDRIVER_CFLAGS += $(APPARMOR_CFLAGS)
137
SECDRIVER_LIBS += $(APPARMOR_LIBS)
138
endif WITH_SECDRIVER_APPARMOR
139

140

141
lib_LTLIBRARIES = libvirt.la libvirt-qemu.la libvirt-lxc.la
142

143
moddir = $(libdir)/libvirt/connection-driver
144

A
Amy Griffis 已提交
145
confdir = $(sysconfdir)/libvirt
146
conf_DATA += libvirt.conf libvirt-admin.conf
147

148 149 150 151
augeasdir = $(datadir)/augeas/lenses

augeastestdir = $(datadir)/augeas/lenses/tests

L
Lai Jiangshan 已提交
152

153
# Internal generic driver infrastructure
O
Osier Yang 已提交
154
DATATYPES_SOURCES = datatypes.h datatypes.c
155
DRIVER_SOURCES += \
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
		driver.c driver.h \
		driver-hypervisor.h \
		driver-interface.h \
		driver-network.h \
		driver-nodedev.h \
		driver-nwfilter.h \
		driver-secret.h \
		driver-state.h \
		driver-storage.h \
		driver-stream.h \
		internal.h \
		$(DATATYPES_SOURCES) \
		libvirt.c libvirt_internal.h \
		libvirt-domain.c \
		libvirt-domain-snapshot.c \
		libvirt-host.c \
		libvirt-interface.c \
		libvirt-network.c \
		libvirt-nodedev.c \
		libvirt-nwfilter.c \
		libvirt-secret.c \
		libvirt-storage.c \
		libvirt-stream.c \
179
		$(NULL)
180

181

182

M
Martin Kletzander 已提交
183

184 185 186 187 188 189 190 191 192 193
# Ensure that we don't change the struct or member names or member ordering
# in remote_protocol.x  The embedded perl below needs a few comments, and
# presumes you know what pdwtags output looks like:
# * use -0777 -n to slurp the entire file into $_.
# * the "split" splits on the /* DD */ comments, so that $p iterates
#     through the struct definitions.
# * process only "struct remote_..." entries
# * remove comments and preceding TAB throughout
# * remove empty lines throughout
# * remove white space at end of buffer
194 195 196 197

# With pdwtags 1.8, --verbose output includes separators like these:
# /* 93 */
# /* <0> (null):0 */
198 199
# with the second line omitted for intrinsic types.
# Whereas with pdwtags 1.3, they look like this:
200
# /* <2d2> /usr/include/libio.h:180 */
201 202
# The alternation of the following regexps matches both cases.
r1 = /\* \d+ \*/
203
r2 = /\* <[[:xdigit:]]+> \S+:\d+ \*/
M
Martin Kletzander 已提交
204 205 206
libs_prefix = remote_|qemu_|lxc_|admin_
other_prefix = keepalive|vir(Net|LockSpace|LXCMonitor)
struct_prefix = ($(libs_prefix)|$(other_prefix))
207

208
# Depending on configure options, libtool creates one or both of
E
Eric Blake 已提交
209 210
# remote/{,.libs/}libvirt_driver_remote_la-remote_protocol.o.  We want
# the newest of the two, in case configure options changed and a stale
211
# file is left around from an earlier build.
212 213 214
# The pdwtags output is completely different when building with clang
# which causes the comparison against expected output to fail, so skip
# if using clang as CC.
215
PDWTAGS = \
A
Andrea Bolognani 已提交
216
	$(AM_V_GEN)if $(CC) -v 2>&1 | grep -q clang; then \
217 218 219 220
	   echo 'WARNING: skipping pdwtags test with Clang' >&2; \
	   exit 0; \
	fi; \
	if (pdwtags --help) > /dev/null 2>&1; then \
221 222 223 224 225 226 227
	  o=`ls -t $(<:.lo=.$(OBJEXT)) \
	     $(subst /,/.libs/,$(<:.lo=.$(OBJEXT))) \
	    2>/dev/null | sed -n 1p`; \
	  test -f "$$o" || { echo ".o for $< not found" >&2; exit 1; }; \
	  pdwtags --verbose $$o > $(@F)-t1 2> $(@F)-t2; \
	  if test ! -s $(@F)-t1 && test -s $(@F)-t2; then \
	    rm -rf $(@F)-t?; \
228
	    echo 'WARNING: pdwtags appears broken; skipping the $@ test' >&2;\
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
	  else \
	    $(PERL) -0777 -n \
		-e 'foreach my $$p (split m!\n*(?:$(r1)|$(r2))\n!) {' \
		-e '  if ($$p =~ /^(struct|enum) $(struct_prefix)/ ||' \
		-e '      $$p =~ /^enum \{/) {' \
		-e '    $$p =~ s!\t*/\*.*?\*/!!sg;' \
		-e '    $$p =~ s!\s+\n!\n!sg;' \
		-e '    $$p =~ s!\s+$$!!;' \
		-e '    $$p =~ s!\t!        !g;' \
		-e '    print "$$p\n";' \
		-e '    $$n++;' \
		-e '  }' \
		-e '}' \
		-e 'BEGIN {' \
		-e '  print "/* -*- c -*- */\n";' \
		-e '}' \
		-e 'END {' \
		-e '  if ($$n < 1) {' \
247
		-e '    warn "WARNING: your pdwtags program is too old\n";' \
248
		-e '    warn "WARNING: skipping the $@ test\n";' \
249
		-e '    warn "WARNING: install dwarves-1.3 or newer\n";' \
250 251 252 253
		-e '    exit 8;' \
		-e '  }' \
		-e '}' \
		< $(@F)-t1 > $(@F)-t3; \
254
	    case $$? in 8) rm -f $(@F)-t?; exit 0;; 0) ;; *) exit 1;; esac;\
255 256 257 258
	    diff -u $(@)s $(@F)-t3; st=$$?; rm -f $(@F)-t?; exit $$st; \
	  fi; \
	else \
	  echo 'WARNING: you lack pdwtags; skipping the $@ test' >&2; \
259
	  echo 'WARNING: install the dwarves package to get pdwtags' >&2; \
260
	fi
261

262
# .libs/libvirt.so is built by libtool as a side-effect of the Makefile
263 264
# rule for libvirt.la.  However, checking symbols relies on Linux ELF layout
if WITH_LINUX
265 266 267
check-symfile: libvirt.syms libvirt.la
	$(AM_V_GEN)$(PERL) $(srcdir)/check-symfile.pl libvirt.syms \
	  .libs/libvirt.so
268 269 270
check-admin-symfile: libvirt_admin.syms libvirt-admin.la
	$(AM_V_GEN)$(PERL) $(srcdir)/check-symfile.pl libvirt_admin.syms \
	  .libs/libvirt-admin.so
271
else ! WITH_LINUX
272
check-symfile:
273
check-admin-symfile:
274
endif ! WITH_LINUX
275
check-symsorting:
276
	$(AM_V_GEN)$(PERL) $(srcdir)/check-symsorting.pl \
277
		$(srcdir) $(SYM_FILES)
278 279 280
check-admin-symsorting:
	$(AM_V_GEN)$(PERL) $(srcdir)/check-symsorting.pl \
		$(srcdir) $(ADMIN_SYM_FILES)
J
Jiri Denemark 已提交
281
EXTRA_DIST += check-symfile.pl check-symsorting.pl
282

E
Eric Blake 已提交
283
# Keep this list synced with RPC_PROBE_FILES
284 285
PROTOCOL_STRUCTS = \
	$(srcdir)/remote_protocol-structs \
286
	$(srcdir)/lxc_protocol-structs \
287
	$(srcdir)/qemu_protocol-structs \
J
Jiri Denemark 已提交
288
	$(srcdir)/virnetprotocol-structs \
E
Eric Blake 已提交
289 290 291
	$(srcdir)/virkeepaliveprotocol-structs \
	$(srcdir)/lxc_monitor_protocol-structs \
	$(srcdir)/lock_protocol-structs \
M
Martin Kletzander 已提交
292
	$(srcdir)/admin_protocol-structs \
E
Eric Blake 已提交
293 294
	$(NULL)

295
if WITH_REMOTE
296 297
check-protocol: $(PROTOCOL_STRUCTS) $(PROTOCOL_STRUCTS:structs=struct)

298 299
# The .o file that pdwtags parses is created as a side effect of running
# libtool; but from make's perspective we depend on the .lo file.
300 301 302
$(srcdir)/remote_protocol-struct \
	$(srcdir)/qemu_protocol-struct \
	$(srcdir)/lxc_protocol-struct: \
E
Eric Blake 已提交
303
		$(srcdir)/%-struct: remote/libvirt_driver_remote_la-%.lo
304
	$(PDWTAGS)
305
$(srcdir)/virnetprotocol-struct $(srcdir)/virkeepaliveprotocol-struct: \
E
Eric Blake 已提交
306
		$(srcdir)/%-struct: rpc/libvirt_net_rpc_la-%.lo
307
	$(PDWTAGS)
E
Eric Blake 已提交
308
$(srcdir)/lxc_monitor_protocol-struct: \
E
Eric Blake 已提交
309
		$(srcdir)/%-struct: lxc/libvirt_driver_lxc_impl_la-%.lo
E
Eric Blake 已提交
310 311
	$(PDWTAGS)
$(srcdir)/lock_protocol-struct: \
E
Eric Blake 已提交
312
		$(srcdir)/%-struct: locking/lockd_la-%.lo
E
Eric Blake 已提交
313
	$(PDWTAGS)
M
Martin Kletzander 已提交
314 315 316
$(srcdir)/admin_protocol-struct: \
		$(srcdir)/%-struct: admin/libvirt_admin_la-%.lo
	$(PDWTAGS)
E
Eric Blake 已提交
317

318
else !WITH_REMOTE
319 320 321
# The $(PROTOCOL_STRUCTS) files must live in git, because they cannot be
# re-generated when configured --without-remote.
check-protocol:
322
endif !WITH_REMOTE
J
Jiri Denemark 已提交
323
EXTRA_DIST += $(PROTOCOL_STRUCTS)
324 325 326 327 328

check-drivername:
	$(AM_V_GEN)$(PERL) $(srcdir)/check-drivername.pl \
		$(srcdir)/driver.h \
		$(srcdir)/libvirt_public.syms \
329
		$(srcdir)/libvirt_admin_public.syms \
330 331 332 333 334
		$(srcdir)/libvirt_qemu.syms \
		$(srcdir)/libvirt_lxc.syms

EXTRA_DIST += check-drivername.pl

335 336
check-driverimpls:
	$(AM_V_GEN)$(PERL) $(srcdir)/check-driverimpls.pl \
337
		$(filter /%,$(DRIVER_SOURCE_FILES)) \
E
Eric Blake 已提交
338 339 340
		$(filter $(srcdir)/%,$(DRIVER_SOURCE_FILES)) \
		$(addprefix $(srcdir)/,$(filter-out $(srcdir)/%, \
			$(filter-out /%,$(DRIVER_SOURCE_FILES))))
341

342 343
check-aclrules:
	$(AM_V_GEN)$(PERL) $(srcdir)/check-aclrules.pl \
E
Eric Blake 已提交
344
		$(REMOTE_PROTOCOL) \
345
		$(addprefix $(srcdir)/,$(filter-out /%,$(STATEFUL_DRIVER_SOURCE_FILES)))
346

347 348 349 350 351
check-aclperms:
	$(AM_V_GEN)$(PERL) $(srcdir)/check-aclperms.pl \
		$(srcdir)/access/viraccessperm.h \
		$(srcdir)/access/viraccessperm.c

G
Guido Günther 已提交
352
EXTRA_DIST += check-driverimpls.pl check-aclrules.pl check-aclperms.pl
353

354
check-local: check-protocol check-symfile check-symsorting \
355
	check-drivername check-driverimpls check-aclrules \
356
	check-aclperms check-admin-symfile check-admin-symsorting
357
.PHONY: check-protocol $(PROTOCOL_STRUCTS:structs=struct)
358

359 360 361 362 363 364 365

#########################
#
# Build up list of libvirt.la source files based on configure conditions
#
# First deal with sources usable in non-daemon context

366

367
noinst_LTLIBRARIES += libvirt_driver.la
368
libvirt_la_BUILT_LIBADD += libvirt_driver.la
369
libvirt_driver_la_SOURCES = $(DRIVER_SOURCES)
370

371
libvirt_driver_la_CFLAGS = \
372
		$(GNUTLS_CFLAGS) $(CURL_CFLAGS) $(XDR_CFLAGS) \
373
		-I$(srcdir)/conf $(AM_CFLAGS)
374
libvirt_driver_la_LIBADD = \
375
		$(GNUTLS_LIBS) $(CURL_LIBS) $(DLOPEN_LIBS)
376

377 378
# All .syms files should be placed in exactly one of these three lists,
# depending on whether they are stored in git and/or used in the build.
379 380 381
SYM_FILES += $(USED_SYM_FILES)
USED_SYM_FILES += $(srcdir)/libvirt_private.syms
GENERATED_SYM_FILES += \
382
	libvirt.syms libvirt.def libvirt_qemu.def libvirt_lxc.def \
383
	libvirt_admin.syms libvirt_admin.def \
384
	$(NULL)
385

C
Chris Lalancette 已提交
386

387

388
%protocol.c: %protocol.x %protocol.h $(srcdir)/rpc/genprotocol.pl
389
	$(AM_V_GEN)$(PERL) -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -c \
390
	       $< $(srcdir)/$(subst $(srcdir)/,,$@)
391

392
%protocol.h: %protocol.x $(srcdir)/rpc/genprotocol.pl
393
	$(AM_V_GEN)$(PERL) -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -h \
394
	       $< $(srcdir)/$(subst $(srcdir)/,,$@)
395

396

397

398

399

400

401

402 403
check-local: check-augeas

404
check-augeas: $(AUGEAS_DIRS:%=check-augeas-%)
405

406
AUG_GENTEST = $(PERL) $(top_srcdir)/build-aux/augeas-gentest.pl
407
EXTRA_DIST += $(top_srcdir)/build-aux/augeas-gentest.pl
408

409

410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428
#
# Build our version script.  This is composed of three parts:
#
# 1. libvirt_public.syms - public API.  These functions are always
# present in the library and should never change incompatibly.
#
# 2. libvirt_private.syms - private API.  These symbols are private and
# semantics may change on every release, hence the version number is
# spliced in at build time. This ensures that if libvirtd, virsh, or a
# driver module was built against one libvirt release, it will refuse to
# load with another where symbols may have same names but different
# semantics. Such symbols should never be visible in an (installed)
# public header file.
#
# 3. libvirt_*.syms - dynamic private API.  Like libvirt_private.syms,
# except that build options (such as --enable-debug) can mean these
# symbols aren't present at all.
#

429
USED_SYM_FILES += $(srcdir)/libvirt_driver_modules.syms
430

431
if WITH_LINUX
432
USED_SYM_FILES += $(srcdir)/libvirt_linux.syms
433
else ! WITH_LINUX
434
SYM_FILES += $(srcdir)/libvirt_linux.syms
435
endif ! WITH_LINUX
436

437
if WITH_SASL
438
USED_SYM_FILES += $(srcdir)/libvirt_sasl.syms
439
else ! WITH_SASL
440
SYM_FILES += $(srcdir)/libvirt_sasl.syms
441
endif ! WITH_SASL
E
Eric Blake 已提交
442

443
if WITH_SSH2
444
USED_SYM_FILES += $(srcdir)/libvirt_libssh2.syms
445
else ! WITH_SSH2
446
SYM_FILES += $(srcdir)/libvirt_libssh2.syms
447
endif ! WITH_SSH2
448

449
if WITH_ATOMIC_OPS_PTHREAD
450
USED_SYM_FILES += $(srcdir)/libvirt_atomic.syms
451
else ! WITH_ATOMIC_OPS_PTHREAD
452
SYM_FILES += $(srcdir)/libvirt_atomic.syms
453
endif ! WITH_ATOMIC_OPS_PTHREAD
454

455 456 457 458 459 460
if WITH_LIBSSH
USED_SYM_FILES += $(srcdir)/libvirt_libssh.syms
else ! WITH_LIBSSH
SYM_FILES += $(srcdir)/libvirt_libssh.syms
endif ! WITH_LIBSSH

461
EXTRA_DIST += \
462 463 464 465 466 467
	libvirt_public.syms \
	libvirt_lxc.syms \
	libvirt_qemu.syms \
	libvirt_admin_public.syms \
	$(SYM_FILES) \
	$(ADMIN_SYM_FILES) \
468
	$(NULL)
469

470
BUILT_SOURCES += $(GENERATED_SYM_FILES)
471

472 473
libvirt.syms: libvirt_public.syms $(USED_SYM_FILES) \
		$(ACCESS_DRIVER_SYM_FILES) \
474
		$(top_builddir)/config.status
475 476 477 478 479 480
	$(AM_V_GEN)rm -f $@-tmp $@ ; \
	printf '# WARNING: generated from the following:\n# $^\n\n' >$@-tmp && \
	cat $(srcdir)/libvirt_public.syms >>$@-tmp && \
	printf '\n\n# Private symbols\n\n' >>$@-tmp && \
	printf 'LIBVIRT_PRIVATE_$(VERSION) {\n\n'  >>$@-tmp && \
	printf 'global:\n\n' >>$@-tmp && \
481
	cat $(USED_SYM_FILES) $(ACCESS_DRIVER_SYM_FILES) >>$@-tmp && \
482 483
	printf '\n\nlocal:\n*;\n\n};' >>$@-tmp && \
	chmod a-w $@-tmp && \
484
	mv $@-tmp libvirt.syms
485

486
%.def: %.syms
487 488
	$(AM_V_GEN)rm -f -- $@-tmp $@ ; \
	printf 'EXPORTS\n' > $@-tmp && \
489
	sed -e '/^$$/d; /#/d; /:/d; /}/d; /\*/d; /LIBVIRT_/d' \
490
	    -e 's/[	 ]*\(.*\)\;/    \1/g' $^ >> $@-tmp && \
491
	chmod a-w $@-tmp && \
492
	mv $@-tmp $@
493

494 495 496 497 498 499 500 501 502 503 504 505 506
libvirt_admin.syms: libvirt_admin_public.syms $(ADMIN_SYM_FILES) \
		$(top_builddir)/config.status
	$(AM_V_GEN)rm -f $@-tmp $@ ; \
	printf '# WARNING: generated from the following:\n# $^\n\n' >$@-tmp && \
	cat $(srcdir)/libvirt_admin_public.syms >>$@-tmp && \
	printf '\n\n# Private symbols\n\n' >>$@-tmp && \
	printf 'LIBVIRT_ADMIN_PRIVATE_$(VERSION) {\n\n'  >>$@-tmp && \
	printf 'global:\n\n' >>$@-tmp && \
	cat $(ADMIN_SYM_FILES) >>$@-tmp && \
	printf '\n\nlocal:\n*;\n\n};' >>$@-tmp && \
	chmod a-w $@-tmp && \
	mv $@-tmp libvirt_admin.syms

507

M
Martin Kletzander 已提交
508 509
lib_LTLIBRARIES += libvirt-admin.la
libvirt_admin_la_SOURCES = \
510 511
		libvirt-admin.c \
		$(ADMIN_PROTOCOL_GENERATED) \
M
Martin Kletzander 已提交
512 513 514
		$(DATATYPES_SOURCES)

libvirt_admin_la_LDFLAGS = \
515 516
		$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_ADMIN_SYMBOL_FILE) \
		-version-info $(LIBVIRT_VERSION_INFO) \
517 518 519
		$(LIBVIRT_NODELETE) \
		$(AM_LDFLAGS) \
		$(NULL)
M
Martin Kletzander 已提交
520 521

libvirt_admin_la_LIBADD = \
522
		libvirt.la \
M
Martin Kletzander 已提交
523 524 525
		$(CYGWIN_EXTRA_LIBADD)

libvirt_admin_la_CFLAGS = \
526 527 528
		$(AM_CFLAGS) \
		-I$(srcdir)/remote \
		-I$(srcdir)/rpc \
M
Martin Kletzander 已提交
529 530 531
		-I$(srcdir)/admin

libvirt_admin_la_CFLAGS += \
532 533
		$(XDR_CFLAGS) \
		$(CAPNG_CFLAGS) \
534
		$(YAJL_CFLAGS) \
535 536 537
		$(SSH2_CFLAGS) \
		$(SASL_CFLAGS) \
		$(GNUTLS_CFLAGS) \
538
		$(LIBSSH_CFLAGS)
M
Martin Kletzander 已提交
539 540

libvirt_admin_la_LIBADD += \
541
		$(CAPNG_LIBS) \
542
		$(YAJL_LIBS) \
543 544 545 546 547
		$(DEVMAPPER_LIBS) \
		$(LIBXML_LIBS) \
		$(SSH2_LIBS) \
		$(SASL_LIBS) \
		$(GNUTLS_LIBS) \
548
		$(LIBSSH_LIBS)
M
Martin Kletzander 已提交
549

550 551
ADMIN_SYM_FILES = $(srcdir)/libvirt_admin_private.syms

M
Martin Kletzander 已提交
552 553 554 555
if WITH_DTRACE_PROBES
libvirt_admin_la_LIBADD += libvirt_probes.lo
endif WITH_DTRACE_PROBES

556 557
# Empty source list - it merely links a bunch of convenience libs together
libvirt_la_SOURCES =
D
Daniel P. Berrange 已提交
558 559 560 561
libvirt_la_LDFLAGS = \
		$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE) \
		-version-info $(LIBVIRT_VERSION_INFO) \
		$(LIBVIRT_NODELETE) \
562
		$(NO_UNDEFINED_LDFLAGS) \
D
Daniel P. Berrange 已提交
563 564
		$(AM_LDFLAGS) \
		$(NULL)
565
libvirt_la_BUILT_LIBADD += ../gnulib/lib/libgnu.la
566
libvirt_la_LIBADD += \
567
		    $(DRIVER_MODULES_LIBS) \
568
		    $(CYGWIN_EXTRA_LIBADD)
569
libvirt_la_CFLAGS = -DIN_LIBVIRT $(AM_CFLAGS)
570 571 572 573 574 575
# Because we specify libvirt_la_DEPENDENCIES for $(LIBVIRT_SYMBOL_FILE), we
# lose automake's automatic dependencies on an appropriate subset of
# $(libvirt_la_LIBADD).  But we were careful to create
# $(libvirt_la_BUILT_LIBADD) as the subset that automake would have
# picked out for us.
libvirt_la_DEPENDENCIES = $(libvirt_la_BUILT_LIBADD) $(LIBVIRT_SYMBOL_FILE)
576

577
if WITH_DTRACE_PROBES
578
libvirt_la_BUILT_LIBADD += libvirt_probes.lo
579
libvirt_la_DEPENDENCIES += libvirt_probes.lo libvirt_probes.o
580
nodist_libvirt_la_SOURCES = libvirt_probes.h
E
Eric Blake 已提交
581
if WITH_REMOTE
E
Eric Blake 已提交
582
nodist_libvirt_driver_remote_la_SOURCES = libvirt_probes.h
E
Eric Blake 已提交
583
endif WITH_REMOTE
584
DTRACE2SYSTEMTAP_FLAGS = --with-modules
585

586 587
BUILT_SOURCES += libvirt_probes.h libvirt_probes.stp libvirt_functions.stp

588 589

tapsetdir = $(datadir)/systemtap/tapset
590
tapset_DATA += libvirt_probes.stp libvirt_functions.stp
591

592
%_probes.h: %_probes.d
593 594
	$(AM_V_GEN)$(DTRACE) -o $@ -h -s $<

E
Eric Blake 已提交
595
.PRECIOUS: %_probes.o
596
%_probes.o: %_probes.d
597 598
	$(AM_V_GEN)$(DTRACE) -o $@ -G -s $<

599 600 601 602 603 604 605 606 607
%_probes.lo: %_probes.o
	$(AM_V_GEN)printf %s\\n \
	  '# $@ - a libtool object file' \
	  '# Generated by libtool (GNU libtool) 2.4' \
	  '# Actually generated by Makefile.am, in order to shut up libtool' \
	  "pic_object='$<'" \
	  "non_pic_object='$<'" \
	> $@

E
Eric Blake 已提交
608
# Keep this list synced with PROTOCOL_STRUCTS
609
RPC_PROBE_FILES += $(srcdir)/rpc/virnetprotocol.x \
J
Jiri Denemark 已提交
610 611
		  $(srcdir)/rpc/virkeepaliveprotocol.x \
		  $(srcdir)/remote/remote_protocol.x \
612
		  $(srcdir)/remote/lxc_protocol.x \
613
		  $(srcdir)/remote/qemu_protocol.x \
M
Martin Kletzander 已提交
614
		  $(srcdir)/admin/admin_protocol.x
615 616

libvirt_functions.stp: $(RPC_PROBE_FILES) $(srcdir)/rpc/gensystemtap.pl
617
	$(AM_V_GEN)$(PERL) -w $(srcdir)/rpc/gensystemtap.pl $(RPC_PROBE_FILES) > $@
618

619 620
%_probes.stp: %_probes.d $(srcdir)/dtrace2systemtap.pl \
		$(top_builddir)/config.status
621
	$(AM_V_GEN)$(PERL) -w $(srcdir)/dtrace2systemtap.pl \
622
	  $(DTRACE2SYSTEMTAP_FLAGS) $(bindir) $(sbindir) $(libdir) $< > $@
623

624
CLEANFILES += libvirt_probes.h libvirt_probes.o libvirt_probes.lo \
625
              libvirt_functions.stp libvirt_probes.stp
626
endif WITH_DTRACE_PROBES
627

628
EXTRA_DIST += libvirt_probes.d
629

C
Chris Lalancette 已提交
630
libvirt_qemu_la_SOURCES = libvirt-qemu.c
D
Daniel P. Berrange 已提交
631 632 633
libvirt_qemu_la_LDFLAGS = \
		$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_QEMU_SYMBOL_FILE) \
		-version-info $(LIBVIRT_VERSION_INFO) \
634
		$(LIBVIRT_NODELETE) \
D
Daniel P. Berrange 已提交
635 636
		$(AM_LDFLAGS) \
		$(NULL)
637
libvirt_qemu_la_CFLAGS = $(AM_CFLAGS)
C
Chris Lalancette 已提交
638
libvirt_qemu_la_LIBADD = libvirt.la $(CYGWIN_EXTRA_LIBADD)
639

640
libvirt_lxc_la_SOURCES = libvirt-lxc.c
D
Daniel P. Berrange 已提交
641 642 643
libvirt_lxc_la_LDFLAGS = \
		$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_LXC_SYMBOL_FILE) \
		-version-info $(LIBVIRT_VERSION_INFO) \
644
		$(LIBVIRT_NODELETE) \
D
Daniel P. Berrange 已提交
645 646
		$(AM_LDFLAGS) \
		$(NULL)
647 648 649
libvirt_lxc_la_CFLAGS = $(AM_CFLAGS)
libvirt_lxc_la_LIBADD = libvirt.la $(CYGWIN_EXTRA_LIBADD)

650 651
# Since virt-login-shell will be setuid, we must do everything
# we can to avoid linking to other libraries. Many of them do
J
Ján Tomko 已提交
652
# unsafe things in functions marked __attribute__((constructor)).
653 654 655 656
# This library is built to include the bare minimum required to
# have a RPC client for local UNIX socket access only. We use
# the ../config-post.h header to disable all external deps that
# we don't want
657
if WITH_SETUID_RPC_CLIENT
658 659
noinst_LTLIBRARIES += libvirt-setuid-rpc-client.la

660 661
libvirt_setuid_rpc_client_la_SOURCES = \
		util/viralloc.c \
662
		util/virarch.c \
663 664 665 666 667
		util/viratomic.c \
		util/viratomic.h \
		util/virbitmap.c \
		util/virbuffer.c \
		util/vircgroup.c \
668
		util/vircgroupbackend.c \
669
		util/vircgroupv1.c \
P
Pavel Hrdina 已提交
670
		util/vircgroupv2.c \
671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730
		util/vircommand.c \
		util/virconf.c \
		util/virdbus.c \
		util/virerror.c \
		util/virevent.c \
		util/vireventpoll.c \
		util/virfile.c \
		util/virgettext.c \
		util/virhash.c \
		util/virhashcode.c \
		util/virhostcpu.c \
		util/virjson.c \
		util/virlog.c \
		util/virobject.c \
		util/virpidfile.c \
		util/virprocess.c \
		util/virrandom.c \
		util/virsocketaddr.c \
		util/virstring.c \
		util/virsystemd.c \
		util/virtime.c \
		util/virthread.c \
		util/virthreadjob.c \
		util/virtypedparam.c \
		util/viruri.c \
		util/virutil.c \
		util/viruuid.c \
		conf/domain_event.c \
		conf/network_event.c \
		conf/object_event.c \
		conf/storage_event.c \
		conf/node_device_event.c \
		conf/secret_event.c \
		rpc/virnetsocket.c \
		rpc/virnetsocket.h \
		rpc/virnetmessage.h \
		rpc/virnetmessage.c \
		rpc/virkeepalive.c \
		rpc/virkeepalive.h \
		rpc/virnetclient.c \
		rpc/virnetclientprogram.c \
		rpc/virnetclientstream.c \
		rpc/virnetprotocol.c \
		remote/remote_driver.c \
		remote/remote_protocol.c \
		remote/qemu_protocol.c \
		remote/lxc_protocol.c \
		datatypes.c \
		libvirt.c \
		libvirt-domain.c \
		libvirt-domain-snapshot.c \
		libvirt-host.c \
		libvirt-interface.c \
		libvirt-network.c \
		libvirt-nodedev.c \
		libvirt-nwfilter.c \
		libvirt-secret.c \
		libvirt-storage.c \
		libvirt-stream.c \
		libvirt-lxc.c \
731 732
		$(NULL)

733 734 735 736
libvirt_setuid_rpc_client_la_LDFLAGS = \
		$(AM_LDFLAGS) \
		$(LIBXML_LIBS) \
		$(SECDRIVER_LIBS) \
737
		$(NULL)
738 739 740 741 742 743 744
libvirt_setuid_rpc_client_la_CFLAGS = \
		-DLIBVIRT_SETUID_RPC_CLIENT \
		-I$(srcdir)/conf \
		-I$(srcdir)/rpc \
		$(AM_CFLAGS) \
		$(SECDRIVER_CFLAGS) \
		$(XDR_CFLAGS) \
745
		$(NULL)
746
endif WITH_SETUID_RPC_CLIENT
747

748
EXTRA_DIST += $(SYSCONF_FILES)
749 750

install-sysconfig:
E
Eric Blake 已提交
751
	$(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig
752 753 754
	for f in $(SYSCONF_FILES:%.sysconf=%) ; \
	do \
	  tgt=`basename $$f`; \
755
	  $(INSTALL_DATA) $(srcdir)/$$f.sysconf \
756
	      $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \
757
	done
758 759

uninstall-sysconfig:
760 761 762 763 764
	for f in $(SYSCONF_FILES:%.sysconf=%) ; \
	do \
	  tgt=`basename $$f`; \
	  rm -f $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \
	done
E
Eric Blake 已提交
765
	rmdir $(DESTDIR)$(sysconfdir)/sysconfig || :
766

767
LOGROTATE_FILES := $(LOGROTATE_FILES_IN:remote/%.in=%)
768 769 770 771

EXTRA_DIST += $(LOGROTATE_FILES_IN)

BUILT_SOURCES += $(LOGROTATE_FILES)
772
CLEANFILES += $(LOGROTATE_FILES)
773 774 775 776 777 778 779

%.logrotate: remote/%.logrotate.in
	$(AM_V_GEN)sed \
	    -e 's|[@]localstatedir[@]|$(localstatedir)|g' \
	    < $< > $@-t && \
	mv $@-t $@

780
if WITH_LIBVIRTD
781 782 783 784 785 786 787 788 789 790 791 792
install-logrotate: $(LOGROTATE_FILES)
	$(MKDIR_P) $(DESTDIR)$(sysconfdir)/logrotate.d/
	for f in $(LOGROTATE_FILES) ; \
	do \
	  tgt=`echo $$f | sed -e 's/.logrotate//'`; \
	  $(INSTALL_DATA) $$f \
		$(DESTDIR)$(sysconfdir)/logrotate.d/$$tgt; \
	done

uninstall-logrotate:
	rm -f $(LOGROTATE_FILES:%.logrotate=$(DESTDIR)$(sysconfdir)/logrotate.d/%)
	rmdir $(DESTDIR)$(sysconfdir)/logrotate.d || :
793 794 795 796

INSTALL_DATA_LOCAL += install-logrotate
UNINSTALL_LOCAL += uninstall-logrotate
endif WITH_LIBVIRTD
797

798

799
%.8: %.8.in $(top_srcdir)/configure.ac
800
	$(AM_V_GEN)sed \
801 802 803
		-e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \
		-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
		< $< > $@-t && \
804 805
	mv $@-t $@

806
CLEANFILES += $(man8_MANS)
A
Andrea Bolognani 已提交
807
MAINTAINERCLEANFILES += $(MANINFILES)
808 809

EXTRA_DIST += \
810
        $(SYSTEMD_UNIT_FILES_IN) \
A
Andrea Bolognani 已提交
811 812
        $(PODFILES) \
        $(MANINFILES) \
813
        $(NULL)
814

815 816 817 818

if WITH_LIBVIRTD
if LIBVIRT_INIT_SCRIPT_SYSTEMD

819
SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
820
SYSTEMD_UNIT_FILES = $(notdir $(SYSTEMD_UNIT_FILES_IN:%.in=%))
821

822 823
BUILT_SOURCES += $(SYSTEMD_UNIT_FILES)
DISTCLEANFILES += $(SYSTEMD_UNIT_FILES)
824

825
install-systemd: $(SYSTEMD_UNIT_FILES) install-sysconfig
E
Eric Blake 已提交
826
	$(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
827 828 829 830
	for f in $(SYSTEMD_UNIT_FILES); \
	do \
	  $(INSTALL_DATA) $$f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/ ; \
	done
831 832

uninstall-systemd: uninstall-sysconfig
833
	rm -f $(SYSTEMD_UNIT_FILES:%=$(DESTDIR)$(SYSTEMD_UNIT_DIR)/%)
E
Eric Blake 已提交
834
	rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || :
835 836 837 838 839

INSTALL_DATA_LOCAL += install-systemd
UNINSTALL_LOCAL += uninstall-systemd
endif LIBVIRT_INIT_SCRIPT_SYSTEMD
endif WITH_LIBVIRTD
840 841


842
EXTRA_DIST += dtrace2systemtap.pl
843

844

845
if WITH_LIBVIRTD
846 847
libexec_PROGRAMS += libvirt_iohelper
libvirt_iohelper_SOURCES = $(UTIL_IO_HELPER_SOURCES)
D
Daniel P. Berrange 已提交
848 849 850 851
libvirt_iohelper_LDFLAGS = \
		$(AM_LDFLAGS) \
		$(PIE_LDFLAGS) \
		$(NULL)
852 853
libvirt_iohelper_LDADD = \
		libvirt_util.la \
854
		../gnulib/lib/libgnu.la
855 856
if WITH_DTRACE_PROBES
libvirt_iohelper_LDADD += libvirt_probes.lo
857
endif WITH_DTRACE_PROBES
858

D
Daniel P. Berrange 已提交
859 860 861 862
libvirt_iohelper_CFLAGS = \
		$(AM_CFLAGS) \
		$(PIE_CFLAGS) \
		$(NULL)
863 864


865
endif WITH_LIBVIRTD
866

867

J
Jamie Strandboge 已提交
868

869
if WITH_NSS
870 871
noinst_LTLIBRARIES += libvirt-nss.la

872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920
libvirt_nss_la_SOURCES = \
		util/viralloc.c \
		util/viralloc.h \
		util/viratomic.c \
		util/viratomic.h \
		util/virbitmap.c \
		util/virbitmap.h \
		util/virbuffer.c \
		util/virbuffer.h \
		util/vircommand.c \
		util/vircommand.h \
		util/virerror.c \
		util/virerror.h \
		util/virfile.c \
		util/virfile.h \
		util/virhash.c \
		util/virhash.h \
		util/virhashcode.c \
		util/virhashcode.h \
		util/virjson.c \
		util/virjson.h \
		util/virkmod.c \
		util/virkmod.h \
		util/virlease.c \
		util/virlease.h \
		util/virlog.c \
		util/virlog.h \
		util/virmacmap.c \
		util/virmacmap.h \
		util/virobject.c \
		util/virobject.h \
		util/virpidfile.c \
		util/virpidfile.h \
		util/virprocess.c \
		util/virprocess.h \
		util/virrandom.c \
		util/virrandom.h \
		util/virsocketaddr.c \
		util/virsocketaddr.h \
		util/virstring.c \
		util/virstring.h \
		util/virthread.c \
		util/virthread.h \
		util/virthreadjob.c \
		util/virthreadjob.h \
		util/virtime.c \
		util/virtime.h \
		util/virutil.c \
		util/virutil.h \
921 922
		$(NULL)

923 924 925
libvirt_nss_la_CFLAGS = \
		-DLIBVIRT_NSS \
		$(AM_CFLAGS) \
926
		$(YAJL_CFLAGS) \
927
		$(NULL)
928 929
libvirt_nss_la_LDFLAGS = \
		$(AM_LDFLAGS) \
930 931 932
		$(NULL)

libvirt_nss_la_LIBADD = \
933
		$(YAJL_LIBS) \
934
		$(NULL)
935
endif WITH_NSS
936 937


938 939
install-data-local: $(INSTALL_DATA_LOCAL) \
		$(INSTALL_DATA_DIRS:%=install-data-%)
940 941
	$(MKDIR_P) "$(DESTDIR)$(localstatedir)/cache/libvirt"
	$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/images"
942
	$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/filesystems"
943
	$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/boot"
944

945
uninstall-local: $(UNINSTALL_LOCAL) \
946
		$(INSTALL_DATA_DIRS:%=uninstall-data-%)
947 948
	rmdir "$(DESTDIR)$(localstatedir)/cache/libvirt" ||:
	rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/images" ||:
949
	rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/filesystems" ||:
950 951
	rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/boot" ||:
	rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt" ||:
R
Richard W.M. Jones 已提交
952

953 954
CLEANFILES += *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda *.i *.s
DISTCLEANFILES += $(GENERATED_SYM_FILES)