]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
autotools: enable static builds for tools
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 22 Jan 2021 18:30:45 +0000 (19:30 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 22 Jan 2021 18:30:45 +0000 (19:30 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/Makefile.am

index baa624ac9848f615891e0613e54428ed94242989..a6922ce769732338d7ea2eb3d59921dd562c9b59 100644 (file)
@@ -331,209 +331,13 @@ LDADD = liblxc.la \
 
 if ENABLE_TOOLS
 lxc_attach_SOURCES = tools/lxc_attach.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    rexec.c rexec.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_attach_SOURCES += seccomp.c lxcseccomp.h
-endif
-
-lxc_autostart_SOURCES = tools/lxc_autostart.c \
-                       tools/arguments.c tools/arguments.h \
-                       af_unix.c af_unix.h \
-                       caps.c caps.h \
-                       cgroups/cgfsng.c \
-                       cgroups/cgroup.c cgroups/cgroup.h \
-                       cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                       cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                       commands.c commands.h \
-                       commands_utils.c commands_utils.h \
-                       conf.c conf.h \
-                       confile.c confile.h \
-                       confile_utils.c confile_utils.h \
-                       error.c error.h \
-                       file_utils.c file_utils.h \
-                       ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                       initutils.c initutils.h \
-                       log.c log.h \
-                       lxclock.c lxclock.h \
-                       mainloop.c mainloop.h \
-                       monitor.c monitor.h \
-                       namespace.c namespace.h \
-                       network.c network.h \
-                       nl.c nl.h \
-                       parse.c parse.h \
-                       process_utils.c process_utils.h \
-                       ringbuf.c ringbuf.h \
-                       start.c start.h \
-                       state.c state.h \
-                       storage/btrfs.c storage/btrfs.h \
-                       storage/dir.c storage/dir.h \
-                       storage/loop.c storage/loop.h \
-                       storage/lvm.c storage/lvm.h \
-                       storage/nbd.c storage/nbd.h \
-                       storage/overlay.c storage/overlay.h \
-                       storage/rbd.c storage/rbd.h \
-                       storage/rsync.c storage/rsync.h \
-                       storage/storage.c storage/storage.h \
-                       storage/storage_utils.c storage/storage_utils.h \
-                       storage/zfs.c storage/zfs.h \
-                       string_utils.c string_utils.h \
-                       sync.c sync.h \
-                       terminal.c terminal.h \
-                       utils.c utils.h \
-                       uuid.c uuid.h \
-                       $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_autostart_SOURCES += seccomp.c lxcseccomp.h
-endif
-
-lxc_cgroup_SOURCES = tools/lxc_cgroup.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_cgroup_SOURCES += seccomp.c lxcseccomp.h
-endif
-
-lxc_config_SOURCES = tools/lxc_config.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_config_SOURCES += seccomp.c lxcseccomp.h
-endif
+                    tools/arguments.c tools/arguments.h
 
-lxc_console_SOURCES = tools/lxc_console.c \
-                     tools/arguments.c tools/arguments.h \
-                     af_unix.c af_unix.h \
+if ENABLE_STATIC_BINARIES
+lxc_attach_SOURCES += $(liblxc_la_SOURCES)
+lxc_attach_LDFLAGS = -all-static -pthread
+else
+lxc_attach_SOURCES += af_unix.c af_unix.h \
                      caps.c caps.h \
                      cgroups/cgfsng.c \
                      cgroups/cgroup.c cgroups/cgroup.h \
@@ -557,6 +361,7 @@ lxc_console_SOURCES = tools/lxc_console.c \
                      nl.c nl.h \
                      parse.c parse.h \
                      process_utils.c process_utils.h \
+                     rexec.c rexec.h \
                      ringbuf.c ringbuf.h \
                      start.c start.h \
                      state.c state.h \
@@ -578,12 +383,74 @@ lxc_console_SOURCES = tools/lxc_console.c \
                      uuid.c uuid.h \
                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_console_SOURCES += seccomp.c lxcseccomp.h
+lxc_attach_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_destroy_SOURCES = tools/lxc_destroy.c \
-                     tools/arguments.c tools/arguments.h \
-                     af_unix.c af_unix.h \
+lxc_autostart_SOURCES = tools/lxc_autostart.c \
+                       tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_autostart_SOURCES += $(liblxc_la_SOURCES)
+lxc_autostart_LDFLAGS = -all-static -pthread
+else
+lxc_autostart_SOURCES += af_unix.c af_unix.h \
+                        caps.c caps.h \
+                        cgroups/cgfsng.c \
+                        cgroups/cgroup.c cgroups/cgroup.h \
+                        cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                        cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                        commands.c commands.h \
+                        commands_utils.c commands_utils.h \
+                        conf.c conf.h \
+                        confile.c confile.h \
+                        confile_utils.c confile_utils.h \
+                        error.c error.h \
+                        file_utils.c file_utils.h \
+                        ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                        initutils.c initutils.h \
+                        log.c log.h \
+                        lxclock.c lxclock.h \
+                        mainloop.c mainloop.h \
+                        monitor.c monitor.h \
+                        namespace.c namespace.h \
+                        network.c network.h \
+                        nl.c nl.h \
+                        parse.c parse.h \
+                        process_utils.c process_utils.h \
+                        ringbuf.c ringbuf.h \
+                        start.c start.h \
+                        state.c state.h \
+                        storage/btrfs.c storage/btrfs.h \
+                        storage/dir.c storage/dir.h \
+                        storage/loop.c storage/loop.h \
+                        storage/lvm.c storage/lvm.h \
+                        storage/nbd.c storage/nbd.h \
+                        storage/overlay.c storage/overlay.h \
+                        storage/rbd.c storage/rbd.h \
+                        storage/rsync.c storage/rsync.h \
+                        storage/storage.c storage/storage.h \
+                        storage/storage_utils.c storage/storage_utils.h \
+                        storage/zfs.c storage/zfs.h \
+                        string_utils.c string_utils.h \
+                        sync.c sync.h \
+                        terminal.c terminal.h \
+                        utils.c utils.h \
+                        uuid.c uuid.h \
+                        $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_autostart_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_cgroup_SOURCES = tools/lxc_cgroup.c \
+                    tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_cgroup_SOURCES += $(liblxc_la_SOURCES)
+lxc_cgroup_LDFLAGS = -all-static -pthread
+else
+lxc_cgroup_SOURCES += af_unix.c af_unix.h \
                      caps.c caps.h \
                      cgroups/cgfsng.c \
                      cgroups/cgroup.c cgroups/cgroup.h \
@@ -628,62 +495,18 @@ lxc_destroy_SOURCES = tools/lxc_destroy.c \
                      uuid.c uuid.h \
                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_destroy_SOURCES += seccomp.c lxcseccomp.h
+lxc_cgroup_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_device_SOURCES = tools/lxc_device.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_device_SOURCES += seccomp.c lxcseccomp.h
-endif
+lxc_config_SOURCES = tools/lxc_config.c \
+                    tools/arguments.c tools/arguments.h
 
-lxc_execute_SOURCES = tools/lxc_execute.c \
-                     tools/arguments.c tools/arguments.h \
-                     af_unix.c af_unix.h \
+if ENABLE_STATIC_BINARIES
+lxc_config_SOURCES += $(liblxc_la_SOURCES)
+lxc_config_LDFLAGS = -all-static -pthread
+else
+lxc_config_SOURCES += af_unix.c af_unix.h \
                      caps.c caps.h \
                      cgroups/cgfsng.c \
                      cgroups/cgroup.c cgroups/cgroup.h \
@@ -728,112 +551,130 @@ lxc_execute_SOURCES = tools/lxc_execute.c \
                      uuid.c uuid.h \
                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_execute_SOURCES += seccomp.c lxcseccomp.h
+lxc_config_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_freeze_SOURCES = tools/lxc_freeze.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
+lxc_console_SOURCES = tools/lxc_console.c \
+                     tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_console_SOURCES += $(liblxc_la_SOURCES)
+lxc_console_LDFLAGS = -all-static -pthread
+else
+lxc_console_SOURCES += af_unix.c af_unix.h \
+                      caps.c caps.h \
+                      cgroups/cgfsng.c \
+                      cgroups/cgroup.c cgroups/cgroup.h \
+                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                      commands.c commands.h \
+                      commands_utils.c commands_utils.h \
+                      conf.c conf.h \
+                      confile.c confile.h \
+                      confile_utils.c confile_utils.h \
+                      error.c error.h \
+                      file_utils.c file_utils.h \
+                      ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                      initutils.c initutils.h \
+                      log.c log.h \
+                      lxclock.c lxclock.h \
+                      mainloop.c mainloop.h \
+                      monitor.c monitor.h \
+                      namespace.c namespace.h \
+                      network.c network.h \
+                      nl.c nl.h \
+                      parse.c parse.h \
+                      process_utils.c process_utils.h \
+                      ringbuf.c ringbuf.h \
+                      start.c start.h \
+                      state.c state.h \
+                      storage/btrfs.c storage/btrfs.h \
+                      storage/dir.c storage/dir.h \
+                      storage/loop.c storage/loop.h \
+                      storage/lvm.c storage/lvm.h \
+                      storage/nbd.c storage/nbd.h \
+                      storage/overlay.c storage/overlay.h \
+                      storage/rbd.c storage/rbd.h \
+                      storage/rsync.c storage/rsync.h \
+                      storage/storage.c storage/storage.h \
+                      storage/storage_utils.c storage/storage_utils.h \
+                      storage/zfs.c storage/zfs.h \
+                      string_utils.c string_utils.h \
+                      sync.c sync.h \
+                      terminal.c terminal.h \
+                      utils.c utils.h \
+                      uuid.c uuid.h \
+                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_freeze_SOURCES += seccomp.c lxcseccomp.h
+lxc_console_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_info_SOURCES = tools/lxc_info.c \
-                  tools/arguments.c tools/arguments.h \
-                  af_unix.c af_unix.h \
-                  caps.c caps.h \
-                  cgroups/cgfsng.c \
-                  cgroups/cgroup.c cgroups/cgroup.h \
-                  cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                  cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                  commands.c commands.h \
-                  commands_utils.c commands_utils.h \
-                  conf.c conf.h \
-                  confile.c confile.h \
-                  confile_utils.c confile_utils.h \
-                  error.c error.h \
-                  file_utils.c file_utils.h \
-                  ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                  initutils.c initutils.h \
-                  log.c log.h \
-                  lxclock.c lxclock.h \
-                  mainloop.c mainloop.h \
-                  monitor.c monitor.h \
-                  namespace.c namespace.h \
-                  network.c network.h \
-                  nl.c nl.h \
-                  parse.c parse.h \
-                  process_utils.c process_utils.h \
-                  ringbuf.c ringbuf.h \
-                  start.c start.h \
-                  state.c state.h \
-                  storage/btrfs.c storage/btrfs.h \
-                  storage/dir.c storage/dir.h \
-                  storage/loop.c storage/loop.h \
-                  storage/lvm.c storage/lvm.h \
-                  storage/nbd.c storage/nbd.h \
-                  storage/overlay.c storage/overlay.h \
-                  storage/rbd.c storage/rbd.h \
-                  storage/rsync.c storage/rsync.h \
-                  storage/storage.c storage/storage.h \
-                  storage/storage_utils.c storage/storage_utils.h \
-                  storage/zfs.c storage/zfs.h \
-                  string_utils.c string_utils.h \
-                  sync.c sync.h \
-                  terminal.c terminal.h \
-                  utils.c utils.h \
-                  uuid.c uuid.h \
-                  $(LSM_SOURCES)
+lxc_destroy_SOURCES = tools/lxc_destroy.c \
+                     tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_destroy_SOURCES += $(liblxc_la_SOURCES)
+lxc_destroy_LDFLAGS = -all-static -pthread
+else
+lxc_destroy_SOURCES += af_unix.c af_unix.h \
+                      caps.c caps.h \
+                      cgroups/cgfsng.c \
+                      cgroups/cgroup.c cgroups/cgroup.h \
+                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                      commands.c commands.h \
+                      commands_utils.c commands_utils.h \
+                      conf.c conf.h \
+                      confile.c confile.h \
+                      confile_utils.c confile_utils.h \
+                      error.c error.h \
+                      file_utils.c file_utils.h \
+                      ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                      initutils.c initutils.h \
+                      log.c log.h \
+                      lxclock.c lxclock.h \
+                      mainloop.c mainloop.h \
+                      monitor.c monitor.h \
+                      namespace.c namespace.h \
+                      network.c network.h \
+                      nl.c nl.h \
+                      parse.c parse.h \
+                      process_utils.c process_utils.h \
+                      ringbuf.c ringbuf.h \
+                      start.c start.h \
+                      state.c state.h \
+                      storage/btrfs.c storage/btrfs.h \
+                      storage/dir.c storage/dir.h \
+                      storage/loop.c storage/loop.h \
+                      storage/lvm.c storage/lvm.h \
+                      storage/nbd.c storage/nbd.h \
+                      storage/overlay.c storage/overlay.h \
+                      storage/rbd.c storage/rbd.h \
+                      storage/rsync.c storage/rsync.h \
+                      storage/storage.c storage/storage.h \
+                      storage/storage_utils.c storage/storage_utils.h \
+                      storage/zfs.c storage/zfs.h \
+                      string_utils.c string_utils.h \
+                      sync.c sync.h \
+                      terminal.c terminal.h \
+                      utils.c utils.h \
+                      uuid.c uuid.h \
+                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_info_SOURCES += seccomp.c lxcseccomp.h
+lxc_destroy_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_monitor_SOURCES = tools/lxc_monitor.c \
-                     tools/arguments.c tools/arguments.h \
-                     af_unix.c af_unix.h \
+lxc_device_SOURCES = tools/lxc_device.c \
+                    tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_device_SOURCES += $(liblxc_la_SOURCES)
+lxc_device_LDFLAGS = -all-static -pthread
+else
+lxc_device_SOURCES += af_unix.c af_unix.h \
                      caps.c caps.h \
                      cgroups/cgfsng.c \
                      cgroups/cgroup.c cgroups/cgroup.h \
@@ -850,7 +691,6 @@ lxc_monitor_SOURCES = tools/lxc_monitor.c \
                      initutils.c initutils.h \
                      log.c log.h \
                      lxclock.c lxclock.h \
-                     macro.h \
                      mainloop.c mainloop.h \
                      monitor.c monitor.h \
                      namespace.c namespace.h \
@@ -879,113 +719,130 @@ lxc_monitor_SOURCES = tools/lxc_monitor.c \
                      uuid.c uuid.h \
                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_monitor_SOURCES += seccomp.c lxcseccomp.h
+lxc_device_SOURCES += seccomp.c lxcseccomp.h
 endif
-
-lxc_ls_SOURCES = tools/lxc_ls.c \
-                tools/arguments.c tools/arguments.h \
-                af_unix.c af_unix.h \
-                caps.c caps.h \
-                cgroups/cgfsng.c \
-                cgroups/cgroup.c cgroups/cgroup.h \
-                cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                commands.c commands.h \
-                commands_utils.c commands_utils.h \
-                conf.c conf.h \
-                confile.c confile.h \
-                confile_utils.c confile_utils.h \
-                error.c error.h \
-                file_utils.c file_utils.h \
-                ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                initutils.c initutils.h \
-                log.c log.h \
-                lxclock.c lxclock.h \
-                mainloop.c mainloop.h \
-                memory_utils.h \
-                monitor.c monitor.h \
-                namespace.c namespace.h \
-                network.c network.h \
-                nl.c nl.h \
-                parse.c parse.h \
-                process_utils.c process_utils.h \
-                ringbuf.c ringbuf.h \
-                start.c start.h \
-                state.c state.h \
-                storage/btrfs.c storage/btrfs.h \
-                storage/dir.c storage/dir.h \
-                storage/loop.c storage/loop.h \
-                storage/lvm.c storage/lvm.h \
-                storage/nbd.c storage/nbd.h \
-                storage/overlay.c storage/overlay.h \
-                storage/rbd.c storage/rbd.h \
-                storage/rsync.c storage/rsync.h \
-                storage/storage.c storage/storage.h \
-                storage/storage_utils.c storage/storage_utils.h \
-                storage/zfs.c storage/zfs.h \
-                string_utils.c string_utils.h \
-                sync.c sync.h \
-                terminal.c terminal.h \
-                utils.c utils.h \
-                uuid.c uuid.h \
-                $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_ls_SOURCES += seccomp.c lxcseccomp.h
 endif
 
-lxc_copy_SOURCES = tools/lxc_copy.c \
-                  tools/arguments.c tools/arguments.h \
-                  af_unix.c af_unix.h \
-                  caps.c caps.h \
-                  cgroups/cgfsng.c \
-                  cgroups/cgroup.c cgroups/cgroup.h \
-                  cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                  cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                  commands.c commands.h \
-                  commands_utils.c commands_utils.h \
-                  conf.c conf.h \
-                  confile.c confile.h \
-                  confile_utils.c confile_utils.h \
-                  error.c error.h \
-                  file_utils.c file_utils.h \
-                  ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                  initutils.c initutils.h \
-                  log.c log.h \
-                  lxclock.c lxclock.h \
-                  mainloop.c mainloop.h \
-                  monitor.c monitor.h \
-                  namespace.c namespace.h \
-                  network.c network.h \
-                  nl.c nl.h \
-                  parse.c parse.h \
-                  process_utils.c process_utils.h \
-                  ringbuf.c ringbuf.h \
-                  start.c start.h \
-                  state.c state.h \
-                  storage/btrfs.c storage/btrfs.h \
-                  storage/dir.c storage/dir.h \
-                  storage/loop.c storage/loop.h \
-                  storage/lvm.c storage/lvm.h \
-                  storage/nbd.c storage/nbd.h \
-                  storage/overlay.c storage/overlay.h \
-                  storage/rbd.c storage/rbd.h \
-                  storage/rsync.c storage/rsync.h \
-                  storage/storage.c storage/storage.h \
-                  storage/storage_utils.c storage/storage_utils.h \
-                  storage/zfs.c storage/zfs.h \
-                  string_utils.c string_utils.h \
-                  sync.c sync.h \
-                  terminal.c terminal.h \
-                  utils.c utils.h \
-                  uuid.c uuid.h \
-                  $(LSM_SOURCES)
+lxc_execute_SOURCES = tools/lxc_execute.c \
+                     tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_execute_SOURCES += $(liblxc_la_SOURCES)
+lxc_execute_LDFLAGS = -all-static -pthread
+else
+lxc_execute_SOURCES += af_unix.c af_unix.h \
+                      caps.c caps.h \
+                      cgroups/cgfsng.c \
+                      cgroups/cgroup.c cgroups/cgroup.h \
+                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                      commands.c commands.h \
+                      commands_utils.c commands_utils.h \
+                      conf.c conf.h \
+                      confile.c confile.h \
+                      confile_utils.c confile_utils.h \
+                      error.c error.h \
+                      file_utils.c file_utils.h \
+                      ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                      initutils.c initutils.h \
+                      log.c log.h \
+                      lxclock.c lxclock.h \
+                      mainloop.c mainloop.h \
+                      monitor.c monitor.h \
+                      namespace.c namespace.h \
+                      network.c network.h \
+                      nl.c nl.h \
+                      parse.c parse.h \
+                      process_utils.c process_utils.h \
+                      ringbuf.c ringbuf.h \
+                      start.c start.h \
+                      state.c state.h \
+                      storage/btrfs.c storage/btrfs.h \
+                      storage/dir.c storage/dir.h \
+                      storage/loop.c storage/loop.h \
+                      storage/lvm.c storage/lvm.h \
+                      storage/nbd.c storage/nbd.h \
+                      storage/overlay.c storage/overlay.h \
+                      storage/rbd.c storage/rbd.h \
+                      storage/rsync.c storage/rsync.h \
+                      storage/storage.c storage/storage.h \
+                      storage/storage_utils.c storage/storage_utils.h \
+                      storage/zfs.c storage/zfs.h \
+                      string_utils.c string_utils.h \
+                      sync.c sync.h \
+                      terminal.c terminal.h \
+                      utils.c utils.h \
+                      uuid.c uuid.h \
+                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_copy_SOURCES += seccomp.c lxcseccomp.h
+lxc_execute_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_start_SOURCES = tools/lxc_start.c \
-                   tools/arguments.c tools/arguments.h \
-                   af_unix.c af_unix.h \
+lxc_freeze_SOURCES = tools/lxc_freeze.c \
+                    tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_freeze_SOURCES += $(liblxc_la_SOURCES)
+lxc_freeze_LDFLAGS = -all-static -pthread
+else
+lxc_freeze_SOURCES += af_unix.c af_unix.h \
+                     caps.c caps.h \
+                     cgroups/cgfsng.c \
+                     cgroups/cgroup.c cgroups/cgroup.h \
+                     cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                     cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                     commands.c commands.h \
+                     commands_utils.c commands_utils.h \
+                     conf.c conf.h \
+                     confile.c confile.h \
+                     confile_utils.c confile_utils.h \
+                     error.c error.h \
+                     file_utils.c file_utils.h \
+                     ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                     initutils.c initutils.h \
+                     log.c log.h \
+                     lxclock.c lxclock.h \
+                     mainloop.c mainloop.h \
+                     monitor.c monitor.h \
+                     namespace.c namespace.h \
+                     network.c network.h \
+                     nl.c nl.h \
+                     parse.c parse.h \
+                     process_utils.c process_utils.h \
+                     ringbuf.c ringbuf.h \
+                     start.c start.h \
+                     state.c state.h \
+                     storage/btrfs.c storage/btrfs.h \
+                     storage/dir.c storage/dir.h \
+                     storage/loop.c storage/loop.h \
+                     storage/lvm.c storage/lvm.h \
+                     storage/nbd.c storage/nbd.h \
+                     storage/overlay.c storage/overlay.h \
+                     storage/rbd.c storage/rbd.h \
+                     storage/rsync.c storage/rsync.h \
+                     storage/storage.c storage/storage.h \
+                     storage/storage_utils.c storage/storage_utils.h \
+                     storage/zfs.c storage/zfs.h \
+                     string_utils.c string_utils.h \
+                     sync.c sync.h \
+                     terminal.c terminal.h \
+                     utils.c utils.h \
+                     uuid.c uuid.h \
+                     $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_freeze_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_info_SOURCES = tools/lxc_info.c \
+                  tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_info_SOURCES += $(liblxc_la_SOURCES)
+lxc_info_LDFLAGS = -all-static -pthread
+else
+lxc_info_SOURCES += af_unix.c af_unix.h \
                    caps.c caps.h \
                    cgroups/cgfsng.c \
                    cgroups/cgroup.c cgroups/cgroup.h \
@@ -1030,62 +887,75 @@ lxc_start_SOURCES = tools/lxc_start.c \
                    uuid.c uuid.h \
                    $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_start_SOURCES += seccomp.c lxcseccomp.h
+lxc_info_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_stop_SOURCES = tools/lxc_stop.c \
-                  tools/arguments.c tools/arguments.h \
-                  af_unix.c af_unix.h \
-                  caps.c caps.h \
-                  cgroups/cgfsng.c \
-                  cgroups/cgroup.c cgroups/cgroup.h \
-                  cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                  cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                  commands.c commands.h \
-                  commands_utils.c commands_utils.h \
-                  conf.c conf.h \
-                  confile.c confile.h \
-                  confile_utils.c confile_utils.h \
-                  error.c error.h \
-                  file_utils.c file_utils.h \
-                  ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                  initutils.c initutils.h \
-                  log.c log.h \
-                  lxclock.c lxclock.h \
-                  mainloop.c mainloop.h \
-                  monitor.c monitor.h \
-                  namespace.c namespace.h \
-                  network.c network.h \
-                  nl.c nl.h \
-                  parse.c parse.h \
-                  process_utils.c process_utils.h \
-                  ringbuf.c ringbuf.h \
-                  start.c start.h \
-                  state.c state.h \
-                  storage/btrfs.c storage/btrfs.h \
-                  storage/dir.c storage/dir.h \
-                  storage/loop.c storage/loop.h \
-                  storage/lvm.c storage/lvm.h \
-                  storage/nbd.c storage/nbd.h \
-                  storage/overlay.c storage/overlay.h \
-                  storage/rbd.c storage/rbd.h \
-                  storage/rsync.c storage/rsync.h \
-                  storage/storage.c storage/storage.h \
-                  storage/storage_utils.c storage/storage_utils.h \
-                  storage/zfs.c storage/zfs.h \
-                  string_utils.c string_utils.h \
-                  sync.c sync.h \
-                  terminal.c terminal.h \
-                  utils.c utils.h \
-                  uuid.c uuid.h \
-                  $(LSM_SOURCES)
+lxc_monitor_SOURCES = tools/lxc_monitor.c \
+                     tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_monitor_SOURCES += $(liblxc_la_SOURCES)
+lxc_monitor_LDFLAGS = -all-static -pthread
+else
+lxc_monitor_SOURCES += af_unix.c af_unix.h \
+                      caps.c caps.h \
+                      cgroups/cgfsng.c \
+                      cgroups/cgroup.c cgroups/cgroup.h \
+                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                      commands.c commands.h \
+                      commands_utils.c commands_utils.h \
+                      conf.c conf.h \
+                      confile.c confile.h \
+                      confile_utils.c confile_utils.h \
+                      error.c error.h \
+                      file_utils.c file_utils.h \
+                      ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                      initutils.c initutils.h \
+                      log.c log.h \
+                      lxclock.c lxclock.h \
+                      macro.h \
+                      mainloop.c mainloop.h \
+                      monitor.c monitor.h \
+                      namespace.c namespace.h \
+                      network.c network.h \
+                      nl.c nl.h \
+                      parse.c parse.h \
+                      process_utils.c process_utils.h \
+                      ringbuf.c ringbuf.h \
+                      start.c start.h \
+                      state.c state.h \
+                      storage/btrfs.c storage/btrfs.h \
+                      storage/dir.c storage/dir.h \
+                      storage/loop.c storage/loop.h \
+                      storage/lvm.c storage/lvm.h \
+                      storage/nbd.c storage/nbd.h \
+                      storage/overlay.c storage/overlay.h \
+                      storage/rbd.c storage/rbd.h \
+                      storage/rsync.c storage/rsync.h \
+                      storage/storage.c storage/storage.h \
+                      storage/storage_utils.c storage/storage_utils.h \
+                      storage/zfs.c storage/zfs.h \
+                      string_utils.c string_utils.h \
+                      sync.c sync.h \
+                      terminal.c terminal.h \
+                      utils.c utils.h \
+                      uuid.c uuid.h \
+                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_stop_SOURCES += seccomp.c lxcseccomp.h
+lxc_monitor_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_top_SOURCES = tools/lxc_top.c \
-                 tools/arguments.c tools/arguments.h \
-                 af_unix.c af_unix.h \
+lxc_ls_SOURCES = tools/lxc_ls.c \
+                tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_ls_SOURCES += $(liblxc_la_SOURCES)
+lxc_ls_LDFLAGS = -all-static -pthread
+else
+lxc_ls_SOURCES += af_unix.c af_unix.h \
                  caps.c caps.h \
                  cgroups/cgfsng.c \
                  cgroups/cgroup.c cgroups/cgroup.h \
@@ -1103,6 +973,7 @@ lxc_top_SOURCES = tools/lxc_top.c \
                  log.c log.h \
                  lxclock.c lxclock.h \
                  mainloop.c mainloop.h \
+                 memory_utils.h \
                  monitor.c monitor.h \
                  namespace.c namespace.h \
                  network.c network.h \
@@ -1130,20 +1001,306 @@ lxc_top_SOURCES = tools/lxc_top.c \
                  uuid.c uuid.h \
                  $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_top_SOURCES += seccomp.c lxcseccomp.h
+lxc_ls_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_unfreeze_SOURCES = tools/lxc_unfreeze.c \
-                      tools/arguments.c tools/arguments.h \
-                      af_unix.c af_unix.h \
-                      caps.c caps.h \
-                      cgroups/cgfsng.c \
-                      cgroups/cgroup.c cgroups/cgroup.h \
-                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                      commands.c commands.h \
-                      commands_utils.c commands_utils.h \
-                      conf.c conf.h \
+lxc_copy_SOURCES = tools/lxc_copy.c \
+                  tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_copy_SOURCES += $(liblxc_la_SOURCES)
+lxc_copy_LDFLAGS = -all-static -pthread
+else
+lxc_copy_SOURCES += af_unix.c af_unix.h \
+                   caps.c caps.h \
+                   cgroups/cgfsng.c \
+                   cgroups/cgroup.c cgroups/cgroup.h \
+                   cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                   cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                   commands.c commands.h \
+                   commands_utils.c commands_utils.h \
+                   conf.c conf.h \
+                   confile.c confile.h \
+                   confile_utils.c confile_utils.h \
+                   error.c error.h \
+                   file_utils.c file_utils.h \
+                   ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                   initutils.c initutils.h \
+                   log.c log.h \
+                   lxclock.c lxclock.h \
+                   mainloop.c mainloop.h \
+                   monitor.c monitor.h \
+                   namespace.c namespace.h \
+                   network.c network.h \
+                   nl.c nl.h \
+                   parse.c parse.h \
+                   process_utils.c process_utils.h \
+                   ringbuf.c ringbuf.h \
+                   start.c start.h \
+                   state.c state.h \
+                   storage/btrfs.c storage/btrfs.h \
+                   storage/dir.c storage/dir.h \
+                   storage/loop.c storage/loop.h \
+                   storage/lvm.c storage/lvm.h \
+                   storage/nbd.c storage/nbd.h \
+                   storage/overlay.c storage/overlay.h \
+                   storage/rbd.c storage/rbd.h \
+                   storage/rsync.c storage/rsync.h \
+                   storage/storage.c storage/storage.h \
+                   storage/storage_utils.c storage/storage_utils.h \
+                   storage/zfs.c storage/zfs.h \
+                   string_utils.c string_utils.h \
+                   sync.c sync.h \
+                   terminal.c terminal.h \
+                   utils.c utils.h \
+                   uuid.c uuid.h \
+                   $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_copy_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_start_SOURCES = tools/lxc_start.c \
+                   tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_start_SOURCES += $(liblxc_la_SOURCES)
+lxc_start_LDFLAGS = -all-static -pthread
+else
+lxc_start_SOURCES += af_unix.c af_unix.h \
+                    caps.c caps.h \
+                    cgroups/cgfsng.c \
+                    cgroups/cgroup.c cgroups/cgroup.h \
+                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                    commands.c commands.h \
+                    commands_utils.c commands_utils.h \
+                    conf.c conf.h \
+                    confile.c confile.h \
+                    confile_utils.c confile_utils.h \
+                    error.c error.h \
+                    file_utils.c file_utils.h \
+                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                    initutils.c initutils.h \
+                    log.c log.h \
+                    lxclock.c lxclock.h \
+                    mainloop.c mainloop.h \
+                    monitor.c monitor.h \
+                    namespace.c namespace.h \
+                    network.c network.h \
+                    nl.c nl.h \
+                    parse.c parse.h \
+                    process_utils.c process_utils.h \
+                    ringbuf.c ringbuf.h \
+                    start.c start.h \
+                    state.c state.h \
+                    storage/btrfs.c storage/btrfs.h \
+                    storage/dir.c storage/dir.h \
+                    storage/loop.c storage/loop.h \
+                    storage/lvm.c storage/lvm.h \
+                    storage/nbd.c storage/nbd.h \
+                    storage/overlay.c storage/overlay.h \
+                    storage/rbd.c storage/rbd.h \
+                    storage/rsync.c storage/rsync.h \
+                    storage/storage.c storage/storage.h \
+                    storage/storage_utils.c storage/storage_utils.h \
+                    storage/zfs.c storage/zfs.h \
+                    string_utils.c string_utils.h \
+                    sync.c sync.h \
+                    terminal.c terminal.h \
+                    utils.c utils.h \
+                    uuid.c uuid.h \
+                    $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_start_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_stop_SOURCES = tools/lxc_stop.c \
+                  tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_stop_SOURCES += $(liblxc_la_SOURCES)
+lxc_stop_LDFLAGS = -all-static -pthread
+else
+lxc_stop_SOURCES += af_unix.c af_unix.h \
+                   caps.c caps.h \
+                   cgroups/cgfsng.c \
+                   cgroups/cgroup.c cgroups/cgroup.h \
+                   cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                   cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                   commands.c commands.h \
+                   commands_utils.c commands_utils.h \
+                   conf.c conf.h \
+                   confile.c confile.h \
+                   confile_utils.c confile_utils.h \
+                   error.c error.h \
+                   file_utils.c file_utils.h \
+                   ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                   initutils.c initutils.h \
+                   log.c log.h \
+                   lxclock.c lxclock.h \
+                   mainloop.c mainloop.h \
+                   monitor.c monitor.h \
+                   namespace.c namespace.h \
+                   network.c network.h \
+                   nl.c nl.h \
+                   parse.c parse.h \
+                   process_utils.c process_utils.h \
+                   ringbuf.c ringbuf.h \
+                   start.c start.h \
+                   state.c state.h \
+                   storage/btrfs.c storage/btrfs.h \
+                   storage/dir.c storage/dir.h \
+                   storage/loop.c storage/loop.h \
+                   storage/lvm.c storage/lvm.h \
+                   storage/nbd.c storage/nbd.h \
+                   storage/overlay.c storage/overlay.h \
+                   storage/rbd.c storage/rbd.h \
+                   storage/rsync.c storage/rsync.h \
+                   storage/storage.c storage/storage.h \
+                   storage/storage_utils.c storage/storage_utils.h \
+                   storage/zfs.c storage/zfs.h \
+                   string_utils.c string_utils.h \
+                   sync.c sync.h \
+                   terminal.c terminal.h \
+                   utils.c utils.h \
+                   uuid.c uuid.h \
+                   $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_stop_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_top_SOURCES = tools/lxc_top.c \
+                 tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_top_SOURCES += $(liblxc_la_SOURCES)
+lxc_top_LDFLAGS = -all-static -pthread
+else
+lxc_top_SOURCES += af_unix.c af_unix.h \
+                  caps.c caps.h \
+                  cgroups/cgfsng.c \
+                  cgroups/cgroup.c cgroups/cgroup.h \
+                  cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                  cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                  commands.c commands.h \
+                  commands_utils.c commands_utils.h \
+                  conf.c conf.h \
+                  confile.c confile.h \
+                  confile_utils.c confile_utils.h \
+                  error.c error.h \
+                  file_utils.c file_utils.h \
+                  ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                  initutils.c initutils.h \
+                  log.c log.h \
+                  lxclock.c lxclock.h \
+                  mainloop.c mainloop.h \
+                  monitor.c monitor.h \
+                  namespace.c namespace.h \
+                  network.c network.h \
+                  nl.c nl.h \
+                  parse.c parse.h \
+                  process_utils.c process_utils.h \
+                  ringbuf.c ringbuf.h \
+                  start.c start.h \
+                  state.c state.h \
+                  storage/btrfs.c storage/btrfs.h \
+                  storage/dir.c storage/dir.h \
+                  storage/loop.c storage/loop.h \
+                  storage/lvm.c storage/lvm.h \
+                  storage/nbd.c storage/nbd.h \
+                  storage/overlay.c storage/overlay.h \
+                  storage/rbd.c storage/rbd.h \
+                  storage/rsync.c storage/rsync.h \
+                  storage/storage.c storage/storage.h \
+                  storage/storage_utils.c storage/storage_utils.h \
+                  storage/zfs.c storage/zfs.h \
+                  string_utils.c string_utils.h \
+                  sync.c sync.h \
+                  terminal.c terminal.h \
+                  utils.c utils.h \
+                  uuid.c uuid.h \
+                  $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_top_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_unfreeze_SOURCES = tools/lxc_unfreeze.c \
+                      tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_unfreeze_SOURCES += $(liblxc_la_SOURCES)
+lxc_unfreeze_LDFLAGS = -all-static -pthread
+else
+lxc_unfreeze_SOURCES += af_unix.c af_unix.h \
+                       caps.c caps.h \
+                       cgroups/cgfsng.c \
+                       cgroups/cgroup.c cgroups/cgroup.h \
+                       cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                       cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                       commands.c commands.h \
+                       commands_utils.c commands_utils.h \
+                       conf.c conf.h \
+                       confile.c confile.h \
+                       confile_utils.c confile_utils.h \
+                       error.c error.h \
+                       file_utils.c file_utils.h \
+                       ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                       initutils.c initutils.h \
+                       log.c log.h \
+                       lxclock.c lxclock.h \
+                       mainloop.c mainloop.h \
+                       monitor.c monitor.h \
+                       namespace.c namespace.h \
+                       network.c network.h \
+                       nl.c nl.h \
+                       parse.c parse.h \
+                       process_utils.c process_utils.h \
+                       ringbuf.c ringbuf.h \
+                       start.c start.h \
+                       state.c state.h \
+                       storage/btrfs.c storage/btrfs.h \
+                       storage/dir.c storage/dir.h \
+                       storage/loop.c storage/loop.h \
+                       storage/lvm.c storage/lvm.h \
+                       storage/nbd.c storage/nbd.h \
+                       storage/overlay.c storage/overlay.h \
+                       storage/rbd.c storage/rbd.h \
+                       storage/rsync.c storage/rsync.h \
+                       storage/storage.c storage/storage.h \
+                       storage/storage_utils.c storage/storage_utils.h \
+                       storage/zfs.c storage/zfs.h \
+                       string_utils.c string_utils.h \
+                       sync.c sync.h \
+                       terminal.c terminal.h \
+                       utils.c utils.h \
+                       uuid.c uuid.h \
+                       $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_unfreeze_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_unshare_SOURCES = tools/lxc_unshare.c \
+                     tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_unshare_SOURCES += $(liblxc_la_SOURCES)
+lxc_unshare_LDFLAGS = -all-static -pthread
+else
+lxc_unshare_SOURCES += af_unix.c af_unix.h \
+                      caps.c caps.h \
+                      cgroups/cgfsng.c \
+                      cgroups/cgroup.c cgroups/cgroup.h \
+                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                      commands.c commands.h \
+                      commands_utils.c commands_utils.h \
+                      conf.c conf.h \
                       confile.c confile.h \
                       confile_utils.c confile_utils.h \
                       error.c error.h \
@@ -1175,17 +1332,81 @@ lxc_unfreeze_SOURCES = tools/lxc_unfreeze.c \
                       storage/zfs.c storage/zfs.h \
                       string_utils.c string_utils.h \
                       sync.c sync.h \
+                      syscall_numbers.h \
+                      syscall_wrappers.h \
                       terminal.c terminal.h \
                       utils.c utils.h \
                       uuid.c uuid.h \
                       $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_unfreeze_SOURCES += seccomp.c lxcseccomp.h
+lxc_unshare_SOURCES += seccomp.c lxcseccomp.h
+endif
+endif
+
+lxc_wait_SOURCES = tools/lxc_wait.c \
+                  tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_wait_SOURCES += $(liblxc_la_SOURCES)
+lxc_wait_LDFLAGS = -all-static -pthread
+else
+lxc_wait_SOURCES += af_unix.c af_unix.h \
+                   caps.c caps.h \
+                   cgroups/cgfsng.c \
+                   cgroups/cgroup.c cgroups/cgroup.h \
+                   cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                   cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                   commands.c commands.h \
+                   commands_utils.c commands_utils.h \
+                   conf.c conf.h \
+                   confile.c confile.h \
+                   confile_utils.c confile_utils.h \
+                   error.c error.h \
+                   file_utils.c file_utils.h \
+                   ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                   initutils.c initutils.h \
+                   log.c log.h \
+                   lxclock.c lxclock.h \
+                   mainloop.c mainloop.h \
+                   monitor.c monitor.h \
+                   namespace.c namespace.h \
+                   network.c network.h \
+                   nl.c nl.h \
+                   parse.c parse.h \
+                   process_utils.c process_utils.h \
+                   ringbuf.c ringbuf.h \
+                   start.c start.h \
+                   state.c state.h \
+                   storage/btrfs.c storage/btrfs.h \
+                   storage/dir.c storage/dir.h \
+                   storage/loop.c storage/loop.h \
+                   storage/lvm.c storage/lvm.h \
+                   storage/nbd.c storage/nbd.h \
+                   storage/overlay.c storage/overlay.h \
+                   storage/rbd.c storage/rbd.h \
+                   storage/rsync.c storage/rsync.h \
+                   storage/storage.c storage/storage.h \
+                   storage/storage_utils.c storage/storage_utils.h \
+                   storage/zfs.c storage/zfs.h \
+                   string_utils.c string_utils.h \
+                   sync.c sync.h \
+                   terminal.c terminal.h \
+                   utils.c utils.h \
+                   uuid.c uuid.h \
+                   $(LSM_SOURCES)
+if ENABLE_SECCOMP
+lxc_wait_SOURCES += seccomp.c lxcseccomp.h
+endif
 endif
 
-lxc_unshare_SOURCES = tools/lxc_unshare.c \
-                     tools/arguments.c tools/arguments.h \
-                     af_unix.c af_unix.h \
+lxc_create_SOURCES = tools/lxc_create.c \
+                    tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_create_SOURCES += $(liblxc_la_SOURCES)
+lxc_create_LDFLAGS = -all-static -pthread
+else
+lxc_create_SOURCES += af_unix.c af_unix.h \
                      caps.c caps.h \
                      cgroups/cgfsng.c \
                      cgroups/cgroup.c cgroups/cgroup.h \
@@ -1225,216 +1446,126 @@ lxc_unshare_SOURCES = tools/lxc_unshare.c \
                      storage/zfs.c storage/zfs.h \
                      string_utils.c string_utils.h \
                      sync.c sync.h \
-                     syscall_numbers.h \
-                     syscall_wrappers.h \
                      terminal.c terminal.h \
                      utils.c utils.h \
                      uuid.c uuid.h \
                      $(LSM_SOURCES)
 if ENABLE_SECCOMP
-lxc_unshare_SOURCES += seccomp.c lxcseccomp.h
-endif
-
-lxc_wait_SOURCES = tools/lxc_wait.c \
-                  tools/arguments.c tools/arguments.h \
-                  af_unix.c af_unix.h \
-                  caps.c caps.h \
-                  cgroups/cgfsng.c \
-                  cgroups/cgroup.c cgroups/cgroup.h \
-                  cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                  cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                  commands.c commands.h \
-                  commands_utils.c commands_utils.h \
-                  conf.c conf.h \
-                  confile.c confile.h \
-                  confile_utils.c confile_utils.h \
-                  error.c error.h \
-                  file_utils.c file_utils.h \
-                  ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                  initutils.c initutils.h \
-                  log.c log.h \
-                  lxclock.c lxclock.h \
-                  mainloop.c mainloop.h \
-                  monitor.c monitor.h \
-                  namespace.c namespace.h \
-                  network.c network.h \
-                  nl.c nl.h \
-                  parse.c parse.h \
-                  process_utils.c process_utils.h \
-                  ringbuf.c ringbuf.h \
-                  start.c start.h \
-                  state.c state.h \
-                  storage/btrfs.c storage/btrfs.h \
-                  storage/dir.c storage/dir.h \
-                  storage/loop.c storage/loop.h \
-                  storage/lvm.c storage/lvm.h \
-                  storage/nbd.c storage/nbd.h \
-                  storage/overlay.c storage/overlay.h \
-                  storage/rbd.c storage/rbd.h \
-                  storage/rsync.c storage/rsync.h \
-                  storage/storage.c storage/storage.h \
-                  storage/storage_utils.c storage/storage_utils.h \
-                  storage/zfs.c storage/zfs.h \
-                  string_utils.c string_utils.h \
-                  sync.c sync.h \
-                  terminal.c terminal.h \
-                  utils.c utils.h \
-                  uuid.c uuid.h \
-                  $(LSM_SOURCES)
-if ENABLE_SECCOMP
-lxc_wait_SOURCES += seccomp.c lxcseccomp.h
-endif
-
-lxc_create_SOURCES = tools/lxc_create.c \
-                    tools/arguments.c tools/arguments.h \
-                    af_unix.c af_unix.h \
-                    caps.c caps.h \
-                    cgroups/cgfsng.c \
-                    cgroups/cgroup.c cgroups/cgroup.h \
-                    cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                    cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                    commands.c commands.h \
-                    commands_utils.c commands_utils.h \
-                    conf.c conf.h \
-                    confile.c confile.h \
-                    confile_utils.c confile_utils.h \
-                    error.c error.h \
-                    file_utils.c file_utils.h \
-                    ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                    initutils.c initutils.h \
-                    log.c log.h \
-                    lxclock.c lxclock.h \
-                    mainloop.c mainloop.h \
-                    monitor.c monitor.h \
-                    namespace.c namespace.h \
-                    network.c network.h \
-                    nl.c nl.h \
-                    parse.c parse.h \
-                    process_utils.c process_utils.h \
-                    ringbuf.c ringbuf.h \
-                    start.c start.h \
-                    state.c state.h \
-                    storage/btrfs.c storage/btrfs.h \
-                    storage/dir.c storage/dir.h \
-                    storage/loop.c storage/loop.h \
-                    storage/lvm.c storage/lvm.h \
-                    storage/nbd.c storage/nbd.h \
-                    storage/overlay.c storage/overlay.h \
-                    storage/rbd.c storage/rbd.h \
-                    storage/rsync.c storage/rsync.h \
-                    storage/storage.c storage/storage.h \
-                    storage/storage_utils.c storage/storage_utils.h \
-                    storage/zfs.c storage/zfs.h \
-                    string_utils.c string_utils.h \
-                    sync.c sync.h \
-                    terminal.c terminal.h \
-                    utils.c utils.h \
-                    uuid.c uuid.h \
-                    $(LSM_SOURCES)
-if ENABLE_SECCOMP
 lxc_create_SOURCES += seccomp.c lxcseccomp.h
 endif
+endif
 
 lxc_snapshot_SOURCES = tools/lxc_snapshot.c \
-                      tools/arguments.c tools/arguments.h \
-                      af_unix.c af_unix.h \
-                      caps.c caps.h \
-                      cgroups/cgfsng.c \
-                      cgroups/cgroup.c cgroups/cgroup.h \
-                      cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                      cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                      commands.c commands.h \
-                      commands_utils.c commands_utils.h \
-                      conf.c conf.h \
-                      confile.c confile.h \
-                      confile_utils.c confile_utils.h \
-                      error.c error.h \
-                      file_utils.c file_utils.h \
-                      ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                      initutils.c initutils.h \
-                      log.c log.h \
-                      lxclock.c lxclock.h \
-                      mainloop.c mainloop.h \
-                      monitor.c monitor.h \
-                      namespace.c namespace.h \
-                      network.c network.h \
-                      nl.c nl.h \
-                      parse.c parse.h \
-                      process_utils.c process_utils.h \
-                      ringbuf.c ringbuf.h \
-                      start.c start.h \
-                      state.c state.h \
-                      storage/btrfs.c storage/btrfs.h \
-                      storage/dir.c storage/dir.h \
-                      storage/loop.c storage/loop.h \
-                      storage/lvm.c storage/lvm.h \
-                      storage/nbd.c storage/nbd.h \
-                      storage/overlay.c storage/overlay.h \
-                      storage/rbd.c storage/rbd.h \
-                      storage/rsync.c storage/rsync.h \
-                      storage/storage.c storage/storage.h \
-                      storage/storage_utils.c storage/storage_utils.h \
-                      storage/zfs.c storage/zfs.h \
-                      string_utils.c string_utils.h \
-                      sync.c sync.h \
-                      terminal.c terminal.h \
-                      utils.c utils.h \
-                      uuid.c uuid.h \
-                      $(LSM_SOURCES)
+                      tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_snapshot_SOURCES += $(liblxc_la_SOURCES)
+lxc_snapshot_LDFLAGS = -all-static -pthread
+else
+lxc_snapshot_SOURCES += af_unix.c af_unix.h \
+                       caps.c caps.h \
+                       cgroups/cgfsng.c \
+                       cgroups/cgroup.c cgroups/cgroup.h \
+                       cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                       cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                       commands.c commands.h \
+                       commands_utils.c commands_utils.h \
+                       conf.c conf.h \
+                       confile.c confile.h \
+                       confile_utils.c confile_utils.h \
+                       error.c error.h \
+                       file_utils.c file_utils.h \
+                       ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                       initutils.c initutils.h \
+                       log.c log.h \
+                       lxclock.c lxclock.h \
+                       mainloop.c mainloop.h \
+                       monitor.c monitor.h \
+                       namespace.c namespace.h \
+                       network.c network.h \
+                       nl.c nl.h \
+                       parse.c parse.h \
+                       process_utils.c process_utils.h \
+                       ringbuf.c ringbuf.h \
+                       start.c start.h \
+                       state.c state.h \
+                       storage/btrfs.c storage/btrfs.h \
+                       storage/dir.c storage/dir.h \
+                       storage/loop.c storage/loop.h \
+                       storage/lvm.c storage/lvm.h \
+                       storage/nbd.c storage/nbd.h \
+                       storage/overlay.c storage/overlay.h \
+                       storage/rbd.c storage/rbd.h \
+                       storage/rsync.c storage/rsync.h \
+                       storage/storage.c storage/storage.h \
+                       storage/storage_utils.c storage/storage_utils.h \
+                       storage/zfs.c storage/zfs.h \
+                       string_utils.c string_utils.h \
+                       sync.c sync.h \
+                       terminal.c terminal.h \
+                       utils.c utils.h \
+                       uuid.c uuid.h \
+                       $(LSM_SOURCES)
 if ENABLE_SECCOMP
 lxc_snapshot_SOURCES += seccomp.c lxcseccomp.h
 endif
+endif
 
 lxc_checkpoint_SOURCES = tools/lxc_checkpoint.c \
-                        tools/arguments.c tools/arguments.h \
-                        af_unix.c af_unix.h \
-                        caps.c caps.h \
-                        cgroups/cgfsng.c \
-                        cgroups/cgroup.c cgroups/cgroup.h \
-                        cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
-                        cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
-                        commands.c commands.h \
-                        commands_utils.c commands_utils.h \
-                        conf.c conf.h \
-                        confile.c confile.h \
-                        confile_utils.c confile_utils.h \
-                        error.c error.h \
-                        file_utils.c file_utils.h \
-                        ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
-                        initutils.c initutils.h \
-                        log.c log.h \
-                        lxclock.c lxclock.h \
-                        mainloop.c mainloop.h \
-                        monitor.c monitor.h \
-                        namespace.c namespace.h \
-                        network.c network.h \
-                        nl.c nl.h \
-                        parse.c parse.h \
-                        process_utils.c process_utils.h \
-                        ringbuf.c ringbuf.h \
-                        start.c start.h \
-                        state.c state.h \
-                        storage/btrfs.c storage/btrfs.h \
-                        storage/dir.c storage/dir.h \
-                        storage/loop.c storage/loop.h \
-                        storage/lvm.c storage/lvm.h \
-                        storage/nbd.c storage/nbd.h \
-                        storage/overlay.c storage/overlay.h \
-                        storage/rbd.c storage/rbd.h \
-                        storage/rsync.c storage/rsync.h \
-                        storage/storage.c storage/storage.h \
-                        storage/storage_utils.c storage/storage_utils.h \
-                        storage/zfs.c storage/zfs.h \
-                        string_utils.c string_utils.h \
-                        sync.c sync.h \
-                        terminal.c terminal.h \
-                        utils.c utils.h \
-                        uuid.c uuid.h \
-                        $(LSM_SOURCES)
+                        tools/arguments.c tools/arguments.h
+
+if ENABLE_STATIC_BINARIES
+lxc_checkpoint_SOURCES += $(liblxc_la_SOURCES)
+lxc_checkpoint_LDFLAGS = -all-static -pthread
+else
+lxc_checkpoint_SOURCES += af_unix.c af_unix.h \
+                         caps.c caps.h \
+                         cgroups/cgfsng.c \
+                         cgroups/cgroup.c cgroups/cgroup.h \
+                         cgroups/cgroup2_devices.c cgroups/cgroup2_devices.h \
+                         cgroups/cgroup_utils.c cgroups/cgroup_utils.h \
+                         commands.c commands.h \
+                         commands_utils.c commands_utils.h \
+                         conf.c conf.h \
+                         confile.c confile.h \
+                         confile_utils.c confile_utils.h \
+                         error.c error.h \
+                         file_utils.c file_utils.h \
+                         ../include/netns_ifaddrs.c ../include/netns_ifaddrs.h \
+                         initutils.c initutils.h \
+                         log.c log.h \
+                         lxclock.c lxclock.h \
+                         mainloop.c mainloop.h \
+                         monitor.c monitor.h \
+                         namespace.c namespace.h \
+                         network.c network.h \
+                         nl.c nl.h \
+                         parse.c parse.h \
+                         process_utils.c process_utils.h \
+                         ringbuf.c ringbuf.h \
+                         start.c start.h \
+                         state.c state.h \
+                         storage/btrfs.c storage/btrfs.h \
+                         storage/dir.c storage/dir.h \
+                         storage/loop.c storage/loop.h \
+                         storage/lvm.c storage/lvm.h \
+                         storage/nbd.c storage/nbd.h \
+                         storage/overlay.c storage/overlay.h \
+                         storage/rbd.c storage/rbd.h \
+                         storage/rsync.c storage/rsync.h \
+                         storage/storage.c storage/storage.h \
+                         storage/storage_utils.c storage/storage_utils.h \
+                         storage/zfs.c storage/zfs.h \
+                         string_utils.c string_utils.h \
+                         sync.c sync.h \
+                         terminal.c terminal.h \
+                         utils.c utils.h \
+                         uuid.c uuid.h \
+                         $(LSM_SOURCES)
 if ENABLE_SECCOMP
 lxc_checkpoint_SOURCES += seccomp.c lxcseccomp.h
 endif
-
+endif
 endif
 
 if ENABLE_COMMANDS