home | help
DUNECONTROL(1)		     General Commands Manual		  DUNECONTROL(1)

NAME
     dunecontrol - Control program for the Dune build system

SYNOPSIS
     dunecontrol [OPTIONS] COMMANDS [COMMAND-OPTIONS]

DESCRIPTION
     dunecontrol  is  the  control  program for the build system of the Dune li-
     braries.

     The Dune libraries form a set of modules.	Each can be built  independently
     using CMake.  Additionally, though, there are dependencies between modules,
     which  are  expected  to form a directed acyclic graph.  These dependencies
     are set in a file called dune.module contained in	the  main  directory  of
     each Dune module.

     The dunecontrol program helps to build sets of inter-dependent modules.  It
     allows  to  construct  the  entire  dependency graph and obtain information
     about it.	Then it allows to run various  build-related  commands	for  all
     modules.  These are executed in the order mandated by the dependency graph.

COMMANDS
     Colon-separated list of commands. Available commands are:

     help

	    Show a help message and exit

     print

	    Print the list of modules sorted according to their dependency rela-
	    tions

     info

	    Same as `print', but including whether it is a dependency or sugges-
	    tion

     printdeps

	    Print recursive dependencies of a module

     vcsetup

	    Setup version control repository (Git etc.) or working copy (SVN)

     update

	    Update all modules from the repository from their respective version
	    control systems

     configure

	    Run cmake for each module

     make

	    Run make for each module

     all

	    Run the 'configure' and 'make' commands for each module

     exec

	    Execute an arbitrary command in each module source directory

     bexec

	    Execute an arbitrary command in each module build directory

     status

	    Show version control status for each module

     svn

	    Run svn command for each svn-managed module

     git

	    Run git command for each git-managed module

     export

	    Run  eval `dunecontrol export` to save the list of dune.module files
	    to the DUNE_CONTROL_PATH variable

OPTIONS
     -h, --help

	    Show this help

     --debug

	    Run with debugging output enabled

     --module=mod

	    Apply the actions on module mod and all modules it depends on

     --only=mod

	    Only apply the actions on module mod , but not on the modules it de-
	    pends on

     --current

	    Only apply the actions on the current module, the one  whose  source
	    tree we are in

     --current-dep

	    Apply  the actions on the current module, and all modules it depends
	    on

     --resume

	    Resume a previous run (only consider the modules not built	success-
	    fully on the previous run)

     --skipfirst

	    Skip the first module (use with --resume)

     --skipversioncheck

	    When  looking  for	Dune modules, do not check whether they have the
	    required versions

     --opts=file

	    Load default options from file, for details see the section below.

	    Instead of a command line parameter, it is also possible  to  define
	    an environment variable DUNE_OPTS_FILE.

     --builddir=name

	    Make out-of-source builds in a subdir name.

	    If	name  is  a relative path, this directory is created inside each
	    module, if it is an absolute path, a subdirectory for each module is
	    created inside.

	    Instead of a command line parameter, it is also possible  to  define
	    an	environment  variable  DUNE_BUILDDIR (see below) or to specify a
	    BUILDDIR variable in the opts file.

     --[COMMAND]-opts=opts

	    Set options for COMMAND (this is mainly useful for	the  'all'  COM-
	    MAND)

OPTS FILE
     The  options  file contains different entries to specify the build environ-
     ment, e.g., which compiler to use, which options to pass to cmake, where to
     build DUNE, etc.

     Variables are:

     DUNE_CONTROL_PATH

	    just as the environment variable DUNE_CONTROL_PATH, it  is	possible
	    to	define	it  in the options file. For details see the description
	    below.

     BUILDDIR=name

	    to specify the build  directory,  just  as	via  the  command  line.
	    Defining  the  build  directory  in  the opts file, allows to easily
	    switch between different build directories for different  DUNE  con-
	    figurations.

     [COMMAND]_FLAGS=opts

	    Set  options  for  a specific COMMAND. In the case of the CMAKE com-
	    mand, e.g., this might look like

	    CMAKE_FLAGS="-DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_CXX_FLAGS='-fPIC -g
	    -O3' -DFOO_PREFIX=/path/to/libfoo"

	    In case of the MAKE command, a common use is to enable concurrency:

	    MAKE_FLAGS="-j4"

ENVIRONMENT VARIABLES
     DUNE_CONTROL_PATH

	    Colon-separated list to specify where dunecontrol searches for  Dune
	    modules.  Entries are either directories, which are then used recur-
	    sively  for  dune.module  files or the user can directly specify the
	    full path to specific dune.module files.

	    default: The default for the case that DUNE_CONTROL_PATH is empty is
	    to search the current directory, its subdirectories  and  a  system-
	    wide installation in /usr.

     DUNE_OPTS_FILE

	    Specify  a	default  value for an options file, if the user does not
	    specify the --opts= parameter on the commandline.

     DUNE_BUILDIR

	    Specify a default value for an build directory, if the user does not
	    specify the --builddir= parameter on the commandline.

AUTHOR
     Dune was written  by  the	Dune  team  (https://www.dune-project.org/commu-
     nity/people).

     This manual page was written by Oliver Sander and Christian Engwer.

COPYRIGHT
     Copying  and  distribution  of this file, with or without modification, are
     permitted in any medium without royalty provided the copyright  notice  and
     this  notice  are	preserved.  This file is offered as-is, without any war-
     ranty.

				 January 5, 2026		  DUNECONTROL(1)

home | help