X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=fish%2FMakefile.am;h=2d8c16b83a9d6f2d5e66e4247e76e3d3071c4169;hp=795952a96480e3ac54ddd3cf1e6379a958e4b894;hb=d8346d5d6428c7293d1ddf58e4f9ec4b7de25380;hpb=c477e2fb78347728aaacbbc89666dcda1481a4b9 diff --git a/fish/Makefile.am b/fish/Makefile.am index 795952a..2d8c16b 100644 --- a/fish/Makefile.am +++ b/fish/Makefile.am @@ -1,5 +1,5 @@ # libguestfs -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2010 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 @@ -21,30 +21,64 @@ bin_PROGRAMS = guestfish generator_built = \ cmds.c \ - completion.c + cmds_gperf.gperf \ + completion.c \ + guestfish-actions.pod \ + guestfish-commands.pod \ + prepopts.h \ + prepopts.c BUILT_SOURCES = \ $(generator_built) \ + cmds_gperf.c \ rc_protocol.h \ rc_protocol.c EXTRA_DIST = \ $(BUILT_SOURCES) \ - rc_protocol.x + rc_protocol.x \ + guestfish.pod \ + guestfish-bash-completion.sh + +# These source files (all related to option parsing) are shared +# between guestfish and guestmount. Keep a convenient list here just +# so we know which ones are shared. These files must not include +# other guestfish files. +SHARED_SOURCE_FILES = \ + inspect.c \ + keys.c \ + options.h \ + options.c \ + virt.c guestfish_SOURCES = \ $(generator_built) \ + $(SHARED_SOURCE_FILES) \ alloc.c \ + cmds_gperf.h \ + copy.c \ destpaths.c \ echo.c \ edit.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 \ + progress.c \ rc.c \ reopen.c \ + rmsd.h \ + supported.c \ tilde.c \ time.c @@ -53,18 +87,30 @@ guestfish_SOURCES = \ librc_protocol_la_SOURCES = rc_protocol.c librc_protocol_la_CFLAGS = -Wall -Wno-unused +# 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_CFLAGS = + +cmds_gperf.c: cmds_gperf.gperf + rm -f $@ + $(GPERF) -t $< > $@-t + mv $@-t $@ + guestfish_CFLAGS = \ -I$(top_srcdir)/src -I$(top_builddir)/src \ -I$(top_srcdir)/fish -I$(top_builddir)/fish \ -DGUESTFS_DEFAULT_PATH='"$(libdir)/guestfs"' \ + -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib \ $(WARN_CFLAGS) $(WERROR_CFLAGS) -guestfish_LDADD = $(top_builddir)/src/libguestfs.la $(LIBREADLINE) +guestfish_LDADD = \ + $(top_builddir)/src/libguestfs.la $(LIBREADLINE) -lm -# Make libguestfs use the convenience library. -noinst_LTLIBRARIES = librc_protocol.la -guestfish_LDADD += librc_protocol.la ../gnulib/lib/libgnu.la +# 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 @@ -79,3 +125,32 @@ rc_protocol.h: rc_protocol.x $(RPCGEN) -h -o $@-t $< mv $@-t $@ endif + +# Build a partly-static library (for the binary distribution). + +guestfish.static$(EXEEXT): $(guestfish_OBJECTS) $(guestfish_DEPENDENCIES) + $(top_srcdir)/relink-static.sh \ + $(guestfish_LINK) $(guestfish_OBJECTS) -static $(guestfish_LDADD) $(guestfish_LIBS) $(LIBVIRT_LIBS) $(LIBXML2_LIBS) -ltinfo -lpcre -lhivex -lmagic -lz -lm + +# Manual page. +# guestfish-actions.pod and guestfish-commands.pod are autogenerated. +# There is no include mechanism for POD, so we have to do it by hand. + +man_MANS = guestfish.1 + +guestfish.1: guestfish.pod guestfish-actions.pod guestfish-commands.pod + sed \ + -e '/@ACTIONS@/rguestfish-actions.pod' -e 's/@ACTIONS@//' \ + -e '/@FISH_COMMANDS@/rguestfish-commands.pod' -e 's/@FISH_COMMANDS@//' \ + < $< | \ + $(POD2MAN) \ + --section 1 \ + -c "Virtualization Support" \ + --name "guestfish" \ + --release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \ + > $@ + +# Bash completion script. + +bashcompletiondir = $(sysconfdir)/bash_completion.d +bashcompletion_DATA = guestfish-bash-completion.sh