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