github.com/meulengracht/snapd@v0.0.0-20210719210640-8bde69bcc84e/cmd/Makefile.am (about) 1 2 EXTRA_DIST = VERSION snap-confine/PORTING 3 CLEANFILES = 4 TESTS = 5 libexec_PROGRAMS = 6 dist_man_MANS = 7 noinst_PROGRAMS = 8 noinst_LIBRARIES = 9 10 CHECK_CFLAGS = -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes \ 11 -Wno-missing-field-initializers -Wno-unused-parameter 12 13 # Make all warnings errors when building for unit tests 14 if WITH_UNIT_TESTS 15 CHECK_CFLAGS += -Werror 16 endif 17 18 subdirs = \ 19 libsnap-confine-private \ 20 snap-confine \ 21 snap-discard-ns \ 22 snap-gdb-shim \ 23 snap-update-ns \ 24 snapd-env-generator \ 25 snapd-generator \ 26 system-shutdown 27 28 # Run check-syntax when checking 29 # TODO: conver those to autotools-style tests later 30 check: check-unit-tests 31 32 # Force particular coding style on all source and header files. 33 .PHONY: check-syntax-c 34 check-syntax-c: 35 echo "WARNING: check-syntax-c produces different results for different version of indent" 36 echo "Your version of indent: `indent --version`" 37 @d=`mktemp -d`; \ 38 trap 'rm -rf $d' EXIT; \ 39 for f in $(foreach dir,$(subdirs),$(wildcard $(srcdir)/$(dir)/*.[ch])) ; do \ 40 out="$$d/`basename $$f.out`"; \ 41 echo "Checking $$f ... "; \ 42 HOME=$(srcdir) indent "$$f" -o "$$out"; \ 43 diff -Naur "$$f" "$$out" || exit 1; \ 44 done; 45 46 .PHONY: check-unit-tests 47 if WITH_UNIT_TESTS 48 check-unit-tests: snap-confine/unit-tests system-shutdown/unit-tests libsnap-confine-private/unit-tests 49 $(HAVE_VALGRIND) ./libsnap-confine-private/unit-tests 50 SNAP_DEVICE_HELPER=$(srcdir)/snap-confine/snap-device-helper $(HAVE_VALGRIND) ./snap-confine/unit-tests 51 $(HAVE_VALGRIND) ./system-shutdown/unit-tests 52 else 53 check-unit-tests: 54 echo "unit tests are disabled (rebuild with --enable-unit-tests)" 55 endif 56 57 new_format = \ 58 libsnap-confine-private/cgroup-support.c \ 59 libsnap-confine-private/cgroup-support.h \ 60 libsnap-confine-private/cgroup-support-test.c \ 61 libsnap-confine-private/infofile-test.c \ 62 libsnap-confine-private/infofile.c \ 63 libsnap-confine-private/infofile.h \ 64 libsnap-confine-private/panic-test.h \ 65 libsnap-confine-private/panic.c \ 66 libsnap-confine-private/panic.h \ 67 snap-confine/seccomp-support-ext.c \ 68 snap-confine/seccomp-support-ext.h \ 69 snap-confine/selinux-support.c \ 70 snap-confine/selinux-support.h \ 71 snap-confine/snap-confine-invocation-test.c \ 72 snap-confine/snap-confine-invocation.c \ 73 snap-confine/snap-confine-invocation.h \ 74 snap-discard-ns/snap-discard-ns.c \ 75 snap-gdb-shim/snap-gdb-shim.c \ 76 snap-gdb-shim/snap-gdbserver-shim.c 77 78 # NOTE: clang-format is using project-wide .clang-format file. 79 .PHONY: fmt 80 fmt:: $(filter $(addprefix %,$(new_format)),$(foreach dir,$(subdirs),$(wildcard $(srcdir)/$(dir)/*.[ch]))) 81 clang-format -i $^ 82 83 fmt:: $(filter-out $(addprefix %,$(new_format)),$(foreach dir,$(subdirs),$(wildcard $(srcdir)/$(dir)/*.[ch]))) 84 HOME=$(srcdir) indent $^ 85 86 # The hack target helps developers work on snap-confine on their live system by 87 # installing a fresh copy of snap confine and the appropriate apparmor profile. 88 .PHONY: hack 89 hack: snap-confine/snap-confine-debug snap-confine/snap-confine.apparmor snap-update-ns/snap-update-ns snap-seccomp/snap-seccomp snap-discard-ns/snap-discard-ns 90 sudo install -D -m 4755 snap-confine/snap-confine-debug $(DESTDIR)$(libexecdir)/snap-confine 91 if [ -d /etc/apparmor.d ]; then sudo install -m 644 snap-confine/snap-confine.apparmor $(DESTDIR)/etc/apparmor.d/$(patsubst .%,%,$(subst /,.,$(libexecdir))).snap-confine.real; fi 92 sudo install -d -m 755 $(DESTDIR)/var/lib/snapd/apparmor/snap-confine/ 93 if [ "$$(command -v apparmor_parser)" != "" ]; then sudo apparmor_parser -r snap-confine/snap-confine.apparmor; fi 94 sudo install -m 755 snap-update-ns/snap-update-ns $(DESTDIR)$(libexecdir)/snap-update-ns 95 sudo install -m 755 snap-discard-ns/snap-discard-ns $(DESTDIR)$(libexecdir)/snap-discard-ns 96 sudo install -m 755 snap-seccomp/snap-seccomp $(DESTDIR)$(libexecdir)/snap-seccomp 97 if [ "$$(command -v restorecon)" != "" ]; then sudo restorecon -R -v $(DESTDIR)$(libexecdir)/; fi 98 99 # for the hack target also: 100 snap-update-ns/snap-update-ns: snap-update-ns/*.go snap-update-ns/*.[ch] 101 cd snap-update-ns && GOPATH=$(or $(GOPATH),$(realpath $(srcdir)/../../../../..)) go build \ 102 -ldflags='-extldflags=-static -linkmode=external' -v 103 snap-seccomp/snap-seccomp: snap-seccomp/*.go 104 cd snap-seccomp && GOPATH=$(or $(GOPATH),$(realpath $(srcdir)/../../../../..)) go build -v 105 106 ## 107 ## libsnap-confine-private.a 108 ## 109 110 noinst_LIBRARIES += libsnap-confine-private.a 111 112 libsnap_confine_private_a_SOURCES = \ 113 libsnap-confine-private/apparmor-support.c \ 114 libsnap-confine-private/apparmor-support.h \ 115 libsnap-confine-private/cgroup-freezer-support.c \ 116 libsnap-confine-private/cgroup-freezer-support.h \ 117 libsnap-confine-private/cgroup-support.c \ 118 libsnap-confine-private/cgroup-support.h \ 119 libsnap-confine-private/classic.c \ 120 libsnap-confine-private/classic.h \ 121 libsnap-confine-private/cleanup-funcs.c \ 122 libsnap-confine-private/cleanup-funcs.h \ 123 libsnap-confine-private/error.c \ 124 libsnap-confine-private/error.h \ 125 libsnap-confine-private/fault-injection.c \ 126 libsnap-confine-private/fault-injection.h \ 127 libsnap-confine-private/feature.c \ 128 libsnap-confine-private/feature.h \ 129 libsnap-confine-private/infofile.c \ 130 libsnap-confine-private/locking.c \ 131 libsnap-confine-private/locking.h \ 132 libsnap-confine-private/mount-opt.c \ 133 libsnap-confine-private/mount-opt.h \ 134 libsnap-confine-private/mountinfo.c \ 135 libsnap-confine-private/mountinfo.h \ 136 libsnap-confine-private/panic.c \ 137 libsnap-confine-private/panic.h \ 138 libsnap-confine-private/privs.c \ 139 libsnap-confine-private/privs.h \ 140 libsnap-confine-private/secure-getenv.c \ 141 libsnap-confine-private/secure-getenv.h \ 142 libsnap-confine-private/snap.c \ 143 libsnap-confine-private/snap.h \ 144 libsnap-confine-private/string-utils.c \ 145 libsnap-confine-private/string-utils.h \ 146 libsnap-confine-private/tool.c \ 147 libsnap-confine-private/tool.h \ 148 libsnap-confine-private/utils.c \ 149 libsnap-confine-private/utils.h 150 libsnap_confine_private_a_CFLAGS = $(CHECK_CFLAGS) 151 152 noinst_LIBRARIES += libsnap-confine-private-debug.a 153 libsnap_confine_private_debug_a_SOURCES = $(libsnap_confine_private_a_SOURCES) 154 libsnap_confine_private_debug_a_CFLAGS = $(CHECK_CFLAGS) -DSNAP_CONFINE_DEBUG_BUILD=1 155 156 if WITH_UNIT_TESTS 157 noinst_PROGRAMS += libsnap-confine-private/unit-tests 158 libsnap_confine_private_unit_tests_SOURCES = \ 159 libsnap-confine-private/cgroup-support-test.c \ 160 libsnap-confine-private/classic-test.c \ 161 libsnap-confine-private/cleanup-funcs-test.c \ 162 libsnap-confine-private/error-test.c \ 163 libsnap-confine-private/fault-injection-test.c \ 164 libsnap-confine-private/feature-test.c \ 165 libsnap-confine-private/infofile-test.c \ 166 libsnap-confine-private/locking-test.c \ 167 libsnap-confine-private/mount-opt-test.c \ 168 libsnap-confine-private/mountinfo-test.c \ 169 libsnap-confine-private/panic-test.c \ 170 libsnap-confine-private/privs-test.c \ 171 libsnap-confine-private/secure-getenv-test.c \ 172 libsnap-confine-private/snap-test.c \ 173 libsnap-confine-private/string-utils-test.c \ 174 libsnap-confine-private/test-utils-test.c \ 175 libsnap-confine-private/test-utils.c \ 176 libsnap-confine-private/unit-tests-main.c \ 177 libsnap-confine-private/unit-tests.c \ 178 libsnap-confine-private/unit-tests.h \ 179 libsnap-confine-private/utils-test.c 180 181 libsnap_confine_private_unit_tests_CFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS) 182 libsnap_confine_private_unit_tests_LDADD = $(GLIB_LIBS) 183 libsnap_confine_private_unit_tests_CFLAGS += -D_ENABLE_FAULT_INJECTION 184 libsnap_confine_private_unit_tests_STATIC = 185 186 if STATIC_LIBCAP 187 libsnap_confine_private_unit_tests_STATIC += -lcap 188 else 189 libsnap_confine_private_unit_tests_LDADD += -lcap 190 endif # STATIC_LIBCAP 191 192 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 193 libsnap-confine-private/unit-tests$(EXEEXT): $(libsnap_confine_private_unit_tests_OBJECTS) $(libsnap_confine_private_unit_tests_DEPENDENCIES) $(EXTRA_libsnap_confine_private_unit_tests_DEPENDENCIES) libsnap-confine-private/$(am__dirstamp) 194 @rm -f libsnap-confine-private/unit-tests$(EXEEXT) 195 $(AM_V_CCLD)$(libsnap_confine_private_unit_tests_LINK) $(libsnap_confine_private_unit_tests_OBJECTS) $(libsnap_confine_private_unit_tests_LDADD) $(LIBS) 196 197 libsnap-confine-private/unit-tests$(EXEEXT): LIBS += -Wl,-Bstatic $(libsnap_confine_private_unit_tests_STATIC) -Wl,-Bdynamic 198 endif # WITH_UNIT_TESTS 199 200 ## 201 ## decode-mount-opts 202 ## 203 204 noinst_PROGRAMS += decode-mount-opts/decode-mount-opts 205 206 decode_mount_opts_decode_mount_opts_SOURCES = \ 207 decode-mount-opts/decode-mount-opts.c 208 decode_mount_opts_decode_mount_opts_LDADD = libsnap-confine-private.a 209 decode_mount_opts_decode_mount_opts_STATIC = 210 211 if STATIC_LIBCAP 212 decode_mount_opts_decode_mount_opts_STATIC += -lcap 213 else 214 decode_mount_opts_decode_mount_opts_LDADD += -lcap 215 endif # STATIC_LIBCAP 216 217 # XXX: this makes automake generate decode_mount_opts_decode_mount_opts_LINK 218 decode_mount_opts_decode_mount_opts_CFLAGS = -D_fake 219 220 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 221 decode-mount-opts/decode-mount-opts$(EXEEXT): $(decode_mount_opts_decode_mount_opts_OBJECTS) $(decode_mount_opts_decode_mount_opts_DEPENDENCIES) $(EXTRA_decode_mount_opts_decode_mount_opts_DEPENDENCIES) libsnap-confine-private/$(am__dirstamp) 222 @rm -f decode-mount-opts/decode-mount-opts$(EXEEXT) 223 $(AM_V_CCLD)$(decode_mount_opts_decode_mount_opts_LINK) $(decode_mount_opts_decode_mount_opts_OBJECTS) $(decode_mount_opts_decode_mount_opts_LDADD) $(LIBS) 224 225 decode-mount-opts/decode-mount-opts$(EXEEXT): LIBS += -Wl,-Bstatic $(decode_mount_opts_decode_mount_opts_STATIC) -Wl,-Bdynamic 226 227 ## 228 ## snap-confine 229 ## 230 231 libexec_PROGRAMS += snap-confine/snap-confine 232 if HAVE_RST2MAN 233 dist_man_MANS += snap-confine/snap-confine.8 234 CLEANFILES += snap-confine/snap-confine.8 235 endif 236 EXTRA_DIST += snap-confine/snap-confine.rst 237 EXTRA_DIST += snap-confine/snap-confine.apparmor.in 238 239 snap_confine_snap_confine_SOURCES = \ 240 snap-confine/cookie-support.c \ 241 snap-confine/cookie-support.h \ 242 snap-confine/mount-support-nvidia.c \ 243 snap-confine/mount-support-nvidia.h \ 244 snap-confine/mount-support.c \ 245 snap-confine/mount-support.h \ 246 snap-confine/ns-support.c \ 247 snap-confine/ns-support.h \ 248 snap-confine/seccomp-support-ext.c \ 249 snap-confine/seccomp-support-ext.h \ 250 snap-confine/seccomp-support.c \ 251 snap-confine/seccomp-support.h \ 252 snap-confine/snap-confine-args.c \ 253 snap-confine/snap-confine-args.h \ 254 snap-confine/snap-confine-invocation.c \ 255 snap-confine/snap-confine-invocation.h \ 256 snap-confine/snap-confine.c \ 257 snap-confine/udev-support.c \ 258 snap-confine/udev-support.h \ 259 snap-confine/user-support.c \ 260 snap-confine/user-support.h 261 262 snap_confine_snap_confine_CFLAGS = $(CHECK_CFLAGS) $(AM_CFLAGS) -DLIBEXECDIR=\"$(libexecdir)\" -DNATIVE_LIBDIR=\"$(libdir)\" 263 snap_confine_snap_confine_LDFLAGS = $(AM_LDFLAGS) 264 snap_confine_snap_confine_LDADD = libsnap-confine-private.a 265 snap_confine_snap_confine_CFLAGS += $(LIBUDEV_CFLAGS) 266 snap_confine_snap_confine_LDADD += $(snap_confine_snap_confine_extra_libs) 267 # _STATIC is where we collect statically linked in libraries 268 snap_confine_snap_confine_STATIC = 269 # use a separate variable instead of snap_confine_snap_confine_LDADD to collect 270 # all external libraries, this way it can be reused in 271 # snap_confine_snap_confine_debug_LDADD withouth applying any text 272 # transformations 273 snap_confine_snap_confine_extra_libs = $(LIBUDEV_LIBS) 274 275 if STATIC_LIBCAP 276 snap_confine_snap_confine_STATIC += -lcap 277 else 278 snap_confine_snap_confine_extra_libs += -lcap 279 endif # STATIC_LIBCAP 280 281 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 282 snap-confine/snap-confine$(EXEEXT): $(snap_confine_snap_confine_OBJECTS) $(snap_confine_snap_confine_DEPENDENCIES) $(EXTRA_snap_confine_snap_confine_DEPENDENCIES) libsnap-confine-private/$(am__dirstamp) 283 @rm -f snap-confine/snap-confine$(EXEEXT) 284 $(AM_V_CCLD)$(snap_confine_snap_confine_LINK) $(snap_confine_snap_confine_OBJECTS) $(snap_confine_snap_confine_LDADD) $(LIBS) 285 286 snap-confine/snap-confine$(EXEEXT): LIBS += -Wl,-Bstatic $(snap_confine_snap_confine_STATIC) -Wl,-Bdynamic -pthread 287 288 # This is here to help fix rpmlint hardening issue. 289 # https://en.opensuse.org/openSUSE:Packaging_checks#non-position-independent-executable 290 snap_confine_snap_confine_CFLAGS += $(SUID_CFLAGS) 291 snap_confine_snap_confine_LDFLAGS += $(SUID_LDFLAGS) 292 293 if APPARMOR 294 snap_confine_snap_confine_CFLAGS += $(APPARMOR_CFLAGS) 295 if STATIC_LIBAPPARMOR 296 snap_confine_snap_confine_STATIC += $(shell $(PKG_CONFIG) --static --libs libapparmor) 297 else 298 snap_confine_snap_confine_extra_libs += $(APPARMOR_LIBS) 299 endif # STATIC_LIBAPPARMOR 300 endif # APPARMOR 301 302 if SELINUX 303 snap_confine_snap_confine_SOURCES += \ 304 snap-confine/selinux-support.c \ 305 snap-confine/selinux-support.h 306 snap_confine_snap_confine_CFLAGS += $(SELINUX_CFLAGS) 307 if STATIC_LIBSELINUX 308 snap_confine_snap_confine_STATIC += $(shell $(PKG_CONFIG) --static --libs libselinux) 309 else 310 snap_confine_snap_confine_extra_libs += $(SELINUX_LIBS) 311 endif # STATIC_LIBSELINUX 312 endif # SELINUX 313 314 # an extra build that has additional debugging enabled at compile time 315 316 noinst_PROGRAMS += snap-confine/snap-confine-debug 317 snap_confine_snap_confine_debug_SOURCES = $(snap_confine_snap_confine_SOURCES) 318 snap_confine_snap_confine_debug_CFLAGS = $(snap_confine_snap_confine_CFLAGS) 319 snap_confine_snap_confine_debug_LDFLAGS = $(snap_confine_snap_confine_LDFLAGS) 320 snap_confine_snap_confine_debug_LDADD = libsnap-confine-private-debug.a $(snap_confine_snap_confine_extra_libs) 321 snap_confine_snap_confine_debug_CFLAGS += -DSNAP_CONFINE_DEBUG_BUILD=1 322 snap_confine_snap_confine_debug_STATIC = $(snap_confine_snap_confine_STATIC) 323 324 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 325 snap-confine/snap-confine-debug$(EXEEXT): $(snap_confine_snap_confine_debug_OBJECTS) $(snap_confine_snap_confine_debug_DEPENDENCIES) $(EXTRA_snap_confine_snap_confine_debug_DEPENDENCIES) libsnap-confine-private/$(am__dirstamp) 326 @rm -f snap-confine/snap-confine-debug$(EXEEXT) 327 $(AM_V_CCLD)$(snap_confine_snap_confine_debug_LINK) $(snap_confine_snap_confine_debug_OBJECTS) $(snap_confine_snap_confine_debug_LDADD) $(LIBS) 328 329 snap-confine/snap-confine-debug$(EXEEXT): LIBS += -Wl,-Bstatic $(snap_confine_snap_confine_debug_STATIC) -Wl,-Bdynamic -pthread 330 331 if WITH_UNIT_TESTS 332 noinst_PROGRAMS += snap-confine/unit-tests 333 snap_confine_unit_tests_SOURCES = \ 334 libsnap-confine-private/test-utils.c \ 335 libsnap-confine-private/unit-tests-main.c \ 336 libsnap-confine-private/unit-tests.c \ 337 libsnap-confine-private/unit-tests.h \ 338 snap-confine/cookie-support-test.c \ 339 snap-confine/mount-support-test.c \ 340 snap-confine/ns-support-test.c \ 341 snap-confine/snap-confine-args-test.c \ 342 snap-confine/snap-confine-invocation-test.c \ 343 snap-confine/snap-device-helper-test.c 344 snap_confine_unit_tests_CFLAGS = $(snap_confine_snap_confine_CFLAGS) $(GLIB_CFLAGS) 345 snap_confine_unit_tests_LDADD = $(snap_confine_snap_confine_LDADD) $(GLIB_LIBS) 346 snap_confine_unit_tests_LDFLAGS = $(snap_confine_snap_confine_LDFLAGS) 347 snap_confine_unit_tests_STATIC = $(snap_confine_snap_confine_STATIC) 348 349 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 350 snap-confine/unit-tests$(EXEEXT): $(snap_confine_unit_tests_OBJECTS) $(snap_confine_unit_tests_DEPENDENCIES) $(EXTRA_snap_confine_unit_tests_DEPENDENCIES) libsnap-confine-private/$(am__dirstamp) 351 @rm -f snap-confine/unit-tests$(EXEEXT) 352 $(AM_V_CCLD)$(snap_confine_unit_tests_LINK) $(snap_confine_unit_tests_OBJECTS) $(snap_confine_unit_tests_LDADD) $(LIBS) 353 354 snap-confine/unit-tests$(EXEEXT): LIBS += -Wl,-Bstatic $(snap_confine_unit_tests_STATIC) -Wl,-Bdynamic -pthread 355 endif # WITH_UNIT_TESTS 356 357 if HAVE_RST2MAN 358 %.8: %.rst 359 $(HAVE_RST2MAN) $^ > $@ 360 endif 361 362 snap-confine/snap-confine.apparmor: snap-confine/snap-confine.apparmor.in Makefile 363 sed -e 's,[@]LIBEXECDIR[@],$(libexecdir),g' -e 's,[@]SNAP_MOUNT_DIR[@],$(SNAP_MOUNT_DIR),g' <$< >$@ 364 365 # Install the apparmor profile 366 # 367 # NOTE: the funky make functions here just convert /foo/bar/froz into 368 # foo.bar.froz The inner subst replaces slashes with dots and the outer 369 # patsubst strips the leading dot 370 install-data-local:: snap-confine/snap-confine.apparmor 371 if APPARMOR 372 install -d -m 755 $(DESTDIR)/etc/apparmor.d/ 373 install -m 644 snap-confine/snap-confine.apparmor $(DESTDIR)/etc/apparmor.d/$(patsubst .%,%,$(subst /,.,$(libexecdir))).snap-confine 374 endif 375 install -d -m 755 $(DESTDIR)/var/lib/snapd/apparmor/snap-confine/ 376 377 # NOTE: The 'void' directory *has to* be chmod 111 378 install-data-local:: 379 install -d -m 111 $(DESTDIR)/var/lib/snapd/void 380 381 install-exec-hook:: 382 # Ensure that snap-confine is u+s (setuid) 383 chmod 4755 $(DESTDIR)$(libexecdir)/snap-confine 384 385 ## 386 ## snap-mgmt 387 ## 388 389 libexec_SCRIPTS = snap-mgmt/snap-mgmt 390 CLEANFILES += snap-mgmt/$(am__dirstamp) snap-mgmt/snap-mgmt 391 392 snap-mgmt/$(am__dirstamp): 393 mkdir -p $$(dirname $@) 394 touch $@ 395 396 snap-mgmt/snap-mgmt: snap-mgmt/snap-mgmt.sh.in Makefile snap-mgmt/$(am__dirstamp) 397 sed -e 's,[@]SNAP_MOUNT_DIR[@],$(SNAP_MOUNT_DIR),' <$< >$@ 398 399 if SELINUX 400 ## 401 ## snap-mgmt-selinux 402 ## 403 404 libexec_SCRIPTS += snap-mgmt/snap-mgmt-selinux 405 CLEANFILES += snap-mgmt/$(am__dirstamp) snap-mgmt/snap-mgmt-selinux 406 407 snap-mgmt/snap-mgmt-selinux: snap-mgmt/snap-mgmt-selinux.sh.in Makefile snap-mgmt/$(am__dirstamp) 408 sed -e 's,[@]SNAP_MOUNT_DIR[@],$(SNAP_MOUNT_DIR),' <$< >$@ 409 endif 410 411 ## 412 ## ubuntu-core-launcher 413 ## 414 415 install-exec-hook:: 416 install -d -m 755 $(DESTDIR)$(bindir) 417 ln -sf $(libexecdir)/snap-confine $(DESTDIR)$(bindir)/ubuntu-core-launcher 418 419 ## 420 ## snap-device-helper 421 ## 422 423 EXTRA_DIST += \ 424 snap-confine/snap-device-helper 425 426 # NOTE: This makes distcheck fail but it is required for udev, so go figure. 427 # http://www.gnu.org/software/automake/manual/automake.html#Hard_002dCoded-Install-Paths 428 # 429 # Install support script for udev rules 430 install-exec-local:: 431 install -d -m 755 $(DESTDIR)$(libexecdir) 432 install -m 755 $(srcdir)/snap-confine/snap-device-helper $(DESTDIR)$(libexecdir) 433 434 ## 435 ## snap-discard-ns 436 ## 437 438 libexec_PROGRAMS += snap-discard-ns/snap-discard-ns 439 if HAVE_RST2MAN 440 dist_man_MANS += snap-discard-ns/snap-discard-ns.8 441 CLEANFILES += snap-discard-ns/snap-discard-ns.8 442 endif 443 EXTRA_DIST += snap-discard-ns/snap-discard-ns.rst 444 445 snap_discard_ns_snap_discard_ns_SOURCES = \ 446 snap-discard-ns/snap-discard-ns.c 447 snap_discard_ns_snap_discard_ns_CFLAGS = $(CHECK_CFLAGS) $(AM_CFLAGS) 448 snap_discard_ns_snap_discard_ns_LDFLAGS = $(AM_LDFLAGS) 449 snap_discard_ns_snap_discard_ns_LDADD = libsnap-confine-private.a 450 snap_discard_ns_snap_discard_ns_STATIC = 451 452 # Use a hacked rule if we're doing static build. This allows us to inject the LIBS += .. rule below. 453 snap-discard-ns/snap-discard-ns$(EXEEXT): $(snap_discard_ns_snap_discard_ns_OBJECTS) $(snap_discard_ns_snap_discard_ns_DEPENDENCIES) $(EXTRA_snap_discard_ns_snap_discard_ns_DEPENDENCIES) snap-discard-ns/$(am__dirstamp) 454 @rm -f snap-discard-ns/snap-discard-ns$(EXEEXT) 455 $(AM_V_CCLD)$(snap_discard_ns_snap_discard_ns_LINK) $(snap_discard_ns_snap_discard_ns_OBJECTS) $(snap_discard_ns_snap_discard_ns_LDADD) $(LIBS) 456 457 snap-discard-ns/snap-discard-ns$(EXEEXT): LIBS += -Wl,-Bstatic $(snap_discard_ns_snap_discard_ns_STATIC) -Wl,-Bdynamic -pthread 458 459 ## 460 ## system-shutdown 461 ## 462 463 libexec_PROGRAMS += system-shutdown/system-shutdown 464 465 system_shutdown_system_shutdown_SOURCES = \ 466 system-shutdown/system-shutdown-utils.c \ 467 system-shutdown/system-shutdown-utils.h \ 468 system-shutdown/system-shutdown.c 469 system_shutdown_system_shutdown_LDADD = libsnap-confine-private.a 470 system_shutdown_system_shutdown_CFLAGS = $(CHECK_CFLAGS) $(filter-out -fPIE -pie,$(CFLAGS)) -static 471 system_shutdown_system_shutdown_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS)) -static 472 473 if WITH_UNIT_TESTS 474 noinst_PROGRAMS += system-shutdown/unit-tests 475 system_shutdown_unit_tests_SOURCES = \ 476 libsnap-confine-private/unit-tests-main.c \ 477 libsnap-confine-private/unit-tests.c \ 478 system-shutdown/system-shutdown-utils-test.c 479 system_shutdown_unit_tests_LDADD = libsnap-confine-private.a 480 system_shutdown_unit_tests_CFLAGS = $(GLIB_CFLAGS) 481 system_shutdown_unit_tests_LDADD += $(GLIB_LIBS) 482 endif 483 484 ## 485 ## snap-gdb-shim 486 ## 487 488 libexec_PROGRAMS += snap-gdb-shim/snap-gdb-shim 489 490 snap_gdb_shim_snap_gdb_shim_SOURCES = \ 491 snap-gdb-shim/snap-gdb-shim.c 492 493 snap_gdb_shim_snap_gdb_shim_LDADD = libsnap-confine-private.a 494 495 ## 496 ## snap-gdbserver-shim 497 ## 498 499 libexec_PROGRAMS += snap-gdb-shim/snap-gdbserver-shim 500 501 snap_gdb_shim_snap_gdbserver_shim_SOURCES = \ 502 snap-gdb-shim/snap-gdbserver-shim.c 503 504 snap_gdb_shim_snap_gdbserver_shim_LDADD = libsnap-confine-private.a 505 506 ## 507 ## snapd-generator 508 ## 509 510 systemdsystemgeneratordir = $(SYSTEMD_SYSTEM_GENERATOR_DIR) 511 systemdsystemgenerator_PROGRAMS = snapd-generator/snapd-generator 512 513 snapd_generator_snapd_generator_SOURCES = snapd-generator/main.c 514 snapd_generator_snapd_generator_LDADD = libsnap-confine-private.a 515 516 ## 517 ## snapd-env-generator 518 ## 519 520 systemdsystemenvgeneratordir=$(SYSTEMD_SYSTEM_ENV_GENERATOR_DIR) 521 systemdsystemenvgenerator_PROGRAMS = snapd-env-generator/snapd-env-generator 522 523 snapd_env_generator_snapd_env_generator_SOURCES = snapd-env-generator/main.c 524 snapd_env_generator_snapd_env_generator_LDADD = libsnap-confine-private.a 525 EXTRA_DIST += snapd-env-generator/snapd-env-generator.rst 526 527 if HAVE_RST2MAN 528 dist_man_MANS += snapd-env-generator/snapd-env-generator.8 529 CLEANFILES += snapd-env-generator/snapd-env-generator.8 530 endif 531 532 ## 533 ## snapd-apparmor 534 ## 535 536 EXTRA_DIST += snapd-apparmor/snapd-apparmor 537 538 install-exec-local:: 539 install -d -m 755 $(DESTDIR)$(libexecdir) 540 if APPARMOR 541 install -m 755 $(srcdir)/snapd-apparmor/snapd-apparmor $(DESTDIR)$(libexecdir) 542 endif