2006-05-14 16:07:53 +04:00
# Makefile for QEMU.
2019-05-26 17:47:47 +03:00
ifneq ($(words $(subst : , , $( CURDIR ) )), 1)
$( error main directory cannot contain spaces nor colons)
e n d i f
2011-09-16 23:50:43 +04:00
# Always point to the root of the build tree (needs GNU make).
BUILD_DIR = $( CURDIR)
2011-09-16 00:45:35 +04:00
2015-05-22 08:35:07 +03:00
# Before including a proper config-host.mak, assume we are in the source tree
SRC_PATH = .
2020-09-01 19:10:05 +03:00
# Don't use implicit rules or variables
# we have explicit rules for everything
MAKEFLAGS += -rR
2021-07-05 11:25:42 +03:00
SHELL = bash -o pipefail
2020-10-14 14:35:13 +03:00
2020-09-01 19:10:05 +03:00
# Usage: $(call quiet-command,command and args,"NAME","args to print")
# This will run "command and args", and either:
# if V=1 just print the whole command and args
# otherwise print the 'quiet' output in the format " NAME args to print"
# NAME should be a short name of the command, 7 letters or fewer.
# If called with only a single argument, will print nothing in quiet mode.
quiet-command-run = $( if $( V) ,,$( if $2 ,printf " %-7s %s\n" $2 $3 && ) ) $1
q u i e t - @ = $( if $ ( V ) ,,@)
quiet-command = $( quiet-@) $( call quiet-command-run,$1 ,$2 ,$3 )
make: clean after distclean deletes source files
Run 'make distclean' in a tree, and GNUmakefile is removed.
But, GNUmakefile is where we change directory to build.
Run 'make distclean' or 'make clean' again, and Makefile applies
the clean actions, such as this one, at the top level of the tree.
For example, it removes the .d source files in 'meson/test cases/d/*/*.d'.
find . \( -name '*.so' -o -name '*.dll' -o \
-name '*.[oda]' -o -name '*.gcno' \) -type f \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
-exec rm {} +
To fix, remove clean and distclean from UNCHECKED_GOALS, so those targets
are "checked", meaning that configure must be run before make. However,
the check action does not trigger, because clean does not depend on
config-host.mak, so change the action to simply throw an error.
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Message-Id: <1681909700-94095-1-git-send-email-steven.sistare@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-04-19 16:08:20 +03:00
UNCHECKED_GOALS := TAGS gtags cscope ctags dist \
2018-01-04 19:05:08 +03:00
help check-help print-% \
2023-06-30 21:03:55 +03:00
docker docker-% lcitool-refresh vm-help vm-test vm-build-%
2015-05-22 08:35:07 +03:00
2020-10-15 19:20:02 +03:00
all :
.PHONY : all clean distclean recurse -all dist msi FORCE
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile : ;
configure : ;
2012-03-06 22:50:38 +04:00
# All following code might depend on configuration variables
2009-04-15 18:42:57 +04:00
i f n e q ( $( wildcard config -host .mak ) , )
2006-04-16 16:41:07 +04:00
i n c l u d e c o n f i g - h o s t . m a k
2012-10-19 17:54:23 +04:00
2022-09-29 14:42:05 +03:00
i n c l u d e M a k e f i l e . p r e r e q s
Makefile.prereqs : config -host .mak
2020-08-13 16:28:11 +03:00
# 0. ensure the build tree is okay
2019-06-10 13:05:14 +03:00
2012-10-19 17:54:23 +04:00
# Check that we're not trying to do an out-of-tree build from
# a tree that's been used for an in-tree build.
i f n e q ( $( realpath $ ( SRC_PATH ) ) , $( realpath .) )
i f n e q ( $( wildcard $ ( SRC_PATH ) /config -host .mak ) , )
$( error This is an out of tree build but your source tree ( $ ( SRC_PATH ) ) \
s e e m s t o h a v e b e e n u s e d f o r a n i n - t r e e b u i l d . Y o u c a n f i x t h i s b y r u n n i n g \
2017-11-21 12:55:10 +03:00
"$(MAKE) distclean && rm -rf *-linux-user *-softmmu" i n y o u r s o u r c e t r e e )
2012-10-19 17:54:23 +04:00
e n d i f
e n d i f
2020-10-15 19:20:02 +03:00
# force a rerun of configure if config-host.mak is too old or corrupted
i f e q ( $( MESON ) , )
.PHONY : config -host .mak
x := $( shell rm -rf meson-private meson-info meson-logs)
e n d i f
i f e q ( $( NINJA ) , )
.PHONY : config -host .mak
x := $( shell rm -rf meson-private meson-info meson-logs)
2020-10-23 15:34:54 +03:00
e l s e
export NINJA
2020-10-15 19:20:02 +03:00
e n d i f
i f e q ( $( wildcard build .ninja ) , )
.PHONY : config -host .mak
x := $( shell rm -rf meson-private meson-info meson-logs)
e n d i f
2020-10-16 10:19:14 +03:00
i f e q ( $( origin prefix ) , f i l e )
.PHONY : config -host .mak
x := $( shell rm -rf meson-private meson-info meson-logs)
e n d i f
2020-10-15 19:20:02 +03:00
2020-08-13 16:28:11 +03:00
# 1. ensure config-host.mak is up-to-date
2022-06-24 18:02:58 +03:00
config-host.mak : $( SRC_PATH ) /configure $( SRC_PATH ) /scripts /meson -buildoptions .sh $( SRC_PATH ) /VERSION
2020-10-23 15:34:54 +03:00
@echo config-host.mak is out-of-date, running configure
2019-06-10 13:05:14 +03:00
@if test -f meson-private/coredata.dat; then \
./config.status --skip-meson; \
else \
2023-05-23 18:56:33 +03:00
./config.status; \
2019-06-10 13:05:14 +03:00
fi
2018-10-21 20:56:29 +03:00
2020-10-23 15:34:54 +03:00
# 2. meson.stamp exists if meson has run at least once (so ninja reconfigure
# works), but otherwise never needs to be updated
2023-05-23 18:56:33 +03:00
2020-10-23 15:34:54 +03:00
meson-private/coredata.dat : meson .stamp
meson.stamp : config -host .mak
@touch meson.stamp
2023-05-23 18:56:33 +03:00
# 3. ensure meson-generated build files are up-to-date
2020-08-13 16:28:11 +03:00
i f n e q ( $( NINJA ) , )
Makefile.ninja : build .ninja
2020-10-23 15:34:54 +03:00
$( quiet-@) { \
echo 'ninja-targets = \' ; \
$( NINJA) -t targets all | sed 's/:.*//; $$!s/$$/ \\/' ; \
echo 'build-files = \' ; \
$( NINJA) -t query build.ninja | sed -n '1,/^ input:/d; /^ outputs:/q; s/$$/ \\/p' ; \
} > $@ .tmp && mv $@ .tmp $@
2020-08-13 16:28:11 +03:00
- i n c l u d e M a k e f i l e . n i n j a
2023-05-19 20:32:56 +03:00
e n d i f
2020-10-23 15:34:54 +03:00
2023-05-19 20:32:56 +03:00
i f n e q ( $( MESON ) , )
2023-05-23 18:56:33 +03:00
# The path to meson always points to pyvenv/bin/meson, but the absolute
# paths could change. In that case, force a regeneration of build.ninja.
# Note that this invocation of $(NINJA), just like when Make rebuilds
# Makefiles, does not include -n.
2020-10-23 15:34:54 +03:00
build.ninja : build .ninja .stamp
2020-12-16 15:13:40 +03:00
$(build-files) :
2020-10-23 15:34:54 +03:00
build.ninja.stamp : meson .stamp $( build -files )
2023-05-23 18:56:33 +03:00
@if test " $$ (cat build.ninja.stamp) " = " $( MESON) " && test -n " $( NINJA) " ; then \
$( NINJA) build.ninja; \
else \
echo " $( MESON) setup --reconfigure $( SRC_PATH) " ; \
$( MESON) setup --reconfigure $( SRC_PATH) ; \
fi && echo " $( MESON) " > $@
2020-08-13 16:28:11 +03:00
2020-10-23 15:34:54 +03:00
Makefile.mtest : build .ninja scripts /mtest 2make .py
2020-08-13 16:28:11 +03:00
$( MESON) introspect --targets --tests --benchmarks | $( PYTHON) scripts/mtest2make.py > $@
- i n c l u d e M a k e f i l e . m t e s t
2021-10-07 16:08:28 +03:00
.PHONY : update -buildoptions
all update-buildoptions : $( SRC_PATH ) /scripts /meson -buildoptions .sh
$(SRC_PATH)/scripts/meson-buildoptions.sh : $( SRC_PATH ) /meson_options .txt
$( MESON) introspect --buildoptions $( SRC_PATH) /meson.build | $( PYTHON) \
scripts/meson-buildoptions.py > $@ .tmp && mv $@ .tmp $@
2020-08-13 16:28:11 +03:00
e n d i f
2020-10-23 15:34:54 +03:00
# 4. Rules to bridge to other makefiles
2020-08-13 16:28:11 +03:00
i f n e q ( $( NINJA ) , )
2021-07-22 05:08:46 +03:00
# Filter out long options to avoid flags like --no-print-directory which
# may result in false positive match for MAKE.n
MAKE.n = $( findstring n,$( firstword $( filter-out --%,$( MAKEFLAGS) ) ) )
MAKE.k = $( findstring k,$( firstword $( filter-out --%,$( MAKEFLAGS) ) ) )
MAKE.q = $( findstring q,$( firstword $( filter-out --%,$( MAKEFLAGS) ) ) )
2020-10-26 18:58:54 +03:00
MAKE.nq = $( if $( word 2, $( MAKE.n) $( MAKE.q) ) ,nq)
2024-04-12 10:58:38 +03:00
NINJAFLAGS = \
$( if $V ,-v) \
$( if $( MAKE.n) , -n) \
$( if $( MAKE.k) , -k0) \
$( filter-out -j, \
$( or $( filter -l% -j%, $( MAKEFLAGS) ) , \
$( if $( filter --jobserver-auth= %, $( MAKEFLAGS) ) ,, -j1) ) ) \
2022-05-27 18:35:43 +03:00
-d keepdepfile
2020-08-13 16:28:11 +03:00
ninja-cmd-goals = $( or $( MAKECMDGOALS) , all)
2022-09-14 17:19:36 +03:00
ninja-cmd-goals += $( foreach g, $( MAKECMDGOALS) , $( .ninja-goals.$g ) )
2020-08-13 16:28:11 +03:00
2023-01-10 18:12:50 +03:00
makefile-targets := build.ninja ctags TAGS cscope dist clean
2020-10-23 15:34:54 +03:00
# "ninja -t targets" also lists all prerequisites. If build system
# files are marked as PHONY, however, Make will always try to execute
# "ninja build.ninja".
ninja-targets := $( filter-out $( build-files) $( makefile-targets) , $( ninja-targets) )
2020-08-13 16:28:11 +03:00
.PHONY : $( ninja -targets ) run -ninja
$(ninja-targets) : run -ninja
# Use "| cat" to give Ninja a more "make-y" output. Use "+" to bypass the
# --output-sync line.
run-ninja : config -host .mak
i f n e q ( $( filter $ ( ninja -targets ) , $ ( ninja -cmd -goals ) ) , )
2022-05-27 18:35:43 +03:00
+$( if $( MAKE.nq) ,@:,$( quiet-@) $( NINJA) $( NINJAFLAGS) \
$( sort $( filter $( ninja-targets) , $( ninja-cmd-goals) ) ) | cat)
2020-08-13 16:28:11 +03:00
e n d i f
e n d i f
2020-10-15 19:20:02 +03:00
e l s e # config-host.mak does not exist
2015-05-22 08:35:07 +03:00
i f n e q ( $( filter -out $ ( UNCHECKED_GOALS ) ,$ ( MAKECMDGOALS ) ) , $( if $ ( MAKECMDGOALS ) ,,fail ) )
make: clean after distclean deletes source files
Run 'make distclean' in a tree, and GNUmakefile is removed.
But, GNUmakefile is where we change directory to build.
Run 'make distclean' or 'make clean' again, and Makefile applies
the clean actions, such as this one, at the top level of the tree.
For example, it removes the .d source files in 'meson/test cases/d/*/*.d'.
find . \( -name '*.so' -o -name '*.dll' -o \
-name '*.[oda]' -o -name '*.gcno' \) -type f \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
-exec rm {} +
To fix, remove clean and distclean from UNCHECKED_GOALS, so those targets
are "checked", meaning that configure must be run before make. However,
the check action does not trigger, because clean does not depend on
config-host.mak, so change the action to simply throw an error.
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Message-Id: <1681909700-94095-1-git-send-email-steven.sistare@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-04-19 16:08:20 +03:00
$( error Please call configure before running make )
2009-04-15 18:42:57 +04:00
e n d i f
2020-10-15 19:20:02 +03:00
e n d i f # config-host.mak does not exist
2003-02-19 02:35:48 +03:00
2020-09-01 19:10:05 +03:00
SUBDIR_MAKEFLAGS = $( if $( V) ,,--no-print-directory --quiet)
2009-11-22 19:25:30 +03:00
2016-06-01 05:23:31 +03:00
i n c l u d e $( SRC_PATH ) / t e s t s / M a k e f i l e . i n c l u d e
2012-12-21 11:34:49 +04:00
2019-12-12 15:30:36 +03:00
all : recurse -all
2019-02-12 19:25:23 +03:00
2023-08-30 13:05:08 +03:00
SUBDIR_RULES = $( foreach t, all clean distclean, $( addsuffix /$( t) , $( SUBDIRS) ) )
.PHONY : $( SUBDIR_RULES )
$(SUBDIR_RULES) :
2020-08-31 15:36:27 +03:00
$( call quiet-command,$( MAKE) $( SUBDIR_MAKEFLAGS) -C $( dir $@ ) V = " $( V) " TARGET_DIR = " $( dir $@ ) " $( notdir $@ ) ,)
2009-07-31 16:18:32 +04:00
2023-08-30 13:05:08 +03:00
i f n e q ( $( filter contrib /plugins , $ ( SUBDIRS ) ) , )
.PHONY : plugins
plugins : contrib /plugins /all
e n d i f
2020-08-05 14:05:13 +03:00
.PHONY : recurse -all recurse -clean
2023-08-30 13:05:08 +03:00
recurse-all : $( addsuffix /all , $ ( SUBDIRS ) )
recurse-clean : $( addsuffix /clean , $ ( SUBDIRS ) )
recurse-distclean : $( addsuffix /distclean , $ ( SUBDIRS ) )
2006-08-01 20:21:11 +04:00
2011-05-15 12:51:28 +04:00
######################################################################
2007-11-07 22:24:02 +03:00
2020-08-13 16:28:11 +03:00
clean : recurse -clean
2020-11-05 15:44:56 +03:00
-$( quiet-@) test -f build.ninja && $( NINJA) $( NINJAFLAGS) -t clean || :
-$( quiet-@) test -f build.ninja && $( NINJA) $( NINJAFLAGS) clean-ctlist || :
2022-02-04 23:43:12 +03:00
find . \( -name '*.so' -o -name '*.dll' -o \
-name '*.[oda]' -o -name '*.gcno' \) -type f \
2019-02-04 19:03:21 +03:00
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
-exec rm { } +
2021-10-13 14:51:32 +03:00
rm -f TAGS cscope.* *~ */*~
2023-11-03 12:00:04 +03:00
@$( MAKE) -Ctests/qemu-iotests clean
2003-02-19 01:55:36 +03:00
2020-08-04 19:14:26 +03:00
VERSION = $( shell cat $( SRC_PATH) /VERSION)
2012-07-17 22:33:32 +04:00
dist : qemu -$( VERSION ) .tar .bz 2
qemu-%.tar.bz2 :
$( SRC_PATH) /scripts/make-release " $( SRC_PATH) " " $( patsubst qemu-%.tar.bz2,%,$@ ) "
2022-09-29 14:41:56 +03:00
distclean : clean recurse -distclean
2020-11-05 15:44:56 +03:00
-$( quiet-@) test -f build.ninja && $( NINJA) $( NINJAFLAGS) -t clean -g || :
2023-03-01 14:19:10 +03:00
rm -f config-host.mak Makefile.prereqs
2022-09-29 14:42:07 +03:00
rm -f tests/tcg/*/config-target.mak tests/tcg/config-host.mak
2021-10-13 14:51:32 +03:00
rm -f config.status
rm -f roms/seabios/config.mak
2018-10-21 20:56:29 +03:00
rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
2020-08-03 18:04:25 +03:00
rm -f *-config-target.h *-config-devices.mak *-config-devices.h
2019-06-10 13:05:14 +03:00
rm -rf meson-private meson-logs meson-info compile_commands.json
2020-10-23 15:34:54 +03:00
rm -f Makefile.ninja Makefile.mtest build.ninja.stamp meson.stamp
2011-07-26 07:56:02 +04:00
rm -f config.log
2012-02-01 22:50:42 +04:00
rm -f linux-headers/asm
2023-03-01 14:19:10 +03:00
rm -Rf .sdk qemu-bundle
2003-03-07 02:23:54 +03:00
2021-08-04 16:23:28 +03:00
find-src-path = find " $( SRC_PATH) " -path " $( SRC_PATH) /meson " -prune -o \
-type l -prune -o \( -name "*.[chsS]" -o -name "*.[ch].inc" \)
2020-09-03 22:47:55 +03:00
2020-09-01 17:20:10 +03:00
.PHONY : ctags
ctags :
2021-01-14 19:57:23 +03:00
$( call quiet-command, \
rm -f " $( SRC_PATH) / " tags, \
"CTAGS" , "Remove old tags" )
$( call quiet-command, \
$( find-src-path) -exec ctags \
-f " $( SRC_PATH) / " tags --append { } +, \
"CTAGS" , " Re-index $( SRC_PATH) " )
2020-09-01 17:20:10 +03:00
2021-01-14 19:57:20 +03:00
.PHONY : gtags
gtags :
$( call quiet-command, \
rm -f " $( SRC_PATH) / " GTAGS; \
rm -f " $( SRC_PATH) / " GRTAGS; \
rm -f " $( SRC_PATH) / " GPATH, \
"GTAGS" , " Remove old $@ files " )
$( call quiet-command, \
( cd $( SRC_PATH) && \
2021-08-04 16:23:27 +03:00
$( find-src-path) -print | gtags -f -) , \
2021-01-14 19:57:20 +03:00
"GTAGS" , " Re-index $( SRC_PATH) " )
2020-09-01 17:20:10 +03:00
.PHONY : TAGS
TAGS :
2021-01-14 19:57:24 +03:00
$( call quiet-command, \
rm -f " $( SRC_PATH) / " TAGS, \
"TAGS" , " Remove old $@ " )
$( call quiet-command, \
$( find-src-path) -exec etags \
-f " $( SRC_PATH) / " TAGS --append { } +, \
"TAGS" , " Re-index $( SRC_PATH) " )
2020-09-01 17:20:10 +03:00
.PHONY : cscope
cscope :
2021-01-14 19:57:25 +03:00
$( call quiet-command, \
rm -f " $( SRC_PATH) / " cscope.* , \
"cscope" , " Remove old $@ files " )
$( call quiet-command, \
( $( find-src-path) -print | sed -e 's,^\./,,' \
> " $( SRC_PATH) /cscope.files " ) , \
"cscope" , "Create file list" )
$( call quiet-command, \
cscope -b -i" $( SRC_PATH) /cscope.files " \
-f" $( SRC_PATH) " /cscope.out, \
"cscope" , " Re-index $( SRC_PATH) " )
2020-09-01 17:20:10 +03:00
2019-06-10 13:05:14 +03:00
# Needed by "meson install"
export DESTDIR
2003-03-22 20:31:19 +03:00
2022-01-05 16:49:42 +03:00
i n c l u d e $( SRC_PATH ) / t e s t s / l c i t o o l / M a k e f i l e . i n c l u d e
Makefile: Rules for docker testing
This adds a group of make targets to run docker tests, all are available
in source tree without running ./configure.
The usage is shown with "make docker".
Besides the fixed ones, dynamic targets for building each image and
running each test in each image are generated automatically by make,
scanning $(SRC_PATH)/tests/docker/ files with specific patterns.
Alternative to manually list particular targets (docker-TEST@IMAGE)
set, you can control which tests/images to run by filtering variables,
TESTS= and IMAGES=, which are expressed in Makefile pattern syntax,
"foo% %bar ...". For example:
$ make docker-test IMAGES="ubuntu fedora"
Unfortunately, it's impossible to propagate "-j $JOBS" into make in
containers, however since each combination is made a first class target
in the top Makefile, "make -j$N docker-test" still parallels the tests
coarsely.
Still, $J is made a magic variable to let all make invocations in
containers to use -j$J.
Instead of providing a live version of the source tree to the docker
container we snapshot it with git-archive. This ensures the tree is in a
pristine state for whatever operations the container is going to run on
them.
Uncommitted changes known to files known by the git index will be
included in the snapshot if there are any.
Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 1464755128-32490-5-git-send-email-famz@redhat.com
2016-06-01 07:25:17 +03:00
i n c l u d e $( SRC_PATH ) / t e s t s / d o c k e r / M a k e f i l e . i n c l u d e
2017-09-05 05:11:58 +03:00
i n c l u d e $( SRC_PATH ) / t e s t s / v m / M a k e f i l e . i n c l u d e
2016-09-13 17:20:33 +03:00
2020-03-05 03:48:54 +03:00
print-help-run = printf " %-30s - %s\\n" " $1 " " $2 "
2020-11-05 18:47:00 +03:00
print-help = @$( call print-help-run,$1 ,$2 )
2020-03-05 03:48:54 +03:00
2023-09-29 23:43:50 +03:00
.PHONY : update -linux -vdso
update-linux-vdso :
@for m in $( SRC_PATH) /linux-user/*/Makefile.vdso; do \
$( MAKE) $( SUBDIR_MAKEFLAGS) -C $$ ( dirname $$ m) -f Makefile.vdso \
SRC_PATH = $( SRC_PATH) BUILD_DIR = $( BUILD_DIR) ; \
done
2016-09-13 17:20:33 +03:00
.PHONY : help
help :
@echo 'Generic targets:'
2020-03-05 03:48:54 +03:00
$( call print-help,all,Build all)
$( call print-help,dir/file.o,Build specified target only)
$( call print-help,install,Install QEMU, documentation and tools)
2021-01-14 19:57:20 +03:00
$( call print-help,ctags/gtags/TAGS,Generate tags file for editors)
2020-03-05 03:48:54 +03:00
$( call print-help,cscope,Generate cscope index)
2020-02-03 16:45:33 +03:00
$( call print-help,sparse,Run sparse on the QEMU source )
2016-09-13 17:20:33 +03:00
@echo ''
2023-08-30 13:05:08 +03:00
i f n e q ( $( filter contrib /plugins , $ ( SUBDIRS ) ) , )
2020-09-09 14:27:41 +03:00
@echo 'Plugin targets:'
$( call print-help,plugins,Build the example TCG plugins)
@echo ''
e n d i f
2016-09-13 17:20:33 +03:00
@echo 'Cleaning targets:'
2020-03-05 03:48:54 +03:00
$( call print-help,clean,Remove most generated files but keep the config)
$( call print-help,distclean,Remove all generated files)
$( call print-help,dist,Build a distributable tarball)
2016-09-13 17:20:33 +03:00
@echo ''
2023-09-29 23:43:50 +03:00
@echo 'Linux-user targets:'
$( call print-help,update-linux-vdso,Build linux-user vdso images)
@echo ''
2016-09-13 17:20:33 +03:00
@echo 'Test targets:'
2020-03-05 03:48:54 +03:00
$( call print-help,check,Run all tests ( check-help for details) )
2020-09-02 14:25:19 +03:00
$( call print-help,bench,Run all benchmarks)
2022-01-05 16:49:42 +03:00
$( call print-help,lcitool-help,Help about targets for managing build environment manifests)
2021-02-02 16:39:50 +03:00
$( call print-help,docker-help,Help about targets running tests inside containers)
2020-03-05 03:48:54 +03:00
$( call print-help,vm-help,Help about targets running tests inside VM)
2016-09-13 17:20:33 +03:00
@echo ''
@echo 'Documentation targets:'
docs/interop: Convert qemu-qmp-ref to rST
Convert qemu-qmp-ref to rST format. This includes dropping
the plain-text, pdf and info format outputs for this document;
as with all our other Sphinx-based documentation, we provide
HTML and manpage only.
The qemu-qmp-ref.rst is somewhat more stripped down than
the .texi was, because we do not (currently) attempt to
generate indexes for the commands, events and data types
being documented.
Again, we drop the direct link from index.html.in now that
the QMP ref is part of the interop manual.
This commit removes the code from the root meson.build file that
handled the various Texinfo-based outputs, because we no longer
generate any documentation except for the Sphinx HTML manuals and the
manpages, and the code can't handle having an empty list of files
to process.. We'll do further cleanup of the remainders of
Texinfo support in subsequent commits.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20200925162316.21205-10-peter.maydell@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Unicode legacy literal dumbed down to plain string literal, TODO
comment on displaying QEMU version added, "make html" fixed,
storage-daemon/qapi/meson.build updated]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2020-09-25 19:23:04 +03:00
$( call print-help,html man,Build documentation in specified format)
2016-09-13 17:20:33 +03:00
@echo ''
2023-08-30 12:39:45 +03:00
i f n e q ( $( filter msi , $ ( ninja -targets ) ) , )
2016-09-13 17:20:33 +03:00
@echo 'Windows targets:'
2020-03-05 03:48:54 +03:00
$( call print-help,installer,Build NSIS-based installer for QEMU)
$( call print-help,msi,Build MSI-based installer for qemu-ga)
2016-09-13 17:20:33 +03:00
@echo ''
e n d i f
2020-03-05 03:48:54 +03:00
$( call print-help,$( MAKE) [ targets] ,( quiet build, default) )
$( call print-help,$( MAKE) V = 1 [ targets] ,( verbose build) )
2020-09-01 19:10:05 +03:00
# will delete the target of a rule if commands exit with a nonzero exit status
.DELETE_ON_ERROR :
print-% :
@echo '$*=$($*)'