# libguestfs # Copyright (C) 2009-2025 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. include $(top_srcdir)/subdir-rules.mk bin_PROGRAMS = guestfish generator_built = \ cmds.c \ cmds-gperf.gperf \ completion.c \ entries-0.c \ entries-1.c \ entries-2.c \ entries-3.c \ entries-4.c \ entries-5.c \ entries-6.c \ event-names.c \ fish-cmds.h \ guestfish-actions.pod \ guestfish-commands.pod \ guestfish-prepopts.pod \ prepopts.h \ prepopts.c \ run-0.c \ run-1.c \ run-2.c \ run-3.c \ run-4.c \ run-5.c \ run-6.c \ run.h BUILT_SOURCES = \ $(generator_built) \ cmds-gperf.c \ rc_protocol.h \ rc_protocol.c EXTRA_DIST = \ $(BUILT_SOURCES) \ rc_protocol.x \ guestfish.pod \ libguestfs-tools.conf \ libguestfs-tools.conf.pod \ virt-copy-in \ virt-copy-out \ virt-tar-in \ virt-tar-out \ virt-copy-in.pod \ virt-copy-out.pod \ virt-tar-in.pod \ virt-tar-out.pod guestfish_SOURCES = \ $(generator_built) \ alloc.c \ cmds-gperf.h \ copy.c \ destpaths.c \ display.c \ echo.c \ edit.c \ events.c \ fish.c \ fish.h \ glob.c \ help.c \ hexedit.c \ lcd.c \ man.c \ more.c \ prep.c \ prep-disk.c \ prep-part.c \ prep-fs.c \ prep-lv.c \ prep-boot.c \ rc.c \ reopen.c \ setenv.c \ supported.c \ tilde.c \ time.c # This convenience library is solely to compile its generated sources with # custom flags. librc_protocol_la_SOURCES = rc_protocol.c rc_protocol.h librc_protocol_la_CFLAGS = -Wall -Wno-unused -fno-strict-aliasing $(RPC_CFLAGS) # Build the command lookup perfect hash code. The generated code has # lots of warnings so we must compile it in a separate mini-library. libcmds_la_SOURCES = cmds-gperf.c libcmds_la_CPPFLAGS = \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ -I$(top_srcdir)/include \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib libcmds_la_CFLAGS = libcmds_la_LIBADD = \ $(top_builddir)/common/structs/libstructs.la \ $(top_builddir)/common/utils/libutils.la \ $(LTLIBINTL) cmds-gperf.c: cmds-gperf.gperf rm -f $@ $(GPERF) -t $< > $@-t mv $@-t $@ guestfish_CPPFLAGS = \ -DGUESTFS_NO_DEPRECATED=1 \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ -I$(top_srcdir)/include \ -I$(top_srcdir)/common/edit -I$(top_builddir)/common/edit \ -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/common/progress -I$(top_builddir)/common/progress \ -I$(top_srcdir)/fish -I$(top_builddir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib guestfish_CFLAGS = \ $(WARN_CFLAGS) $(WERROR_CFLAGS) \ $(RPC_CFLAGS) \ $(LIBCONFIG_CFLAGS) \ $(LIBXML2_CFLAGS) guestfish_LDADD = \ $(top_builddir)/common/edit/libedit.la \ $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/progress/libprogress.la \ $(top_builddir)/common/structs/libstructs.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ $(LIBXML2_LIBS) \ $(LIBCONFIG_LIBS) \ $(LIBREADLINE) \ $(LIBTINFO_LIBS) \ $(LTLIBINTL) \ $(RPC_LIBS) \ -lm # Make guestfish use the convenience libraries. noinst_LTLIBRARIES = libcmds.la librc_protocol.la guestfish_LDADD += libcmds.la librc_protocol.la ../gnulib/lib/libgnu.la if HAVE_RPCGEN rc_protocol.c: rc_protocol.x rm -f $@-t $@-t2 $(RPCGEN) -c -o $@-t $< $(SED) 's,\.\./\(\.\./\)*fish,.,' < $@-t > $@-t2 rm $@-t mv $@-t2 $@ rc_protocol.h: rc_protocol.x rm -f $@-t $(RPCGEN) -h -o $@-t $< mv $@-t $@ endif # Script wrappers. bin_SCRIPTS = virt-copy-in virt-copy-out virt-tar-in virt-tar-out # Manual pages. man_MANS = \ guestfish.1 \ libguestfs-tools.conf.5 \ virt-copy-in.1 \ virt-copy-out.1 \ virt-tar-in.1 \ virt-tar-out.1 noinst_DATA = \ $(top_builddir)/website/guestfish.1.html \ $(top_builddir)/website/libguestfs-tools.conf.5.html \ $(top_builddir)/website/virt-copy-in.1.html \ $(top_builddir)/website/virt-copy-out.1.html \ $(top_builddir)/website/virt-tar-in.1.html \ $(top_builddir)/website/virt-tar-out.1.html guestfish.1 $(top_builddir)/website/guestfish.1.html: stamp-guestfish.pod stamp-guestfish.pod: guestfish.pod guestfish-actions.pod guestfish-commands.pod guestfish-prepopts.pod $(PODWRAPPER) \ --man guestfish.1 \ --html $(top_builddir)/website/guestfish.1.html \ --path $(srcdir) --path $(top_srcdir)/common/options \ --license GPLv2+ \ --warning ro-option \ $< touch $@ libguestfs-tools.conf.5 $(top_builddir)/website/libguestfs-tools.conf.5.html: stamp-libguestfs-tools.conf.pod stamp-libguestfs-tools.conf.pod: libguestfs-tools.conf.pod $(PODWRAPPER) \ --section 5 \ --man libguestfs-tools.conf.5 \ --html $(top_builddir)/website/libguestfs-tools.conf.5.html \ --license GPLv2+ \ $< touch $@ virt-copy-in.1 $(top_builddir)/website/virt-copy-in.1.html: stamp-virt-copy-in.pod stamp-virt-copy-in.pod: virt-copy-in.pod $(PODWRAPPER) \ --man virt-copy-in.1 \ --html $(top_builddir)/website/virt-copy-in.1.html \ --license GPLv2+ \ --warning general \ $< touch $@ virt-copy-out.1 $(top_builddir)/website/virt-copy-out.1.html: stamp-virt-copy-out.pod stamp-virt-copy-out.pod: virt-copy-out.pod $(PODWRAPPER) \ --man virt-copy-out.1 \ --html $(top_builddir)/website/virt-copy-out.1.html \ --license GPLv2+ \ --warning safe \ $< touch $@ virt-tar-in.1 $(top_builddir)/website/virt-tar-in.1.html: stamp-virt-tar-in.pod stamp-virt-tar-in.pod: virt-tar-in.pod $(PODWRAPPER) \ --man virt-tar-in.1 \ --html $(top_builddir)/website/virt-tar-in.1.html \ --license GPLv2+ \ --warning general \ $< touch $@ virt-tar-out.1 $(top_builddir)/website/virt-tar-out.1.html: stamp-virt-tar-out.pod stamp-virt-tar-out.pod: virt-tar-out.pod $(PODWRAPPER) \ --man virt-tar-out.1 \ --html $(top_builddir)/website/virt-tar-out.1.html \ --license GPLv2+ \ --warning safe \ $< touch $@ # libguestfs tools config file. toolsconfdir = $(sysconfdir) toolsconf_DATA = libguestfs-tools.conf # Tests. TESTS_ENVIRONMENT = $(top_builddir)/run --test TESTS = \ test-a.sh \ test-add-uri.sh \ test-docs.sh \ test-escapes.sh \ test-events.sh \ test-invalid-params.sh \ test-tilde.sh if HAVE_LIBVIRT TESTS += \ test-add-domain.sh \ test-d.sh endif if ENABLE_APPLIANCE TESTS += \ test-copy.sh \ test-edit.sh \ test-file-attrs.sh \ test-find0.sh \ test-inspect.sh \ test-glob.sh \ test-prep.sh \ test-read-file.sh \ test-remote.sh \ test-remote-events.sh \ test-reopen.sh \ test-run.sh \ test-stringlist.sh \ test-upload-to-dir.sh if HAVE_FUSE TESTS += \ test-mount-local.sh endif endif check-valgrind: $(MAKE) TESTS="test-a.sh test-add-domain.sh test-add-uri.sh test-copy.sh test-d.sh test-edit.sh test-escapes.sh test-events.sh test-find0.sh test-glob.sh test-inspect.sh test-prep.sh test-read-file.sh test-remote.sh test-remote-events.sh test-reopen.sh test-run.sh test-stringlist.sh test-tilde.sh test-upload-to-dir.sh" VG="@VG@" check EXTRA_DIST += \ test-a.sh \ test-add-domain.sh \ test-add-uri.sh \ test-alloc.sh \ test-copy.sh \ test-d.sh \ test-docs.sh \ test-edit.sh \ test-escapes.sh \ test-events.sh \ test-file-attrs.sh \ test-find0.sh \ test-glob.sh \ test-inspect.sh \ test-invalid-params.sh \ test-mount-local.sh \ test-prep.sh \ test-read-file.sh \ test-remote.sh \ test-remote-events.sh \ test-reopen.sh \ test-run.sh \ test-stringlist.sh \ test-tilde.sh \ test-upload-to-dir.sh