mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
203 lines
5.2 KiB
Makefile
203 lines
5.2 KiB
Makefile
# libguestfs
|
|
# Copyright (C) 2009 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
|
|
|
SUBDIRS = src daemon fish examples images
|
|
|
|
if HAVE_OCAML
|
|
SUBDIRS += ocaml
|
|
endif
|
|
if HAVE_PERL
|
|
SUBDIRS += perl
|
|
endif
|
|
if HAVE_PYTHON
|
|
SUBDIRS += python
|
|
endif
|
|
if HAVE_RUBY
|
|
SUBDIRS += ruby
|
|
endif
|
|
if HAVE_JAVA
|
|
SUBDIRS += java
|
|
endif
|
|
if HAVE_INSPECTOR
|
|
SUBDIRS += inspector
|
|
endif
|
|
|
|
EXTRA_DIST = \
|
|
make-initramfs.sh update-initramfs.sh \
|
|
guestfs.pod guestfs-actions.pod guestfs-structs.pod \
|
|
guestfish.pod guestfish-actions.pod \
|
|
libguestfs.spec \
|
|
html/pod.css \
|
|
HACKING TODO \
|
|
tests.c \
|
|
libguestfs.pc libguestfs.pc.in \
|
|
gitlog-to-changelog \
|
|
recipes/LICENSE \
|
|
recipes/README \
|
|
recipes/*.html \
|
|
recipes/*.sh \
|
|
recipes/*.example \
|
|
html/recipes.css \
|
|
make-recipes.sh
|
|
|
|
# Build the root filesystem.
|
|
# Currently this is arch-dependent, so it seems like putting it in
|
|
# $(libdir) is best. When we build cross-architecture filesystems we
|
|
# should probably move them to $(datadir).
|
|
|
|
fsdir = $(libdir)/guestfs
|
|
|
|
INITRAMFSIMG = initramfs.$(REPO).$(host_cpu).img
|
|
VMLINUZ = vmlinuz.$(REPO).$(host_cpu)
|
|
|
|
fs_DATA = $(INITRAMFSIMG) $(VMLINUZ)
|
|
|
|
$(INITRAMFSIMG) $(VMLINUZ): initramfs/fakeroot.log
|
|
|
|
initramfs/fakeroot.log: make-initramfs.sh.in
|
|
-mv $(INITRAMFSIMG) $(INITRAMFSIMG).bak
|
|
-mv $(VMLINUZ) $(VMLINUZ).bak
|
|
if ! bash $(top_builddir)/make-initramfs.sh; then rm -f $@; exit 1; fi
|
|
|
|
$(INITRAMFSIMG): initramfs/fakeroot.log daemon/guestfsd
|
|
rm -f $@
|
|
bash $(top_builddir)/update-initramfs.sh
|
|
touch $@
|
|
|
|
# Tests. These are auto-generated from the test descriptions.
|
|
|
|
check_PROGRAMS = tests
|
|
|
|
tests_SOURCES = tests.c
|
|
tests_CFLAGS = \
|
|
-I$(top_builddir)/src -Wall
|
|
tests_LDADD = $(top_builddir)/src/libguestfs.la
|
|
|
|
TESTS = $(check_PROGRAMS)
|
|
|
|
$(TESTS): $(INITRAMFS) $(VMLINUZ)
|
|
|
|
# Manual pages.
|
|
# guestfs-actions.pod and guestfs-structs are autogenerated. There is
|
|
# no include mechanism for POD, so we have to do it by hand.
|
|
|
|
man_MANS = guestfs.3 guestfish.1
|
|
|
|
guestfs.3: guestfs.pod guestfs-actions.pod guestfs-structs.pod
|
|
sed \
|
|
-e '/@ACTIONS@/rguestfs-actions.pod' -e 's/@ACTIONS@//' \
|
|
-e '/@STRUCTS@/rguestfs-structs.pod' -e 's/@STRUCTS@//' \
|
|
< $< | \
|
|
$(POD2MAN) \
|
|
--section 3 \
|
|
-c "Virtualization Support" \
|
|
--name "guestfs" \
|
|
--release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
|
|
> $@
|
|
|
|
guestfish.1: guestfish.pod guestfish-actions.pod
|
|
sed \
|
|
-e '/@ACTIONS@/rguestfish-actions.pod' -e 's/@ACTIONS@//' \
|
|
< $< | \
|
|
$(POD2MAN) \
|
|
--section 1 \
|
|
-c "Virtualization Support" \
|
|
--name "guestfish" \
|
|
--release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
|
|
> $@
|
|
|
|
noinst_DATA = html/guestfs.3.html html/guestfish.1.html
|
|
|
|
html/guestfs.3.html: guestfs.pod guestfs-actions.pod guestfs-structs.pod
|
|
sed \
|
|
-e '/@ACTIONS@/rguestfs-actions.pod' -e 's/@ACTIONS@//' \
|
|
-e '/@STRUCTS@/rguestfs-structs.pod' -e 's/@STRUCTS@//' \
|
|
< $< | \
|
|
pod2html \
|
|
--css 'pod.css' \
|
|
--title "libguestfs API documentation" \
|
|
--htmldir html \
|
|
--outfile $@
|
|
|
|
html/guestfish.1.html: guestfish.pod guestfish-actions.pod
|
|
sed \
|
|
-e '/@ACTIONS@/rguestfish-actions.pod' -e 's/@ACTIONS@//' \
|
|
< $< | \
|
|
pod2html \
|
|
--css 'pod.css' \
|
|
--title "guestfish, libguestfs filesystem interactive shell" \
|
|
--htmldir html \
|
|
--outfile $@
|
|
|
|
# Recipes web page.
|
|
html/recipes.html: $(wildcard recipes/*.sh) $(wildcard recipes/*.html) $(wildcard recipes/*.example) Makefile make-recipes.sh
|
|
rm -f $@ $@-t
|
|
sh make-recipes.sh recipes/*.sh > $@-t
|
|
mv $@-t $@
|
|
|
|
website: html/guestfs.3.html html/guestfish.1.html html/recipes.html
|
|
cp $^ html/pod.css html/recipes.css \
|
|
$(HOME)/d/redhat/et-website/libguestfs/
|
|
|
|
# Generate the ChangeLog automatically from the gitlog.
|
|
|
|
dist-hook:
|
|
./gitlog-to-changelog > ChangeLog
|
|
cp ChangeLog $(distdir)/ChangeLog
|
|
|
|
# Pkgconfig.
|
|
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
|
pkgconfig_DATA = libguestfs.pc
|
|
|
|
# Test-boot the image.
|
|
|
|
test-boot: emptydisk
|
|
qemu-system-$(host_cpu) \
|
|
-m 384 \
|
|
-kernel $(VMLINUZ) -initrd $(INITRAMFSIMG) \
|
|
-hda emptydisk
|
|
|
|
emptydisk:
|
|
rm -f emptydisk
|
|
dd if=/dev/zero of=emptydisk bs=1024 count=1440
|
|
echo 0, | sfdisk -q -C 80 -H 2 -S 18 emptydisk > /dev/null
|
|
|
|
# This is a more realistic test boot command line which better
|
|
# reflects what the library does.
|
|
|
|
test-boot-realistic: emptydisk
|
|
qemu-system-$(host_cpu) \
|
|
-m 384 \
|
|
-kernel $(VMLINUZ) -initrd $(INITRAMFSIMG) \
|
|
-hda emptydisk \
|
|
-append "console=ttyS0 guestfs=10.0.2.4:6666" \
|
|
-nographic \
|
|
-serial stdio \
|
|
-net channel,6666:unix:/tmp/sock,server,nowait \
|
|
-net user,vlan=0 \
|
|
-net nic,vlan=0
|
|
|
|
# Make clean.
|
|
|
|
CLEANFILES = $(fs_DATA) emptydisk pod2htm?.tmp *~ html/*~ recipes/*~
|
|
|
|
clean-local:
|
|
rm -rf initramfs
|