]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3732] Switch docs from Autotools to Meson
authorAndrei Pavel <andrei@isc.org>
Thu, 3 Apr 2025 10:01:37 +0000 (13:01 +0300)
committerAndrei Pavel <andrei@isc.org>
Wed, 23 Apr 2025 19:29:34 +0000 (22:29 +0300)
38 files changed:
CONTRIBUTING.md
INSTALL
doc/devel/bison.dox
doc/devel/config-backend.dox
doc/devel/cross-compile.dox
doc/devel/doc.dox
doc/devel/fuzz.dox
doc/devel/unit-tests.dox
doc/examples/kea4/backends.json
doc/examples/kea6/backends.json
doc/sphinx/arm/admin.rst
doc/sphinx/arm/agent.rst
doc/sphinx/arm/config-backend.rst
doc/sphinx/arm/ddns.rst
doc/sphinx/arm/dhcp4-srv.rst
doc/sphinx/arm/dhcp6-srv.rst
doc/sphinx/arm/ext-gss-tsig.rst
doc/sphinx/arm/ext-netconf.rst
doc/sphinx/arm/hooks.rst
doc/sphinx/arm/install.rst
doc/sphinx/arm/quickstart.rst
src/bin/dhcp4/tests/config_parser_unittest.cc
src/bin/dhcp4/tests/dora_unittest.cc
src/bin/dhcp4/tests/kea_controller_unittest.cc
src/bin/dhcp6/tests/config_parser_unittest.cc
src/bin/dhcp6/tests/fqdn_unittest.cc
src/bin/dhcp6/tests/kea_controller_unittest.cc
src/hooks/dhcp/class_cmds/class_cmds.dox
src/hooks/dhcp/host_cmds/host_cmds.dox
src/lib/config_backend/base_config_backend_mgr.h
src/lib/dhcpsrv/database_backends.dox
src/lib/dhcpsrv/host_data_source_factory.cc
src/lib/dhcpsrv/lease_mgr_factory.cc
src/lib/dhcpsrv/legal_log_mgr_factory.cc
src/lib/eval/eval.dox
src/lib/hooks/hooks_user.dox
src/lib/log/logging.dox
src/lib/yang/yang.dox

index ef320d1aabe3072f833f7d3935a7222fe07d9a49..11b181a2ba18a90b6e47686dc01a93d7314c19db 100644 (file)
@@ -191,29 +191,20 @@ such long periods, code tends to be refactored several times. The change you mad
 some other change or by the code that hasn't been written yet.
 
 See Building Kea with Unit Tests for instructions on how to run unit-tests. If you happen to touch
-any database related code, make sure you compile your code with –with-mysql and/or –with-pgsql as
+any database related code, make sure you compile your code with `–Dmysql` and/or `–Dpostgresql` as
 needed. For example, if you change something substantial, make sure the other compilation options
 still work.
 
-If you happen to add new files or have modified any Makefile.am files, it is also a good idea to
-check if you haven't broken the distribution process:
+Enabling tests automatically enables logger checks (sanity checks on logger parameters), enable debug symbols and
+various additional consistency checks that reduce performance but help during development.
 
-```bash
-make distcheck
-```
-
-There are other useful switches which can be passed to configure. It is always a good idea to use
-`–enable-logger-checks`, which does sanity checks on logger parameters. Use `–-enable-debug` to
-enable debug symbols and various additional consistency checks that reduce performance but help
-during development.
-If you happen to modify anything in the documentation, use `–-enable-generate-docs`. If you are
-modifying DHCP code, you are likely to be interested in enabling a non-default database backends for
-DHCP. Note that if the backend is not enabled, the database-specific unit-tests are skipped.  To
-enable the MySQL backend, use the switch `–with-mysql`; for PostgreSQL, use `–with-pgsql`.
+If you are modifying DHCP code, you are likely to be interested in enabling a non-default database backends for DHCP.
+Note that if the backend is not enabled, the database-specific unit-tests are skipped.  To
+enable the MySQL backend, use the switch `-Dmysql`; for PostgreSQL, use `–Dpostgresql`.
 A complete list of all switches can be obtained with the command:
 
 ```bash
-./configure --help
+meson configure
 ```
 
 ## Submitting Merge Request (also known as sending your patch the right way)
diff --git a/INSTALL b/INSTALL
index e16c113a352e166a1981acb24f1162e161069f07..bb53880ae9ab9dac79d5edafacace55c5a029598 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,43 +1,38 @@
 INSTALLATION INSTRUCTIONS
 
-1. Generate the configure script.  If you downloaded the source from git or
-are compiling with premium hook packages, you will need to run autoreconf to
-generate the configure script as shown below.  If you are building from a
-tarball you may skip this step.
+1. Set up the build. If you want to alter Kea's installation path, or want to
+make sure that certain capabilities are included (e.g. enabling MySQL or
+PostgreSQL), you will need to specify these as options to the command (run
+"meson configure" for a list of options).
 
-   $ autoreconf --install
-
-2. Run the configure script.  If you want to alter Kea's installation path, or
-need to include capabilities (e.g. enabling MySQL or PostgreSQL) you will need
-to specify these as options to the configure script (run ./configure -h for
-list of options).
-
-   $ ./configure
+   $ meson setup build
 
 If your environment is missing dependencies, the configure script will exit
 with error and should emit sufficient information to guide you on how to
-proceed.  A detailed account of the configure process is captured in
-./config.log.
+proceed. A detailed account of the configure process is captured in
+build/meson-logs/meson-log.txt.
 
-3. Build it. Once you've successfully configured the source tree, run "make" to
-build it.  You may wish to include the -j<n> command line option to specify
-parallel execution to speed things along:
+2. Build it. Once you've successfully set up the build, run "meson compile" to
+build it.
 
-  $ make
+  $ meson compile -C build
 
-4. Install it. Depending on your target directory, this step will likely require
-a root privileges. You can install the software by running:
+4. Install it. Depending on your target directory, this step will likely
+require a root privileges. You can install the software by running:
 
-  $ sudo make install
+  $ meson install -C build
 
-Kea depends on C++ compiler, make, libtool, boost (at least includes, but many
+Kea depends on C++ compiler, meson, ninja, boost (at least includes, but many
 OSes require boost-system library), log4cplus and one crypto library (either
-OpenSSL or Botan) for compilation.  Optional backends (MySQL and PostgreSQL)
-have additional dependencies. For detailed installation directions, see the
-documentation in doc/sphinx/arm/install.rst text file or on the Kea online
-docs: https://kea.readthedocs.io/.
-Another optional dependency is Sysrepo, a system for providing YANG/NETCONF
-interface.
+OpenSSL or Botan) for compilation.
+
+Optional backends (MySQL and PostgreSQL) have additional dependencies. For
+detailed installation directions, see the documentation in the
+doc/sphinx/arm/install.rst text file or on the Kea online docs:
+https://kea.readthedocs.io/en/stable/arm/install.html.
+
+Other optional dependencies are Kerberos with GSSAPI support for the GSS-TSIG
+hook library and libyang and sysrepo for providing a YANG/NETCONF interface.
 
 You can find current OS-specific build/installation
-instructions in our knowledge base at https://kb.isc.org/docs/installing-kea
+instructions in our knowledge base at https://kb.isc.org/docs/installing-kea.
index 4c9630204ab643744b0f5804c5089e44655183f6..13f8a0adbe8e74da23a1617d16584378708f7e25 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2021 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -103,9 +103,8 @@ when the .ll or .yy files are altered and are stored in the Kea repository. To g
 issue the following sequence of commands from the top-level Kea directory:
 
 @code
-./configure --enable-generate-parser
-cd src/bin/dhcp6
-make parser
+meson setup build
+meson compile -C build parser
 @endcode
 
 Strictly speaking, the comment "make parser" is not necessary. If you updated the .ll or .yy file,
index 7991307e5306af6a76dbf499dbd6da7bc60b2497..293470f381f361de8c4e4734bf1ff1f86d34d1cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2023 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -32,23 +32,6 @@ one day to develop a minimalistic, stripped down Kea version that does
 not have any command interface at all. This could prove useful for running
 Kea in embedded regime.
 
-The following steps are needed for the DHCPv4 server to be able to
-process a new method of configuration. (It is assumed that the
-modified component is DHCPv4. Similar approach applies to the other
-components: DHCPv6 or DHCP-DDNS):
-
--# Write your own implementation of isc::dhcp::ControlledDhcpv4Srv::init(),
-   isc::dhcp::ControlledDhcpv4Srv::init() and isc::dhcp::ControlledDhcpv4Srv::cleanup(),
-   and put it in the src/bin/dhcp4 directory (e.g. as foo_controller.cc).
--# Modify src/bin/dhcp4/Makefile.am to include your file (e.g. foo_controller.cc) in
-   the build.
--# Modify the AC_ARG_WITH(kea-config,...) macro in configure.ac to include an
-   entry for your configuration backend.
--# Add your own AM_CONDITIONAL(CONFIG_BACKEND_FOO, ...) and
-   AC_DEFINE(CONFIG_BACKEND_FOO, ...) macros to configure.ac (following the
-   above-mentioned AC_ARG_WITH macro) to set the C++ macro for your backend.
--# Modify the sanity check in configure.ac to allow your configuration backend name.
-
 Optionally you can also:
 
 -# Implement unit tests for your backend in the src/bin/dhcp4/tests directory.
index cc7685ebabd22cf3ccc6bceedea7b30b2b2ccb1a..b4e5eb2fd16b79171f62f32b48554f0468bd3674 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2022 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -6,6 +6,8 @@
 
 /**
 
+ * @note Outdated.
+
  @page crossCompile Kea Cross-Compiling Example
 
 The idea is to install Kea on a Raspberry Pi 4 Model B running Raspbian
@@ -195,7 +197,7 @@ Some explanations:
   cross-compiling and produce correct paths.
  - CONF_CMD contains the ./configure common arguments.
 
-The script can be used by:
+The script can be used to:
  - eventually run "autoreconf -i" (if sources are from git)
  - put its content in a file, e.g. ccenv
  - load the file by ". ccenv"
index cde7f9071cd12225e57b8e490a8c5a83f4bf03a3..a28d2ee789d09710f1c3815fe202492beb1e275b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018-2021 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2018-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
  There are several types of documentation for Kea. The primary one, intended to
  be read by users, is User's Guide. It comes in HTML, PDF and txt format. All
  of them generated from the same sources. To generate this doc, you need to
- run configure script with --enable-generate-docs option. sphinx has to be
- enabled in the system.
+ run configure script with --enable-generate-docs option. sphinx and
+ sphinx_rtd_theme have to be available on the system. texlive is also required
+ if you want to create documentation in HTML format.
  You can generate this by doing:
 @code
-$ ./configure --enable-generate-docs
-$ make -C ./doc
+$ meson setup build
+$ meson compile -C build doc
 @endcode
 
-The output files will be generated in the ./doc/sphinx/_build directory.
+The output files will be generated in the ./build/doc/sphinx/_build directory.
 
 The ARM has an appendix that lists all Kea commands. The commands are integrated
 into RST using the tool located at doc/sphinx/api2doc.py. The basic principle
@@ -30,19 +31,16 @@ Those JSON files are loaded by the api2doc.py tool that will generate api.txt
 that will be used by sphinx. There is no need to call this tool explicitly.
 It is called automatically when building the ARM.
 
-Since Kea 1.9.9, the ARM has an appendix with the grammar. If there were new
-parameters added, you can regenerate the grammars and the appendix with the
-following procedure:
+The ARM has an appendix with the grammar. If there were new parameters added,
+you can regenerate the grammars and the appendix with the following procedure:
 
 @code
-$ autoreconf -i
-$ ./configure --enable-generate-docs --enable-generate-parser
-$ cd doc
-$ make grammar
-$ make -C sphinx html
+$ meson setup build
+$ meson compile -C build grammar
+$ meson compile -C build doc
 @endcode
 
-After that, inspect the html output and make sure it's ok, review changes in
+After that, inspect the HTML output and make sure it's ok, review changes in
 \c doc/sphinx/grammar/ and then check in those that are something more than a date
 update. The date is there, so we (and users) can determine if the grammar
 is or isn't out of date.
@@ -51,12 +49,12 @@ is or isn't out of date.
 
 There are several steps needed to document a new API command:
 
- 1. Configure sources with ./configure --enable-generate-docs
1. Copy src/share/api/_template.json to appropriate name.
2. Remove comments from it and fill in the actual content.
- 3. Update api_files.mk file in src/share/api/Makefile.am
- 4. make html will generate multi-page html.
5. make singlehtml will generate a single page html.
+ 1. Set up the build with "meson setup build".
2. Copy src/share/api/_template.json to appropriate name.
3. Remove comments from it and fill in the actual content.
+ 4. Update api_files.mk file in src/share/api.
+ 5. "meson compile -C build doc" will generate both multi-page and single-page
   HTML sites.
 
 A word of caution regaring editing JSON files. The files themselves need to be
 valid JSON files. They also often contain fields, such as command syntax or
@@ -78,9 +76,8 @@ doxygen installed in your system. If you also have graphviz installed, it will
 generate nice diagrams. To generate developer's guide, do the following commands:
 
 @code
-$ ./configure
-$ cd doc/devel
-$ make devel
+$ meson setup build
+$ meson compile -C build devel
 @endcode
 
 */
index aa7bf8148dbc3ceae812fea71b73f6db3da78506..8c2f80ec6029968275d8555e9c1999eded088661 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -49,8 +49,8 @@ Combining the binaries and the fuzzer types results in eight fuzzing binaries:
 Use the "--enable-fuzzing" during the configure step. Then just compile as usual.
 
 @code
-./configure --enable-fuzzing
-make
+meson setup build -D fuzz=enabled
+meson compile -C build
 @endcode
 
 You can check that `config.report` shows these lines:
@@ -171,11 +171,11 @@ for this are:
      compiler.
    - Specify a value of "--prefix" on the command line to set the directory
      into which Kea is installed.
-   - Add the "--enable-fuzzing" switch to the "configure" command line.
+   - Add the "-Dfuzz=enabled" switch to the "meson setup" command line.
    .
    For example:
    @code
-   CXX=afl-clang-fast ./configure --enable-fuzzing --prefix=$HOME/installed
+   CXX=afl-clang-fast meson setup build -D fuzz=enabled --prefix=$HOME/installed
    make
    @endcode
 
@@ -327,7 +327,7 @@ while (not shutting down) {
     Read and process one packet
 }
 @endcode
-When --enable-fuzzing is specified, this is conceptually modified to:
+When -Dfuzz=enabled is specified, this is conceptually modified to:
 @code{.unparsed}
 while (not shutting down) {
     Read stdin and copy data to address/port on which Kea is listening
@@ -374,7 +374,7 @@ leaks).
 No changes were required to Kea source code to fuzz configuration files. In
 fact, other than compiling with afl-clang++ and installing the resultant
 executable, no other steps are required.  In particular, there is no need to
-use the "--enable-fuzzing" switch in the configuration command line (although
+use the "-Dfuzz=enabled" switch in the configuration command line (although
 doing so will not cause any problems).
 
 @subsection fuzzThreads Changes Required for Multi-Threaded Kea
@@ -390,7 +390,7 @@ the AFL input in the background.
 
 @subsection fuzzNotesUnitTests Unit Test Failures
 
-If unit tests are built when --enable-fuzzing is specified and with the AFL
+If unit tests are built when -Dfuzz=enabled is specified and with the AFL
 compiler, note that tests which check or use the DHCP servers (i.e. the unit
 tests in src/bin/dhcp4, src/bin/dhcp6 and src/bin/kea-admin) will fail.
 With no AFL-related environment variables defined, a C++ exception will be
index 63a410dbed7ff258ac1a164e48a9107e69b88ab0..823b88ec64cf4f00061d9ff262ad718ff1d2dbb3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2015-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -8,40 +8,31 @@
 
  @page unitTests Building Kea with Unit Tests
 
-By default, Kea is built without unit-tests as they're used mostly by
-developers and prospective contributors. Kea's unit-tests are using
+By default, Kea is built without unit tests as they're used mostly by
+developers and prospective contributors. Kea's unit tests are using
 <a href="https://github.com/google/googletest">gtest framework</a> from
 Google. Google's approach has changed over the years. For some time,
 they were very keen on not installing gtest as a normal software would
 be, but rather provide gtest as sources. This was further complicated
 with the fact that some Linux distributions packaged gtest and tried
-to mimic its installation. Kea tries its best to accommodate all typical
-situations and provides two switches to point to gtest. You can use
-`--with-gtest` or `--with-gtest-source`. Both attempt to locate gtest
-on their own. However, if neither of them can find it, you can specify
-the path explicitly. For example, on ubuntu with googletest package installed,
-you can do the following for Kea to find it:
+to mimic its installation. Meson tries its best to accommodate all typical
+situations and to locate gtest on its own. If it cannot be found, linking
+/usr/src/googletest to the custom location should do the trick. The `-D tests`
+flag has to be provided.
 
 @code
 sudo apt install googletest
-./configure --with-gtest-source=/usr/src/googletest
+meson setup build -D tests=enabled
 @endcode
 
-Depending on how you compiled or installed \c gtest (e.g. from sources
-or using some package management system) one of those two switches will
-find \c gtest. After that you make and run the unit-tests with:
+After that you run the unit tests with:
 
 @code
-make
-make check
+meson compile -C build
+meson test -C build
 @endcode
 
-As usual, using \c -jX option will speed up compilation. This parameter is
-even more useful for unit-tests as there are over 6000 unit-tests and their
-compilation is significantly slower than just the production Kea sources.
-
-Kea should work with reasonably recent gtest versions. We recently tried
-with 1.7.0, 1.8.0, 1.8.1 and 1.10.0.
+Kea should work with gtest versions 1.8.0 and later.
 
 @section unitTestsEnvironmentVariables Environment Variables
 
@@ -119,8 +110,8 @@ anything e.g. `DEBUG=true`. `unset DEBUG` to remove this behavior.
   some tests always fail when it is used, experiments are run with
   different versions of Tsan).
 
-  The simplest way to enable a sanitizer is to add it to the CXXFLAGS
-  environment variable in .configure by e.g. <i>-fsanitize=thread</i>.
+  The simplest way to enable a sanitizer is to specify the flag on the setup
+  step with `meson setup build -Db_sanitize=thread`.
 
   When enabling lcov (code coverage), some gtest functions are detected as
   not being thread safe. It is recommended to disable lcov when enabling
@@ -208,7 +199,7 @@ anything e.g. `DEBUG=true`. `unset DEBUG` to remove this behavior.
   %@endverbatim
 
   The unit tests are run automatically when "make check" is executed (providing
-  that Kea has been built with the \c --with-mysql switch (see the installation
+  that Kea has been built with the "-D mysql" switch (see the installation
   section in the <a href="https://kea.readthedocs.io/">Kea Administrator
   Reference Manual</a>).
 
@@ -405,7 +396,7 @@ local   all             postgres                                trust
   that runs tests. Use caution!
 
   The unit tests are run automatically when "make check" is executed (providing
-  that Kea has been build with the \c --with-pgsql switch (see the installation
+  that Kea has been build with the "-D postgresql" switch (see the installation
   section in the <a href="https://kea.readthedocs.io">Kea Administrator
   Reference Manual</a>).
 
index e5abb16544efe3d64de654be46bc80494841eba6..5d37ca1c56e439b7e75b200202cc282625742418 100644 (file)
@@ -31,7 +31,7 @@
 // parameters are type and name. If other parameters are not specified,
 // Kea will assume the database is available on localhost, that user and
 // password is not necessary to connect and that timeout is 5 seconds.
-// Kea must be compiled with --with-mysql option to use this backend.
+// Kea must be compiled with the "-D mysql" option to use this backend.
 //  "lease-database": {
 //      "type": "mysql",
 //      "name": "keatest",
@@ -59,7 +59,7 @@
 // parameters are type and name. If other parameters are not specified,
 // Kea will assume the database is available on localhost, that user and
 // password is not necessary to connect and that timeout is 5 seconds.
-// Kea must be compiled with --with-pgsql option to use this backend.
+// Kea must be compiled with the "-D postgresql" option to use this backend.
 //  "lease-database": {
 //      "type": "postgresql",
 //      "name": "keatest",
index 097d37c394f90ea6ffce06cae73fa47d0965fa47..c30200f86ecaa63748635b4cac5b01b6b09767cf 100644 (file)
@@ -31,7 +31,7 @@
 // parameters are type and name. If other parameters are not specified,
 // Kea will assume the database is available on localhost, that user and
 // password is not necessary to connect and that timeout is 5 seconds.
-// Kea must be compiled with --with-mysql option to use this backend.
+// Kea must be compiled with the "-D mysql" option to use this backend.
 //  "lease-database": {
 //      "type": "mysql",
 //      "name": "keatest",
@@ -59,7 +59,7 @@
 // parameters are type and name. If other parameters are not specified,
 // Kea will assume the database is available on localhost, that user and
 // password is not necessary to connect and that timeout is 5 seconds.
-// Kea must be compiled with --with-pgsql option to use this backend.
+// Kea must be compiled with the "-D postgresql" option to use this backend.
 //  "lease-database": {
 //      "type": "postgresql",
 //      "name": "keatest",
index 8c1676ca6c7f17d77124df24fba6df13198a8ac2..1cda55220665371feac2204f1e4aa884372d9173 100644 (file)
@@ -633,19 +633,6 @@ Use the following command to perform an upgrade:
 
    $ kea-admin db-upgrade pgsql -u database-user -p database-password -n database-name
 
-.. _pgsl-ssl:
-
-PostgreSQL without OpenSSL support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Usually the PostgreSQL database client library is built with the OpenSSL
-support but Kea can be configured to handle the case where it is not
-supported:
-
-.. code-block:: console
-
-   $ ./configure [other-options] --disable-pgsql-ssl
-
 .. _pgsql-performance:
 
 Improved Performance With PostgreSQL
index 3ec3484f772b420f67ad16b950979ea2641bb5ce..0ace3cad7c7131495f403eb95cc2db0daf2fac05 100644 (file)
@@ -299,7 +299,7 @@ Starting and Stopping the Control Agent
    dynamically linked to Kea.
 
 -  ``-W`` - displays the Kea configuration report and exits. The report
-   is a copy of the ``config.report`` file produced by ``./configure``;
+   is a copy of the ``config.report`` file produced by ``meson setup``;
    it is embedded in the executable binary.
 
    The contents of the ``config.report`` file may also be accessed by examining
index 8b5d0db1444f21605bf4970734018289960313d0..122ec31e0bb087e3a166e05c622a3cc4a44d71b5 100644 (file)
@@ -165,13 +165,13 @@ CB Components
 
 To use a MySQL configuration backend, :ischooklib:`libdhcp_mysql.so` must
 be compiled and the DHCP servers must be configured to load it. It is compiled
-when the ``--with-mysql`` configuration switch is used during the Kea build.
+when the ``-mysql`` configuration switch is used during the Kea build.
 The MySQL C client libraries must be installed, as explained in
 :ref:`dhcp-install-configure`.
 
 To use a PostgreSQL configuration backend, :ischooklib:`libdhcp_pgsql.so` must
 be compiled and the DHCP servers must be configured to load it. It is compiled
-when the ``--with-pgsql`` configuration switch is used during the Kea build.
+when the ``-pgsql`` configuration switch is used during the Kea build.
 The PostgreSQL C client libraries must be installed, as explained in
 :ref:`dhcp-install-configure`.
 
index 77dbcecfce3c6ea01c8a96c671c061e484184d62..4406143d026541d858b26b22378522f1e61de4d7 100644 (file)
@@ -135,7 +135,7 @@ directly. It accepts the following command-line switches:
 -  ``-V`` - displays the extended Kea version and exits.
 
 -  ``-W`` - displays the Kea configuration report and exits. The report
-   is a copy of the ``config.report`` file produced by ``./configure``;
+   is a copy of the ``config.report`` file produced by ``meson setup``;
    it is embedded in the executable binary.
 
 -  ``-t file`` - specifies the configuration file to be tested.
index 75e6529b3cfec383b2e9d000bd1afea7e1041b99..c02d7c337addbd57f2ece3cd476c245430962097 100644 (file)
@@ -58,7 +58,7 @@ the following command-line switches:
    dynamically linked to Kea.
 
 -  ``-W`` - displays the Kea configuration report and exits. The report
-   is a copy of the ``config.report`` file produced by ``./configure``;
+   is a copy of the ``config.report`` file produced by ``meson setup``;
    it is embedded in the executable binary.
 
    The contents of the ``config.report`` file may also be accessed by examining
index 2064ada15ad645dfe01e7ff7d78bd8feabc6e56f..6dc59023882a155db7c41cf1b92a41681be19698 100644 (file)
@@ -58,7 +58,7 @@ the following command-line switches:
    dynamically linked to Kea.
 
 -  ``-W`` - displays the Kea configuration report and exits. The report
-   is a copy of the ``config.report`` file produced by ``./configure``;
+   is a copy of the ``config.report`` file produced by ``meson setup``;
    it is embedded in the executable binary.
 
    The contents of the ``config.report`` file may also be accessed by examining
index 831f75e41805ad881db7b09de08e23fb7a62bb48..6cf41cc456e931df5bac8ec13730eb1a205fc138 100644 (file)
@@ -64,66 +64,51 @@ the SPNEGO library. Two implementations meet this criteria: MIT Kerberos
 GSS-TSIG Compilation
 --------------------
 
-The following procedure was tested on Ubuntu 20.10 and 21.04. A similar
-approach can be applied to other systems.
+The following procedure was tested on Debian 12. A similar approach can be
+applied to other systems.
 
-1.  Obtain the Kea sources, extract the Kea sources.
-
-2. Run autoreconf:
-
-.. code-block:: console
-
-    autoreconf -i
-
-3. Make sure ``./configure --help`` shows the ``--with-gssapi`` option.
-
-4. Install either the MIT (``libkrb5-dev``) or the Heimdal (``heimdal-dev``) library,
+1. Install either the MIT (``libkrb5-dev``) or the Heimdal (``heimdal-dev``) library,
    for instance:
 
 .. code-block:: console
 
     sudo apt install libkrb5-dev
 
-5. Run ``configure`` with the ``--with-gssapi`` option:
+2.  Obtain the Kea sources, extract the Kea sources.
 
-.. code-block:: console
-
-    ./configure --with-gssapi
-
-.. note:
+3. Set up the build:
 
-    It is ``--with-gssapi`` (with no dash between "gss" and "api"), to maintain
-    consistency with the BIND 9 option.
+.. code-block:: console
 
-The ``--with-gssapi`` parameter requires the ``krb5-config`` tool to be present. This
-tool is provided by both MIT Kerberos 5 and Heimdal; however, on some systems
-where both Kerberos 5 and Heimdal are installed, it is a symbolic link
-to one of them. If the tool is not in the standard location, it can be specified
-with ``--with-gssapi=/path/to/krb5-config``. It is strongly recommended
-to use the default installation locations provided by the packages.
+    meson setup build -D krb5=enabled
 
-The ``./configure`` script should complete with a successful GSS-API
-detection, similar to this:
+4. Make sure ``build/config.report`` shows the ``Kerberos5 GSS-API`` entry.
 
 ::
 
-    GSS-API support:
-      GSSAPI_CFLAGS:         -isystem /usr/include/mit-krb5
-      GSSAPI_LIBS:           -L/usr/lib/x86_64-linux-gnu/mit-krb5 -Wl,-Bsymbolic-functions -Wl,-z,relro -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
+    Kerberos5 GSS-API:
+      VERSION:         1.20.1
+      VENDOR:          MIT
+
+Either the ``krb5.pc`` file or the ``krb5-config`` tool are required to be
+present. They are provided by both MIT Kerberos 5 and Heimdal; however, on some
+systems where both Kerberos 5 and Heimdal are installed, it is a symbolic link
+to one of them. If the tool is not in the standard location, it can be selected
+by setting ``PKG_CONFIG_PATH=/path/to/krb5.pc:${PKG_CONFIG_PATH}`` or
+``PATH=/path/to/krb5-config:${PATH}`` prior to ``meson setup``.
 
-6.  Compile ``make -jX``, where X is the number of CPU cores
-    available.
+6. Compile with ``meson compile -C build``.
 
-7.  After compilation, :ischooklib:`libddns_gss_tsig.so` is available in the
-    ``src/hooks/d2/gss_tsig`` directory. It can be loaded by :iscman:`kea-dhcp-ddns`.
+7. After compilation, :ischooklib:`libddns_gss_tsig.so` is available in the
+    ``build/src/hooks/d2/gss_tsig`` directory. It can be loaded by
+    :iscman:`kea-dhcp-ddns`.
 
-:ischooklib:`libddns_gss_tsig.so` was developed using the MIT Kerberos 5 implementation, but
-Heimdal is also supported. Note that Heimdal is picky about
-security-sensitive file permissions and is known to emit an unclear error message.
-It is a good idea to keep these files plain, with one link and no
-access for the group or other users.
+:ischooklib:`libddns_gss_tsig.so` supports both MIT Kerberos 5 and Heimdal
+implementations. Heimdal is picky about security-sensitive file permissions and
+is known to emit an unclear error message. It is a good idea to keep these
+files plain, with one link and no access for the group or other users.
 
-The ``krb5-config`` script should provide an ``--all`` option which
+The ``krb5-config`` script should provide an ``--vendor`` option which
 identifies the implementation.
 
 .. _gss-tsig-deployment:
index b32f4efe7d66bcf044e7c54816a84931e5aa2230..4b967aac2a5be46bb596b40dc7a16d33ed78a1f0 100644 (file)
@@ -124,60 +124,38 @@ Compiling With NETCONF
     $ git clone gitlab.isc.org/isc-projects/kea.git
     $ cd kea
 
-2. Configure the build.
+2. Set up the build.
 
 .. code-block:: console
 
-    $ autoreconf -i
-    $ ./configure --with-libyang --with-libyang-cpp --with-sysrepo --with-sysrepo-cpp
+    $ meson setup build -D netconf=enabled -D cpp_std=c++20
 
 .. note::
 
     If any of the libraries are installed in a custom location, the
-    ``--with`` flags accept the installations paths as values.
+    PKG_CONFIG_PATH can point to the .pc files.
 
-3. Check ``config.report`` to verify NETCONF support.
+.. code-block:: console
+
+    PKG_CONFIG_PATH=:/opt/libyang/lib/pkgconfig:/opt/libyang-cpp/lib/pkgconfig:/opt/sysrepo/lib/pkgconfig:/opt/sysrepo-cpp/lib/pkgconfig
+
+3. Check ``build/config.report`` to verify NETCONF support.
 
 ::
 
-    NETCONF:
-      yes
-
-      libyang:
-        LIBYANG_CPPFLAGS:
-        LIBYANG_INCLUDEDIR:    -I/usr/local/include
-        LIBYANG_LIBS:          -L/usr/local/lib -lyang -Wl,-R/usr/local/lib -lyang
-        LIBYANG_PREFIX:        /usr/local
-        LIBYANG_VERSION:       2.1.4
-
-      libyang-cpp:
-        LIBYANGCPP_CPPFLAGS:
-        LIBYANGCPP_INCLUDEDIR: -I/usr/local/include
-        LIBYANGCPP_LIBS:       -L/usr/local/lib -lyang-cpp -Wl,-R/usr/local/lib -lyang-cpp
-        LIBYANGCPP_PREFIX:     /usr/local
-        LIBYANGCPP_VERSION:    1.1.0
-
-      sysrepo:
-        SYSREPO_CPPFLAGS:
-        SYSREPO_INCLUDEDIR:    -I/usr/local/include
-        SYSREPO_LIBS:          -L/usr/local/lib -lsysrepo -Wl,-R/usr/local/lib -lsysrepo
-        SYSREPO_PREFIX:        /usr/local
-        SYSREPO_VERSION:       2.2.12
-
-        SR_REPO_PATH:          /etc/sysrepo
-        SR_PLUGINS_PATH:       /usr/local/lib/sysrepo/plugins
-        SRPD_PLUGINS_PATH:     /usr/local/lib/sysrepo-plugind/plugins
-
-      sysrepo-cpp:
-        SYSREPOCPP_CPPFLAGS:
-        SYSREPOCPP_INCLUDEDIR: -I/usr/local/include
-        SYSREPOCPP_LIBS:       -L/usr/local/lib -lsysrepo-cpp -Wl,-R/usr/local/lib -lsysrepo-cpp
-        SYSREPOCPP_PREFIX :    /usr/local
-        SYSREPOCPP_VERSION:    1.1.0
-
-4. Build as usual.
+      NETCONF:
+        YANG:               2.1.4
+        YANG_PREFIX:        /opt/libyang
+        YANGCPP:            1.1.0
+        YANGCPP_PREFIX:     /opt/libyang-cpp
+        SYSREPO:            2.2.12
+        SYSREPO_PREFIX:     /opt/sysrepo
+        SYSREPOCPP:         1.1.0
+        SYSREPOCPP_PREFIX:  /opt/sysrepo-cpp
 
-    $ make
+4. Compile as usual.
+
+    $ meson compile -C build
 
 .. _sysrepo-overview:
 
@@ -684,7 +662,7 @@ Starting and Stopping the NETCONF Agent
    dynamically linked to Kea.
 
 -  ``-W`` - displays the Kea configuration report and exits. The report
-   is a copy of the ``config.report`` file produced by ``./configure``;
+   is a copy of the ``config.report`` file produced by ``meson setup``;
    it is embedded in the executable binary.
 
    The contents of the ``config.report`` file may also be accessed by examining
index d46eb9099bc2724bbd3e2e34d22901d6fbdad557..ea324ff489c8bd460db0de192f7f2b9028cbd51b 100644 (file)
@@ -59,8 +59,8 @@ Installing Hook Packages
 
 .. note::
 
-   For more details about installing the Kea Subscriber Hooks, please read
-   `this Knowledgebase article <https://kb.isc.org/docs/aa-01587>`__.
+    For more details about installing the Kea Subscriber Hooks, please read
+    `this Knowledgebase article <https://kb.isc.org/docs/aa-01587>`__.
 
 Most hook packages are now included in the base Kea sources. There is no
 need to do anything special to compile or install them, as they are covered
@@ -84,7 +84,7 @@ Unpack this tarball:
 
 .. parsed-literal::
 
-   $ tar -zxvf kea-|release|.tar.gz
+    $ tar -zxvf kea-|release|.tar.gz
 
 This will unpack the tarball into the ``kea-|release|`` subdirectory of
 the current working directory.
@@ -96,50 +96,38 @@ steps will unpack the subscriber tarball into the correct location:
 
 .. parsed-literal::
 
-     $ cd kea-|release|
-     $ tar -xvf ../kea-subscriber-|release|.tar.gz
+    $ cd kea-|release|
+    $ tar -xvf ../kea-subscriber-|release|.tar.gz
 
 Note that unpacking the Kea subscriber package puts the files into a
 directory named ``premium``. Regardless of the name of the package, the
 directory is always called ``premium``.
 
-4. Run the ``autoreconf`` tools. This step is necessary to update Kea's build
-script to include the additional directory. If this tool is not already
-available on the system, install the ``automake`` and ``autoconf``
-tools. To generate the configure script, please use:
+4. Set up the build. Make sure ``meson`` and ``ninja`` are installed on your
+   system. The first section of the output should look something like this:
 
-::
-
-     $ autoreconf -i
+.. code-block:: console
 
-5. Rerun ``configure``, using the same configuration options that were used when
-originally building Kea. It is possible to verify that ``configure`` has detected the
-subscriber package by inspecting the summary printed when it exits. The
-first section of the output should look something like this:
+     $ meson setup build
 
 .. parsed-literal::
 
-   Package:
-     Name:             kea
-     Version:          |release|
-     Extended version: |release| (tarball)
-     OS Family:        Linux
-     Using GNU sed:    yes
-     Premium package:  yes
-     Included Hooks:   cb_cmds rbac
+    Package:
+      Name:               kea
+      Version:            |release|
+      Extended version:   |release| (tarball)
+      Version type:       development
+      OS Family:          Linux
 
-The last line indicates which specific hooks were detected. Note that
-some hooks may require their own dedicated switches.
-Please consult later sections of this chapter for details.
+      Prefix:             /opt/kea
+      Hooks directory:    /opt/kea/lib/kea/hooks
+      Premium hooks:      yes
 
-6. Rebuild Kea.
+6. Compile Kea.
 
-::
+.. code-block:: console
 
-     $ make
-
-If the machine has multiple CPU cores, an interesting option to consider
-here is using the argument ``-j X``, where ``X`` is the number of available cores.
+    $ meson compile -C build
 
 7. Install Kea sources along with the hooks:
 
@@ -148,11 +136,11 @@ here is using the argument ``-j X``, where ``X`` is the number of available core
    $ sudo make install
 
 The installation location of the hook libraries depends on whether the
-``--prefix`` parameter was specified in the ``configure`` script. If not,
+``--prefix`` parameter was specified at the ``meson setup`` step. If not,
 the default location is ``/usr/local/lib/kea/hooks``. The proper installation
 of the libraries can be verified with this command:
 
-::
+.. code-block:: console
 
    $ ls -l /usr/local/lib/kea/hooks/*.so
    /usr/local/lib/kea/hooks/libddns_gss_tsig.so
@@ -179,17 +167,18 @@ of the libraries can be verified with this command:
 
 with the following subscriber libraries:
 
-::
+.. code-block:: console
 
-   /usr/local/lib/kea/hooks/libdhcp_rbac.so
+   /usr/local/lib/kea/hooks/libca_rbac.so -> libdhcp_rbac.so
    /usr/local/lib/kea/hooks/libdhcp_cb_cmds.so
+   /usr/local/lib/kea/hooks/libdhcp_rbac.so
 
 The exact list returned depends on the packages installed. If the
 directory was specified via ``--prefix``, the hook libraries will be located in
 ``{prefix directory}/lib/kea/hooks``.
 
 Configuring Hook Libraries
-===========================
+==========================
 
 The hook libraries for a given process are configured using the
 ``hooks-libraries`` keyword in the configuration for that process. (Note
@@ -198,65 +187,77 @@ of map structures, with each structure corresponding to a hook library. For
 example, to set up two hook libraries for the DHCPv4 server, the
 configuration would be:
 
-::
+.. code-block:: json
 
-   "Dhcp4": {
-       :
-       "hooks-libraries": [
-           {
-               "library": "/opt/first_custom_hooks_example.so"
-           },
-           {
-               "library": "/opt/local/second_custom_hooks_example.so",
-               "parameters": {
-                   "mail": "spam@example.com",
-                   "floor": 13,
-                   "debug": false,
-                   "users": [ "alice", "bob", "charlie" ],
-                   "languages": {
-                       "french": "bonjour",
-                       "klingon": "yl'el"
-                   }
-               }
-           }
-       ]
-       :
-   }
+    {
+        "Dhcp6": {
+            "hooks-libraries": [
+                {
+                    "library": "/opt/first_custom_hooks_example.so"
+                },
+                {
+                    "library": "/opt/local/second_custom_hooks_example.so",
+                    "parameters": {
+                        "mail": "spam@example.com",
+                        "floor": 13,
+                        "debug": false,
+                        "users": [
+                            "alice",
+                            "bob",
+                            "charlie"
+                        ],
+                        "languages": {
+                            "french": "bonjour",
+                            "klingon": "yl'el"
+                        }
+                    }
+                }
+            ]
+        }
+    }
 
 .. note::
 
-   Libraries are reloaded even if their lists have not changed,
-   because the parameters specified for the library (or the files those
-   parameters point to) may have changed.
+    Libraries are reloaded even if their lists have not changed,
+    because the parameters specified for the library (or the files those
+    parameters point to) may have changed.
 
 Since Kea-2.7.6, the server is able to load hook libraries specifying only the binary name,
 if they reside in the default installation directory (the path is OS specific).
 The default hook libraries installation path is provided in the config report as
 "Hooks directory".
 
-::
+.. code-block:: json
 
-       "hooks-libraries": [
-           {
-               "library": "first_custom_hooks_example.so"
-           },
-           {
-               "library": "second_custom_hooks_example.so"
-           }
-       ]
+    {
+        "Dhcp6": {
+            "hooks-libraries": [
+                {
+                    "library": "first_custom_hooks_example.so"
+                },
+                {
+                    "library": "second_custom_hooks_example.so"
+                }
+            ]
+        }
+    }
 
-This snippet (on Ubuntu 24.04) is equivalent to:
+This snippet (on Debian 12) is equivalent to:
 
-::
+.. code-block:: json
 
-       "hooks-libraries": [
-           {
-               "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/first_custom_hooks_example.so"
-           },
-           {
-               "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/second_custom_hooks_example.so"
-           }
-       ]
+    {
+        "Dhcp6": {
+            "hooks-libraries": [
+                {
+                    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/first_custom_hooks_example.so"
+                },
+                {
+                    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/second_custom_hooks_example.so"
+                }
+            ]
+        }
+    }
 
 Libraries may have additional parameters that are not mandatory, in the
 sense that there may be libraries that do not require them. However, for any
index 15a8abe5d31f380d57f30ae28d8ec7247855e806..230c0abe1558b07977f7259b302c862a25daa8ac 100644 (file)
@@ -172,34 +172,34 @@ the system:
 -  The development tools automake, libtool, and pkg-config.
 
 -  The MySQL client and the client development libraries, when using the
-   ``--with-mysql`` configuration flag to build the Kea MySQL database
+   ``-mysql`` configuration flag to build the Kea MySQL database
    backend. In this case, an instance of the MySQL server running locally
    or on a machine reachable over a network is required. Note that running
    the unit tests requires a local MySQL server.
 
 -  The PostgreSQL client and the client development libraries, when using the
-   ``--with-pgsql`` configuration flag to build the Kea PostgreSQL database
+   ``-D postgresql`` configuration flag to build the Kea PostgreSQL database
    backend. In this case an instance of the PostgreSQL server running locally
    or on a machine reachable over a network is required. Note that running
    the unit tests requires a local PostgreSQL server.
 
 -  Sysrepo v1.4.140 and libyang v1.0.240, needed to connect to a Sysrepo
    datastore. Earlier versions are no longer supported. When compiling from
-   sources, the configure switches that can be used are ``--with-libyang`` and
-   ``--with-sysrepo`` without any parameters. If these dependencies were
-   installed in custom paths, point the switches to them.
+   sources, the configure switch that can be used is ``-D netconf``.
+   If these dependencies were installed in custom paths, point PKG_CONFIG_PATH
+   to them.
 
--  The MIT Kerberos 5 or Heimdal libraries are needed by Kea DDNS server to sign
-   and verify DNS updates using GSS-TSIG. The configuration switch which enables
-   this functionality is ``--with-gssapi``, without any parameters. If these
-   dependencies were installed in custom paths, point the switch to them.
+-  The MIT Kerberos 5 or Heimdal libraries are needed by Kea DDNS server to
+   sign and verify DNS updates using GSS-TSIG. The configuration switch which
+   enables this functionality is ``-D krb5``. If this dependency is installed
+   in a custom path, point PKG_CONFIG_PATH to the .pc file or PATH to the
+   krb5-config tool.
 
--  googletest (version 1.8 or later) is required when using the ``--with-gtest``
+-  googletest (version 1.8 or later) is required when using the ``-D tests``
    configuration option to build the unit tests.
 
 -  The documentation generation tools `Sphinx <https://www.sphinx-doc.org/>`_,
-   texlive with its extensions, and Doxygen, if using the
-   ``--enable-generate-docs`` configuration option to create the documentation.
+   texlive with its extensions, and Doxygen, to create the documentation.
    Specifically, with Fedora, ``python3-sphinx``, ``python3-sphinx_rtd_theme``,
    ``texlive``, and ``texlive-collection-latexextra`` are necessary.
    With Ubuntu, ``python3-sphinx``, ``python3-sphinx-rtd-theme``,
@@ -277,11 +277,8 @@ The code can be checked out from
 
    $ git clone https://gitlab.isc.org/isc-projects/kea.git
 
-The code checked out from the git repository does not include the
-generated configure script or the Makefile.in files, nor their related build
-files. Those can be created by running ``autoreconf`` with the
-``--install`` switch, which will run ``autoconf``, ``aclocal``,
-``libtoolize``, ``autoheader``, ``automake``, and related commands.
+The code checked out from the git repository does not include the build files.
+They can be created by running ``meson setup build``.
 
 Write access to the Kea repository is only granted to ISC staff.
 Developers planning to contribute to Kea should check our
@@ -292,144 +289,71 @@ Guide <https://reports.kea.isc.org/dev_guide/>`__ contains more
 information about the process, and describes the requirements for
 contributed code to be accepted by ISC.
 
-.. _configure:
+.. _setup:
 
-Configure Before the Build
---------------------------
+Set up the Build
+----------------
 
-Kea uses the GNU Build System to discover build environment details. To
-generate the makefiles using the defaults, simply run:
+Kea uses Meson to discover build environment details. To generate the ninja
+file using the defaults, simply run:
 
 .. code-block:: console
 
-   $ ./configure
+   $ meson setup build
 
-Run ``./configure`` with the ``--help`` switch to view the different
-options. Some commonly used options are:
+Run ``meson configure`` to view the different build options.
+Some commonly used options are:
 
  - ``--prefix``
    Define the installation location (the default is ``/usr/local``).
 
- - ``--with-mysql``
+ - ``-mysql``
    Build Kea with code to allow it to store leases and host reservations
    in a MySQL database.
 
- - ``--with-pgsql``
+ - ``-pgsql``
    Build Kea with code to allow it to store leases and host reservations
    in a PostgreSQL database.
 
- - ``--with-log4cplus``
-   Define the path to find the Log4cplus headers and libraries. Normally
-   this is not necessary.
+ - ``-D krb5``
+   Build Kea with Kerberos5 with GSS-API support required by
+   :ischooklib:`libddns_gss_tsig.so`.
 
- - ``--with-boost-include``
-   Define the path to find the Boost headers. Normally this is not
-   necessary.
+ - ``-D netconf``
+   Build Kea with libyang and sysrepo support required by
+   :iscman:`kea-netconf`.
 
- - ``--with-botan``
+ - ``-D crypto=botan``
    Specify the name of the Botan pkg-config library e.g. ``botan-2``
    to build with Botan for cryptographic functions. It is preferable
    to use OpenSSL (see below).
 
- - ``--with-openssl``
+ - ``--D crypto=openssl``
    Use the OpenSSL cryptographic library instead of Botan. By default
-   ``configure`` searches for a valid Botan installation; if one is not
+   Meson searches for a valid Botan installation; if one is not
    found, Kea searches for OpenSSL. Normally this is not necessary.
 
- - ``--enable-shell``
-   Build the optional :iscman:`kea-shell` tool (see :ref:`kea-shell`).
-   The default is to not build it.
-
- - ``--with-site-packages``
-   Install the kea-shell Python packages in the specified directory; this
-   is only useful when :iscman:`kea-shell` is enabled, and is
-   mostly helpful for Debian-related distributions. While most systems store
-   Python packages in ``${prefix}/usr/lib/pythonX/site-packages``, Debian
-   introduced a separate directory for packages installed from DEB. Such
-   Python packages are expected to be installed in
-   ``/usr/lib/python3/dist-packages``.
-
- - ``--enable-perfdhcp``
-   Build the optional :iscman:`perfdhcp` DHCP benchmarking tool. The default
-   is to not build it.
-
 .. note::
 
    For instructions concerning the installation and configuration of
    database backends for Kea, see :ref:`dhcp-install-configure`.
 
-There are many options that are typically not necessary for
-regular users. However, they may be useful for package maintainers,
-developers, or people who want to extend Kea code or send patches:
-
- - ``--with-gtest``, ``--with-gtest-source``
-   Enable the building of C++ unit tests using the Google Test
-   framework. This option specifies the path to the gtest source. (If
-   the framework is not installed on the system, it can be downloaded
-   from https://github.com/google/googletest.)
-
- - ``--enable-generate-docs``
-   Enable the rebuilding of Kea documentation. ISC publishes Kea
-   documentation for each release; however, in some cases it may be
-   desirable to rebuild it: for example, to change something in the
-   docs, or to generate new ones from git sources that are not yet
-   released.
-
- - ``--enable-generate-parser``
-   Enable the generation of parsers using flex or bison. Kea sources include
-   .cc and .h parser files, pre-generated for users' convenience. By
-   default Kea does not use flex or bison, to avoid
-   requiring installation of unnecessary dependencies for users.
-   However, if anything in the parsers is changed (such as adding a new
-   parameter), flex and bison are required to regenerate
-   parsers. This option permits that.
-
- - ``--enable-generate-messages``
-   Enable the regeneration of messages files from their messages source
-   files, e.g. regenerate xxx_messages.h and xxx_messages.cc from
-   xxx_messages.mes using the Kea message compiler. By default Kea is
-   built using these .h and .cc files from the distribution. However, if
-   anything in a .mes file is changed (such as adding a new message),
-   the Kea message compiler needs to be built and used. This option
-   permits that.
-
-As an example, the following command configures Kea to find the Boost
-headers in /usr/pkg/include, specifies that PostgreSQL support should be
-enabled, and sets the installation location to /opt/kea:
-
-.. code-block:: console
-
-   $ ./configure \
-         --with-boost-include=/usr/pkg/include \
-         --with-pgsql=/usr/local/bin/pg_config \
-         --prefix=/opt/kea
-
-Users who have any problems with building Kea using the header-only Boost
-code, or who would like to use the Boost system library (assumed for the
-sake of this example to be located in /usr/pkg/lib), should issue these
-commands:
-
-.. code-block:: console
-
-   $ ./configure \
-         --with-boost-libs=-lboost_system \
-         --with-boost-lib-dir=/usr/pkg/lib
+If ``meson setup build`` fails, it may be due to missing or old dependencies.
 
-If ``configure`` fails, it may be due to missing or old dependencies.
-
-When ``configure`` succeeds, it displays a report with the parameters used
-to build the code. This report is saved into the file ``config.report``
-and is also embedded into the executable binaries, e.g. :iscman:`kea-dhcp4`.
+When ``meson setup build`` succeeds, it displays a report with the parameters
+used to build the code. This report is saved into the file
+``build/config.report`` and is also embedded into the executable binaries, e.g.
+:iscman:`kea-dhcp6`.
 
 Build
 -----
 
-After the configure step is complete, build the executables from the C++
+After the setup step is complete, build the executables from the C++
 code and prepare the Python scripts by running the command:
 
 .. code-block:: console
 
-   $ make
+   $ meson compile -C build
 
 Install
 -------
@@ -439,33 +363,28 @@ the command:
 
 .. code-block:: console
 
-   $ make install
-
-Do not use any form of parallel or job server options (such as GNU
-make's ``-j`` option) when performing this step; doing so may cause
-errors.
+   $ meson install -C build
 
 .. note::
 
    The install step may require superuser privileges.
 
-If required, run ``ldconfig`` as root with ``/usr/local/lib`` (or with
-prefix/lib if configured with ``--prefix``) in ``/etc/ld.so.conf`` (or the
-relevant linker cache configuration file for the OS):
+It should not be required, but if shared libraries are not found at runtime,
+you can run ``ldconfig`` as root with ``/usr/local/lib`` (or with
+``${prefix}/lib`` if set up with ``--prefix``) in ``/etc/ld.so.conf`` (or
+the relevant linker cache configuration file for the OS):
 
 .. code-block:: console
 
    $ ldconfig
 
-.. note::
+If ``ldconfig`` is not run where required, users may see
+errors like the following:
 
-   If ``ldconfig`` is not run where required, users may see
-   errors like the following:
+::
 
-   ::
-
-       program: error while loading shared libraries: libkea-something.so.1:
-       cannot open shared object file: No such file or directory
+    program: error while loading shared libraries: libkea-something.so.1:
+    cannot open shared object file: No such file or directory
 
 
 Cross-Building
@@ -498,7 +417,7 @@ the creation of the lease database.
 
 .. note::
 
-   When unit tests are built with Kea (i.e. the ``--with-gtest`` configuration
+   When unit tests are built with Kea (i.e. the ``-D tests`` configuration
    option is specified), the databases must be manually pre-configured
    for the unit tests to run. The details of this configuration can be
    found in the `Kea Developer's
@@ -512,53 +431,45 @@ development libraries must be installed.
 
 Build and install Kea as described in :ref:`installation`,
 with the following modification. To enable the MySQL database code, at the
-"configure" step (see :ref:`configure`), the ``--with-mysql`` switch should be
-specified:
+setup step (see :ref:`setup`), the ``-D mysql`` switch should be specified:
 
 .. code-block:: console
 
-   $ ./configure [other-options] --with-mysql
+   $ meson setup build -D mysql=enabled
 
-If MySQL was not installed in the default location, the location of the
-MySQL configuration program "mysql_config" should be included with the
-switch:
+If MySQL was not installed in the default location, the location can be
+selected by setting ``PKG_CONFIG_PATH=/path/to/mariadb.pc:${PKG_CONFIG_PATH}``
+or ``PATH=/path/to/mariadb-config:${PATH}`` prior to ``meson setup``.
 
 .. code-block:: console
 
-   $ ./configure [other-options] --with-mysql=path-to-mysql_config
+   $ PKG_CONFIG_PATH=/opt/mariadb/lib/pkgconfig PATH=/opt/mariadb/bin meson setup build -D mysql=enabled
 
 See :ref:`mysql-database-create` for details regarding MySQL
 database configuration.
 
-Building with PostgreSQL support
+Building with PostgreSQL Support
 --------------------------------
 
 Install PostgreSQL according to the instructions for the system. The
 client development libraries must be installed. Client development
-libraries are often packaged as "libpq".
+libraries are often packaged as ``libpq``.
 
 Build and install Kea as described in :ref:`installation`,
 with the following modification. To enable the PostgreSQL database code, at the
-"configure" step (see :ref:`configure`), the ``--with-pgsql`` switch should be
-specified:
+setup step (see :ref:`setup`), the ``-D postgresql`` switch should be specified:
 
-.. code-block:: console
-
-   $ ./configure [other-options] --with-pgsql
-
-If PostgreSQL was not installed in the default location, the location of
-the PostgreSQL configuration program "pg_config" should be included with
-the switch:
+If PostgreSQL was not installed in the default location, the location can be
+selected by setting ``PKG_CONFIG_PATH=/path/to/libpq.pc:${PKG_CONFIG_PATH}``
+or ``PATH=/path/to/pg_config:${PATH}`` prior to ``meson setup``.
 
 .. code-block:: console
 
-   $ ./configure [other-options] --with-pgsql=path-to-pg_config
+   $ PKG_CONFIG_PATH=/opt/postgresql/lib/pkgconfig PATH=/opt/postgresql/bin meson setup build -D postgresql=enabled
 
 See :ref:`pgsql-database-create` for details regarding PostgreSQL
 database configuration.
 
-
-
 .. include:: hammer.rst
 
 .. _non-root:
index 9c6e6c83a7bfc87b87e845b70f688fc372b050a4..2214dc970e3c1b0605b5f15da9c2698d1bc8b13f 100644 (file)
@@ -32,20 +32,20 @@ Quick Start Guide Using tarball
     .. parsed-literal::
 
        $ cd kea-|release|
-       $ ./configure [your extra parameters]
+       $ meson setup build [your extra parameters]
 
 5.  Build it:
 
     .. code-block:: console
 
-       $ make
+       $ meson compile -C build
 
 6.  Install it (by default it will be placed in ``/usr/local/``, so
     root privileges are likely required for this step):
 
     .. code-block:: console
 
-       $ make install
+       $ meson install -C build
 
 .. _quick-start-repo:
 
index 58cdecdd65f797bd108ec6539403de0d11443afa..28e2e896bc844025f4d3264199b690a5cda5fedb 100644 (file)
@@ -7319,8 +7319,8 @@ TEST_F(Dhcp4ParserTest, configControlInfoNoFactory) {
     configure(config, CONTROL_RESULT_ERROR,
               "during update from config backend database: "
               "The Kea server has not been compiled with support for configuration "
-              "database type: mysql. Did you forget to use --with-mysql during "
-              "compilation or to load libdhcp_mysql hook library?");
+              "database type: mysql. Did you forget to use -Dmysql during "
+              "setup or to load libdhcp_mysql hook library?");
 }
 
 // This test verifies that configuration control info gets populated.
index 6666f722c3047c6c734d87dc010d14fd92936154..b2a6fdc6b357a2f06a8fa8fffb0e56740e86eafc 100644 (file)
@@ -3370,8 +3370,7 @@ void DORATest::checkStat(string const& name,
 }
 
 // Starting tests which require MySQL backend availability. Those tests
-// will not be executed if Kea has been compiled without the
-// --with-mysql.
+// will not be executed if Kea has been compiled without MySQL support.
 #ifdef HAVE_MYSQL
 
 /// @brief Test fixture class for the test utilizing MySQL database backend.
@@ -3416,8 +3415,7 @@ TEST_F(DORAMySQLTest, multiStageBootMultiThreading) {
 #endif
 
 // Starting tests which require MySQL backend availability. Those tests
-// will not be executed if Kea has been compiled without the
-// --with-pgsql.
+// will not be executed if Kea has been compiled without PostgreSQL support.
 #ifdef HAVE_PGSQL
 
 /// @brief Test fixture class for the test utilizing PostgreSQL database backend.
index 0df8502f4ccbcfb42961c2de96767822efea9275..0625ad23b0721e2dd881f72bc50e2ecdcc100214 100644 (file)
@@ -970,8 +970,7 @@ TEST_F(JSONFileBackendTest, configBackendPullCommandWithTimer) {
 }
 
 // Starting tests which require MySQL backend availability. Those tests
-// will not be executed if Kea has been compiled without the
-// --with-mysql.
+// will not be executed if Kea has been compiled without MySQL support.
 #ifdef HAVE_MYSQL
 
 /// @brief Test fixture class for the tests utilizing MySQL database
index 06c94acbfb88c6d335804ea08e6780a2682ed78f..4d823074bcf4f46539010059f895d6018572a906 100644 (file)
@@ -8169,8 +8169,8 @@ TEST_F(Dhcp6ParserTest, configControlInfoNoFactory) {
     configure(config, CONTROL_RESULT_ERROR,
               "during update from config backend database: "
               "The Kea server has not been compiled with support for configuration "
-              "database type: mysql. Did you forget to use --with-mysql during "
-              "compilation or to load libdhcp_mysql hook library?");
+              "database type: mysql. Did you forget to use -Dmysql during "
+              "setup or to load libdhcp_mysql hook library?");
 }
 
 // This test verifies that configuration control info gets populated.
@@ -9303,7 +9303,7 @@ TEST_F(Dhcp6ParserTest, ddnsTtlPercent) {
     {
         "ddns-ttl-percent": 0.75,
         "valid-lifetime": 4000,
-        "shared-networks": [{ 
+        "shared-networks": [{
             "name": "net",
             "ddns-ttl-percent": 0.50,
             "subnet6": [{
@@ -9348,7 +9348,7 @@ TEST_F(Dhcp6ParserTest, ddnsTtl) {
     {
         "ddns-ttl": 750,
         "valid-lifetime": 4000,
-        "shared-networks": [{ 
+        "shared-networks": [{
             "name": "net",
             "ddns-ttl": 500,
             "subnet6": [{
@@ -9394,7 +9394,7 @@ TEST_F(Dhcp6ParserTest, ddnsTtlMin) {
     {
         "ddns-ttl-min": 750,
         "valid-lifetime": 4000,
-        "shared-networks": [{ 
+        "shared-networks": [{
             "name": "net",
             "ddns-ttl-min": 500,
             "subnet6": [{
@@ -9440,7 +9440,7 @@ TEST_F(Dhcp6ParserTest, ddnsTtlMax) {
     {
         "ddns-ttl-max": 750,
         "valid-lifetime": 4000,
-        "shared-networks": [{ 
+        "shared-networks": [{
             "name": "net",
             "ddns-ttl-max": 500,
             "subnet6": [{
index 2a10e1021c99c33916556f5f89529221645390d6..ca51856e67926aa10f34294679ea8b1058c422a0 100644 (file)
@@ -669,7 +669,7 @@ public:
     /// @brief Updates inherited subnet and pool members
     ///
     /// Hack added to set subnet_ and pool_ members that are buried into lower
-    /// level tests such as checkLease(), so one can use "configure" functionality
+    /// level tests such as checkLease(), so one can use "meson setup" functionality
     /// rather than hand-building configured objects
     /// @param subnet_idx Element index of the desired subnet
     /// @param pool_idx Element index of the desired pool within the desired subnet
index 80fb89b37a66e0b4f7707b8d1710f4543a368aec..4bec04af23f4aa376543471d96e27ff202f513db 100644 (file)
@@ -955,8 +955,7 @@ TEST_F(JSONFileBackendTest, configBackendPullCommandWithTimer) {
 }
 
 // Starting tests which require MySQL backend availability. Those tests
-// will not be executed if Kea has been compiled without the
-// --with-mysql.
+// will not be executed if Kea has been compiled without MySQL support.
 #ifdef HAVE_MYSQL
 
 /// @brief Test fixture class for the tests utilizing MySQL database
index d2bf67aa58c417bebc678ae756cc2710393f2277..565c521c7899d7822ce3ab3257f3cc6435961624 100644 (file)
@@ -105,12 +105,10 @@ in html/ directory.
 
 Similar to all other code in Kea, also this library comes with unit-tests that
 use googletest framework. Those tests are stored in tests/ directory. To build
-and run them, you need to pass --with-gtest or --with-gtest-source to the
-configure script.  Once the code builds, you can run tests with make check. This
-command can be run in top-level Kea directory (all tests will be run) or in more
-specific directory (only a subset of tests will be run). For example, make check
-issued in src/hooks/dhcp/class_cmds will run only tests for class_cmds
-library.
+and run them, you need to pass -Dtests=enabled to the "meson setup" command
+line.  Once the code builds, you can run tests with "meson compile". This
+command can be run in top-level build directory (all tests will be run) or by
+running tests on this library only "meson test -C build dhcp-class-cmds-tests".
 
 @section class_cmdsMTCompatibility Multi-Threading Compatibility
 
index 64156e9823cbe48474477ba62682f17ba072cf4e..fb5d9e3a53951de56c4e86aedd5d73ed2d360ff5 100644 (file)
@@ -180,12 +180,10 @@ in html/ directory.
 
 Similar to all other code in Kea, also this library comes with unit-tests that
 use googletest framework. Those tests are stored in tests/ directory. To build
-and run them, you need to pass --with-gtest or --with-gtest-source to the
-configure script.  Once the code builds, you can run tests with make check. This
-command can be run in top-level Kea directory (all tests will be run) or in more
-specific directory (only a subset of tests will be run). For example, make check
-issued in src/hooks/dhcp/host_cmds will run only tests for host_cmds
-library.
+and run them, you need to pass -Dtests=enabled to the "meson setup" command
+line.  Once the code builds, you can run tests with "meson compile". This
+command can be run in top-level build directory (all tests will be run) or by
+running tests on this library only "meson test -C build dhcp-host-cmds-tests".
 
 @section host_cmdsMTCompatibility Multi-Threading Compatibility
 
index 3edcdb6ba83a2d1294bd3e4e9475b62ad9000eba..2b29b2b2276da2b220042dfdf3d132604e16c851 100644 (file)
@@ -168,7 +168,7 @@ public:
                 std::string with = (db_type == "postgresql" ? "pgsql" : db_type);
                 isc_throw(db::InvalidType, "The Kea server has not been compiled with "
                           "support for configuration database type: " << db_type
-                          << ". Did you forget to use --with-"
+                          << ". Did you forget to use -D"
                           << with << " during compilation or to load libdhcp_"
                           << with << " hook library?");
             }
index c2d41312b30245ba528823861e9287763a8dd812..9a7d4b47a5e6f27423b934f519a106dde527d1be 100644 (file)
 
   - The MySQL lease manager uses the freely available MySQL as its backend
   database.  This is not included in Kea DHCP by default:
-  the \--with-mysql switch must be supplied to "configure" for support to be
+  the \-Dmysql switch must be supplied to "meson setup" for support to be
   compiled into the software. This will also compile the "libdhcp_mysql.so" hook
   library which must be loaded by adding it to the "hooks-libraries"
   configuration parameter.
 
   - The PostgreSQL lease manager uses the freely available PostgreSQL as its
   backend database.  This is not included in Kea DHCP by default:
-  the \--with-pgsql switch must be supplied to "configure" for support to be
+  the \-Dpostgresql switch must be supplied to "meson setup" for support to be
   compiled into the software. This will also compile the "libdhcp_pgsql.so" hook
   library which must be loaded by adding it to the "hooks-libraries"
   configuration parameter.
index 506502967c6da7da9de9e0fd48ee8cfc1651b939..f2d90b356fbb32eb4e42ffae57ca3b6d4f0f2e7e 100644 (file)
@@ -51,7 +51,7 @@ HostDataSourceFactory::add(HostDataSourceList& sources,
             string with = (db_type == "postgresql" ? "pgsql" : db_type);
             isc_throw(InvalidType, "The Kea server has not been compiled with "
                       "support for host database type: " << db_type
-                      << ". Did you forget to use --with-"
+                      << ". Did you forget to use -D"
                       << with << " during compilation or to load libdhcp_"
                       << with << " hook library?");
         }
index ea86d4ed5b448d8b1139d44f5d9a1a29922bde6d..64f1c8fe9f1459dc54b6e9a976eadd52ba16cd14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2012-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -65,7 +65,7 @@ LeaseMgrFactory::create(const std::string& dbaccess) {
             string with = (db_type == "postgresql" ? "pgsql" : db_type);
             isc_throw(InvalidType, "The Kea server has not been compiled with "
                       "support for lease database type: " << db_type
-                      << ". Did you forget to use --with-"
+                      << ". Did you forget to use -D"
                       << with << " during compilation or to load libdhcp_"
                       << with << " hook library?");
         }
index 881d717a7b7607f1988d7bea4996b1ef61c52a23..3af6a59e57010424e4a81547199ec18e22d5c508 100644 (file)
@@ -86,7 +86,7 @@ LegalLogMgrFactory::addBackend(DatabaseConnection::ParameterMap& parameters, Man
             string with = (db_type == "postgresql" ? "pgsql" : db_type);
             isc_throw(InvalidType, "The Kea server has not been compiled with "
                       "support for configuration database type: " << db_type
-                      << ". Did you forget to use --with-"
+                      << ". Did you forget to use -D"
                       << with << " during compilation or to load libdhcp_"
                       << with << " hook library?");
         }
index eed27ec66b053f22d84432f55abc6994e7411a3a..af6e91ec0c666cb6fb106bedc8b5b60d05f31f44 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2015-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -103,7 +103,7 @@ When the actual case is determined, the respective C++ action
 is executed. For example, if the token is a string, the TokenString class is
 instantiated with the appropriate value and put onto the expression vector.
 
-@section dhcpEvalMakefile Generating parser files
+@section dhcpEval Generating parser files
 
  In the general case, we want to avoid generating parser files, so an
  average user interested in just compiling Kea would not need flex or
@@ -114,14 +114,9 @@ instantiated with the appropriate value and put onto the expression vector.
  to tweak the lexer.ll and parser.yy files and then regenerate
  the code. For this purpose, two makefile targets are defined:
  @code
- make parser
+ meson compile -C parser
  @endcode
- will generate the parsers and
- @code
- make parser-clean
- @endcode
- will remove the files. Generated files removal was also hooked
- into the maintainer-clean target.
+ will generate the parsers.
 
 @section dhcpEvalConfigure Configure options
 
index e6e96e392dba2a1b097a573c9a3cb956d4ad11ca..a5a78f92342a47ed32fa25b2983f10cd86f9c76d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -892,7 +892,7 @@ g++ -I <install-dir>/include/kea -L <install-dir>/lib -fpic -shared -o example.s
 
 Notes:
 - Replace "<install-dir>" with the location in which you installed Kea. Unless
-you specified the "--prefix" switch on the "configure" command line when
+you specified the "--prefix" switch on the "meson setup" command line when
 building Kea, it will be installed in the default location, usually /usr/local.
 - The compilation command and switches required may vary depending on
 your operating system and compiler - consult the relevant documentation
@@ -1358,8 +1358,8 @@ a name will conflict with any existing or future Kea argument names.
 
 @subsection hooksdgStaticallyLinkedKea Running Against a Statically-Linked Kea
 
-If Kea is built with the --enable-static-link switch (set when
-running the "configure" script), no shared Kea libraries are built;
+If Kea is built with the "-Ddefault_library=static" switch (set when
+running the "meson setup" script), no shared Kea libraries are built;
 instead, archive libraries are created and Kea is linked to them.
 If you create a hooks library also linked against these archive libraries,
 when the library is loaded you end up with two copies of the library code,
index 8dbc02f6cba36dbc0db80e97acc0329b62cdc544..9ecdb5857def587ea2cd67d092c317faae2f2c98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2021 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -403,70 +403,53 @@ The appearance of such a message indicates a programming error.
 </li>
 </ol>
 
-@subsubsection logMakefile Include Message Compilation in Makefile
+@subsubsection logMeson Include Message Compilation in meson.build
 The source file for the messages is the ".mes" file, but the files
 used by the code which must be compiled and linked are the output of
 the message compiler.  (The compiler is produced very early on in the
 Kea build sequence, so is available for use in the building of
 subsequent components.)  To allow this, certain dependencies must be
-included in the Makefile.am for each component that uses logging.
+included in the meson.build file for each component that uses logging.
 
 <b>Including Message files in C++ Component Builds</b><br/>
-The following segment from the "hooks" Makefile.am illustrates
+The following segment from src/lib/log/meson.build illustrates
 the entries needed.
 @code
 # Ensure that the message file is included in the distribution
-EXTRA_DIST = hooks_messages.mes
-
-# If we want to get rid of all generated messages files, we need to use
-# make maintainer-clean. The proper way to introduce custom commands for
-# that operation is to define maintainer-clean-local target. However,
-# make maintainer-clean also removes Makefile, so running configure script
-# is required.  To make it easy to rebuild messages without going through
-# reconfigure, a new target messages-clean has been added.
-maintainer-clean-local:
-        rm -f hooks_messages.h hooks_messages.cc
-
-# To regenerate messages files, one can do:
-#
-# make messages-clean
-# make messages
-#
-# This is needed only when a .mes file is modified.
-messages-clean: maintainer-clean-local
-
-if GENERATE_MESSAGES
-
-# Define rule to build logging source files from message file
-messages: hooks_messages.h hooks_messages.cc
-        @echo Message files regenerated
-
-hooks_messages.h hooks_messages.cc: hooks_messages.mes
-        $(top_builddir)/src/lib/log/compiler/kea-msg-compiler $(top_srcdir)/src/lib/hooks/hooks_messages.mes
-
-else
-
-messages hooks_messages.h hooks_messages.cc:
-        @echo Messages generation disabled. Configure with --enable-generate-messages to enable it.
-
+if KEA_MSG_COMPILER.found()
+    current_source_dir = meson.current_source_dir()
+    target_gen_messages = run_target(
+        'src-lib-log-log_messages',
+        command: [
+            CD_AND_RUN,
+            TOP_SOURCE_DIR,
+            KEA_MSG_COMPILER,
+            'src/lib/log/log_messages.mes',
+        ],
+    )
+    TARGETS_GEN_MESSAGES += [target_gen_messages]
+    target_gen_messages = run_target(
+        'src-lib-log-logimpl_messages',
+        command: [
+            CD_AND_RUN,
+            TOP_SOURCE_DIR,
+            KEA_MSG_COMPILER,
+            'src/lib/log/logimpl_messages.mes',
+        ],
+    )
+    TARGETS_GEN_MESSAGES += [target_gen_messages]
 endif
 @endcode
+
+To regenerate messages files, one can do:
+@code@
+meson compile -C build messages
+@endcode@
+
 The first rule adds a hook to make maintainer-clean which is the standard
 way to regenerate all messages files. The second rule adds the new
 messages-clean target to regenerate local messages files.
 
-The GENERATE_MESSAGES conditional part is the (re)generation of
-the messages files. When configured with --enable-generate-messages
-and the source (.mes file) is newer these files are generated using
-the Kea message compiler. When configured without --enable-generate-messages
-(the default) and the source (.mes file) is newer a message is emitted.
-
-Not shown are the Makefile.am lines where the .h and .cc file are used.  These
-are the same as other lines specifying .h and .cc source files.
-
-And finally please note the message header (e.g. hooks_messages.h)
-should be installed, i.e. in the include_HEADERS list.
-
 @subsection logUsage Using Logging Files in Program Development
 
 @subsubsection logCppUsage Use in a C++ Program or Module
index e0fcab04936d5d0d199fad538b7c257de3b49f9f..039b00c41178e1346ee292f92747026a659d1fa1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018-2022 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2018-2025 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -174,7 +174,7 @@ category of adaptors are divided into:
 To run YANG/NETCONF/Sysrepo tests you need to compile Kea with Sysrepo support:
 
 @verbatim
-./configure --with-libyang --with-sysrepo --with-libyang-cpp --with-sysrepo-cpp
+meson setup build -D netconf=enabled
 @endverbatim
 
 For details, see Section "YANG/NETCONF support" in the Kea Administrator
@@ -192,7 +192,7 @@ non-root.
 To install all the modules, run the following script:
 
 @verbatim
-./src/share/yang/modules/utils/reinstall.sh
+./build/src/share/yang/modules/utils/reinstall.sh
 @endverbatim
 
 If the YANG modules are already installed, they will be upgraded.
@@ -200,7 +200,7 @@ To avoid any upgrade hastle, the -u flag may be passed to uninstall the modules
 before installing again.
 
 @verbatim
-./src/share/yang/modules/utils/reinstall.sh -u
+./build/src/share/yang/modules/utils/reinstall.sh -u
 @endverbatim
 
 Alternatively to install each module, issue the following command: