diff options
232 files changed, 3444 insertions, 646 deletions
diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000000..17dfab8043 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,71 @@ +# -*- Mode: Conf -*- + +[remote "r-systemd"] + url = https://github.com/systemd/systemd.git + fetch = +refs/heads/*:refs/remotes/r-systemd/* + # There are two tag formats coming from r-systemd: + # - vXXX: systemd versions + # - XXX: (001-182) udev versions, from before the + # systemd/udev merge + # Let's put them each in their own namespace. + tagopt = --no-tags + fetch = +refs/tags/v*:refs/tags/systemd/v* + fetch = +refs/tags/0*:refs/tags/udev/v0* + fetch = +refs/tags/1*:refs/tags/udev/v1* +[branch "systemd/master"] + remote = r-systemd + merge = refs/heads/master + +[remote "r-elogind"] + url = https://github.com/wingo/elogind.git + fetch = +refs/heads/*:refs/remotes/r-elogind/* + # There are 3 tag formats coming from r-elogind: + # - XXX: legacy udev tags + # - vXXX: upstream systemd tags + # - vXXX.Y: elogind versions + # Unfortunately, git gives us no good way of filtering to only + # get tags containing a `.` + tagopt = --no-tags + fetch = +refs/tags/v*:refs/tags/elogind/v* +[branch "elogind/master"] + remote = r-elogind + merge = refs/heads/master + +[remote "r-eudev"] + url = https://github.com/gentoo/eudev.git + fetch = +refs/heads/*:refs/remotes/r-eudev/* + # Similarly to how we have done, r-eudev has mapped systemd + # tags to `systemd-vXXX` and legacy udev tags to `udev-XXX`. + # The eudev tags are typically `vX.Y.Z`, but several of them + # are just `X.Y.Z`. Fortunately 1.5.* are the only ones + # without a vX.Y.Z tag; the other has both forms. + tagopt = --no-tags + fetch = +refs/tags/v*:refs/tags/eudev/v* + fetch = +refs/tags/1*:refs/tags/eudev/v1* +[branch "eudev/master"] + remote = r-eudev + merge = refs/heads/master + +[remote "origin"] + url = https://git.parabola.nu/~lukeshu/systemd.git + pushUrl = ssh://git@git.parabola.nu/~git/~lukeshu/systemd.git + fetch = +refs/heads/*:refs/remotes/origin/* + tagopt = --no-tags + fetch = +refs/tags/*:refs/tags/* +[branch "systemd/parabola"] + remote = origin + merge = refs/heads/systemd/parabola +[branch "notsystemd/premove"] + remote = origin + merge = refs/heads/notsystemd/premove +[branch "notsystemd/postmove"] + remote = origin + merge = refs/heads/notsystemd/postmove +[branch "notsystemd/master"] + remote = origin + merge = refs/heads/notsystemd/postmove + +[remote "r-autothing"] + url = git://lukeshu.com/autothing + tagopt = --no-tags + fetch = +refs/heads/*:refs/remotes/r-autothing/* diff --git a/.gitignore b/.gitignore index 2e89d17a8f..89e778e998 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ /bootctl /build-aux/* !/build-aux/Makefile* +!/build-aux/write-atomic !/build-aux/write-ifchanged /busctl /cdrom_id @@ -310,8 +311,15 @@ config.status configure stamp-* .tmp* +.var* /autoconf.mk /automake.mk.in /automake.mk /config.mk /gnustandards.mk +/gitfiles.mk +Makefile-man.mk +*-list.txt +*-gperf.c +*-to-name.h +*-from-name.h diff --git a/autoconf.mk.in b/autoconf.mk.in new file mode 100644 index 0000000000..031dab17d9 --- /dev/null +++ b/autoconf.mk.in @@ -0,0 +1,41 @@ +top_builddir = $(topoutdir) +top_srcdir = $(topsrcdir) + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_URL = @PACKAGE_URL@ + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +FGREP = @FGREP@# Requires AC_PROG_FGREP +GPERF = @GPERF@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +M4 = @M4@ +M4_DEFINES = @M4_DEFINES@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@# Requires AC_PROG_MKDIR_P +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJCOPY = @OBJCOPY@ +OBJDUMP = @OBJDUMP@ +STRINGS = @STRINGS@ +STRIP = @STRIP@ +XGETTEXT = @XGETTEXT@ + +INSTALL_SCRIPT = @INSTALL_SCRIPT@# Requires AC_PROG_INSTALL +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ diff --git a/automake.mk.am b/automake.mk.am new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/automake.mk.am diff --git a/build-aux/Makefile.README.old.txt b/build-aux/Makefile.README.old.txt new file mode 100644 index 0000000000..b0a09651bf --- /dev/null +++ b/build-aux/Makefile.README.old.txt @@ -0,0 +1,161 @@ +Obsolete +======== + +The following was written for previous versions of Autothing. I'm leaving it +here for now because I'll likely canibalize it for other bits of documentation, +either for Autothing itself, the `files` module, or the `dist` module. + +High-level overview +------------------- + +Now, what this does for you is: + + (search for the paper +"Recursive Make Considered Harmful") As harmful as recursive make is, +it's historically been difficult to to write non-recursive Makefiles. +This makes it easy. + +It also makes it easy to follow the GNU standards for your makefiles: +it takes care of this entire table of .PHONY targets for you: + +| this | and this | are aliases for this | +|------+------------------+--------------------------------------------------------| +| all | build | $(outdir)/build | +| | install | $(outdir)/install | +| | uninstall | $(outdir)/uninstall | +| | mostlyclean | $(outdir)/mostlyclean | +| | clean | $(outdir)/clean | +| | distclean | $(outdir)/distclean | +| | maintainer-clean | $(outdir)/maintainer-clean | +| | check | $(outdir)/check (not implemented for you) | +| | dist | $(topoutdir)/$(PACKAGE)-$(VERSION).tar.gz (not .PHONY) | + +(You are still responsible for implementing the `$(outdir)/check` +target in each of your Makefiles.) + +What you have to do is: + +In each source directory, you write a `Makefile`, very similarly to if +you were writing for plain GNU Make, with + + topoutdir ?= ... + topsrcdir ?= ... + include $(topsrcdir)/build-aux/Makefile.head.mk + + # your makefile + + include $(topsrcdir)/build-aux/Makefile.tail.mk + +And in the top-level source directory, Write your own helper makefiles +that get included: + - `common.once.head.mk`: before parsing any of your Makefiles + - `common.each.head.mk`: before parsing each of your Makefiles + - `common.each.tail.mk`: after parsing each of your Makefiles + - `common.each.tail.mk`: after parsing all of your Makefiles + +The `common.*.mk` makefiles are nice for including generic pattern +rules and variables that aren't specific to a directory. + +You're probably thinking that this sounds too good to be true! +Unfortunately, there are two major deviations from writing a plain +recursive Makefile: + + 1. all targets and prerequisites (including .PHONY targets!) need to + be prefixed with + `$(srcdir)`/`$(outdir)`/`$(topsrcdir)`/`$(topoutdir)`. + * sub-gotcha: this means that if a pattern rule has a + prerequisite that may be in srcdir or outdir, then it must be + specified twice, once for each case. + 2. if a prerequisite is in a directory "owned" by another Makefile, + you must filter the pathname through `am_path`: + `$(call am_path,YOUR_PATH)`. Further, that path must NOT contain + a `..` segment; if you need to refer to a sibling directory, do it + relative to `$(topoutdir)` or `$(topsrcdir)`. + +Telling automake about your program +----------------------------------- + +You tell automake what to do for you by setting some variables. They +are all prefixed with `am_`; this prefix may be changed by editing the +`_am` variable at the top of `automake.head.mk`. + +The exception to this is the `am_path` variable, which is a macro that +is used to make a list of filenames relative to the appropriate +directory, because unlike normal GNU (Auto)Make, `$(outdir)` isn't +nescessarily equal to `.`. See above. + +There are several commands that generate files; simply record the list +of files that each command generates as the following variable +variables: + +| Variable | Create Command | Delete Command | Description | Relative to | +|--------------+----------------+-----------------------------+-----------------------------------+-------------| +| am_src_files | emacs | rm -rf . | Files that the developer writes | srcdir | +| am_gen_files | ??? | make maintainer-clean | Files the developer compiles | srcdir | +| am_cfg_files | ./configure | make distclean | Users' compile-time configuration | outdir | +| am_out_files | make all | make mostlyclean/make clean | Files the user compiles | outdir | +| am_sys_files | make install | make uninstall | Files the user installs | DESTDIR | + +In addition, there are two more variables that control not how files +are created, but how they are deleted: + +| Variable | Affected command | Description | Relative to | +|----------------+------------------+------------------------------------------------+-------------| +| am_clean_files | make clean | A list of things to `rm` in addition to the | outdir | +| | | files in `$(am_out_files)`. (Example: `*.o`) | | +|----------------+------------------+------------------------------------------------+-------------| +| am_slow_files | make mostlyclean | A list of things that (as an exception) should | outdir | +| | | _not_ be deleted. (otherwise, `mostlyclean` | | +| | | is the same as `clean`) | | + +Finally, there are two variables that express the relationships +between directories: + +| Variable | Description | +|------------+---------------------------------------------------------| +| am_subdirs | A list of other directories (containing Makefiles) that | +| | may be considered "children" of this | +| | directory/Makefile; building a phony target in this | +| | directory should also build it in the subdirectory. | +| | They are not necesarily actually subdirectories of this | +| | directory in the filesystem. | +|------------+---------------------------------------------------------| +| am_depdirs | A list of other directories (containing Makefiles) that | +| | contain or generate files that are dependencies of | +| | targets in this directory. They are not necesarily | +| | actually subdirectories of this directory in the | +| | filesystem. Except for files that are dependencies of | +| | files in this directory, things in the dependency | +| | directory will not be built. | + +Tips, notes +----------- + +I like to have the first (non-comment) line in a Makefile be: + + include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk + +(adjusting the number of `../` sequences as nescessary). Then, my +(user-editable) `config.mk` is of the form: + + ifeq ($(topsrcdir),) + topoutdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) + topsrcdir := $(topoutdir) + + # your configuration + + endif + +If the package has a `./configure` script, then I have it modifiy +topsrcdir as necessary, as well as modifying whatever other parts of +the configuration. All of the configuration lives in `config.mk`; +`./configure` doesn't modify any `Makefile`s, it just generates +`config.mk`, and copies (or (sym?)link?) every `$(srcdir)/Makefile` to +`$(outdir)/Makefile`. + +---- +Copyright (C) 2016 Luke Shumaker + +This documentation file is placed into the public domain. If that is +not possible in your legal system, I grant you permission to use it in +absolutely every way that I can legally grant to you. diff --git a/build-aux/Makefile.README.txt b/build-aux/Makefile.README.txt new file mode 100644 index 0000000000..3be7a9d878 --- /dev/null +++ b/build-aux/Makefile.README.txt @@ -0,0 +1,112 @@ +# -*- Mode: markdown -*- + +Autothing 3: The smart way to write GNU Makefiles +================================================= + +Autothing is a thing that does things automatically. + +Ok, more helpfully: Autothing is a pair of .mk Makefile fragments that +you can `include` from your Makefiles to make them easier to write; +specifically, it makes it _easy_ to write non-recursive Makefiles--and +ones that are similar to plain recursive Makefiles, at that! + +Synopsis +-------- + +Write your makefiles of the form: + + topsrcdir ?= ... + topoutdir ?= ... + at.Makefile ?= Makefile # Optional + include $(topsrcdir)/build-aux/Makefile.head.mk + + $(outdir)/%.o: $(srcdir)/%.c: + $(CC) -c -o $@ $< + + $(outdir)/hello: $(outdir)/hello.o + + at.subdirs = ... + at.targets = ... + + include $(topsrcdir)/build-aux/Makefile.tail.mk + +This is similar to, but not quite, the comfortable way that you probably +already write your Makefiles. + +Details +------- + +There are two fundamental things that Autothing provides: + + 1. Variable namespacing + 2. Tools for dealing with paths + +The first is important because globals are bad for composability. + +The second is important because GNU Make is too dumb to know that +`foo/bar/../baz` == `foo/baz`. + +Then, there's something that maybe doesn't belong, but I didn't have the heart +to cut it out: + + 3. A module (plugin) system. + +The module system is "important" because there are very often common bits that +you want to be included in every Makefile, and this gives some structure to +that. + +Requirements: + - A version of GNU Make that supports `undefine`. (TODO: check which version + of GNU Make introduced this feature) + +Inputs: + - In each `Makefile`: + - Before `Makefile.head.mk`: + - Variable (mandatory) : `topoutdir` + - Variable (mandatory) : `topsrcdir` (must not be a subdirectory of `$(topoutdir)`) + - Variable (optional) : `at.Makefile` (Default: `Makefile`) + - Between `Makefile.head.mk` and `Makefile.tail.mk`: + - Variable: `at.targets` (Default: empty) + - Variable: `at.subdirs` (Default: empty) + - Files: + - `${topsrcdir}/build-aux/Makefile.{each,once}.{head,tail}/*.mk` + +Outputs: + - Global: + - Variable (function): `$(call at.is_subdir, parent, child)` + - Variable (function): `$(call at.is_strict_subdir, parent, child)` + - Variable (function): `$(call at.relbase, parent, children...)` + - Variable (function): `$(call at.relto, parent, children...)` + - Variable (function): `$(call at.path, paths...)` + - Variable (function): `$(call at.out2src, paths...)` + - Variable (function): `$(call at.addprefix, prefix, paths...)` + - Per-directory: + - Variable: `$(outdir)` + - Variable: `$(srcdir)` + +TODO: actually explain things. + +Motivation/Exposition +--------------------- + +This section needs rewritten. Or really just written. + +Other projects like GNU Automake were created to plaster over differences +between make(1) implementations; however, this isn't all that Automake +provides, it also makes it easy to do complex things that users want, or the +GNU Coding Standards require. That's silly. + +Autothing does depend on GNU Make; other make(1) implementations will +not work. However, if you are open to adding GNU Make as a +dependency, then Autothing should obviate the need for GNU Automake, +while also making your Makefiles better. + + Peter Miller (1997) "Recursive Make Considered Harmful" + <http://aegis.sourceforge.net/auug97.pdf> + +---- +Copyright (C) 2016 Luke Shumaker + +This documentation file is placed into the public domain. If that is +not possible in your legal system, I grant you permission to use it in +absolutely every way that I can legally grant to you. diff --git a/build-aux/Makefile.each.head/00-am.mk b/build-aux/Makefile.each.head/00-am.mk new file mode 100644 index 0000000000..09a2d3c5ac --- /dev/null +++ b/build-aux/Makefile.each.head/00-am.mk @@ -0,0 +1,3 @@ +am.CFLAGS ?= +am.CPPFLAGS ?= +am.subdirs ?= diff --git a/build-aux/Makefile.each.head/00-dist.mk b/build-aux/Makefile.each.head/00-dist.mk new file mode 100644 index 0000000000..924d79aa7c --- /dev/null +++ b/build-aux/Makefile.each.head/00-dist.mk @@ -0,0 +1,23 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.dist.depends += files + +ifeq ($(outdir),$(topoutdir)) +files.out.int += $(addprefix $(dist.pkgname)-*,$(dist.exts) .tar /) .tmp.$(dist.pkgname)-*/ +endif + +$(outdir)/dist: $(addprefix $(topoutdir)/$(dist.pkgname)-$(dist.version),$(dist.exts)) +.PHONY: $(outdir)/dist diff --git a/build-aux/Makefile.each.head/00-files.mk b/build-aux/Makefile.each.head/00-files.mk new file mode 100644 index 0000000000..c4820cfb1f --- /dev/null +++ b/build-aux/Makefile.each.head/00-files.mk @@ -0,0 +1,32 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +files.src.src ?= +files.src.int ?= +files.src.cfg ?= +files.src.gen ?= + +files.out.slow ?= +files.out.int ?= +files.out.cfg ?= + +# define files.out.$(group) files.sys.$(group) for every files.group +$(eval $(foreach t,$(files.groups),files.out.$t ?=$(at.nl)files.sys.$t ?=$(at.nl))) + +# define files.src, files.out, and files.sys aggregates +$(eval \ + files.src = $$(sort $(foreach _files.v,$(filter files.src.%,$(.VARIABLES)),$$($(_files.v))))$(at.nl)\ + files.out = $$(sort $(foreach _files.v,$(filter files.out.%,$(.VARIABLES)),$$($(_files.v))))$(at.nl)\ + files.sys = $$(sort $(foreach _files.v,$(filter files.sys.%,$(.VARIABLES)),$$($(_files.v))))) diff --git a/build-aux/Makefile.each.head/00-gitfiles.mk b/build-aux/Makefile.each.head/00-gitfiles.mk new file mode 100644 index 0000000000..b872912015 --- /dev/null +++ b/build-aux/Makefile.each.head/00-gitfiles.mk @@ -0,0 +1,20 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +ifeq ($(abspath $(topsrcdir)),$(abspath $(srcdir))) +files.src.gen += $(gitfiles.file) +endif + +files.src.src += $(_gitfiles.dir.src) diff --git a/build-aux/Makefile.each.head/00-nested.mk b/build-aux/Makefile.each.head/00-nested.mk new file mode 100644 index 0000000000..4325825353 --- /dev/null +++ b/build-aux/Makefile.each.head/00-nested.mk @@ -0,0 +1,16 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +nested.subdirs ?= diff --git a/build-aux/Makefile.each.head/00-sd.mk b/build-aux/Makefile.each.head/00-sd.mk new file mode 100644 index 0000000000..43d1625245 --- /dev/null +++ b/build-aux/Makefile.each.head/00-sd.mk @@ -0,0 +1,6 @@ +sd.CFLAGS ?= +sd.CPPFLAGS ?= +sd.LDFLAGS ?= +sd.LIBTOOLFLAGS ?= + +sd.sed_files ?= diff --git a/build-aux/Makefile.each.tail/00-dist.mk b/build-aux/Makefile.each.tail/00-dist.mk new file mode 100644 index 0000000000..bc2a3d5dd1 --- /dev/null +++ b/build-aux/Makefile.each.tail/00-dist.mk @@ -0,0 +1 @@ +_dist.files := $(strip $(_dist.files) $(call at.addprefix,$(srcdir),$(files.src))) diff --git a/build-aux/Makefile.each.tail/00-mod.mk b/build-aux/Makefile.each.tail/00-mod.mk new file mode 100644 index 0000000000..d6514dd93a --- /dev/null +++ b/build-aux/Makefile.each.tail/00-mod.mk @@ -0,0 +1,44 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +$(outdir)/at-variables $(outdir)/at-variables-local: _mod.VARIABLES := $(filter-out $(call quote.pattern,$(_at.VARIABLES)),$(.VARIABLES)) +$(outdir)/at-variables-global: + @printf '%s\n' $(call quote.shell-each,$(sort $(.VARIABLES))) +$(outdir)/at-variables-local: + @printf '%s\n' $(call quote.shell-each,$(sort $(_mod.VARIABLES))) +$(outdir)/at-variables $(outdir)/at-values: + @printf '%s\n' $(call quote.shell-each,$(sort $(.VARIABLES),$(_mod.VARIABLES))) +$(outdir)/at-variables/%: + @printf '%s\n' $(call quote.shell,$($*)) +$(outdir)/at-values/%: + @printf '%s\n' $(call quote.shell,$(value $*)) +.PHONY: $(addprefix $(outdir)/, at-variables-global at-variables-local at-variables at-values) +at.targets += $(addprefix $(outdir)/, at-variables-global at-variables-local at-variables at-values at-variables/% at-values/%) + +$(outdir)/at-modules: + @printf 'Autothing modules used in this project:\n' + @printf ' - %s\n' $(foreach _mod.tmp,$(_mod.modules),$(call quote.shell,$(_mod.tmp) $(mod.$(_mod.tmp).description) $(if $(mod.$(_mod.tmp).doc),(more))))|column -t -s $$'\t' +$(addprefix $(outdir)/at-modules/,$(_mod.modules)): $(outdir)/at-modules/%: + @printf 'Name : %s\n' $(call quote.shell,$*) + @printf 'Description : %s\n' $(call quote.shell,$(mod.$*.description)) + @echo 'Depends on :' $(sort $(mod.$*.depends)) + @echo 'Files :' + @printf ' %s\n' $(call quote.shell-each,$(call at.relto,$(topsrcdir),$(sort $(mod.$*.files) $(wildcard $(topsrcdir)/build-aux/Makefile.*/??-$*.mk)))) + @echo 'Documentation :' + @printf '%s\n' $(call quote.shell,$(mod.$*.doc)) | sed -e 's/^# / /' -e 's/^#//' + +$(outdir)/at-noop: +.PHONY: $(outdir)/at-noop +at.targets += $(outdir)/at-noop diff --git a/build-aux/Makefile.each.tail/00-var.mk b/build-aux/Makefile.each.tail/00-var.mk new file mode 100644 index 0000000000..c2fd9d7001 --- /dev/null +++ b/build-aux/Makefile.each.tail/00-var.mk @@ -0,0 +1,22 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.var.depends += quote write-ifchanged + +$(outdir)/.var.%: _var.FORCE + @printf '%s' $(call quote.shell,$($*)) | sed 's/^/#/' | $(WRITE_IFCHANGED) $@ +-include $(wildcard $(outdir)/.var.*) + +at.targets += $(addprefix $(outdir)/,.var.%) diff --git a/build-aux/Makefile.each.tail/10-files.mk b/build-aux/Makefile.each.tail/10-files.mk new file mode 100644 index 0000000000..8ab187b401 --- /dev/null +++ b/build-aux/Makefile.each.tail/10-files.mk @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# Add some more defaults to the *_files variables + +$(eval \ + $(foreach _files.var,$(filter files.src files.src.%,$(.VARIABLES)),\ + _$(_files.var) = $$(call at.addprefix,$$(srcdir),$$($(_files.var)))$(at.nl))\ + $(foreach _files.var,$(filter files.out files.out.%,$(.VARIABLES)),\ + _$(_files.var) = $$(call at.addprefix,$$(outdir),$$($(_files.var)))$(at.nl))\ + $(foreach _files.var,$(filter files.sys files.sys.%,$(.VARIABLES)),\ + _$(_files.var) = $$(addprefix $$(DESTDIR),$$($(_files.var)))$(at.nl))) + +_files.all = $(_files.src) $(_files.out) $(_files.sys) + +at.targets += $(subst *,%,$(_files.all)) + +# Creative targets +$(outdir)/$(files.generate): $(_files.src.gen) $(_files.src.cfg) +$(outdir)/install: $(_files.sys.$(files.default)) +$(outdir)/installdirs: $(sort $(dir $(_files.sys))) +$(eval \ + $(foreach _files.g,$(files.groups),\ + $$(outdir)/$(_files.g): $$(_files.out.$(_files.g))$(at.nl))\ + $(foreach _files.g,$(filter-out $(files.default),$(files.groups)),\ + $$(outdir)/install-$(_files.g): $$(_files.sys.$(_files.g)))$(at.nl)) + +# Destructive targets +_files.uninstall = $(_files.sys) +_files.mostlyclean = $(filter-out $(_files.out.slow) $(_files.out.cfg),$(_files.out)) +_files.clean = $(filter-out $(_files.out.cfg),$(_files.out)) +_files.distclean = $(_files.out) +$(addprefix $(outdir)/,uninstall mostlyclean clean distclean): %: %-hook + $(RM) -- $(sort $(filter-out %/,$(_files.$(@F)))) + $(RM) -r -- $(sort $(filter %/,$(_files.$(@F)))) + $(RMDIR_P) -- $(sort $(dir $(_files.$(@F)))) +_files.maintainer-clean = $(filter-out $(_files.src.cfg) $(_files.src.src),$(_files.src)) +_files.$(files.vcsclean) = $(filter-out $(_files.src.src),$(_files.src)) +$(addprefix $(outdir)/,maintainer-clean $(files.vcsclean)): $(outdir)/%: $(outdir)/distclean $(outdir)/%-hook + @echo 'This command is intended for maintainers to use; it' + @echo 'deletes files that may need special tools to rebuild.' + $(RM) -- $(sort $(filter-out %/,$(_files.$(@F)))) + $(RM) -r -- $(sort $(filter %/,$(_files.$(@F)))) + $(RMDIR_P) -- $(sort $(dir $(_files.$(@F)))) +$(foreach t,uninstall mostlyclean clean distclean maintainer-clean $(files.vcsclean), $(outdir)/$t-hook):: +.PHONY: $(foreach t,uninstall mostlyclean clean distclean maintainer-clean $(files.vcsclean), $(outdir)/$t-hook) diff --git a/build-aux/Makefile.each.tail/10-nested.mk b/build-aux/Makefile.each.tail/10-nested.mk new file mode 100644 index 0000000000..5e5a40b921 --- /dev/null +++ b/build-aux/Makefile.each.tail/10-nested.mk @@ -0,0 +1,20 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +$(eval $(foreach _tmp.nested,$(nested.targets),\ + $$(outdir)/$(_tmp.nested): $$(addsuffix /$(_tmp.nested),$$(call at.addprefix,$$(outdir),$$(nested.subdirs)))$(at.nl))) +.PHONY: $(addprefix $(outdir)/,$(nested.targets)) + +at.subdirs += $(nested.subdirs) diff --git a/build-aux/Makefile.each.tail/50-sd.mk b/build-aux/Makefile.each.tail/50-sd.mk index c6c05cdff7..9917a0ce54 100644 --- a/build-aux/Makefile.each.tail/50-sd.mk +++ b/build-aux/Makefile.each.tail/50-sd.mk @@ -20,38 +20,75 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk -%-from-name.gperf: %-list.txt +mod.sd.depends += files am lt + +-include $(wildcard $(outdir)/$(DEPDIR)/*.P*) + +files.out.int += *.o *.lo *.so .deps/ .libs/ +files.out.int += *-list.txt +files.out.int += *-from-name.gperf +files.out.int += *-from-name.h +files.out.int += *-to-name.h +files.out.int += *-gperf.c + +$(outdir)/%.o : $(srcdir)/%.c $(topoutdir)/config.h | $(outdir)/$(DEPDIR); $(AM_V_CC)$(sd.COMPILE) -c -o $@ $< +$(outdir)/%.o : $(outdir)/%.c $(topoutdir)/config.h | $(outdir)/$(DEPDIR); $(AM_V_CC)$(sd.COMPILE) -c -o $@ $< +$(outdir)/%.lo: $(srcdir)/%.c $(topoutdir)/config.h | $(outdir)/$(DEPDIR); $(AM_V_CC)$(sd.LTCOMPILE) -c -o $@ $< +$(outdir)/%.lo: $(outdir)/%.c $(topoutdir)/config.h | $(outdir)/$(DEPDIR); $(AM_V_CC)$(sd.LTCOMPILE) -c -o $@ $< + +$(outdir)/$(DEPDIR): + $(AM_V_at)$(MKDIR_P) $@ + +$(outdir)/%.la: + @if test $(words $(lt.lib.files.all)) = 0; then echo 'Cannot link library with no dependencies: $@' >&2; exit 1; fi + @if test $(origin am.LDFLAGS) = undefined; then echo 'Cannot link library with undefined am.LDFLAGS: $@' >&2; exit 1; fi + $(AM_V_CCLD)$(sd.LINK) $(if $(lt.lib.rpath),-rpath $(lt.lib.rpath)) $(lt.lib.files.ld) + $(AM_V_at)$(lt.lib.post) +$(addprefix $(outdir)/,$(am.out_PROGRAMS)): $(outdir)/%: + @if test $(words $(lt.exe.files.all)) = 0; then echo 'Cannot link executable with no dependencies: $@' >&2; exit 1; fi + @if test $(origin am.LDFLAGS) = undefined; then echo 'Cannot link executable with undefined am.LDFLAGS: $@' >&2; exit 1; fi + $(AM_V_CCLD)$(sd.LINK) $(lt.exe.files.ld) + +# Stupid test that everything purported to be exported really is +$(outdir)/test-lib%-sym.c: $(srcdir)/lib%.sym + $(AM_V_GEN){\ + printf '#include <stdio.h>\n' && \ + printf '#include "%s"\n' $(notdir $(filter %.h, $^)) && \ + printf 'void* functions[] = {\n' && \ + sed -r -n 's/^ +([a-zA-Z0-9_]+);/\1,/p' $< && \ + printf '};\nint main(void) {\n' && \ + printf 'unsigned i; for (i=0;i<sizeof(functions)/sizeof(void*);i++) printf("%%p\\n", functions[i]);\n' && \ + printf 'return 0; }\n' && \ + :; } > $@ + +_sd.files_in = $(foreach f,$(files.sys),$(if $(filter $1,$(patsubst %/,%,$(dir $f))),$(DESTDIR)$f)) + +$(outdir)/%-from-name.gperf: $(outdir)/%-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct $(notdir $*)_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, %s\n", $$1, $$1 }' <$< >$@ -%-from-name.h: %-from-name.gperf +$(outdir)/%-from-name.h: $(outdir)/%-from-name.gperf $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_$(notdir $*) -H hash_$(notdir $*)_name -p -C <$< >$@ -$(outdir)/%: sysctl.d/%.in - $(SED_PROCESS) +ifeq ($(sd.sed_files),) +EXTRA_DIST ?= +sd.sed_files += $(notdir $(patsubst %.in,%,$(filter %.in,$(EXTRA_DIST)))) +endif +ifneq ($(sd.sed_files),) +$(addprefix $(outdir)/,$(sd.sed_files)): $(outdir)/%: $(srcdir)/%.in + $(sd.SED_PROCESS) +endif -%.sh: %.sh.in - $(SED_PROCESS) - $(AM_V_GEN)chmod +x $@ +#$(outdir)/%.sh: $(srcdir)/%.sh.in +# $(SED_PROCESS) +# $(AM_V_GEN)chmod +x $@ -$(outdir)/%.c: src/%.gperf +$(outdir)/%.c: $(srcdir)/%.gperf + $(AM_V_GPERF)$(GPERF) < $< > $@ +$(outdir)/%.c: $(outdir)/%.gperf $(AM_V_GPERF)$(GPERF) < $< > $@ -$(outdir)/%: src/%.m4 $(top_builddir)/config.status +$(outdir)/%: $(srcdir)/%.m4 $(top_builddir)/config.status + $(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@ +$(outdir)/%: $(outdir)/%.m4 $(top_builddir)/config.status $(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@ - -# Stupid test that everything purported to be exported really is -define generate-sym-test - $(AM_V_at)printf '#include <stdio.h>\n' > $@ - $(AM_V_at)printf '#include "%s"\n' $(notdir $(filter %.h, $^)) >> $@ - $(AM_V_at)printf 'void* functions[] = {\n' >> $@ - $(AM_V_GEN)sed -r -n 's/^ +([a-zA-Z0-9_]+);/\1,/p' $< >> $@ - $(AM_V_at)printf '};\nint main(void) {\n' >> $@ - $(AM_V_at)printf 'unsigned i; for (i=0;i<sizeof(functions)/sizeof(void*);i++) printf("%%p\\n", functions[i]);\n' >> $@ - $(AM_V_at)printf 'return 0; }\n' >> $@ -endef - - -include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/build-aux/Makefile.each.tail/60-am.mk b/build-aux/Makefile.each.tail/60-am.mk new file mode 100644 index 0000000000..38ebc10ea9 --- /dev/null +++ b/build-aux/Makefile.each.tail/60-am.mk @@ -0,0 +1,6 @@ +$(eval $(value _am.pass0)) +$(eval $(value _am.pass1)) +$(eval $(value _am.pass2)) +$(eval $(value _am.pass3)) +$(eval $(value _am.pass4)) +$(eval $(value _am.pass5)) diff --git a/build-aux/Makefile.each.tail/60-amcfg.mk b/build-aux/Makefile.each.tail/60-amcfg.mk new file mode 100644 index 0000000000..ae9d25457b --- /dev/null +++ b/build-aux/Makefile.each.tail/60-amcfg.mk @@ -0,0 +1,52 @@ +$(DESTDIR)$(includedir)/%.h: $(srcdir)/include/%.h + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(sysusersdir)/%.conf: $(srcdir)/%.sysusers + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(sysusersdir)/%.conf: $(outdir)/%.sysusers + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(sysctldir)/%.conf: $(srcdir)/%.sysctl + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(sysctldir)/%.conf: $(outdir)/%.sysctl + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(tmpfilesdir)/%.conf: $(srcdir)/%.tmpfiles + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(tmpfilesdir)/%.conf: $(outdir)/%.tmpfiles + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(pamconfdir)/%: $(srcdir)/%.pam + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(pamconfdir)/%: $(outdir)/%.pam + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(bashcompletiondir)/%: $(srcdir)/%.completion.bash + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(bashcompletiondir)/%: $(outdir)/%.completion.bash + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(zshcompletiondir)/_%: $(srcdir)/%.completion.zsh + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(zshcompletiondir)/_%: $(outdir)/%.completion.zsh + @$(NORMAL_INSTALL) + $(am.INSTALL) + +$(DESTDIR)$(xinitrcdir)/%.sh: $(srcdir)/%.xinitrc + @$(NORMAL_INSTALL) + $(am.INSTALL) +$(DESTDIR)$(xinitrcdir)/%.sh: $(outdir)/%.xinitrc + @$(NORMAL_INSTALL) + $(am.INSTALL) diff --git a/build-aux/Makefile.each.tail/70-sdcompletion.mk b/build-aux/Makefile.each.tail/70-sdcompletion.mk new file mode 100644 index 0000000000..22a0d1be62 --- /dev/null +++ b/build-aux/Makefile.each.tail/70-sdcompletion.mk @@ -0,0 +1,23 @@ +mod.sdcompletion.description = (systemd) shell completion +mod.sdcompletion.depends += am +define mod.sdcompletion.doc +# Inputs: +# - Directory variable : `rootbin_PROGRAMS` +# - Directory variable : `bin_PROGRAMS` +# - Directory variable : `dist_bin_SCRIPTS` +# - Directory variable : `bashcompletion_DATA` +# - Directory variable : `zshcompletion_DATA` +# Outputs: +# - Directory variable : `dist_bashcompletion_DATA` +# - Directory variable : `dist_zshcompletion_DATA` +endef +mod.sdcompletion.doc := $(value mod.sdcompletion.doc) + +rootbin_PROGRAMS ?= +bin_PROGRAMS ?= +dist_bin_SCRIPTS ?= +bashcompletion_DATA ?= +zshcompletion_DATA ?= +# We use `dist_` to trick `am` into not putting it in `am.out_DATA` +dist_bashcompletion_DATA := $(sort $(bashcompletion_DATA) $(rootbin_PROGRAMS) $(bin_PROGRAMS) $(dist_bin_SCRIPTS)) +dist_zshcompletion_DATA := $(sort $(zshcompletion_DATA) $(addprefix _,$(rootbin_PROGRAMS) $(bin_PROGRAMS) $(dist_bin_SCRIPTS))) diff --git a/build-aux/Makefile.each.tail/70-sdman.mk b/build-aux/Makefile.each.tail/70-sdman.mk index 2e7e0d4e39..ccbb1bd4e1 100644 --- a/build-aux/Makefile.each.tail/70-sdman.mk +++ b/build-aux/Makefile.each.tail/70-sdman.mk @@ -20,103 +20,54 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk +_sdman.man_xml = $(foreach _sdman.tmp,$(filter %.xml,$(files.src.src)),$(if $(findstring /,$(_sdman.tmp)),,$(_sdman.tmp))) -MANPAGES = -MANPAGES_ALIAS = +ifneq ($(_sdman.man_xml),) -include Makefile-man.am +$(srcdir)/Makefile-man.mk: $(topsrcdir)/tools/make-man-rules.py $(topsrcdir)/tools/xml_helper.py $(topsrcdir)/man/custom-entities.ent.in $(outdir)/.var._sdman.man_xml $(call at.addprefix,$(srcdir),$(_sdman.man_xml)) + $(AM_V_GEN)$(PYTHON) $< $(filter %.xml,$^) | $(WRITE_ATOMIC) $@ +files.src.gen += Makefile-man.mk -.PHONY: man update-man-list -man: $(MANPAGES) $(MANPAGES_ALIAS) $(HTML_FILES) $(HTML_ALIAS) +sdman.MANPAGES = +sdman.MANPAGES_ALIAS = +#-include $(srcdir)/Makefile-man.mk -XML_FILES = \ - ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}} -HTML_FILES = \ - ${XML_FILES:.xml=.html} -HTML_ALIAS = \ - ${patsubst %.1,%.html,${patsubst %.3,%.html,${patsubst %.5,%.html,${patsubst %.7,%.html,${patsubst %.8,%.html,$(MANPAGES_ALIAS)}}}}} +_sdman.XML_FILES = \ + ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(sdman.MANPAGES)}}}}} +_sdman.HTML_FILES = \ + ${_sdman.XML_FILES:.xml=.html} +_sdman.HTML_ALIAS = \ + ${patsubst %.1,%.html,${patsubst %.3,%.html,${patsubst %.5,%.html,${patsubst %.7,%.html,${patsubst %.8,%.html,$(sdman.MANPAGES_ALIAS)}}}}} ifneq ($(ENABLE_MANPAGES),) man_MANS = \ - $(MANPAGES) \ - $(MANPAGES_ALIAS) + $(sdman.MANPAGES) \ + $(sdman.MANPAGES_ALIAS) noinst_DATA += \ - $(HTML_FILES) \ - $(HTML_ALIAS) \ - docs/html/man + $(_sdman.HTML_FILES) \ + $(_sdman.HTML_ALIAS) endif # ENABLE_MANPAGES -CLEANFILES += \ - $(man_MANS) \ - $(HTML_FILES) \ - $(HTML_ALIAS) \ - docs/html/man +at.subdirs += $(abspath $(topoutdir)/man) -$(outdir)/man: - $(AM_V_LN)$(LN_S) -f ../../man $@ +$(outdir)/%.1: $(srcdir)/%.xml $(topsrcdir)/man/custom-man.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_MAN) -$(outdir)/index.html: man/systemd.index.html - $(AM_V_LN)$(LN_S) -f systemd.index.html $@ +$(outdir)/%.3: $(srcdir)/%.xml $(topsrcdir)/man/custom-man.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_MAN) -ifneq ($(HAVE_PYTHON),) -noinst_DATA += \ - man/index.html -endif # HAVE_PYTHON - -CLEANFILES += \ - man/index.html - -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) -NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -SOURCE_XML_FILES = ${patsubst %,$(top_srcdir)/%,$(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES))} - -# This target should only be run manually. It recreates Makefile-man.am -# file in the source directory based on all man/*.xml files. Run it after -# adding, removing, or changing the conditional in a man page. -update-man-list: $(top_srcdir)/tools/make-man-rules.py $(XML_GLOB) man/custom-entities.ent - $(AM_V_GEN)$(PYTHON) $< $(XML_GLOB) > $(top_srcdir)/Makefile-man.tmp - $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am - @echo "Makefile-man.am has been regenerated" - -$(outdir)/systemd.index.xml: $(top_srcdir)/tools/make-man-index.py $(NON_INDEX_XML_FILES) - $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) - -$(outdir)/systemd.directives.xml: $(top_srcdir)/tools/make-directive-index.py man/custom-entities.ent $(SOURCE_XML_FILES) - $(AM_V_GEN)$(PYTHON) $< $@ $(SOURCE_XML_FILES) - -CLEANFILES += \ - man/systemd.index.xml \ - man/systemd.directives.xml - -EXTRA_DIST += \ - $(filter-out man/systemd.directives.xml man/systemd.index.xml,$(XML_FILES)) \ - tools/make-man-index.py \ - tools/make-man-rules.py \ - tools/make-directive-index.py \ - tools/xml_helper.py \ - man/glib-event-glue.c - -$(outdir)/%.1: man/%.xml man/custom-man.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_MAN) - -$(outdir)/%.3: man/%.xml man/custom-man.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_MAN) - -$(outdir)/%.5: man/%.xml man/custom-man.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_MAN) - -$(outdir)/%.7: man/%.xml man/custom-man.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_MAN) +$(outdir)/%.5: $(srcdir)/%.xml $(topsrcdir)/man/custom-man.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_MAN) -$(outdir)/%.8: man/%.xml man/custom-man.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_MAN) +$(outdir)/%.7: $(srcdir)/%.xml $(topsrcdir)/man/custom-man.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_MAN) -$(outdir)/%.html: man/%.xml man/custom-html.xsl man/custom-entities.ent - $(XSLTPROC_PROCESS_HTML) +$(outdir)/%.8: $(srcdir)/%.xml $(topsrcdir)/man/custom-man.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_MAN) +$(outdir)/%.html: $(srcdir)/%.xml $(topsrcdir)/man/custom-html.xsl $(topoutdir)/man/custom-entities.ent + $(_sdman.XSLTPROC_PROCESS_HTML) -include $(topsrcdir)/build-aux/Makefile.tail.mk +endif # _sdman.man_xml diff --git a/build-aux/Makefile.head.mk b/build-aux/Makefile.head.mk new file mode 100644 index 0000000000..c2ce3075b2 --- /dev/null +++ b/build-aux/Makefile.head.mk @@ -0,0 +1,118 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +_at.MAKEFILE_LIST ?= +_at.MAKEFILE_LIST := $(strip $(_at.MAKEFILE_LIST) $(abspath $(lastword $(filter-out %.mk,$(MAKEFILE_LIST))))) + +# This bit only gets evaluated once, at the very beginning +ifeq ($(origin _at.NO_ONCE),undefined) + +# Internal functions ################################################### + +# These 4 functions are all $(call _at.func,parent,child) +_at.is_strict_subdir = $(filter $(abspath $1)/%,$(abspath $2)) +_at.is_subdir = $(filter $(abspath $1)/%,$(abspath $2)/.) +_at.relbase = $(strip \ + $(if $(call _at.is_subdir,$1,$2), \ + $(patsubst %/.,$(patsubst $(abspath $1)/%,%,$(abspath $2)/.)), \ + $(abspath $2))) +_at.relto = $(strip \ + $(if $(call _at.is_subdir,$1,$2), \ + $(patsubst %/.,%,$(patsubst $(abspath $1)/%,%,$(abspath $2)/.)), \ + ../$(call _at.relto,$(dir $1),$2))) + +# These 3 functions only take one operand; we define public multi-operand +# versions below. +_at.path = $(strip \ + $(if $(call _at.is_subdir,$(topoutdir),$1), \ + $(patsubst %/.,%,$(topoutdir)/$(call _at.relto,.,$1)), \ + $(if $(call _at.is_subdir,$(topsrcdir),$1), \ + $(patsubst %/.,%,$(topsrcdir)/$(call _at.relto,$(topsrcdir),$1)), \ + $(abspath $1)))) +_at.out2src = $(call _at.path,$(if $(call _at.is_subdir,$(topoutdir),$1),$(topsrcdir)/$(call _at.path,$1),$1)) +_at.addprefix = $(call _at.path,$(if $(filter-out /%,$2),$1/$2,$2)) + +_at.rest = $(wordlist 2,$(words $1),$1) +_at.reverse = $(if $1,$(call _at.reverse,$(_at.rest))) $(firstword $1) + +_at.target_variable = $(_at.target_variable.$(flavor $2)) +_at.target_variable.recursive = $1: private $2 = $(subst $(at.nl),$$(at.nl),$(value $2)) +_at.target_variable.simple = $1: private $2 := $$($2) + +_at.quote-pattern = $(subst %,\%,$(subst \,\\,$1)) + +# Sanity checking ###################################################### +ifeq ($(filter undefine,$(.FEATURES)),) +$(error Autothing: We need a version of Make that supports 'undefine') +endif +ifeq ($(topsrcdir),) +$(error Autothing: topsrcdir must be set (and non-empty) before including Makefile.head.mk) +endif +ifeq ($(topoutdir),) +$(error Autothing: topoutdir must be set (and non-empty) before including Makefile.head.mk) +endif +ifneq ($(call _at.is_strict_subdir,$(topoutdir),$(topsrcdir)),) +$(error Autothing: topsrcdir=$(topsrcdir) must not be a subdirectory of topoutdir=$(topoutdir)) +endif + +# External provisions ################################################## + +# These 4 functions are all $(call _at.func,parent,child) +at.is_subdir = $(_at.is_subdir) +at.is_strict_subdir = $(_at.is_strict_subdir) +#at.relbase = $(if $2,$(shell realpath -sm --relative-base=$1 -- $2)) +at.relbase = $(foreach _at.tmp,$2,$(call _at.relbase,$1,$(_at.tmp))) +#at.relto = $(if $2,$(shell realpath -sm --relative-to=$1 -- $2)) +at.relto = $(foreach _at.tmp,$2,$(call _at.relto,$1,$(_at.tmp))) + +at.path = $(foreach _at.tmp,$1,$(call _at.path,$(_at.tmp))) +at.out2src = $(foreach _at.tmp,$1,$(call _at.out2src,$(_at.tmp))) +at.addprefix = $(foreach _at.tmp,$2,$(call _at.addprefix,$1,$(_at.tmp))) + +define at.nl + + +endef + +# External configuration ############################################### +at.Makefile ?= Makefile + +# Include modules ###################################################### +include $(sort $(wildcard $(topsrcdir)/build-aux/Makefile.once.head/*.mk)) +_at.tmp_targets = +_at.tmp_subdirs = +_at.VARIABLES = +_at.VARIABLES := $(.VARIABLES) + +endif # _at.NO_ONCE + +# This bit gets evaluated for each Makefile + +outdir := $(call _at.path,$(dir $(lastword $(_at.MAKEFILE_LIST)))) +ifeq ($(call _at.is_subdir,$(topoutdir),$(outdir)),) +$(error Autothing: not a subdirectory of topoutdir=$(topoutdir): $(outdir)) +endif + +# Don't use at.out2src because we *know* that $(outdir) is inside $(topoutdir), +# and has already had $(_at.path) called on it. +srcdir := $(call _at.path,$(topsrcdir)/$(outdir)) +ifeq ($(call _at.is_subdir,$(topsrcdir),$(srcdir)),) +$(error Autothing: not a subdirectory of topsrcdir=$(topsrcdir): $(srcdir)) +endif + +at.subdirs = +at.targets = + +include $(sort $(wildcard $(topsrcdir)/build-aux/Makefile.each.head/*.mk)) diff --git a/build-aux/Makefile.once.head/00-gitfiles.mk b/build-aux/Makefile.once.head/00-gitfiles.mk new file mode 100644 index 0000000000..1214e508c4 --- /dev/null +++ b/build-aux/Makefile.once.head/00-gitfiles.mk @@ -0,0 +1,74 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.gitfiles.description = Automatically populate files.src.src from git +mod.gitfiles.depends += files nested write-ifchanged quote +mod.gitfiles.files += $(topsrcdir)/$(gitfiles.file) +define mod.gitfiles.doc +# Inputs: +# - Global variable : `gitfiles.file` (Default: gitfiles.mk) +# - Directory variable : `nested.subdirs` +# - External : git +# Outputs: +# - File : `$(topsrcdir)/$(gitfiles.file)` +# - Directory variable : `files.src.src` +# - Directory variable : `files.src.gen` (only in top dir) +# +# The `files` module has a variable (`files.src.src`) that you (the +# developer) set to list "pure" source files; the type of files that you +# would check into a version control system. Since you are a +# responsible developer, you use a version control system. Since the +# computer is already maintaining a list of these files *in the VCS*, +# why should you--a filthy human--need to also maintain the list? Enter +# gitfiles, which will talk to git to maintain `files.src.src`, but +# won't require that the git repository be distributed to +# installing-users. +# +# If `$(topsrcdir)/.git` exists, then it will generate +# `$(topsrcdir)/$(gitfiles.file)`. Otherwise, it will assume that +# `$(topsrcdir)/$(gitfiles.file)` already exists. +# +# It will use the information in `$(topsrcdir)/$(gitfiles.file)` to +# append to `files.src.src` in each directory +# +# Finally, since the generated `$(topsrcdir)/$(gitfiles.file)` must be +# distributed to users, it is added to $(topsrcdirs)'s `files.src.gen`. +# +# When setting `files.src.src`, it needs to know which files "belong" to +# the current directory directly, and which "belong" to a further +# subdirectory. To do this, it uses an expression involving +# `$(nested.subdirs)`. +# +# While gitfiles sets `files.src.src` very early +# in `each.head`, because `nested.subdirs` might not be set yet, it may +# or may not be safe to use the value of `$(files.src.src)` in your +# Makefile, depending on how you set `nested.subdirs`. +endef +mod.gitfiles.doc := $(value mod.gitfiles.doc) + +gitfiles.file ?= gitfiles.mk + +_gitfiles.all = +-include $(topsrcdir)/$(gitfiles.file) + +ifneq ($(wildcard $(topsrcdir)/.git),) +$(topsrcdir)/$(gitfiles.file): _gitfiles.FORCE + @(cd $(@D) && git ls-files -z) | sed -z -e 's/\$$/\$$$$/g' -e 's/\n/$$(at.nl)/g' | xargs -r0 printf '_gitfiles.all+=%s\n' | $(WRITE_IFCHANGED) $@ +.PHONY: _gitfiles.FORCE +endif + +_gitfiles.dir = $(call at.relto,$(topsrcdir),$(srcdir)) +_gitfiles.dir.all = $(patsubst $(_gitfiles.dir)/%,%,$(filter $(_gitfiles.dir)/%,$(_gitfiles.all))) +_gitfiles.dir.src = $(filter-out $(addsuffix /%,$(nested.subdirs)),$(_gitfiles.dir.all)) diff --git a/build-aux/Makefile.once.head/00-quote.mk b/build-aux/Makefile.once.head/00-quote.mk new file mode 100644 index 0000000000..94bc943b60 --- /dev/null +++ b/build-aux/Makefile.once.head/00-quote.mk @@ -0,0 +1,49 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.quote.description = Macros to quote tricky strings +define mod.quote.doc +# Inputs: +# (none) +# Outputs: +# - Global variable: `quote.var` : GNU Make variables +# - Global variable: `quote.pattern` : GNU Make patterns +# - Global variable: `quote.ere` : POSIX Extended Regular Expressions +# - Global variable: `quote.bre` : POSIX Basic Regular Expressions +# - Global variable: `quote.shell` : POSIX sh(1) strings +# - Global variable: `quote.shell-each`: POSIX sh(1) strings +# +# Escaping/quoting things is hard! This module provides a number of +# functions to escape/quote strings for various contexts. +# +# `quote.shell-each` quotes each list-item separately (munging +# whitespace), while `quote.shell` keeps them as one string (preserving +# whitespace). +endef +mod.quote.doc := $(value mod.quote.doc) + +_quote.backslash = $(if $1,$(call _quote.backslash,$(wordlist 2,$(words $1),$1),$(subst $(firstword $1),\$(firstword $1),$2)),$2) + +quote.var = $(subst $(at.nl),\$(at.nl),$(subst $$,$$$$,$1)) +quote.pattern = $(call _quote.backslash, \ % ,$1) +quote.ere = $(call _quote.backslash, \ ^ . [ $$ ( ) | * + ? { ,$1) +quote.bre = $(call _quote.backslash, \ ^ . [ $$ * ,$1) + +quote.shell-each = $(foreach _quote.tmp,$1,$(call quote.shell,$(_quote.tmp))) + +# I put this as the last line in the file because it confuses Emacs +# syntax highlighting and makes the remainder of the file difficult to +# edit. +quote.shell = $(subst $(at.nl),'$$'\n'','$(subst ','\'',$1)') diff --git a/build-aux/Makefile.once.head/00-var.mk b/build-aux/Makefile.once.head/00-var.mk new file mode 100644 index 0000000000..1f50f21f1a --- /dev/null +++ b/build-aux/Makefile.once.head/00-var.mk @@ -0,0 +1,33 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.var.description = Depend on the values of variables +define mod.var.doc +# Inputs: +# (user-defined) +# Outputs: +# Target : `$(outdir)/.var.%` +# Directory variable: `at.targets` +# +# It's a well-known secret that many files generated by a Makefile vary with +# the values of particular variables, but that GNU Make can't track these +# dependencies. Well, with some cleverness, it actually can! +# +# With this module, to depend on the value of a variable, depend on +# `$(outdir)/.var.VARNAME`. +endef +mod.var.doc := $(value mod.var.doc) + +.PHONY: _var.FORCE diff --git a/build-aux/Makefile.once.head/10-dist.mk b/build-aux/Makefile.once.head/10-dist.mk new file mode 100644 index 0000000000..831ca125f8 --- /dev/null +++ b/build-aux/Makefile.once.head/10-dist.mk @@ -0,0 +1,79 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.dist.description = `dist` target for distribution tarballs +define mod.dist.doc +# User variables: +# - `CP ?= cp` +# - `GZIP ?= gzip` +# - `MKDIR ?= mkdir` +# - `MKDIR_P ?= mkdir -p` +# - `MV ?= mv` +# - `RM ?= rm -f` +# - `TAR ?= tar` +# - `GZIPFLAGS ?= $(GZIP_ENV)` +# - `GZIP_ENV ?= --best` (only used via `GZIPFLAGS`, not directly) +# Inputs: +# - Global variable : `dist.exts` (Default: `.tar.gz`) +# - Global variable : `dist.pkgname` (Default: first of PACKAGE_TARNAME PACKAGE PACKAGE_NAME) +# - Global variable : `dist.version` (Default: first of PACKAGE_VERSION VERSION) +# - Directory variable : `files.src` +# Outputs: +# - Directory variable : `files.out.int` (only in top dir) +# - .PHONY Target : `$(outdir)/dist` +# - Target : `$(topoutdir)/$(dist.pkgname)-$(dist.version)` +# - Target : `$(topoutdir)/$(dist.pkgname)-$(dist.version).tar` +# - Target : `$(topoutdir)/$(dist.pkgname)-$(dist.version).tar.gz` +# +# Provide the standard `dist` .PHONY target, based on the `files` module +# information. +# +# You may change the default compression target easily via the +# `dist.exts` variable, but you must define the rule for it manually. +# +# Bugs: +# +# The tarball isn't reproducible. It uses file-system ordering of +# files, and includes timestamps. +endef +mod.dist.doc := $(value mod.dist.doc) + +# Developer configuration + +dist.exts ?= .tar.gz +dist.pkgname ?= $(firstword $(PACKAGE_TARNAME) $(PACKAGE) $(PACKAGE_NAME)) +dist.version ?= $(firstword $(PACKAGE_VERSION) $(VERSION)) + +ifeq ($(dist.pkgname),) +$(error Autothing module: dist: dist.pkgname must be set) +endif +ifeq ($(dist.version),) +$(error Autothing module: dist: dist.version must be set) +endif + +_dist.files = + +# User configuration + +CP ?= cp +GZIP ?= gzip +MKDIR ?= mkdir +MKDIR_P ?= mkdir -p +MV ?= mv +RM ?= rm -f +TAR ?= tar + +GZIPFLAGS ?= $(GZIP_ENV) +GZIP_ENV ?= --best diff --git a/build-aux/Makefile.once.head/10-files.mk b/build-aux/Makefile.once.head/10-files.mk new file mode 100644 index 0000000000..f6fcf30c3a --- /dev/null +++ b/build-aux/Makefile.once.head/10-files.mk @@ -0,0 +1,87 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.files.description = Keeping track of groups of files +mod.files.depends += nested +define mod.files.doc +# User variables: +# - `DESTDIR ?=` +# - `RM ?= rm -f` +# - `RMDIR_P ?= rmdir -p --ignore-fail-on-non-empty` +# - `TRUE ?= true` +# Inputs: +# - Global variable : `files.groups ?= all` +# - Global variable : `files.default ?= all` +# - Global variable : `files.vcsclean ?= files.vcsclean` +# - Global variable : `files.generate ?= files.generate` +# - Directory variable : `files.src.src` +# - Directory variable : `files.src.int` +# - Directory variable : `files.src.cfg` +# - Directory variable : `files.src.gen` +# - Directory variable : `files.out.slow` +# - Directory variable : `files.out.int` +# - Directory variable : `files.out.cfg` +# - Directory variable : `files.out.$(files.groups)` (well, $(addprefix...)) +# - Directory variable : `files.sys.$(files.groups)` (well, $(addprefix...)) +# Outputs: +# - Global variable : `nested.targets` +# - Global variable : `at.targets` +# - Global variable : `.DEFAULT_GOAL = $(files.default)` +# - Directory variable : `files.src` +# - Directory variable : `files.out` +# - Directory variable : `files.sys` +# - Creative .PHONY targets: +# - `$(outdir)/$(files.generate))` +# - `$(outdir)/$(group)` for `group` in `$(files.groups)` +# - `$(outdir)/install` +# - `$(outdir)/install-$(group)` for `group` in `$(filter-out $(files.default),$(files.groups))` +# - `$(outdir)/installdirs` +# - Destructive .PHONY targets: +# - `$(outdir)/uninstall` +# - `$(outdir)/mostlyclean` +# - `$(outdir)/clean` +# - `$(outdir)/distclean` +# - `$(outdir)/maintainer-clean` +# - `$(outdir)/$(files.vcsclean)` +# +# Basic `*` wildcards are supported. Use `*`, not `%`; it will automatically +# substitute `*`->`%` where appropriate. +# +# TODO: prose documentation +endef +mod.files.doc := $(value mod.files.doc) + +files.groups ?= all +files.default ?= all +files.vcsclean ?= files.vcsclean +files.generate ?= files.generate + +.DEFAULT_GOAL = $(files.default) + +# Standard creative PHONY targets +nested.targets += $(files.generate) +nested.targets += install installdirs +nested.targets += $(foreach g,$(files.groups),$g) +nested.targets += $(foreach g,$(filter-out $(files.default),$(files.groups)),install-$g install-$gdirs) +# Standard destructive PHONY targets +nested.targets += uninstall mostlyclean clean distclean maintainer-clean + +# User configuration + +DESTDIR ?= + +RM ?= rm -f +RMDIR_P ?= rmdir -p --ignore-fail-on-non-empty +TRUE ?= true diff --git a/build-aux/Makefile.once.head/10-gnuconf.mk b/build-aux/Makefile.once.head/10-gnuconf.mk new file mode 100644 index 0000000000..a4b76964f4 --- /dev/null +++ b/build-aux/Makefile.once.head/10-gnuconf.mk @@ -0,0 +1,200 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.gnuconf.description = GNU standard configuration variables +define mod.gnuconf.doc +# Inputs: +# - Global variable: `gnuconf.pkgname` +# (Default: `$(firstword $(PACKAGE_TARNAME) $(PACKAGE) $(PACKAGE_NAME))`) +# Outputs: +# (see below) +# +# This module defines default values (using `?=`) a huge list of +# variables specified in the GNU Coding Standards that installing-users +# expect to be able to set. +# +# This is based on §7.2 "Makefile Conventions" of the July 25, 2016 +# release of the GNU Coding Standards. +endef +mod.gnuconf.doc := $(value mod.gnuconf.doc) + +gnuconf.pkgname ?= $(firstword $(PACKAGE_TARNAME) $(PACKAGE) $(PACKAGE_NAME)) +ifeq ($(gnuconf.pkgname),) +$(error Autothing module: gnuconf: gnuconf.pkgname must be set) +endif + +# 7.2.2: Utilities in Makefiles +# ----------------------------- + +# It's ok to hard-code these commands in rules, but who wants to +# memorize the list of what's ok? +AWK ?= awk +CAT ?= cat +CMP ?= cmp +CP ?= cp +DIFF ?= diff +ECHO ?= echo +EGREP ?= egrep +EXPR ?= expr +FALSE ?= false +GREP ?= grep +INSTALL_INFO ?= install-info +LN ?= ln +LS ?= ls +MKDIR ?= mkdir +MV ?= mv +PRINTF ?= printf +PWD ?= pwd +RM ?= rm +RMDIR ?= rmdir +SED ?= sed +SLEEP ?= sleep +SORT ?= sort +TAR ?= tar +TEST ?= test +TOUCH ?= touch +TR ?= tr +TRUE ?= true + +# 7.2.2: Utilities in Makefiles/7.2.3: Variables for Specifying Commands +# ---------------------------------------------------------------------- + +# Standard user-configurable programs. +# +# The list of programs here is specified in §7.2.2, but the associated FLAGS +# variables are specified in §7.2.3. I found it cleaner to list them together. +AR ?= ar +ARFLAGS ?= +BISON ?= bison +BISONFLAGS ?= +CC ?= cc +CFLAGS ?= # CFLAGS instead of CCFLAGS +FLEX ?= flex +FLEXFLAGS ?= +INSTALL ?= install +# There is no INSTALLFLAGS[0] +LD ?= ld +LDFLAGS ?= +LDCONFIG ?= ldconfig # TODO[1] +LDCONFIGFLAGS ?= +LEX ?= lex +LFLAGS ?= # LFLAGS instead of LEXFLAGS +#MAKE +MAKEINFO ?= makeinfo +MAKEINFOFLAGS ?= +RANLIB ?= ranlib # TODO[1] +RANLIBFLAGS ?= +TEXI2DVI ?= texi2dvi +TEXI2DVIFLAGS ?= +YACC ?= yacc +YFLAGS ?= # YFLAGS instead of YACCFLAGS + +LN_S ?= ln -s # TODO[2] + +CHGRP ?= chgrp +CHGRPFLAGS ?= +CHMOD ?= chmod +CHMODFLAGS ?= +CHOWN ?= chown +CHOWNFLAGS ?= +MKNOD ?= mknod +MKNODFLAGS ?= + +# [0]: There is no INSTALLFLAGS because it would be inconsistent with how the +# standards otherwise recommend using $(INSTALL); with INSTALL_PROGRAM and +# INSTALL_DATA; which are specified in a way precluding the use of +# INSTALLFLAGS. To have the variable, but to ignore it in the common case +# would be confusing. +# +# [1]: The RANLIB and LDCONFIG variables need some extra smarts; §7.2.2 says: +# +# > When you use ranlib or ldconfig, you should make sure nothing bad +# > happens if the system does not have the program in question. Arrange +# > to ignore an error from that command, and print a message before the +# > command to tell the user that failure of this command does not mean a +# > problem. (The Autoconf ‘AC_PROG_RANLIB’ macro can help with this.) +# +# [2]: The LN_S variable isn't standard, but we have it here as an (incomplete) +# stub to help support this bit of §7.2.2: +# +# > If you use symbolic links, you should implement a fallback for +# > systems that don’t have symbolic links. + +# 7.2.3: Variables for Specifying Commands +# ---------------------------------------- + +INSTALL_PROGRAM ?= $(INSTALL) +INSTALL_DATA ?= ${INSTALL} -m 644 + +# 7.2.5: Variables for Installation Directories +# --------------------------------------------- + +# Root for the installation +prefix ?= /usr/local +exec_prefix ?= $(prefix) +# Executable programs +bindir ?= $(exec_prefix)/bin +sbindir ?= $(exec_prefix)/sbin +libexecdir ?= $(exec_prefix)/libexec +# Data files +datarootdir ?= $(prefix)/share +datadir ?= $(datarootdir) +sysconfdir ?= $(prefix)/etc +sharedstatedir ?= $(prefix)/com +localstatedir ?= $(prefix)/var +runstatedir ?= $(localstatedir)/run +# Specific types of files +includedir ?= $(prefix)/include +oldincludedir ?= /usr/include +docdir ?= $(datarootdir)/doc/$(gnuconf.pkgname) +infodir ?= $(datarootdir)/info +htmldir ?= $(docdir) +dvidir ?= $(docdir) +pdfdir ?= $(docdir) +psdir ?= $(docdir) +libdir ?= $(exec_prefix)/lib +lispdir ?= $(datarootdir)/emacs/site-lisp +localedir ?= $(datarootdir)/locale + +mandir ?= $(datarootdir)/man +man1dir ?= $(mandir)/man1 +man2dir ?= $(mandir)/man2 +man3dir ?= $(mandir)/man3 +man4dir ?= $(mandir)/man4 +man5dir ?= $(mandir)/man5 +man6dir ?= $(mandir)/man6 +man7dir ?= $(mandir)/man7 +man8dir ?= $(mandir)/man8 + +manext ?= .1 +man1ext ?= .1 +man2ext ?= .2 +man3ext ?= .3 +man4ext ?= .4 +man5ext ?= .5 +man6ext ?= .6 +man7ext ?= .7 +man8ext ?= .8 + +# 7.2.7: Install Command Categories +# --------------------------------- + +PRE_INSTALL ?= +POST_INSTALL ?= +NORMAL_INSTALL ?= + +PRE_UNINSTALL ?= +POST_UNINSTALL ?= +NORMAL_UNINSTALL ?= diff --git a/build-aux/Makefile.once.head/10-lt.mk b/build-aux/Makefile.once.head/10-lt.mk new file mode 100644 index 0000000000..9d27d62870 --- /dev/null +++ b/build-aux/Makefile.once.head/10-lt.mk @@ -0,0 +1,57 @@ +mod.lt.description = (systemd) Easy handling of libtool dependencies +mod.lt.depends += files +define mod.lt.doc +# Inputs: +# - Global variable : `$(.LIBPATTERNS)` +# - Directory variable : `$(files.sys)` +# - Target variable : `$@` +# - Target variable : `$(@F)` +# - Target variable : `$^` +# Outputs: +# - Target variable : `lt.lib.rpath` (`$(@D)`, `$(files.sys)`) +# - Target variable : `lt.lib.files.all` (`$^`, `$(.LIBPATTERNS)`) +# - Target variable : `lt.lib.files.ld` (`$(lt.lib.rpath)`, `$(lt.lib.files.all)`) +# - Target variable : `lt.lib.post` (`$(lt.lib.rpath)`, `$(lt.lib.files.all)`) +# - Target variable : `lt.exe.files.all` (`$^`, `$(.LIBPATTERNS)`) +# - Target variable : `lt.exe.files.ld` (an alias for `lt.exe.files.all`) +# +# A set of variables to make interacting with libtool a little easier. +# +# libtool tries to abstract away the difference between static libraries +# and dynamic libraries. But, it does a crappy job. If one library +# depends on another library, you have to care about which of them are +# static and which are dynamic, or you'll either end up with missing +# symbols, or duplicate symbols. Either way, it will fail to link your +# executable. +# +# So, our workaround: don't pass any .la libraries to libtool/ld when +# linking a convenience library, but then run a post-libtool command to +# insert them into the .la file's dependency_libs. This uses the +# emptiness of lt.lib.rpath to determine if a library is a static +# convenience library or not. +endef +mod.lt.doc := $(value mod.lt.doc) + +_lt.patsubst-all = $(if $1,$(call _lt.patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3) +_lt.unLIBPATTERNS = $(foreach _lt.tmp,$1,$(if $(filter $(.LIBPATTERNS),$(notdir $(_lt.tmp))),$(call _lt.patsubst-all,$(.LIBPATTERNS),-l%,$(notdir $(_lt.tmp))),$(_lt.tmp))) +_lt.rest = $(wordlist 2,$(words $1),$1) +# Usage: $(call _lt.dedup,ITEM1 ITEM2 ITEM3) +# Removes duplicate items while keeping the order the same (the leftmost of a duplicate is used). +_lt.dedup = $(if $1,$(if $(filter $(firstword $1),$(call _lt.rest,$1)),,$(firstword $1) )$(call _lt.dedup,$(call _lt.rest,$1))) +# Usage: $(call _lt.dependency_libs,LIB1.la OBJ.lo LIB2.la) +# => LIB1.la LIB1.la:dependency_libs OBJ.lo LIB2.la LIB2.la:dependency_libs +# Insert a .la library's dependency_libs after the library itself in the list. +_lt.dependency_libs = $(foreach _lt.tmp,$1,$(_lt.tmp)$(if $(filter %.la,$(_lt.tmp)), $(shell . $(_lt.tmp); echo $$dependency_libs))) + + lt.lib.rpath = $(patsubst %/,%,$(dir $(filter %/$(@F),$(files.sys)))) + lt.lib.files.all = $(filter %.lo %.la -l%,$(call _lt.unLIBPATTERNS,$^)) + lt.lib.files.ld = $(strip $(if $(lt.lib.rpath),\ + $(lt.lib.files.all),\ + $(filter-out %.la,$(lt.lib.files.all)))) +_lt.lib.files.dep = $(strip $(call _lt.dedup,$(filter %.la -l%,$(call _lt.dependency_libs,$(lt.lib.files.all))))) + lt.lib.post = $(strip $(if $(lt.lib.rpath),\ + true,\ + sed -i 's|^dependency_libs=.*|dependency_libs='\''$(_lt.lib.files.dep)'\''|' $@)) + +lt.exe.files.all = $(filter %.o %.la -l%,$(call _lt.unLIBPATTERNS,$^)) +lt.exe.files.ld = $(lt.exe.files.all) diff --git a/build-aux/Makefile.once.head/10-nested.mk b/build-aux/Makefile.once.head/10-nested.mk new file mode 100644 index 0000000000..4f181a9290 --- /dev/null +++ b/build-aux/Makefile.once.head/10-nested.mk @@ -0,0 +1,45 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.nested.description = Easy nested .PHONY targets +define mod.nested.doc +# Inputs: +# - Global variable : `nested.targets` +# - Directory variable : `nested.subdirs` +# Outputs: +# - .PHONY Targets : `$(addprefix $(outdir)/,$(nested.targets))` +# - Variable : `at.subdirs` +# +# The Autothing `at.subdirs` slates a subdirectory's Makefile for inclusion, +# but doesn't help with recursive targets like `all`, `install`, or `clean`, +# which one would expect to descend into subdirectories. Enter `nested`: +# Define a global list of targets that are recursive/nested, and then in each +# directory define a list of subdirectries that one would expect them to +# recurse into. +# +# Directories added to `nested.subdirs` are automatically added to `at.subdirs` +# during the each.tail phase. +# +# It may help to think of at.subdirs and nested.subdirs in terms of their +# Automake conterparts: +# +# | Autothing | GNU Automake | +# +----------------+--------------+ +# | at.subdirs | DIST_SUBDIRS | +# | nested.subdirs | SUBDIRS | +endef +mod.nested.doc := $(value mod.nested.doc) + +nested.targets ?= diff --git a/build-aux/Makefile.once.head/10-write-atomic.mk b/build-aux/Makefile.once.head/10-write-atomic.mk new file mode 100644 index 0000000000..c4aa808c61 --- /dev/null +++ b/build-aux/Makefile.once.head/10-write-atomic.mk @@ -0,0 +1,23 @@ +mod.write-atomic.description = `write-atomic` auxiliary build script +mod.write-atomic.files += $(topsrcdir)/build-aux/write-atomic +define mod.write-atomic.doc +# User variables: +# - `WRITE_ATOMIC ?= $(topsrcdir)/build-aux/write-atomic` +# Inputs: +# (none) +# Outputs: +# (none) +# +# The $(WRITE_ATOMIC) program reads a file from stdin, and writes it to +# the file named in argv[1], but does so atomically. +# +# That is, the following lines are almost equivalient: +# +# ... > $@ +# ... | $(WRITE_ATOMIC) $@ +# +# The are only different in that one is atomic, while the other is not. +endef +mod.write-atomic.doc := $(value mod.write-atomic.doc) + +WRITE_ATOMIC ?= $(topsrcdir)/build-aux/write-atomic diff --git a/build-aux/Makefile.once.head/10-write-ifchanged.mk b/build-aux/Makefile.once.head/10-write-ifchanged.mk new file mode 100644 index 0000000000..649aab9c12 --- /dev/null +++ b/build-aux/Makefile.once.head/10-write-ifchanged.mk @@ -0,0 +1,23 @@ +mod.write-ifchanged.description = `write-ifchanged` auxiliary build script +mod.write-ifchanged.files += $(topsrcdir)/build-aux/write-ifchanged +define mod.write-ifchanged.doc +# User variables: +# - `WRITE_IFCHANGED ?= $(topsrcdir)/build-aux/write-ifchanged` +# Inputs: +# (none) +# Outputs: +# (none) +# +# The $(WRITE_IFCHANGED) program reads a file from stdin, and writes it to the +# file named in argv[1], but does so atomically, but more importantly, does so +# in a way that does not bump the file's ctime if the new content is the same +# as the old content. +# +# That is, the following lines are almost equivalient: +# +# ... > $@ +# ... | $(WRITE_ATOMIC) $@ +endef +mod.write-ifchanged.doc := $(value mod.write-ifchanged.doc) + +WRITE_IFCHANGED ?= $(topsrcdir)/build-aux/write-ifchanged diff --git a/build-aux/Makefile.once.head/20-amcfg.mk b/build-aux/Makefile.once.head/20-amcfg.mk new file mode 100644 index 0000000000..e5a674116c --- /dev/null +++ b/build-aux/Makefile.once.head/20-amcfg.mk @@ -0,0 +1,77 @@ +mod.amcfg.description = (systemd) Automake-to-Autothing configuration +mod.amcfg.depends += am +define mod.amcfg.doc +# User variables: +# - `V` +# - `AM_V_*` +# - `pamconfdir` +# - `tmpfilesdir` +# - `sysusersdir` +# - `sysctldir` +# - `bashcompletiondir` +# - `zshcompletiondir` +# - `LIBTOOL` +# - `INSTALL_PROGRAM` +# - `INSTALL_SCRIPT` +# - `INSTALL_DATA` +# Inputs: +# - Global variable: `sd.ALL_LIBTOOLFLAGS` +# Outputs: +# - Global variable: `am.sys2out_*` +# - Global variable: `am.INSTALL_*` +endef +mod.amcfg.doc := $(value mod.amcfg.doc) + +am.sys2out_DATA = \ + $(notdir \ + $(patsubst $(pamconfdir)/%,%.pam,\ + $(patsubst $(tmpfilesdir)/%.conf,%.tmpfiles,\ + $(patsubst $(sysusersdir)/%.conf,%.sysusers,\ + $(patsubst $(sysctldir)/%.conf,%.sysctl,\ + $(patsubst $(bashcompletiondir)/%,%.completion.bash,\ + $(patsubst $(zshcompletiondir)/_%,%.completion.zsh,\ + $1))))))) +am.sys2out_SCRIPTS = \ + $(notdir \ + $(patsubst $(xinitrcdir)/%.sh,%.xinitrc,\ + $1)) +am.sys2out_HEADERS = $(abspath $(addprefix $(srcdir)/include/,$(notdir $1))) + +V ?= + +AM_V_PROG ?= $(AM_V_PROG_$(V)) +AM_V_PROG_ ?= $(AM_V_PROG_$(AM_DEFAULT_VERBOSITY)) +AM_V_PROG_0 ?= @echo " PROG " $@; +AM_V_PROG_1 ?= + +AM_V_SCRIPT ?= $(AM_V_SCRIPT_$(V)) +AM_V_SCRIPT_ ?= $(AM_V_SCRIPT_$(AM_DEFAULT_VERBOSITY)) +AM_V_SCRIPT_0 ?= @echo " SCRIPT " $@; +AM_V_SCRIPT_1 ?= + +AM_V_LIB ?= $(AM_V_LIB_$(V)) +AM_V_LIB_ ?= $(AM_V_LIB_$(AM_DEFAULT_VERBOSITY)) +AM_V_LIB_0 ?= @echo " LIB " $@; +AM_V_LIB_1 ?= + +AM_V_DATA ?= $(AM_V_DATA_$(V)) +AM_V_DATA_ ?= $(AM_V_DATA_$(AM_DEFAULT_VERBOSITY)) +AM_V_DATA_0 ?= @echo " DATA " $@; +AM_V_DATA_1 ?= + +AM_V_HEADER ?= $(AM_V_HEADER_$(V)) +AM_V_HEADER_ ?= $(AM_V_HEADER_$(AM_DEFAULT_VERBOSITY)) +AM_V_HEADER_0 ?= @echo " HEADER " $@; +AM_V_HEADER_1 ?= + +AM_V_MAN ?= $(AM_V_MAN_$(V)) +AM_V_MAN_ ?= $(AM_V_MAN_$(AM_DEFAULT_VERBOSITY)) +AM_V_MAN_0 ?= @echo " MAN " $@; +AM_V_MAN_1 ?= + +am.INSTALL_PROGRAMS = $(AM_V_PROG)$(LIBTOOL) $(AM_V_lt) --tag=CC $(sd.ALL_LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $< $@ +am.INSTALL_SCRIPTS = $(AM_V_SCRIPT)$(INSTALL_SCRIPT) $< $@ +am.INSTALL_LTLIBRARIES = $(AM_V_LIB)$(LIBTOOL) $(AM_V_lt) --tag=CC $(sd.ALL_LIBTOOLFLAGS) --mode=install $(INSTALL) $< $@ +am.INSTALL_DATA = $(AM_V_DATA)$(INSTALL_DATA) $< $@ +am.INSTALL_HEADERS = $(AM_V_HEADER)$(INSTALL_DATA) $< $@ +am.INSTALL_MANS = $(AM_V_MAN)$(INSTALL_DATA) $< $@ diff --git a/build-aux/Makefile.once.head/20-sd.mk b/build-aux/Makefile.once.head/20-sd.mk index 134c2c0ef1..4e44d2f7b3 100644 --- a/build-aux/Makefile.once.head/20-sd.mk +++ b/build-aux/Makefile.once.head/20-sd.mk @@ -20,81 +20,173 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk -ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} -AM_MAKEFLAGS = --no-print-directory -AUTOMAKE_OPTIONS = color-tests parallel-tests +mod.sd.description = (systemd) shared build rules +mod.sd.depends += am +define mod.sd.doc +# User variables: +# (flags) +# - `CFLAGS` +# - `CPPFLAGS` +# - `LDFLAGS` +# - `LIBTOOLFLAGS` +# (programs) +# - `CC` +# - `CCLD` +# - `LIBTOOL` +# - `MKDIR_P` +# - `SED` +# (verbosity) +# - `V` +# - `AM_V_*` +# - `INTLTOOL_V_MERGE*` +# (substitutions)$(foreach v,$(sort $(sd.substitution_keys)),$(at.nl)# - $v) +# Inputs: +# - Global variable : `DEPDIR` +# - Global variable : `ENABLE_TESTS` +# - Global variable : `ENABLE_UNSAFE_TESTS` +# - Global variable : `OUR_CFLAGS` +# - Global variable : `OUR_CPPFLAGS` +# - Global variable : `OUR_LDFLAGS` +# - Global variable : `OUR_LIBTOOLFLAGS` +# (Makefiles) +# - Directory variable : `sd.CFLAGS` +# - Directory variable : `sd.CPPFLAGS` +# - Directory variable : `sd.LDFLAGS` +# - Directory variable : `sd.LIBTOOLFLAGS` +# - Directory variable : `sd.sed_files` (default based on `EXTRA_DIST`) +# (am) +# - Directory variable : `EXTRA_DIST` +# - Directory variable : `am.out_PROGRAMS` +# - Directory variable : `am.CFLAGS` +# - Directory variable : `am.CPPFLAGS` +# - Target variable : `am.LDFLAGS` +# Outputs: +# - Global variable : `SHELL` +# - Make setting : `.DELETE_ON_ERROR` +# - Make setting : `.SECONDARY` +# - Global variable : `sd.substitutions` +# - Global variable : `sd.substitution_keys` +# - Global variable : `sd.sed_process` +# - Directory variable : `files.out.int` +# - Target variable : `sd.ALL_CFLAGS` +# - Target variable : `sd.ALL_CPPFLAGS` +# - Target variable : `sd.ALL_LDFLAGS` +# - Target variable : `sd.ALL_LIBTOLFLAGS` +# - Target variable : `sd.COMPILE` +# - Target variable : `sd.LTCOMPILE` +# - Target variable : `sd.LINK` +# - Target : `$$(outdir)/%.o` +# - Target : `$$(outdir)/%.lo` +# - Target : `$$(outdir)/$$(DEPDIR)` +# - Target : `$$(outdir)/%.la` +# - Target : `$$(addprefix $$(outdir)/,$$(am.out_PROGRAMS))` +# - Target : `$$(outdir)/test-lib%-sym.c` +# - Target : `$$(outdir)/%-from-name.gperf` +# - Target : `$$(outdir)/%-from-name.h` +# - Target : `$$(addprefix $$(outdir)/,$$(sd.sed_files))` +# - Target : `$$(outdir)/%.c: $$(srcdir)/%.gperf` +# - Target : `$$(outdir)/%: $$(srcdir)/%.m4` +# ???: +# - tests +# - unsafe_tests +# - TESTS -GCC_COLORS ?= 'ooh, shiny!' -export GCC_COLORS +endef -SUBDIRS = . po +tests ?= +unsafe_tests ?= +TESTS = $(if $(ENABLE_TESTS),$(tests) \ + $(if $(ENABLE_UNSAFE_TESTS),$(unsafe_tests))) -# remove targets if the command fails -.DELETE_ON_ERROR: +# Make behavior +SHELL = bash -o pipefail -# keep intermediate files +.DELETE_ON_ERROR: .SECONDARY: -# Keep the test-suite.log -.PRECIOUS: $(TEST_SUITE_LOG) Makefile +# Autoconf +OUR_CPPFLAGS += -MT $@ -MD -MP -MF $(@D)/$(DEPDIR)/$(basename $(@F)).P$(patsubst .%,%,$(suffix $(@F))) +OUR_CPPFLAGS += -include $(topoutdir)/config.h +OUR_CPPFLAGS += $(sort -I$(@D) $(if $(<D),-I$(<D) -I$(call at.out2src,$(<D)))) + +sd.ALL_CFLAGS = $(strip $(OUR_CFLAGS) $(am.CFLAGS) $(sd.CFLAGS) $(CFLAGS) ) +sd.ALL_CPPFLAGS = $(strip $(OUR_CPPFLAGS) $(am.CPPFLAGS) $(sd.CPPFLAGS) $(CPPFLAGS) ) +sd.ALL_LDFLAGS = $(strip $(OUR_LDFLAGS) $(am.LDFLAGS) $(sd.LDFLAGS) $(LDFLAGS) ) +sd.ALL_LIBTOOLFLAGS = $(strip $(OUR_LIBTOOLFLAGS) $(sd.LIBTOOLFLAGS) $(LIBTOOLFLAGS) ) + +sd.COMPILE = $(CC) $(sd.ALL_CPPFLAGS) $(sd.ALL_CFLAGS) +sd.LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(sd.ALL_LIBTOOLFLAGS) --mode=compile $(CC) $(sd.ALL_CPPFLAGS) $(sd.ALL_CFLAGS) +sd.LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(sd.ALL_LIBTOOLFLAGS) --mode=link $(CCLD) $(sd.ALL_CFLAGS) $(sd.ALL_LDFLAGS) -o $@ + +CC ?= c99 +CCLD ?= c99 +LIBTOOL ?= libtool V ?= -AM_V_M4 = $(AM_V_M4_$(V)) -AM_V_M4_ = $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) -AM_V_M4_0 = @echo " M4 " $@; -AM_V_M4_1 = - -AM_V_GPERF = $(AM_V_GPERF_$(V)) -AM_V_GPERF_ = $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY)) -AM_V_GPERF_0 = @echo " GPERF " $@; -AM_V_GPERF_1 = - -AM_V_RM = $(AM_V_RM_$(V)) -AM_V_RM_ = $(AM_V_RM_$(AM_DEFAULT_VERBOSITY)) -AM_V_RM_0 = @echo " RM " $@; -AM_V_RM_1 = - -AM_V_CC = $(AM_V_CC_$(V)) -AM_V_CC_ = $(AM_V_CC_$(AM_DEFAULT_VERBOSITY)) -AM_V_CC_0 = @echo " CC " $@; -AM_V_CC_1 = - -AM_V_CCLD = $(AM_V_CCLD_$(V)) -AM_V_CCLD_ = $(AM_V_CCLD_$(AM_DEFAULT_VERBOSITY)) -AM_V_CCLD_0 = @echo " CCLD " $@; -AM_V_CCLD_1 = - -AM_V_P = $(AM_V_P_$(V)) -AM_V_P_ = $(AM_V_P_$(AM_DEFAULT_VERBOSITY)) -AM_V_P_0 = false -AM_V_P_1 = : - -AM_V_GEN = $(AM_V_GEN_$(V)) -AM_V_GEN_ = $(AM_V_GEN_$(AM_DEFAULT_VERBOSITY)) -AM_V_GEN_0 = @echo " GEN " $@; -AM_V_GEN_1 = - -AM_V_at = $(AM_V_at_$(V)) -AM_V_at_ = $(AM_V_at_$(AM_DEFAULT_VERBOSITY)) -AM_V_at_0 = @ -AM_V_at_1 = - -AM_V_lt = $(AM_V_lt_$(V)) -AM_V_lt_ = $(AM_V_lt_$(AM_DEFAULT_VERBOSITY)) -AM_V_lt_0 = --silent -AM_V_lt_1 = - -INTLTOOL_V_MERGE = $(INTLTOOL_V_MERGE_$(V)) -INTLTOOL_V_MERGE_OPTIONS = $(intltool_v_merge_options_$(V)) -INTLTOOL_V_MERGE_ = $(INTLTOOL_V_MERGE_$(AM_DEFAULT_VERBOSITY)) -INTLTOOL_V_MERGE_0 = @echo " ITMRG " $@; -INTLTOOL_V_MERGE_1 = - -substitutions = \ +AM_V_at ?= $(AM_V_at_$(V)) +AM_V_at_ ?= $(AM_V_at_$(AM_DEFAULT_VERBOSITY)) +AM_V_at_0 ?= @ +AM_V_at_1 ?= + +AM_V_M4 ?= $(AM_V_M4_$(V)) +AM_V_M4_ ?= $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) +AM_V_M4_0 ?= @echo " M4 " $@; +AM_V_M4_1 ?= + +AM_V_GPERF ?= $(AM_V_GPERF_$(V)) +AM_V_GPERF_ ?= $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY)) +AM_V_GPERF_0 ?= @echo " GPERF " $@; +AM_V_GPERF_1 ?= + +AM_V_RM ?= $(AM_V_RM_$(V)) +AM_V_RM_ ?= $(AM_V_RM_$(AM_DEFAULT_VERBOSITY)) +AM_V_RM_0 ?= @echo " RM " $@; +AM_V_RM_1 ?= + +AM_V_CC ?= $(AM_V_CC_$(V)) +AM_V_CC_ ?= $(AM_V_CC_$(AM_DEFAULT_VERBOSITY)) +AM_V_CC_0 ?= @echo " CC " $@; +AM_V_CC_1 ?= + +AM_V_CCLD ?= $(AM_V_CCLD_$(V)) +AM_V_CCLD_ ?= $(AM_V_CCLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CCLD_0 ?= @echo " CCLD " $@; +AM_V_CCLD_1 ?= + +AM_V_EFI_CC ?= $(AM_V_EFI_CC_$(V)) +AM_V_EFI_CC_ ?= $(AM_V_EFI_CC_$(AM_DEFAULT_VERBOSITY)) +AM_V_EFI_CC_0 ?= @echo " EFI_CC " $@; +AM_V_EFI_CC_1 ?= + +AM_V_EFI_CCLD ?= $(AM_V_EFI_CCLD_$(V)) +AM_V_EFI_CCLD_ ?= $(AM_V_EFI_CCLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_EFI_CCLD_0 ?= @echo " EFI_CCLD" $@; +AM_V_EFI_CCLD_1 ?= + +AM_V_P ?= $(AM_V_P_$(V)) +AM_V_P_ ?= $(AM_V_P_$(AM_DEFAULT_VERBOSITY)) +AM_V_P_0 ?= false +AM_V_P_1 ?= : + +AM_V_GEN ?= $(AM_V_GEN_$(V)) +AM_V_GEN_ ?= $(AM_V_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN_0 ?= @echo " GEN " $@; +AM_V_GEN_1 ?= + +AM_V_lt ?= $(AM_V_lt_$(V)) +AM_V_lt_ ?= $(AM_V_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt_0 ?= --silent +AM_V_lt_1 ?= + +INTLTOOL_V_MERGE ?= $(INTLTOOL_V_MERGE_$(V)) +INTLTOOL_V_MERGE_OPTIONS ?= $(intltool_v_merge_options_$(V)) +INTLTOOL_V_MERGE_ ?= $(INTLTOOL_V_MERGE_$(AM_DEFAULT_VERBOSITY)) +INTLTOOL_V_MERGE_0 ?= @echo " ITMRG " $@; +INTLTOOL_V_MERGE_1 ?= + +sd.substitutions = \ '|rootlibexecdir=$(rootlibexecdir)|' \ '|rootbindir=$(rootbindir)|' \ '|bindir=$(bindir)|' \ @@ -156,10 +248,9 @@ substitutions = \ '|binfmtdir=$(binfmtdir)|' \ '|modulesloaddir=$(modulesloaddir)|' -SED_PROCESS = \ +sd.substitution_keys := $(subst |,,$(shell printf '%s\n' $(sd.substitutions) | cut -d= -f1)) + +sd.SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \ + $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(sd.substitutions)))) \ < $< > $@ - - -include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/build-aux/Makefile.once.head/20-sdman.mk b/build-aux/Makefile.once.head/20-sdman.mk index 3fb076febe..558c60531d 100644 --- a/build-aux/Makefile.once.head/20-sdman.mk +++ b/build-aux/Makefile.once.head/20-sdman.mk @@ -20,20 +20,59 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk -AM_V_XSLT = $(AM_V_XSLT_$(V)) -AM_V_XSLT_ = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY)) -AM_V_XSLT_0 = @echo " XSLT " $@; -AM_V_XSLT_1 = +mod.sdman.description = (systemd) manpages +mod.sdman.depends += am files write-atomic +define mod.sdman.doc +# User variables: +# - `V` +# - `AM_V_LN*` +# - `AM_V_XSLT*` +# - `LN_S` +# - `XSLTPROC` +# Inputs: +# - Global variable : `ENABLE_MANPAGES` +# - Global variable : `VERSION` +# - Directory variable : `files.src.src` +# Outputs: +# - File : `$(srcdir)/Makefile-man.mk` +# - Directory variable : `at.subdirs` +# - Directory variable : `files.src.gen` +# - Directory variable : `man_MANS` +# - Directory variable : `noinst_DATA` (HTML) +# - Target : `$(outdir)/%.1` +# - Target : `$(outdir)/%.3` +# - Target : `$(outdir)/%.5` +# - Target : `$(outdir)/%.7` +# - Target : `$(outdir)/%.8` +# - Target : `$(outdir)/%.html` +# +# sdman -> Makefile-man.mk: +# - Global variable : `sdman.html-alias` +# Makefile-man.mk -> sdman: +# - Directory variable : `sdman.MANPAGES` +# - Directory variable : `sdman.MANPAGES_ALIAS` +# +# The `sdman.*` variables are the interface by which the module +# communicates with the genrated Makefile-man.mk file. They should not +# be used outside of the `sdman` module. +endef +mod.sdman.doc := $(value mod.sdman.doc) + +V ?= +LN_S ?= ln -s -AM_V_LN = $(AM_V_LN_$(V)) -AM_V_LN_ = $(AM_V_LN_$(AM_DEFAULT_VERBOSITY)) -AM_V_LN_0 = @echo " LN " $@; -AM_V_LN_1 = +AM_V_LN ?= $(AM_V_LN_$(V)) +AM_V_LN_ ?= $(AM_V_LN_$(AM_DEFAULT_VERBOSITY)) +AM_V_LN_0 ?= @echo " LN " $@; +AM_V_LN_1 ?= -XSLTPROC_FLAGS = \ +AM_V_XSLT ?= $(AM_V_XSLT_$(V)) +AM_V_XSLT_ ?= $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY)) +AM_V_XSLT_0 ?= @echo " XSLT " $@; +AM_V_XSLT_1 ?= + +_sdman.XSLTPROC_FLAGS = \ --nonet \ --xinclude \ --stringparam man.output.quietly 1 \ @@ -41,18 +80,14 @@ XSLTPROC_FLAGS = \ --stringparam man.authors.section.enabled 0 \ --stringparam man.copyright.section.enabled 0 \ --stringparam systemd.version $(VERSION) \ - --path '$(builddir)/man:$(srcdir)/man' + --path '$(outdir):$(srcdir):$(topoutdir)/man:$(topsrcdir)/man' -XSLT = $(if $(XSLTPROC), $(XSLTPROC), xsltproc) -XSLTPROC_PROCESS_MAN = \ - $(AM_V_XSLT)$(XSLT) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-man.xsl $< +_sdman.XSLT = $(if $(XSLTPROC), $(XSLTPROC), xsltproc) +_sdman.XSLTPROC_PROCESS_MAN = \ + $(AM_V_XSLT)$(_sdman.XSLT) -o $@ $(_sdman.XSLTPROC_FLAGS) $(srcdir)/man/custom-man.xsl $< -XSLTPROC_PROCESS_HTML = \ - $(AM_V_XSLT)$(XSLT) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< +_sdman.XSLTPROC_PROCESS_HTML = \ + $(AM_V_XSLT)$(_sdman.XSLT) -o $@ $(_sdman.XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< -define html-alias +sdman.html-alias = \ $(AM_V_LN)$(LN_S) -f $(notdir $<) $@ -endef - - -include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/build-aux/Makefile.once.head/30-am.mk b/build-aux/Makefile.once.head/30-am.mk new file mode 100644 index 0000000000..3be5e011f8 --- /dev/null +++ b/build-aux/Makefile.once.head/30-am.mk @@ -0,0 +1,286 @@ +mod.am.description = (systemd) Automake-to-Autothing magic +mod.am.depends += gnuconf +define mod.am.doc +# Because many of the inputs/outpus are repetative, they are defined +# here in terms of $$(primary), which may be any of the supported +# Automake primaries (see below for a table). +# +# | Automake 1.15 primaries | +# +-------------------------+ +# | name | supported | +# +-------------+-----------+ +# | PROGRAMS | yes | +# | LIBRARIES | no | +# | LTLIBRARIES | yes | +# | LISP | no | +# | PYTHON | no | +# | JAVA | no | +# | SCRIPTS | yes | +# | DATA | yes | +# | HEADERS | yes | +# | MANS | yes | +# | TEXINFOS | no | +# +# Further, there is also $$(dirname), which could be anything; and is +# detected at runtime by inspecting $$(.VARIABLES) to find every possible +# matching value. See `_am.primary2dirs` for how this is done. +# +# Some inputs are "erased" after the pass they are used in. This means +# that they are `undefine`ed. +# +$(value _am.pass0.doc) +# +$(value _am.pass1.doc) +# +$(value _am.pass2.doc) +# +$(value _am.pass3.doc) +# +$(value _am.pass4.doc) +# +$(value _am.pass5.doc) +endef + +_am.primaries = +_am.primaries += PROGRAMS +#_am.primaries += LIBRARIES +_am.primaries += LTLIBRARIES +#_am.primaries += LISP +#_am.primaries += PYTHON +#_am.primaries += JAVA +_am.primaries += SCRIPTS +_am.primaries += DATA +_am.primaries += HEADERS +_am.primaries += MANS +#_am.primaries += TEXINFOS + +# Used by the per_PROGRAM and per_LTLIBRARY passes +_am.file2var = $(subst -,_,$(subst .,_,$1)) +_am.file2sources = $(addprefix $(srcdir)/,$(notdir $($(_am.file2var)_SOURCES))) +_am.file2sources += $(addprefix $(outdir)/,$(notdir $(nodist_$(_am.file2var)_SOURCES))) +_am.file2.o = $(patsubst $(srcdir)/%,$(outdir)/%,$(patsubst %.c,%.o ,$(filter %.c,$(_am.file2sources)))) +_am.file2.lo = $(patsubst %.o,%.lo,$(_am.file2.o)) +_am.file2lib = $(foreach l, $($(_am.file2var)_$2),$(if $(filter lib%.la,$l), $($(l:.la=).DEPENDS) , $l )) +_am.file2cpp = $(foreach l,$1 $($(_am.file2var)_$2),$(if $(filter lib%.la,$l), $($(l:.la=).CPPFLAGS) , )) + +define _am.pass0.doc +# == Pass 0: man_MANS == +# Erased inputs: +# - Directory variable: `man_MANS` +# Outputs: +# - Directory variable: `man$n_MANS` for $n in `{0..9} n l` +# +# Split man_MANS into man$n_MANS +endef +define _am.pass0 +man_MANS ?= +_am.man_MANS := $(man_MANS) +undefine man_MANS +man0_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .0,$(suffix $(_am.tmp))),$(_am.tmp))) +man1_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .1,$(suffix $(_am.tmp))),$(_am.tmp))) +man2_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .2,$(suffix $(_am.tmp))),$(_am.tmp))) +man3_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .3,$(suffix $(_am.tmp))),$(_am.tmp))) +man4_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .4,$(suffix $(_am.tmp))),$(_am.tmp))) +man5_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .5,$(suffix $(_am.tmp))),$(_am.tmp))) +man6_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .6,$(suffix $(_am.tmp))),$(_am.tmp))) +man7_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .7,$(suffix $(_am.tmp))),$(_am.tmp))) +man8_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .8,$(suffix $(_am.tmp))),$(_am.tmp))) +man9_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .9,$(suffix $(_am.tmp))),$(_am.tmp))) +manl_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .l,$(suffix $(_am.tmp))),$(_am.tmp))) +mann_MANS += $(foreach _am.tmp,$(_am.man_MANS),$(if $(findstring .n,$(suffix $(_am.tmp))),$(_am.tmp))) +endef + +define _am.pass1.doc +# == Pass 1: _am.per_primary == +# Inputs: +# - Global variable : `am.INSTALL_$(primary)` +# - Global variable : `am.sys2out_$(primary)` +# - Global variable : `$(dirname)dir` +# Erased inputs: +# - Directory variable : `$(dirname)_$(primary)` [1] [2] +# - Directory variable : `dist_$(dirname)_$(primary)` [1] [2] +# - Directory variable : `nodist_$(dirname)_$(primary)` [1] [2] +# - Directory variable : `noinst_$(primary)` [2] +# - Directory variable : `check_$(primary)` [2] +# Outputs: +# - Directory variable : `am.sys_$(primary)` +# - Directory variable : `am.out_$(primary)` +# - Directory variable : `am.check_$(primary)` +# - Target variable : `am.INSTALL` +# +# [1]: HACK: Each of these is first passed through `$(dir ...)`. +# +# [2]: HACK: For `am.out_*` each of these are turned into +# $(DESTDIR)-relative paths (ie, as if for `am.sys_*`), then turned +# back into $(outdir)-relative paths with `$(call +# am.sys2out_$(primary),...)`. +endef + +# Default values +am.INSTALL_PROGRAMS ?= $(INSTALL_PROGRAM) $< $@ +am.INSTALL_SCRIPTS ?= $(INSTALL) $< $@ +am.INSTALL_LTLIBRARIES ?= $(INSTALL) $< $@ +am.INSTALL_DATA ?= $(INSTALL_DATA) $< $@ +am.INSTALL_HEADERS ?= $(INSTALL_DATA) $< $@ +am.INSTALL_MANS ?= $(INSTALL_DATA) $< $@ +$(eval $(foreach p,$(_am.primaries),am.sys2out_$p ?= $$(notdir $$1)$(at.nl))) + +# Utility functions +_am.primary2dirs = $(filter $(patsubst %dir,%,$(filter %dir,$(.VARIABLES))),\ + $(patsubst nodist_%,%,$(patsubst dist_%,%,$(patsubst %_$1,%,$(filter %_$1,$(.VARIABLES)))))) + +_am.pass1 = $(eval $(foreach p,$(_am.primaries) ,$(call _am.per_primary,$p)$(at.nl))) +define _am.per_primary +# Initialize input variables +$(foreach d,$(call _am.primary2dirs,$1),\ + $d_$1 ?=$(at.nl)\ + dist_$d_$1 ?=$(at.nl)\ + nodist_$d_$1 ?=$(at.nl)) +noinst_$1 ?= +check_$1 ?= + +# Directory variable outputs +am.check_$1 := $$(check_$1) +am.sys_$1 := $(foreach d,$(call _am.primary2dirs,$1),$$(addprefix $$($ddir)/,$$(notdir $$($d_$1) $$(dist_$d_$1) $$(nodist_$d_$1)))) +am.out_$1 := $$(call am.sys2out_$1,$(foreach d,$(call _am.primary2dirs,$1),$$(addprefix $$($ddir)/,$$(notdir $$($d_$1) $$(nodist_$d_$1)))) $$(noinst_$1)) +# ^^^ ^ +# notdir-'|| | +# addprefix--'| | +# foreach d---' | +# am.sys2out------------------' + +# Erase appropriate inputs +$(foreach d,$(call _am.primary2dirs,$1),undefine $d_$1$(at.nl)undefine dist_$d_$1$(at.nl)undefine nodist_$d_$1$(at.nl)) +undefine noinst_$1 +undefine check_$1 + +# Target variable outputs +$$(addprefix $$(DESTDIR),$$(am.sys_$1)): private am.INSTALL = $$(am.INSTALL_$1) +endef + +define _am.pass2.doc +# == Pass 2: _am.per_PROGRAM == +# Inputs: +# - Directory variable : `am.out_PROGRAMS` +# Erased inputs: +# - Directory variable : `$(program)_SOURCES` +# - Directory variable : `nodist_$(program)_SOURCES` +# - Directory variable : `$(program)_CFLAGS` +# - Directory variable : `$(program)_CPPFLAGS` +# - Directory variable : `$(program)_LDFLAGS` +# - Directory variable : `$(program)_LDADD` +# Outputs: +# - Directory variable : `am.CPPFLAGS` +# - Directory variable : `am.CFLAGS` +# - Target dependencies: `$(outdir)/$(program)` +# - Target variable : `$(outdir)/$(program): am.LDFLAGS` +# - Directory variable : `am.subdirs` +# +# TODO: I'm not in love with how it figures out `am.subdirs`. +# TODO: I'm not in love with how it does the `install` dependencies. +endef +_am.pass2 = $(eval $(foreach f,$(am.out_PROGRAMS) ,$(call _am.per_PROGRAM,$f,$(call _am.file2var,$f))$(at.nl))) +_am.var_PROGRAMS = $1_SOURCES nodist_$1_SOURCES $1_CFLAGS $1_CPPFLAGS $1_LDFLAGS $1_LDADD +# $1 = filename +# $2 = varname +define _am.per_PROGRAM +$(foreach var,_am.depends $(call _am.var_PROGRAMS,$2),$(var) ?=$(at.nl)) +_am.depends += $$(call at.path,$$(call _am.file2.o,$1) $$(call _am.file2lib,$1,LDADD)) +am.CPPFLAGS += $$($2_CPPFLAGS) $$(call _am.file2cpp,$1,LDADD) +am.CFLAGS += $$($2_CFLAGS) +$$(outdir)/$1: private am.LDFLAGS := $$($2_LDFLAGS) +$$(outdir)/$1: $$(_am.depends) +$$(outdir)/install: $$(addsuffix install,$$(dir $$(filter %.la,$$(_am.depends)))) +am.subdirs := $$(sort $$(am.subdirs)\ + $$(filter-out $$(abspath $$(srcdir)),\ + $$(abspath $$(dir $$(filter-out -l% /%,$$(_am.depends)))))) +am.CPPFLAGS := $$(am.CPPFLAGS) +am.CFLAGS := $$(am.CFLAGS) +$(foreach var,_am.depends $(call _am.var_PROGRAMS,$2),undefine $(var)$(at.nl)) +endef + +define _am.pass3.doc +# == Pass 3: _am.per_LTLIBRARY == +# Inputs: +# - Directory variable : `am.out_LTLIBRARIES` +# Erased inputs: +# - Directory variable : `$(library)_SOURCES` +# - Directory variable : `nodist_$(library)_SOURCES` +# - Directory variable : `$(library)_CFLAGS` +# - Directory variable : `$(library)_CPPFLAGS` +# - Directory variable : `$(library)_LDFLAGS` +# - Directory variable : `$(library)_LIBADD` +# Outputs: +# - Directory variable : `am.CPPFLAGS` +# - Directory variable : `am.CFLAGS` +# - Target dependencies: `$(outdir)/$(library)` +# - Target variable : `$(outdir)/$(library): am.LDFLAGS` +# - Directory variable : `am.subdirs` +# +# TODO: I'm not in love with how it figures out `am.subdirs`. +# TODO: I'm not in love with how it does the `install` dependencies. +endef +_am.pass3 = $(eval $(foreach f,$(am.out_LTLIBRARIES),$(call _am.per_LTLIBRARY,$f,$(call _am.file2var,$f))$(at.nl))) +_am.var_LTLIBRARIES = $1_SOURCES nodist_$1_SOURCES $1_CFLAGS $1_CPPFLAGS $1_LDFLAGS $1_LIBADD +# $1 = filename +# $2 = varname +define _am.per_LTLIBRARY +$(foreach var,_am.depends $(call _am.var_LTLIBRARIES,$2),$(var) ?=$(at.nl)) +_am.depends += $$(call at.path,$$(call _am.file2.lo,$1) $$(call _am.file2lib,$1,LIBADD)) +am.CPPFLAGS += $$($2_CPPFLAGS) $$(call _am.file2cpp,$1,LIBADD) +am.CFLAGS += $$($2_CFLAGS) +$$(outdir)/$1: private am.LDFLAGS := $$($2_LDFLAGS) +$$(outdir)/$1: $$(_am.depends) +$$(outdir)/install: $$(addsuffix install,$$(dir $$(filter %.la,$$(_am.depends)))) +am.subdirs := $$(sort $$(am.subdirs)\ + $$(filter-out $$(abspath $$(srcdir)),\ + $$(abspath $$(dir $$(filter-out -l% /%,$$(_am.depends)))))) +am.CPPFLAGS := $$(am.CPPFLAGS) +am.CFLAGS := $$(am.CFLAGS) +$(foreach var,_am.depends $(call _am.var_LTLIBRARIES,$2),undefine $(var)$(at.nl)) +endef + +define _am.pass4.doc +# == Pass 4: Install rules / _am.per_directory == +# Inputs: +# - Directory variable : `am.sys_$(primary)` +# Outputs: +# - Target : `$(DESTDIR)/$($(dirname)dir)/%` +# +# Creates simple `install` rules. You will need to define your own rules if +# `am.sys2out_$(primary)` changed the notdir part of the filename. +endef + +# Utility functions +_am.sys2dirs = $(sort $(patsubst %/,%,$(dir $(foreach p,$(_am.primaries),$(am.sys_$p))))) + +_am.pass4 = $(eval $(foreach d,$(_am.sys2dirs) ,$(call _am.per_directory,$d)$(at.nl))) +define _am.per_directory +$$(DESTDIR)$1/%: $$(outdir)/% + @$$(NORMAL_INSTALL) + $$(am.INSTALL) +$$(DESTDIR)$1/%: $$(srcdir)/% + @$$(NORMAL_INSTALL) + $$(am.INSTALL) +endef + +mod.am.depends += files +define _am.pass5.doc +# == Pass 5: export == +# Inputs: +# - Directory variable : `am.subdirs` +# - Directory variable : `am.sys_$(primary)` +# - Directory variable : `am.out_$(primary)` +# - Directory variable : `am.check_$(primary)` +# Outputs: +# - Directory variable : `at.subdirs` +# - Directory variable : `files.sys.all` +# - Directory variable : `files.out.all` +# - Directory variable : `files.out.check` +endef +define _am.pass5 +at.subdirs += $(am.subdirs) +files.sys.all += $(foreach p,$(_am.primaries),$(am.sys_$p)) +files.out.all += $(foreach p,$(_am.primaries),$(am.out_$p)) +files.out.check += $(foreach p,$(_am.primaries),$(am.check_$p)) +endef diff --git a/build-aux/Makefile.once.head/zz-mod.mk b/build-aux/Makefile.once.head/zz-mod.mk new file mode 100644 index 0000000000..95d251d37c --- /dev/null +++ b/build-aux/Makefile.once.head/zz-mod.mk @@ -0,0 +1,59 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.mod.description = Display information about Autothing modules +mod.mod.depends += quote +define mod.mod.doc +# Inputs: +# - Files : `$(topsrcdir)/build-aux/Makefile.*/??-*.mk` +# - Global variable : `mod.*.description` +# - Global variable : `mod.*.depends` +# - Global variable : `mod.*.files` +# - Global variable : `mod.*.doc` +# Outputs: +# - Directory variable : `at.targets` +# - .PHONY Target : `$(outdir)/at-variables-local` +# - .PHONY Target : `$(outdir)/at-variables-global` +# - .PHONY Target : `$(outdir)/at-variables` +# - .PHONY Target : `$(outdir)/at-variables/%` +# - .PHONY Target : `$(outdir)/at-values` +# - .PHONY Target : `$(outdir)/at-values/%` +# - .PHONY Target : `$(outdir)/at-modules` +# - .PHONY Target : `$(outdir)/at-modules/%` +# - .PHONY Target : `$(outdir)/at-noop` +# +# TODO: prose documentation +endef +mod.mod.doc := $(value mod.mod.doc) + +# The trickery that is _mod.empty/_mod.space is from §6.2 of the GNU Make +# manual, "The Two Flavors of Variables". +_mod.empty := +_mod.space := $(_mod.empty) # +undefine _mod.empty +# _mod.rest is equivalent to GMSL rest. +_mod.rest = $(wordlist 2,$(words $1),$1) + +_mod.file2mod = $(foreach _mod.tmp,$(patsubst %.mk,%,$(notdir $1)),$(subst $(_mod.space),-,$(call _mod.rest,$(subst -, ,$(_mod.tmp))))) + +_mod.modules := $(sort $(call _mod.file2mod,$(wildcard $(topsrcdir)/build-aux/Makefile.*/??-*.mk))) +undefine _mod.rest +undefine _mod.file2mod + +$(eval $(foreach _mod.tmp,$(_mod.modules),\ + mod.$(_mod.tmp).description ?=$(at.nl)\ + mod.$(_mod.tmp).depends ?=$(at.nl)\ + mod.$(_mod.tmp).files ?=$(at.nl)\ + mod.$(_mod.tmp).doc ?=$(at.nl))) diff --git a/build-aux/Makefile.once.tail/00-dist.mk b/build-aux/Makefile.once.tail/00-dist.mk new file mode 100644 index 0000000000..a890d9d6dc --- /dev/null +++ b/build-aux/Makefile.once.tail/00-dist.mk @@ -0,0 +1,28 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +_dist.copyfile = $(MKDIR_P) $(dir $2) && $(CP) -T $1 $2 +_dist.addfile = $(call _dist.copyfile,$3,$2/$(call at.relto,$1,$3)) +$(topoutdir)/$(dist.pkgname)-$(dist.version): $(_dist.files) + $(RM) -r $@ $(@D)/.tmp.$(@F) + $(MKDIR) $(@D)/.tmp.$(@F) + $(foreach f,$^,$(call _dist.addfile,$(topsrcdir),$(@D)/.tmp.$(@F),$f)$(at.nl)) + $(MV) $(@D)/.tmp.$(@F) $@ || $(RM) -r $(@D)/.tmp.$(@F) + +# TODO: The tar rule isn't reproducible, it should be. +$(topoutdir)/$(dist.pkgname)-$(dist.version).tar: %.tar: % + $(TAR) cf $@ -C $(<D) $(<F) +$(topoutdir)/$(dist.pkgname)-$(dist.version).tar.gz: %.gz: % + $(GZIP) $(GZIPFLAGS) < $< > $@ diff --git a/build-aux/Makefile.once.tail/10-sd.mk b/build-aux/Makefile.once.tail/10-sd.mk index 7df79c0364..66ff8d3a09 100644 --- a/build-aux/Makefile.once.tail/10-sd.mk +++ b/build-aux/Makefile.once.tail/10-sd.mk @@ -20,8 +20,24 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk + +_sd.autogen_files = aclocal.m4 automake.mk.in config.h.in configure po/Makefile.in.in +# `$*`/`%` had better be $(topsrcdir), but we can't enforce that +$(addprefix %/,$(_sd.autogen_files)): %/configure.ac %/autogen.sh + cd $(topsrcdir) && ./autogen.sh + +config_files = config.mk automake.mk autoconf.mk gnustandards.mk po/Makefile.in +config_headers = config.h +config_commands = depfiles libtool po/stamp-it +$(topoutdir)/config.status: $(topsrcdir)/configure + cd $(topoutdir) && ./config.status --recheck +$(addprefix $(topoutdir)/,$(config_files)): $(topoutdir)/%: $(topoutdir)/config.status $(topsrcdir)/%.in + cd $(topoutdir) && ./config.status --file=$* +$(addprefix $(topoutdir)/,$(config_headers)): $(topoutdir)/%: $(topoutdir)/%.stamp +$(foreach f,$(config_headers),$(topoutdir)/$f.stamp): $(topoutdir)/%.stamp: $(topoutdir)/config.status $(topsrcdir)/%.in + cd $(topoutdir) && ./config.status --header=$* + test -f $(topoutdir)/$* + touch $@ # Let's run all tests of the test suite, but under valgrind. Let's # exclude perl/python/shell scripts we have in there @@ -35,21 +51,21 @@ valgrind-tests: $(TESTS) x="\n\n"; \ done -exported-%: % - $(AM_V_GEN)$(NM) -g --defined-only $(builddir)/.libs/$(<:.la=.so) 2>&1 /dev/null | grep " T " | cut -d" " -f3 > $@ +# exported-%: % +# $(AM_V_GEN)$(NM) -g --defined-only $(builddir)/.libs/$(<:.la=.so) 2>&1 /dev/null | grep " T " | cut -d" " -f3 > $@ -exported: $(addprefix exported-, $(lib_LTLIBRARIES)) - $(AM_V_GEN)sort -u $^ > $@ +# exported: $(addprefix exported-, $(lib_LTLIBRARIES)) +# $(AM_V_GEN)sort -u $^ > $@ -.PHONY: check-api-docs -check-api-docs: exported man - $(AM_V_GEN)for symbol in `cat exported` ; do \ - if test -f $(builddir)/man/$$symbol.html ; then \ - echo " Symbol $$symbol() is documented." ; \ - else \ - echo "‣ Symbol $$symbol() lacks documentation." ; \ - fi ; \ - done +# .PHONY: check-api-docs +# check-api-docs: exported man +# $(AM_V_GEN)for symbol in `cat exported` ; do \ +# if test -f $(builddir)/man/$$symbol.html ; then \ +# echo " Symbol $$symbol() is documented." ; \ +# else \ +# echo "‣ Symbol $$symbol() lacks documentation." ; \ +# fi ; \ +# done OBJECT_VARIABLES:=$(filter %_OBJECTS,$(.VARIABLES)) ALL_OBJECTS:=$(foreach v,$(OBJECT_VARIABLES),$($(v))) @@ -94,5 +110,3 @@ list-keys: add-key: gpg --verbose --no-options --no-default-keyring --no-auto-key-locate --batch --trust-model=always --keyring=$(srcdir)/src/import/import-pubring.gpg --import - - -include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/build-aux/Makefile.tail.mk b/build-aux/Makefile.tail.mk new file mode 100644 index 0000000000..2e4adc611b --- /dev/null +++ b/build-aux/Makefile.tail.mk @@ -0,0 +1,40 @@ +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# This bit gets evaluated for each Makefile processed + +include $(call _at.reverse,$(sort $(wildcard $(topsrcdir)/build-aux/Makefile.each.tail/*.mk))) + +_at.tmp_targets := $(at.targets) +_at.tmp_subdirs := $(call at.addprefix,$(outdir),$(at.subdirs)) + +# Clean the environment +$(eval \ + $(foreach _at.tmp_variable,$(filter-out $(call _at.quote-pattern,_at.tmp_variable $(_at.VARIABLES)),$(.VARIABLES)),\ + $(call _at.target_variable,$(_at.tmp_targets),$(_at.tmp_variable))$(at.nl)\ + undefine $(_at.tmp_variable)$(at.nl))) + +# Recurse +$(foreach _at.NO_ONCE,y,\ + $(foreach _at.tmp,$(call at.path,$(addsuffix /$(at.Makefile),$(_at.tmp_subdirs))),\ + $(if $(filter-out $(_at.MAKEFILE_LIST),$(abspath $(_at.tmp))),\ + $(eval include $(_at.tmp))))) + +# This bit only gets evaluated once, after all of the other Makefiles are read +ifeq ($(origin _at.NO_ONCE),undefined) + +include $(call _at.reverse,$(sort $(wildcard $(topsrcdir)/build-aux/Makefile.once.tail/*.mk))) + +endif # _at.NO_ONCE diff --git a/build-aux/write-atomic b/build-aux/write-atomic new file mode 100755 index 0000000000..ab2a417c12 --- /dev/null +++ b/build-aux/write-atomic @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Copyright (C) 2015-2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +outfile=$1 +tmpfile="$(dirname "$outfile")/.tmp.${outfile##*/}.tmp" + +cat > "$tmpfile" || { r=$?; rm -f "$tmpfile"; exit $r; } +mv -f "$tmpfile" "$outfile" diff --git a/config.mk.in b/config.mk.in index 77283a78bf..40c5af6e65 100644 --- a/config.mk.in +++ b/config.mk.in @@ -20,8 +20,34 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk + +ifeq ($(origin topsrcdir),undefined) +topoutdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +topsrcdir := $(topoutdir)/@top_srcdir@ + +.LIBPATTERNS = lib%.so lib%.a + +include $(topoutdir)/gnustandards.mk +include $(topoutdir)/autoconf.mk + +CCLD = $(CC) + +OUR_CPPFLAGS = @OUR_CPPFLAGS@ +OUR_CFLAGS = @OUR_CFLAGS@ +OUR_LDFLAGS = @OUR_LDFLAGS@ +OUR_LIBTOOLFLAGS = + +AM_CPPFLAGS = +AM_CFLAGS = +AM_LDFLAGS = +AM_LIBTOOLFLAGS = + +EFI_CPPFLAGS = +EFI_CFLAGS = +EFI_LDFLAGS = + +SYSTEM_SYSVINIT_PATH = @SYSTEM_SYSVINIT_PATH@ +SYSTEM_SYSVRCND_PATH = @SYSTEM_SYSVRCND_PATH@ # Dirs of external packages dbuspolicydir=@dbuspolicydir@ @@ -73,6 +99,278 @@ bootlibdir = $(prefix)/lib/systemd/boot/efi rootprefix=@rootprefix@ rootbindir=$(rootprefix)/bin rootlibexecdir=$(rootprefix)/lib/systemd +rootlibdir=@rootlibdir@ + +# Libraries we provide +libsystemd.CPPFLAGS = -I$(topsrcdir)/src/libsystemd/include +libsystemd.DEPENDS = $(topoutdir)/src/libsystemd/libsystemd.la +libsystemd-internal.CPPFLAGS = -I$(topsrcdir)/src/libsystemd/src -I$(topoutdir)/src/libsystemd/src $(libsystemd.CPPFLAGS) $(libsystemd-staging.CPPFLAGS) $(libsystemd-basic.CPPFLAGS) +libsystemd-internal.DEPENDS = $(topoutdir)/src/libsystemd/src/libsystemd-internal.la +libsystemd-staging.CPPFLAGS = -I$(topsrcdir)/src/libsystemd/include-staging $(libsystemd.CPPFLAGS) +libsystemd-staging.DEPENDS = $(libsystemd-internal.DEPENDS) + +libsystemd-basic.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-basic/include +libsystemd-basic.DEPENDS = $(topoutdir)/src/libsystemd-basic/src/libsystemd-basic.la +libsystemd-blkid.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-blkid/include $(libsystemd-basic.CPPFLAGS) $(BLKID_CFLAGS) +libsystemd-blkid.DEPENDS = $(BLKID_LIBS) +libsystemd-firewall.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-firewall/include $(libsystemd-basic.CPPFLAGS) +libsystemd-firewall.DEPENDS = $(topoutdir)/src/libsystemd-firewall/src/libsystemd-firewall.la +libsystemd-microhttpd.CPPFLAGS = -I$(topsrcdir)/src/grp-journal/grp-remote/libsystemd-microhttpd/include $(libsystemd-basic.CPPFLAGS) +libsystemd-microhttpd.DEPENDS = $(topoutdir)/src/grp-journal/grp-remote/libsystemd-microhttpd/src/libsystemd-microhttpd.la +libsystemd-gcrypt.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-gcrypt/include +libsystemd-gcrypt.DEPENDS = $(topoutdir)/src/libsystemd-gcrypt/src/libsystemd-gcrypt.la +libsystemd-network.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-network/include $(libsystemd-basic.CPPFLAGS) $(libsystemd-shared.CPPFLAGS) +libsystemd-network.DEPENDS = $(topoutdir)/src/libsystemd-network/src/libsystemd-network.la +libsystemd-shared.CPPFLAGS = -I$(topsrcdir)/src/libsystemd-shared/include $(libsystemd-basic.CPPFLAGS) $(libudev-internal.CPPFLAGS) +libsystemd-shared.DEPENDS = $(topoutdir)/src/libsystemd-shared/src/libsystemd-shared.la + +libudev.CPPFLAGS = -I$(topsrcdir)/src/libudev/include +libudev.DEPENDS = $(topoutdir)/src/libudev/libudev.la +libudev-internal.CPPFLAGS = -I$(topsrcdir)/src/libudev/src $(libudev.CPPFLAGS) $(libsystemd-basic.CPPFLAGS) $(libsystemd-staging.CPPFLAGS) +libudev-internal.DEPENDS = $(topoutdir)/src/libudev/src/libudev-internal.la + +# -core libs +libcore.CPPFLAGS = -I$(topsrcdir)/src/grp-system/libcore/include $(libsystemd-shared.CPPFLAGS) +libcore.DEPENDS = $(topoutdir)/src/grp-system/libcore/src/libcore.la +#libbus-proxy-core.CPPFLAGS = +#libbus-proxy-core.DEPENDS = +libjournal-core.CPPFLAGS = -I$(topsrcdir)/src/grp-journal/libjournal-core/include $(libsystemd-internal.CPPFLAGS) $(libsystemd-basic.CPPFLAGS) $(libsystemd-shared.CPPFLAGS) +libjournal-core.DEPENDS = $(topoutdir)/src/grp-journal/libjournal-core/src/libjournal-core.la +#liblogind-core.CPPFLAGS = +#liblogind-core.DEPENDS = +libmachine-core.CPPFLAGS = -I$(topsrcdir)/src/grp-machine/libmachine-core/include +libmachine-core.DEPENDS = $(topoutdir)/src/grp-machine/libmachine-core/src/libmachine-core.la +libnetworkd-core.CPPFLAGS = -I$(topsrcdir)/src/grp-network/libnetworkd-core $(libsystemd-internal.CPPFLAGS) $(libsystemd-network.CPPFLAGS) $(libsystemd-shared.CPPFLAGS) $(libudev-internal.CPPFLAGS) +libnetworkd-core.DEPENDS = $(topoutdir)/src/grp-network/libnetworkd-core/libnetworkd-core.la +libudev-core.CPPFLAGS = -I$(topoutdir)/src/grp-udev/libudev-core $(libsystemd-network.CPPFLAGS) $(libsystemd-shared.CPPFLAGS) +libudev-core.DEPENDS = $(topoutdir)/src/grp-udev/libudev-core/libudev-core.la +libbasic-dns.CPPFLAGS = -I$(topsrcdir)/src/grp-resolve/libbasic-dns/include +libbasic-dns.DEPENDS = $(topoutdir)/src/grp-resolve/libbasic-dns/src/libbasic-dns.la +libimport.CPPFLAGS = -I$(topsrcdir)/src/grp-machine/grp-import/libimport +libimport.DEPENDS = $(topoutdir)/src/grp-machine/grp-import/libimport/libimport.la +# NSS modules +libnss_myhostname.CPPFLAGS = +libnss_myhostname.DEPENDS = +libnss_mymachines.CPPFLAGS = +libnss_mymachines.DEPENDS = +libnss_resolve.CPPFLAGS = +libnss_resolve.DEPENDS = + +# Libraries we use +HAVE_ACL = @HAVE_ACL_TRUE@1 + ACL_CFLAGS =#HARDCODED + ACL_LIBS = @ACL_LIBS@ +HAVE_APPARMOR = @HAVE_APPARMOR_TRUE@1 + APPARMOR_CFLAGS = @APPARMOR_CFLAGS@ + APPARMOR_LIBS = @APPARMOR_LIBS@ +HAVE_AUDIT = @HAVE_AUDIT_TRUE@1 + AUDIT_CFLAGS =#HARDCODED + AUDIT_LIBS = @AUDIT_LIBS@ +HAVE_BLKID = @HAVE_BLKID_TRUE@1 + BLKID_CFLAGS = @BLKID_CFLAGS@ + BLKID_LIBS = @BLKID_LIBS@ +HAVE_BZIP2 = @HAVE_BZIP2_TRUE@1 + BZIP2_CFLAGS =#HARDCODED + BZIP2_LIBS = -lbz2#HARDCODED +HAVE_CAP = 1#HARDCODED + CAP_CFLAGS =#HARDCODED + CAP_LIBS = @CAP_LIBS@ +HAVE_DBUS = @HAVE_DBUS_TRUE@1 + DBUS_CFLAGS = @DBUS_CFLAGS@ + DBUS_LIBS = @DBUS_LIBS@ +HAVE_ELFUTILS = @HAVE_ELFUTILS_TRUE@1 + ELFUTILS_CFLAGS =#HARDCODED + ELFUTILS_LIBS = @ELFUTILS_LIBS@ +HAVE_GCRYPT = @HAVE_GCRYPT_TRUE@1 + GCRYPT_CFLAGS = @GCRYPT_CFLAGS@ + GCRYPT_LIBS = @GCRYPT_LIBS@ +HAVE_GNUTLS = @HAVE_GNUTLS_TRUE@1 + GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ + GNUTLS_LIBS = @GNUTLS_LIBS@ +HAVE_KMOD = @HAVE_KMOD_TRUE@1 + KMOD_CFLAGS = @KMOD_CFLAGS@ + KMOD_LIBS = @KMOD_LIBS@ +HAVE_LIBCRYPTSETUP = @HAVE_LIBCRYPTSETUP_TRUE@1 + LIBCRYPTSETUP_CFLAGS = @LIBCRYPTSETUP_CFLAGS@ + LIBCRYPTSETUP_LIBS = @LIBCRYPTSETUP_LIBS@ +HAVE_LIBCURL = @HAVE_LIBCURL_TRUE@1 + LIBCURL_CFLAGS = @LIBCURL_CFLAGS@ + LIBCURL_LIBS = @LIBCURL_LIBS@ +HAVE_LIBIDN = @HAVE_LIBIDN_TRUE@1 + LIBIDN_CFLAGS = @LIBIDN_CFLAGS@ + LIBIDN_LIBS = @LIBIDN_LIBS@ +HAVE_LIBIPTC = @HAVE_LIBIPTC_TRUE@1 + LIBIPTC_CFLAGS = @LIBIPTC_CFLAGS@ + LIBIPTC_LIBS = @LIBIPTC_LIBS@ +HAVE_LZ4 = @HAVE_LZ4_TRUE@1 + LZ4_CFLAGS = @LZ4_CFLAGS@ + LZ4_LIBS = @LZ4_LIBS@ +HAVE_MICROHTTPD = @HAVE_MICROHTTPD_TRUE@1 + MICROHTTPD_CFLAGS = @MICROHTTPD_CFLAGS@ + MICROHTTPD_LIBS = @MICROHTTPD_LIBS@ +HAVE_MOUNT = 1#HARDCODED + MOUNT_CFLAGS = @MOUNT_CFLAGS@ + MOUNT_LIBS = @MOUNT_LIBS@ +HAVE_PAM = @HAVE_PAM_TRUE@1 + PAM_CFLAGS =#HARDCODED + PAM_LIBS = @PAM_LIBS@ +HAVE_QRENCODE = @HAVE_QRENCODE_TRUE@1 + QRENCODE_CFLAGS = @QRENCODE_CFLAGS@ + QRENCODE_LIBS = @QRENCODE_LIBS@ +HAVE_SECCOMP = @HAVE_SECCOMP_TRUE@1 + SECCOMP_CFLAGS = @SECCOMP_CFLAGS@ + SECCOMP_LIBS = @SECCOMP_LIBS@ +HAVE_SELINUX = @HAVE_SELINUX_TRUE@1 + SELINUX_CFLAGS = @SELINUX_CFLAGS@ + SELINUX_LIBS = @SELINUX_LIBS@ +HAVE_XKBCOMMON = @HAVE_XKBCOMMON_TRUE@1 + XKBCOMMON_CFLAGS = @XKBCOMMON_CFLAGS@ + XKBCOMMON_LIBS = @XKBCOMMON_LIBS@ +HAVE_XZ = @HAVE_XZ_TRUE@1 + XZ_CFLAGS = @XZ_CFLAGS@ + XZ_LIBS = @XZ_LIBS@ +HAVE_ZLIB = @HAVE_ZLIB_TRUE@1 + ZLIB_CFLAGS = @ZLIB_CFLAGS@ + ZLIB_LIBS = @ZLIB_LIBS@ + +# Other stuff +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ + +ARCH_AARCH64 = @ARCH_AARCH64_TRUE@1 +ARCH_IA32 = @ARCH_IA32_TRUE@1 +ARCH_X86_64 = @ARCH_X86_64_TRUE@1 + +DEFAULT_DNSSEC_MODE = @DEFAULT_DNSSEC_MODE@ +KILL_USER_PROCESSES = @KILL_USER_PROCESSES@ + +ENABLE_BACKLIGHT = @ENABLE_BACKLIGHT_TRUE@1 +ENABLE_BASH_COMPLETION = @ENABLE_BASH_COMPLETION_TRUE@1 +ENABLE_BINFMT = @ENABLE_BINFMT_TRUE@1 +ENABLE_BOOTCHART = @ENABLE_BOOTCHART_TRUE@1 +ENABLE_COMPAT_LIBS = @ENABLE_COMPAT_LIBS_TRUE@1 +ENABLE_COREDUMP = @ENABLE_COREDUMP_TRUE@1 +ENABLE_COVERAGE = @ENABLE_COVERAGE_TRUE@1 +ENABLE_EFI = @ENABLE_EFI_TRUE@1 +ENABLE_FIRSTBOOT = @ENABLE_FIRSTBOOT_TRUE@1 +ENABLE_HIBERNATE = @ENABLE_HIBERNATE_TRUE@1 +ENABLE_HOSTNAMED = @ENABLE_HOSTNAMED_TRUE@1 +ENABLE_HWDB = @ENABLE_HWDB_TRUE@1 +ENABLE_IMPORTD = @ENABLE_IMPORTD_TRUE@1 +ENABLE_LDCONFIG = @ENABLE_LDCONFIG_TRUE@1 +ENABLE_LOCALED = @ENABLE_LOCALED_TRUE@1 +ENABLE_LOGIND = @ENABLE_LOGIND_TRUE@1 +ENABLE_MACHINED = @ENABLE_MACHINED_TRUE@1 +ENABLE_MANPAGES = @ENABLE_MANPAGES_TRUE@1 +ENABLE_NETWORKD = @ENABLE_NETWORKD_TRUE@1 +ENABLE_POLKIT = @ENABLE_POLKIT_TRUE@1 +ENABLE_QUOTACHECK = @ENABLE_QUOTACHECK_TRUE@1 +ENABLE_RANDOMSEED = @ENABLE_RANDOMSEED_TRUE@1 +ENABLE_RESOLVED = @ENABLE_RESOLVED_TRUE@1 +ENABLE_RFKILL = @ENABLE_RFKILL_TRUE@1 +ENABLE_SPLIT_USR = @ENABLE_SPLIT_USR_TRUE@1 +ENABLE_SYSUSERS = @ENABLE_SYSUSERS_TRUE@1 +ENABLE_TESTS = @ENABLE_TESTS_TRUE@1 +ENABLE_UNSAFE_TESTS = @ENABLE_UNSAFE_TESTS_TRUE@1 +ENABLE_TIMEDATED = @ENABLE_TIMEDATED_TRUE@1 +ENABLE_TIMESYNCD = @ENABLE_TIMESYNCD_TRUE@1 +ENABLE_TMPFILES = @ENABLE_TMPFILES_TRUE@1 +ENABLE_VCONSOLE = @ENABLE_VCONSOLE_TRUE@1 +ENABLE_ZSH_COMPLETION = @ENABLE_ZSH_COMPLETION_TRUE@1 + +HAVE_COMPRESSION = @HAVE_COMPRESSION_TRUE@1 +HAVE_GNUEFI = @HAVE_GNUEFI_TRUE@1 +HAVE_MYHOSTNAME = @HAVE_MYHOSTNAME_TRUE@1 +HAVE_PYTHON = @HAVE_PYTHON_TRUE@1 +HAVE_REMOTE = @HAVE_REMOTE_TRUE@1 +HAVE_SMACK = @HAVE_SMACK_TRUE@1 +HAVE_SYSV_COMPAT = @HAVE_SYSV_COMPAT_TRUE@1 +HAVE_UTMP = @HAVE_UTMP_TRUE@1 + +LIBTOOLFLAGS = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ + +INSTALL = install -D + +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +GMSGFMT = @GMSGFMT@ +KBD_LOADKEYS = @KBD_LOADKEYS@ +KBD_SETFONT = @KBD_SETFONT@ +KEXEC = @KEXEC@ +KILL = @KILL@ +KMOD = @KMOD@ +LD = @LD@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +PKG_CONFIG = @PKG_CONFIG@ +PYTHON = @PYTHON@ +QEMU = @QEMU@ +QUOTACHECK = @QUOTACHECK@ +QUOTAON = @QUOTAON@ +SETCAP = @SETCAP@ +SULOGIN = @SULOGIN@ +SUSHELL = @SUSHELL@ +UMOUNT_PATH = @UMOUNT_PATH@ +XSLTPROC = @XSLTPROC@ +MOUNT_PATH = @MOUNT_PATH@ + +AMTAR = @AMTAR@ +CCDEPMODE = @CCDEPMODE@ +CERTIFICATEROOT = @CERTIFICATEROOT@ +DEBUGTTY = @DEBUGTTY@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DNS_SERVERS = @DNS_SERVERS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EFI_ARCH = @EFI_ARCH@ +EFI_CC = @EFI_CC@ +EFI_INC_DIR = @EFI_INC_DIR@ +EFI_LDS_DIR = @EFI_LDS_DIR@ +EFI_LIB_DIR = @EFI_LIB_DIR@ +EFI_MACHINE_TYPE_NAME = @EFI_MACHINE_TYPE_NAME@ +EXEEXT = @EXEEXT@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +NMEDIT = @NMEDIT@ +NTP_SERVERS = @NTP_SERVERS@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ + +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +QEMU_BIOS = @QEMU_BIOS@ +RC_LOCAL_SCRIPT_PATH_START = @RC_LOCAL_SCRIPT_PATH_START@ +RC_LOCAL_SCRIPT_PATH_STOP = @RC_LOCAL_SCRIPT_PATH_STOP@ +SYSTEM_GID_MAX = @SYSTEM_GID_MAX@ +SYSTEM_UID_MAX = @SYSTEM_UID_MAX@ +TELINIT = @TELINIT@ +TTY_GID = @TTY_GID@ +USE_NLS = @USE_NLS@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ -include $(topsrcdir)/build-aux/Makefile.tail.mk +endif diff --git a/configure.ac b/configure.ac index 1928e65bde..eda0e1019d 100644 --- a/configure.ac +++ b/configure.ac @@ -25,7 +25,7 @@ AC_INIT([systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -AC_CONFIG_SRCDIR([src/core/main.c]) +AC_CONFIG_SRCDIR([src/grp-system/systemd/main.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([build-aux]) @@ -59,7 +59,7 @@ SET_ARCH(IA32, i*86*) SET_ARCH(MIPS, mips*) SET_ARCH(AARCH64, aarch64*) -# i18n stuff for the PolicyKit policy files, heck whether intltool can be found, disable NLS otherwise +# i18n stuff for the PolicyKit policy files, check whether intltool can be found, disable NLS otherwise AC_CHECK_PROG(intltool_found, [intltool-merge], [yes], [no]) AS_IF([test x"$intltool_found" != xyes], [AS_IF([test x"$enable_nls" = xyes], @@ -86,11 +86,16 @@ GETTEXT_PACKAGE=systemd AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [systemd]) +AC_PROG_AWK +AC_PROG_GREP +AC_PROG_EGREP +AC_PROG_FGREP +AC_PROG_INSTALL AC_PROG_MKDIR_P +AC_PROG_LEX AC_PROG_LN_S AC_PROG_SED -AC_PROG_GREP -AC_PROG_AWK +AC_PROG_YACC AC_PATH_PROG([M4], [m4]) @@ -188,7 +193,6 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -fno-common \ -fdiagnostics-show-option \ -fno-strict-aliasing \ - -fvisibility=hidden \ -fstack-protector \ -fstack-protector-strong \ -fPIE \ @@ -1590,11 +1594,24 @@ AC_SUBST([rootprefix], [$with_rootprefix]) AC_SUBST([rootlibdir], [$with_rootlibdir]) AC_CONFIG_FILES([ - Makefile + config.mk + automake.mk + autoconf.mk + gnustandards.mk po/Makefile.in ]) -AC_OUTPUT +AC_OUTPUT([], [], [ +if test "$srcdir" != .; then + { + find "$srcdir" -name Makefile -printf '%P\n' + find "$srcdir" -name subdir.mk -printf '%P\n' + } | while read -r filename; do + mkdir -p "\$(dirname "\$filename")" + ln -srfT "$srcdir/\$filename" "\$filename" + done +fi +]) AC_MSG_RESULT([ $PACKAGE_NAME $VERSION @@ -1672,6 +1689,7 @@ AC_MSG_RESULT([ tests: ${enable_tests} prefix: ${prefix} + exec_prefix: ${exec_prefix} rootprefix: ${with_rootprefix} sysconf dir: ${sysconfdir} datarootdir: ${datarootdir} diff --git a/gnustandards.mk.in b/gnustandards.mk.in new file mode 100644 index 0000000000..9c0dced485 --- /dev/null +++ b/gnustandards.mk.in @@ -0,0 +1,138 @@ +# 7.2.2: Utilities in Makefiles +# ----------------------------- + +# It's ok to hard-code these commands in rules, but who wants to +# memorize the list of what's ok? +AWK = @AWK@# Requires AC_PROG_AWK +CAT = cat +CMP = cmp +CP = cp +DIFF = diff +ECHO = echo +EGREP = @EGREP@# Requires AC_PROG_EGREP +EXPR = expr +FALSE = false +GREP = @GREP@# Requires AC_PROG_GREP +INSTALL_INFO = install-info +LN = ln +LS = ls +MKDIR = mkdir +MV = mv +PRINTF = printf +PWD = pwd +RM = rm -f +RMDIR = rmdir +SED = sed +SLEEP = sleep +SORT = sort +TAR = tar +TEST = test +TOUCH = touch +TR = tr +TRUE = true + +# These must be user-configurable +AR = @AR@ +ARFLAGS = +BISON = bison +BISONFLAGS = +CC = @CC@ +CCFLAGS = $(CFLAGS) +FLEX = flex +FLEXFLAGS = +INSTALL = @INSTALL@# Requires AC_PROG_INSTALL +#INSTALLFLAGS = +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LDCONFIG = ldconfig +LDCONFIGFLAGS = +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEXFLAGS = $(LFLAGS) +#MAKE +MAKEINFO = @MAKEINFO@ +MAKEINFOFLAGS = +RANLIB = @RANLIB@ +RANLIBFLAGS = +TEXI2DVI = texi2dvi +TEXI2DVIFLAGS = +YACC = @YACC@ +YACCFLAGS = $(YFLAGS) + +CFLAGS = @CFLAGS@ +LFLAGS = +YFLAGS = @YFLAGS@ + +LN_S = @LN_S@ + +CHGRP = chgrp +CHMOD = chmod +CHOWN = chown +MKNOD = mknod + +# 7.2.3 Variables for Specifying Commands +# --------------------------------------- + +INSTALL_PROGRAM = @INSTALL_PROGRAM@# Requires AC_PROG_INSTALL +INSTALL_DATA = @INSTALL_DATA@# Requires AC_PROG_INSTALL + +# 7.2.5 Variables for Installation Directories +# -------------------------------------------- + +# Root for the installation +prefix = @prefix@ +exec_prefix = @exec_prefix@ +# Executable programs +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +# Data files +datarootdir = @datarootdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +runstatedir = $(localstatedir)/run# Requires Autoconf 2.70+ +# Specific types of files +includedir = @includedir@ +oldincludedir = @oldincludedir@ +docdir = @docdir@ +infodir = @infodir@ +htmldir = @htmldir@ +dvidir = @dvidir@ +pdfdir = @pdfdir@ +psdir = @psdir@ +libdir = @libdir@ +lispdir = $(datarootdir)/emacs/site-lisp# Requires manual configure.ac support +localedir = @localedir@ + +mandir = @mandir@ +man1dir = $(mandir)/man1 +man2dir = $(mandir)/man2 +man3dir = $(mandir)/man3 +man4dir = $(mandir)/man4 +man5dir = $(mandir)/man5 +man6dir = $(mandir)/man6 +man7dir = $(mandir)/man7 +man8dir = $(mandir)/man8 + +manext = .1 +man1ext = .1 +man2ext = .2 +man3ext = .3 +man4ext = .4 +man5ext = .5 +man6ext = .6 +man7ext = .7 +man8ext = .8 + +# 7.2.7: Install Command Categories +# --------------------------------- + +PRE_INSTALL = +POST_INSTALL = +NORMAL_INSTALL = + +PRE_UNINSTALL = +POST_UNINSTALL = +NORMAL_UNINSTALL = diff --git a/man/.gitignore b/man/.gitignore index d928e5a83f..1e3a647575 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -3,3 +3,4 @@ /*.[13578] /*.html /custom-entities.ent +/custom-entities.ent.in diff --git a/man/Makefile b/man/Makefile index edba211499..87dee0b725 100644 --- a/man/Makefile +++ b/man/Makefile @@ -23,10 +23,11 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -$(outdir)/custom-entities.ent: configure.ac - $(AM_V_GEN)$(MKDIR_P) $(dir $@) +$(srcdir)/custom-entities.ent.in: $(outdir)/.var.sd.substitution_keys $(AM_V_GEN)(echo '<?xml version="1.0" encoding="utf-8" ?>' && \ - printf '$(subst '|,<!ENTITY ,$(subst =, ",$(subst |',">\n,$(substitutions))))') \ - > $@ # ' + printf '<!ENTITY %s "@%s@">\n' $(foreach v,$(sd.substitution_keys),$v $v)) \ + > $@ +files.src.gen += custom-entities.ent.in +sd.sed_files += custom-entities.ent include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/busctl/Makefile b/src/busctl/Makefile index bb41d82b85..9e8f1fac4f 100644 --- a/src/busctl/Makefile +++ b/src/busctl/Makefile @@ -32,6 +32,7 @@ busctl_SOURCES = \ src/libsystemd/sd-bus/busctl-introspect.h busctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/busctl/busctl-introspect.h b/src/busctl/busctl-introspect.h index d922e352db..3dd1df4e47 100644 --- a/src/busctl/busctl-introspect.h +++ b/src/busctl/busctl-introspect.h @@ -20,6 +20,7 @@ ***/ #include <stdbool.h> +#include <stdint.h> typedef struct XMLIntrospectOps { int (*on_path)(const char *path, void *userdata); diff --git a/src/grp-boot/bootctl/Makefile b/src/grp-boot/bootctl/Makefile index 90bbed9fad..58f22611e9 100644 --- a/src/grp-boot/bootctl/Makefile +++ b/src/grp-boot/bootctl/Makefile @@ -37,6 +37,7 @@ bootctl_CFLAGS = \ bootctl_LDADD = \ libsystemd-shared.la \ + libsystemd-blkid.la \ $(BLKID_LIBS) bin_PROGRAMS += \ diff --git a/src/grp-boot/systemd-boot/Makefile b/src/grp-boot/systemd-boot/Makefile index 3b4d4ddda1..8b770c0c81 100644 --- a/src/grp-boot/systemd-boot/Makefile +++ b/src/grp-boot/systemd-boot/Makefile @@ -25,6 +25,7 @@ include $(topsrcdir)/build-aux/Makefile.head.mk ifneq ($(ENABLE_EFI),) ifneq ($(HAVE_GNUEFI),) +# ------------------------------------------------------------------------------ efi_cppflags = \ $(EFI_CPPFLAGS) \ -I$(top_builddir) -include config.h \ @@ -81,9 +82,18 @@ EFI_FORMAT = -O binary else EFI_FORMAT = --target=efi-app-$(EFI_ARCH) endif # ARCH_AARCH64 -endif # HAVE_GNUEFI -endif # ENABLE_EFI +$(outdir)/%.o: $(srcdir)/%.c + $(AM_V_EFI_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@ + +$(outdir)/%.so: + @if test $(words $^) = 0; then echo 'Cannot link EFI library with no dependencies: $@' >&2; exit 1; fi + $(AM_V_EFI_CCLD)$(LD) $(efi_ldflags) $^ -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name) + $(AM_V_at)! { nm -D -u $@ | grep ' U '; } + +# These next 2 are the same rule +$(outdir)/%$(EFI_MACHINE_TYPE_NAME).efi : $(outdir)/%.so; $(AM_V_GEN)$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .reloc $(EFI_FORMAT) $< $@ +$(outdir)/%$(EFI_MACHINE_TYPE_NAME).efi.stub: $(outdir)/%.so; $(AM_V_GEN)$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .reloc $(EFI_FORMAT) $< $@ # ------------------------------------------------------------------------------ systemd_boot_headers = \ src/boot/efi/util.h \ @@ -102,33 +112,9 @@ systemd_boot_sources = \ src/boot/efi/measure.c \ src/boot/efi/boot.c -EXTRA_DIST += $(systemd_boot_sources) $(systemd_boot_headers) - -systemd_boot_objects = $(addprefix $(top_builddir)/,$(systemd_boot_sources:.c=.o)) -systemd_boot_solib = $(top_builddir)/src/boot/efi/systemd_boot.so systemd_boot = systemd-boot$(EFI_MACHINE_TYPE_NAME).efi - -ifneq ($(ENABLE_EFI),) -ifneq ($(HAVE_GNUEFI),) -bootlib_DATA = $(systemd_boot) - -$(outdir)/%.o: $(top_srcdir)/src/boot/efi/%.c $(addprefix $(top_srcdir)/,$(systemd_boot_headers)) - @$(MKDIR_P) $(top_builddir)/src/boot/efi/ - $(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@ - -$(systemd_boot_solib): $(systemd_boot_objects) - $(AM_V_CCLD)$(LD) $(efi_ldflags) $(systemd_boot_objects) \ - -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \ - nm -D -u $@ | grep ' U ' && exit 1 || : - -$(systemd_boot): $(systemd_boot_solib) - $(AM_V_GEN)$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic \ - -j .dynsym -j .rel -j .rela -j .reloc $(EFI_FORMAT) $< $@ -endif # HAVE_GNUEFI -endif # ENABLE_EFI - -CLEANFILES += $(systemd_boot_objects) $(systemd_boot_solib) $(systemd_boot) - +bootlib_DATA += $(systemd_boot) +$(outdir)/systemd-boot.so: $(addprefix $(outdir)/,$(notdir $(systemd_boot_sources:.c=.o))) # ------------------------------------------------------------------------------ stub_headers = \ src/boot/efi/util.h \ @@ -149,45 +135,19 @@ stub_sources = \ src/boot/efi/measure.c \ src/boot/efi/stub.c -EXTRA_DIST += \ - $(stub_sources) \ - $(stub_headers) \ - test/splash.bmp - -stub_objects = $(addprefix $(top_builddir)/,$(stub_sources:.c=.o)) -stub_solib = $(top_builddir)/src/boot/efi/stub.so stub = linux$(EFI_MACHINE_TYPE_NAME).efi.stub - -ifneq ($(ENABLE_EFI),) -ifneq ($(HAVE_GNUEFI),) bootlib_DATA += $(stub) - -$(outdir)/%.o: $(top_srcdir)/src/boot/efi/%.c $(addprefix $(top_srcdir)/,$(stub_headers)) - @$(MKDIR_P) $(top_builddir)/src/boot/efi/ - $(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@ - -$(stub_solib): $(stub_objects) - $(AM_V_CCLD)$(LD) $(efi_ldflags) $(stub_objects) \ - -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \ - nm -D -u $@ | grep ' U ' && exit 1 || : - -$(stub): $(stub_solib) - $(AM_V_GEN)$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic \ - -j .dynsym -j .rel -j .rela -j .reloc $(EFI_FORMAT) $< $@ -endif # HAVE_GNUEFI -endif # ENABLE_EFI - -CLEANFILES += $(stub_objects) $(stub_solib) $(stub) - +$(outdir)/linux.so: $(addprefix $(outdir)/,$(notdir $(stub_sources:.c=.o))) # ------------------------------------------------------------------------------ -CLEANFILES += test-efi-disk.img - -test-efi-disk.img: $(systemd_boot) $(stub) test/test-efi-create-disk.sh - $(AM_V_GEN)test/test-efi-create-disk.sh +$(outdir)/test-efi-disk.img: $(outdir)/$(systemd_boot) $(outdir)/$(stub) $(srcdir)/test-efi-create-disk.sh + $(AM_V_GEN)$(@D)/test-efi-create-disk.sh -test-efi: test-efi-disk.img +test-efi: $(outdir)/test-efi-disk.img $(QEMU) -machine accel=kvm -m 1024 -bios $(QEMU_BIOS) -snapshot test-efi-disk.img -EXTRA_DIST += test/test-efi-create-disk.sh +files.out.int += test-efi-disk.img +# ------------------------------------------------------------------------------ +endif # HAVE_GNUEFI +endif # ENABLE_EFI include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-boot/systemd-boot/console.h b/src/grp-boot/systemd-boot/console.h index 3fe0ce5ec4..887995a9cc 100644 --- a/src/grp-boot/systemd-boot/console.h +++ b/src/grp-boot/systemd-boot/console.h @@ -16,6 +16,8 @@ #ifndef __SDBOOT_CONSOLE_H #define __SDBOOT_CONSOLE_H +#include <efi.h> + #define EFI_SHIFT_STATE_VALID 0x80000000 #define EFI_RIGHT_CONTROL_PRESSED 0x00000004 #define EFI_LEFT_CONTROL_PRESSED 0x00000008 diff --git a/src/grp-boot/systemd-boot/disk.h b/src/grp-boot/systemd-boot/disk.h index af91a9c674..5804b8881a 100644 --- a/src/grp-boot/systemd-boot/disk.h +++ b/src/grp-boot/systemd-boot/disk.h @@ -15,5 +15,7 @@ #ifndef __SDBOOT_DISK_H #define __SDBOOT_DISK_H +#include <efi.h> + EFI_STATUS disk_get_part_uuid(EFI_HANDLE *handle, CHAR16 uuid[37]); #endif diff --git a/src/grp-boot/systemd-boot/graphics.h b/src/grp-boot/systemd-boot/graphics.h index cf48e647e7..d8e5adfcd8 100644 --- a/src/grp-boot/systemd-boot/graphics.h +++ b/src/grp-boot/systemd-boot/graphics.h @@ -18,5 +18,7 @@ #ifndef __SDBOOT_GRAPHICS_H #define __SDBOOT_GRAPHICS_H +#include <efi.h> + EFI_STATUS graphics_mode(BOOLEAN on); #endif diff --git a/src/grp-boot/systemd-boot/linux.h b/src/grp-boot/systemd-boot/linux.h index d9e6ed7955..b87a7f0d38 100644 --- a/src/grp-boot/systemd-boot/linux.h +++ b/src/grp-boot/systemd-boot/linux.h @@ -15,6 +15,8 @@ #ifndef __SDBOOT_kernel_H #define __SDBOOT_kernel_H +#include <efi.h> + EFI_STATUS linux_exec(EFI_HANDLE *image, CHAR8 *cmdline, UINTN cmdline_size, UINTN linux_addr, diff --git a/src/grp-boot/systemd-boot/measure.h b/src/grp-boot/systemd-boot/measure.h index a2cfe817d0..ddd686a8fd 100644 --- a/src/grp-boot/systemd-boot/measure.h +++ b/src/grp-boot/systemd-boot/measure.h @@ -13,6 +13,8 @@ #ifndef __SDBOOT_MEASURE_H #define __SDBOOT_MEASURE_H +#include <efi.h> + #ifndef SD_TPM_PCR #define SD_TPM_PCR 8 #endif diff --git a/src/grp-boot/systemd-boot/pefile.h b/src/grp-boot/systemd-boot/pefile.h index 2e445ede17..bc2d73fea9 100644 --- a/src/grp-boot/systemd-boot/pefile.h +++ b/src/grp-boot/systemd-boot/pefile.h @@ -15,6 +15,8 @@ #ifndef __SDBOOT_PEFILE_H #define __SDBOOT_PEFILE_H +#include <efi.h> + EFI_STATUS pefile_locate_sections(EFI_FILE *dir, CHAR16 *path, CHAR8 **sections, UINTN *addrs, UINTN *offsets, UINTN *sizes); #endif diff --git a/src/grp-boot/systemd-boot/splash.h b/src/grp-boot/systemd-boot/splash.h index 09b543fb47..362ff22643 100644 --- a/src/grp-boot/systemd-boot/splash.h +++ b/src/grp-boot/systemd-boot/splash.h @@ -16,5 +16,7 @@ #ifndef __SDBOOT_SPLASH_H #define __SDBOOT_SPLASH_H +#include <efi.h> + EFI_STATUS graphics_splash(UINT8 *content, UINTN len, const EFI_GRAPHICS_OUTPUT_BLT_PIXEL *background); #endif diff --git a/src/grp-boot/systemd-boot/util.h b/src/grp-boot/systemd-boot/util.h index e673cdf9a0..e2da8b3fee 100644 --- a/src/grp-boot/systemd-boot/util.h +++ b/src/grp-boot/systemd-boot/util.h @@ -22,7 +22,7 @@ #define ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0])) static inline const CHAR16 *yes_no(BOOLEAN b) { - return b ? L"yes" : L"no"; + return b ? (CHAR16*)L"yes" : (CHAR16*)L"no"; } EFI_STATUS parse_boolean(CHAR8 *v, BOOLEAN *b); diff --git a/src/grp-coredump/coredumpctl/Makefile b/src/grp-coredump/coredumpctl/Makefile index 25a0ee29f2..743f010f7b 100644 --- a/src/grp-coredump/coredumpctl/Makefile +++ b/src/grp-coredump/coredumpctl/Makefile @@ -27,6 +27,7 @@ coredumpctl_SOURCES = \ src/coredump/coredumpctl.c coredumpctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la bin_PROGRAMS += \ diff --git a/src/grp-coredump/systemd-coredump/.gitignore b/src/grp-coredump/systemd-coredump/.gitignore new file mode 100644 index 0000000000..768e3d4d9f --- /dev/null +++ b/src/grp-coredump/systemd-coredump/.gitignore @@ -0,0 +1 @@ +/50-coredump.sysctl diff --git a/src/grp-coredump/systemd-coredump/Makefile b/src/grp-coredump/systemd-coredump/Makefile index 08fc6d44df..f27c4a3976 100644 --- a/src/grp-coredump/systemd-coredump/Makefile +++ b/src/grp-coredump/systemd-coredump/Makefile @@ -33,6 +33,8 @@ systemd_coredump_CFLAGS = \ $(ACL_CFLAGS) systemd_coredump_LDADD = \ + libsystemd-internal.la \ + libjournal-core.la \ libsystemd-shared.la \ $(ACL_LIBS) @@ -79,7 +81,9 @@ CLEANFILES += \ endif # ENABLE_COREDUMP EXTRA_DIST += \ - sysctl.d/50-coredump.conf.in \ + sysctl.d/50-coredump.sysctl.in \ units/systemd-coredump@.service.in +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-hostname/hostnamectl/Makefile b/src/grp-hostname/hostnamectl/Makefile index c728acce7b..5285beca4b 100644 --- a/src/grp-hostname/hostnamectl/Makefile +++ b/src/grp-hostname/hostnamectl/Makefile @@ -29,6 +29,7 @@ hostnamectl_SOURCES = \ src/hostname/hostnamectl.c hostnamectl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la bin_PROGRAMS += \ @@ -39,6 +40,7 @@ dist_bashcompletion_data += \ dist_zshcompletion_data += \ shell-completion/zsh/_hostnamectl + endif # ENABLE_HOSTNAMED include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-hostname/systemd-hostnamed/Makefile b/src/grp-hostname/systemd-hostnamed/Makefile index 0c8f0b5ae6..cce065ccd4 100644 --- a/src/grp-hostname/systemd-hostnamed/Makefile +++ b/src/grp-hostname/systemd-hostnamed/Makefile @@ -28,6 +28,7 @@ systemd_hostnamed_SOURCES = \ src/hostname/hostnamed.c systemd_hostnamed_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootlibexec_PROGRAMS += \ @@ -55,6 +56,7 @@ BUSNAMES_TARGET_WANTS += \ org.freedesktop.hostname1.busname endif # ENABLE_HOSTNAMED + polkitpolicy_in_files += \ src/hostname/org.freedesktop.hostname1.policy.in diff --git a/src/grp-initprogs/grp-sleep/systemd-hibernate-resume-generator/Makefile b/src/grp-initprogs/grp-sleep/systemd-hibernate-resume-generator/Makefile index 835f2a37b2..32e944c61d 100644 --- a/src/grp-initprogs/grp-sleep/systemd-hibernate-resume-generator/Makefile +++ b/src/grp-initprogs/grp-sleep/systemd-hibernate-resume-generator/Makefile @@ -35,4 +35,6 @@ systemd_hibernate_resume_generator_LDADD = \ endif # ENABLE_HIBERNATE +sd.CPPFLAGS += -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/grp-sleep/systemd-sleep/Makefile b/src/grp-initprogs/grp-sleep/systemd-sleep/Makefile index 45c0beaf9d..2c94aaf4a9 100644 --- a/src/grp-initprogs/grp-sleep/systemd-sleep/Makefile +++ b/src/grp-initprogs/grp-sleep/systemd-sleep/Makefile @@ -42,8 +42,17 @@ nodist_systemunit_DATA += \ endif # ENABLE_HIBERNATE +dist_systemunit_DATA += \ + units/suspend.target + +nodist_systemunit_DATA += \ + units/systemd-suspend.service + EXTRA_DIST += \ + units/systemd-suspend.service.in \ units/systemd-hibernate.service.in \ units/systemd-hybrid-sleep.service.in +sd.CPPFLAGS += -DSYSTEM_SLEEP_PATH=\"$(systemsleepdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/grp-sleep/systemd-sleep/systemd-sleep.xml b/src/grp-initprogs/grp-sleep/systemd-sleep/systemd-sleep.xml index a8beb86f4d..efd97eb671 100644 --- a/src/grp-initprogs/grp-sleep/systemd-sleep/systemd-sleep.xml +++ b/src/grp-initprogs/grp-sleep/systemd-sleep/systemd-sleep.xml @@ -26,7 +26,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> <refentryinfo> - <title>systemd-suspend.service</title> + <title>systemd-sleep</title> <productname>systemd</productname> <authorgroup> @@ -40,7 +40,7 @@ </refentryinfo> <refmeta> - <refentrytitle>systemd-suspend.service</refentrytitle> + <refentrytitle>systemd-sleep</refentrytitle> <manvolnum>8</manvolnum> </refmeta> diff --git a/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.bash b/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.bash diff --git a/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.zsh b/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-initprogs/systemd-firstboot/systemd-firstboot.completion.zsh diff --git a/src/grp-initprogs/systemd-fsck/Makefile b/src/grp-initprogs/systemd-fsck/Makefile index 8a223a7f70..1f331bca73 100644 --- a/src/grp-initprogs/systemd-fsck/Makefile +++ b/src/grp-initprogs/systemd-fsck/Makefile @@ -28,6 +28,7 @@ systemd_fsck_SOURCES = \ src/fsck/fsck.c systemd_fsck_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/systemd-quotacheck/Makefile b/src/grp-initprogs/systemd-quotacheck/Makefile index 84c7204d38..83580b4c66 100644 --- a/src/grp-initprogs/systemd-quotacheck/Makefile +++ b/src/grp-initprogs/systemd-quotacheck/Makefile @@ -38,9 +38,12 @@ systemd_quotacheck_LDADD = \ endif # ENABLE_QUOTACHECK EXTRA_DIST += \ + units/quotaon.service.in \ units/systemd-quotacheck.service.in nodist_systemunit_DATA += \ units/quotaon.service +sd.CPPFLAGS += -DQUOTACHECK=\"$(QUOTACHECK)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/systemd-random-seed/Makefile b/src/grp-initprogs/systemd-random-seed/Makefile index 8d8fce955c..ecc82206cb 100644 --- a/src/grp-initprogs/systemd-random-seed/Makefile +++ b/src/grp-initprogs/systemd-random-seed/Makefile @@ -44,4 +44,7 @@ endif # ENABLE_RANDOMSEED EXTRA_DIST += \ units/systemd-random-seed.service.in +sd.CPPFLAGS += -DRANDOM_SEED_DIR=\"$(localstatedir)/lib/systemd/\" +sd.CPPFLAGS += -DRANDOM_SEED=\"$(localstatedir)/lib/systemd/random-seed\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/systemd-sysusers/.gitignore b/src/grp-initprogs/systemd-sysusers/.gitignore deleted file mode 100644 index c065034d29..0000000000 --- a/src/grp-initprogs/systemd-sysusers/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/basic.conf -/systemd.conf -/systemd-remote.conf diff --git a/src/grp-initprogs/systemd-sysusers/Makefile b/src/grp-initprogs/systemd-sysusers/Makefile index 66af87f02c..0c37e0e5c2 100644 --- a/src/grp-initprogs/systemd-sysusers/Makefile +++ b/src/grp-initprogs/systemd-sysusers/Makefile @@ -40,7 +40,6 @@ SYSINIT_TARGET_WANTS += \ systemd-sysusers.service nodist_sysusers_DATA = \ - sysusers.d/systemd.conf \ sysusers.d/basic.conf INSTALL_DIRS += \ @@ -49,8 +48,6 @@ endif # ENABLE_SYSUSERS EXTRA_DIST += \ units/systemd-sysusers.service.in \ - sysusers.d/systemd.conf.m4 \ - sysusers.d/systemd-remote.conf.m4 \ - sysusers.d/basic.conf.in + sysusers.d/basic.sysusers.in include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.bash b/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.bash diff --git a/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.zsh b/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-initprogs/systemd-sysusers/systemd-sysusers.completion.zsh diff --git a/src/grp-initprogs/systemd-tmpfiles/Makefile b/src/grp-initprogs/systemd-tmpfiles/Makefile index 14da180947..8e114070b3 100644 --- a/src/grp-initprogs/systemd-tmpfiles/Makefile +++ b/src/grp-initprogs/systemd-tmpfiles/Makefile @@ -46,7 +46,6 @@ nodist_systemunit_DATA += \ units/systemd-tmpfiles-clean.service nodist_tmpfiles_DATA = \ - tmpfiles.d/systemd.conf \ tmpfiles.d/etc.conf dist_tmpfiles_DATA = \ @@ -54,9 +53,7 @@ dist_tmpfiles_DATA = \ tmpfiles.d/tmp.conf \ tmpfiles.d/x11.conf \ tmpfiles.d/var.conf \ - tmpfiles.d/home.conf \ - tmpfiles.d/systemd-nspawn.conf \ - tmpfiles.d/journal-nocow.conf + tmpfiles.d/home.conf ifneq ($(HAVE_SYSV_COMPAT),) dist_tmpfiles_DATA += \ @@ -79,8 +76,7 @@ INSTALL_DIRS += \ endif # ENABLE_TMPFILES EXTRA_DIST += \ - tmpfiles.d/systemd.conf.m4 \ - tmpfiles.d/etc.conf.m4 \ + tmpfiles.d/etc.tmpfiles.m4 \ units/systemd-tmpfiles-setup-dev.service.in \ units/systemd-tmpfiles-setup.service.in \ units/systemd-tmpfiles-clean.service.in diff --git a/src/grp-initprogs/systemd-update-utmp/Makefile b/src/grp-initprogs/systemd-update-utmp/Makefile index 506e4840a5..550948589c 100644 --- a/src/grp-initprogs/systemd-update-utmp/Makefile +++ b/src/grp-initprogs/systemd-update-utmp/Makefile @@ -35,6 +35,7 @@ systemd_update_utmp_CFLAGS = \ $(AUDIT_CFLAGS) systemd_update_utmp_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ $(AUDIT_LIBS) diff --git a/src/grp-journal/.gitignore b/src/grp-journal/.gitignore index c3fea7424f..c9bd45a7be 100644 --- a/src/grp-journal/.gitignore +++ b/src/grp-journal/.gitignore @@ -1 +1,5 @@ +/journald-gperf.c +/libsystemd-journal.pc +/audit_type-list.txt +/audit_type-*-name.* /README diff --git a/src/grp-journal/Makefile b/src/grp-journal/Makefile index 2b4a366f8a..59ae3ee8b3 100644 --- a/src/grp-journal/Makefile +++ b/src/grp-journal/Makefile @@ -173,14 +173,13 @@ tests += \ test-compress-benchmark endif # HAVE_COMPRESSION -ifneq ($(HAVE_SYSV_COMPAT),) +dist_tmpfiles_DATA = \ + tmpfiles.d/journal-nocow.conf +ifneq ($(HAVE_SYSV_COMPAT),) varlog_DATA = \ docs/var-log/README -$(outdir)/README: docs/var-log/README.in - $(SED_PROCESS) - CLEANFILES += \ docs/var-log/README endif # HAVE_SYSV_COMPAT @@ -188,6 +187,9 @@ endif # HAVE_SYSV_COMPAT EXTRA_DIST += \ docs/var-log/README.in +dist_systempreset_DATA = \ + 90-journald.preset + nested.subdirs += grp-remote nested.subdirs += journalctl nested.subdirs += systemd-cat diff --git a/src/grp-journal/grp-remote/libsystemd-microhttpd/src/Makefile b/src/grp-journal/grp-remote/libsystemd-microhttpd/src/Makefile index 2d0ec68307..b0eae79db5 100644 --- a/src/grp-journal/grp-remote/libsystemd-microhttpd/src/Makefile +++ b/src/grp-journal/grp-remote/libsystemd-microhttpd/src/Makefile @@ -23,4 +23,27 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +ifneq ($(HAVE_MICROHTTPD),) + +rootlibexec_LTLIBRARIES += \ + libsystemd-microhttpd.la + +libsystemd_microhttpd_la_SOURCES += \ + srjournal-remote/microhttpd-util.h \ + srjournal-remote/microhttpd-util.c + +libsystemd_microhttpd_la_CFLAGS = \ + $(MICROHTTPD_CFLAGS) + +libsystemd_microhttpd_la_LIBADD += \ + libsystemd-basic.la \ + $(MICROHTTPD_LIBS) + +ifneq ($(HAVE_GNUTLS),) +libsystemd_microhttpd_la_LIBADD += \ + $(GNUTLS_LIBS) +endif # HAVE_GNUTLS + +endif # HAVE_MICROHTTPD + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/grp-remote/systemd-journal-gatewayd/Makefile b/src/grp-journal/grp-remote/systemd-journal-gatewayd/Makefile index 0ae96978af..723dfa7ac7 100644 --- a/src/grp-journal/grp-remote/systemd-journal-gatewayd/Makefile +++ b/src/grp-journal/grp-remote/systemd-journal-gatewayd/Makefile @@ -30,21 +30,12 @@ rootlibexec_PROGRAMS += \ systemd-journal-gatewayd systemd_journal_gatewayd_SOURCES = \ - src/journal-remote/journal-gatewayd.c \ - src/journal-remote/microhttpd-util.h \ - src/journal-remote/microhttpd-util.c + src/journal-remote/journal-gatewayd.c systemd_journal_gatewayd_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ - $(MICROHTTPD_LIBS) - -ifneq ($(HAVE_GNUTLS),) -systemd_journal_gatewayd_LDADD += \ - $(GNUTLS_LIBS) -endif # HAVE_GNUTLS - -systemd_journal_gatewayd_CFLAGS = \ - $(MICROHTTPD_CFLAGS) + libsystemd-microhttpd.la systemd_journal_gatewayd_CPPFLAGS = \ -DDOCUMENT_ROOT=\"$(gatewayddocumentrootdir)\" @@ -58,6 +49,9 @@ nodist_systemunit_DATA += \ dist_gatewayddocumentroot_DATA = \ src/journal-remote/browse.html +dist_sysusers_DATA += \ + sysusers.d/systemd-journal-gatewayd.conf + endif # HAVE_MICROHTTPD EXTRA_DIST += \ diff --git a/src/grp-journal/grp-remote/browse.html b/src/grp-journal/grp-remote/systemd-journal-gatewayd/browse.html index 32848c7673..32848c7673 100644 --- a/src/grp-journal/grp-remote/browse.html +++ b/src/grp-journal/grp-remote/systemd-journal-gatewayd/browse.html diff --git a/src/grp-journal/grp-remote/systemd-journal-remote/Makefile b/src/grp-journal/grp-remote/systemd-journal-remote/Makefile index 8bb2c3871d..601bad9b5f 100644 --- a/src/grp-journal/grp-remote/systemd-journal-remote/Makefile +++ b/src/grp-journal/grp-remote/systemd-journal-remote/Makefile @@ -36,41 +36,27 @@ systemd_journal_remote_SOURCES = \ src/journal-remote/journal-remote.c systemd_journal_remote_LDADD = \ + libsystemd-microhttpd.la \ libjournal-core.la -systemd_journal_remote_SOURCES += \ - src/journal-remote/microhttpd-util.h \ - src/journal-remote/microhttpd-util.c - -systemd_journal_remote_CFLAGS = \ - $(MICROHTTPD_CFLAGS) - -systemd_journal_remote_LDADD += \ - $(MICROHTTPD_LIBS) - ifneq ($(ENABLE_TMPFILES),) dist_tmpfiles_DATA += \ tmpfiles.d/systemd-remote.conf endif # ENABLE_TMPFILES -ifneq ($(HAVE_GNUTLS),) -systemd_journal_remote_LDADD += \ - $(GNUTLS_LIBS) -endif # HAVE_GNUTLS - # systemd-journal-remote make sense mostly with full crypto stack dist_systemunit_DATA += \ units/systemd-journal-remote.socket +dist_sysusers_DATA += \ + sysusers.d/systemd-journal-remote.conf + nodist_systemunit_DATA += \ units/systemd-journal-remote.service -journal-remote-install-hook: journal-install-hook - -$(MKDIR_P) $(DESTDIR)/var/log/journal/remote - -chown 0:0 $(DESTDIR)/var/log/journal/remote - -chmod 755 $(DESTDIR)/var/log/journal/remote - -INSTALL_EXEC_HOOKS += journal-remote-install-hook +files.sys.all += /var/log/journal/remote +$(DESTDIR)/var/log/journal/remote: + $(MKDIR_P) $@ nodist_pkgsysconf_DATA += \ src/journal-remote/journal-remote.conf @@ -81,4 +67,7 @@ EXTRA_DIST += \ src/journal-remote/log-generator.py endif # HAVE_MICROHTTPD +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" +sd.CPPFLAGS += -DCERTIFICATE_ROOT=\"$(CERTIFICATEROOT)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/grp-remote/systemd-journal-upload/Makefile b/src/grp-journal/grp-remote/systemd-journal-upload/Makefile index f6966df0f6..bc272e52da 100644 --- a/src/grp-journal/grp-remote/systemd-journal-upload/Makefile +++ b/src/grp-journal/grp-remote/systemd-journal-upload/Makefile @@ -45,10 +45,16 @@ nodist_systemunit_DATA += \ nodist_pkgsysconf_DATA += \ src/journal-remote/journal-upload.conf +dist_sysusers_DATA += \ + sysusers.d/systemd-journal-upload.conf + endif # HAVE_LIBCURL EXTRA_DIST += \ units/systemd-journal-upload.service.in \ src/journal-remote/journal-upload.conf.in +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" +sd.CPPFLAGS += -DCERTIFICATE_ROOT=\"$(CERTIFICATEROOT)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/grp-remote/systemd-journal-upload/journal-upload.h b/src/grp-journal/grp-remote/systemd-journal-upload/journal-upload.h index c121f8f16b..f1fd95e22c 100644 --- a/src/grp-journal/grp-remote/systemd-journal-upload/journal-upload.h +++ b/src/grp-journal/grp-remote/systemd-journal-upload/journal-upload.h @@ -1,5 +1,6 @@ #pragma once +#include <curl/curl.h> #include <inttypes.h> #include <systemd/sd-event.h> diff --git a/src/grp-journal/journalctl/Makefile b/src/grp-journal/journalctl/Makefile index f8519405d2..880827b85d 100644 --- a/src/grp-journal/journalctl/Makefile +++ b/src/grp-journal/journalctl/Makefile @@ -30,6 +30,7 @@ journalctl_SOURCES = \ src/journal/journalctl.c journalctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ libudev-core.la @@ -51,11 +52,15 @@ rootbin_PROGRAMS += \ nodist_systemunit_DATA += \ units/systemd-journal-flush.service \ units/systemd-journal-catalog-update.service + SYSINIT_TARGET_WANTS += \ systemd-journal-flush.service \ systemd-journal-catalog-update.service + EXTRA_DIST += \ units/systemd-journal-flush.service.in \ units/systemd-journal-catalog-update.service.in +sd.CPPFLAGS += -DCATALOG_DATABASE=\"$(catalogstatedir)/database\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/libjournal-core/.gitignore b/src/grp-journal/libjournal-core/.gitignore deleted file mode 100644 index b93a9462fa..0000000000 --- a/src/grp-journal/libjournal-core/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/journald-gperf.c -/audit_type-list.txt -/audit_type-*-name.* diff --git a/src/grp-journal/libjournal-core/Makefile b/src/grp-journal/libjournal-core/Makefile new file mode 100644 index 0000000000..76e6e9ddee --- /dev/null +++ b/src/grp-journal/libjournal-core/Makefile @@ -0,0 +1,28 @@ +# -*- Mode: makefile; indent-tabs-mode: t -*- +# +# This file is part of systemd. +# +# Copyright 2010-2012 Lennart Poettering +# Copyright 2010-2012 Kay Sievers +# Copyright 2013 Zbigniew Jędrzejewski-Szmek +# Copyright 2013 David Strauss +# Copyright 2016 Luke Shumaker +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see <http://www.gnu.org/licenses/>. +include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk +include $(topsrcdir)/build-aux/Makefile.head.mk + +nested.subdirs += src + +include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/libjournal-core/src/Makefile b/src/grp-journal/libjournal-core/src/Makefile index 6ea0446e27..429c6ddbb7 100644 --- a/src/grp-journal/libjournal-core/src/Makefile +++ b/src/grp-journal/libjournal-core/src/Makefile @@ -53,4 +53,6 @@ libjournal_core_la_LIBADD = \ noinst_LTLIBRARIES += \ libjournal-core.la +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-journal/systemd-journald/Makefile b/src/grp-journal/systemd-journald/Makefile index 4f05218d88..b75a248ea1 100644 --- a/src/grp-journal/systemd-journald/Makefile +++ b/src/grp-journal/systemd-journald/Makefile @@ -60,6 +60,7 @@ nodist_catalog_DATA = \ EXTRA_DIST += \ $(nodist_catalog_DATA:.catalog=.catalog.in) +EXTRA_DIST := $(EXTRA_DIST) # Note that we don't use @@ for replacement markers here, but %%. This is # because the catalog uses @@ already for its runtime replacement handling and diff --git a/src/grp-locale/localectl/Makefile b/src/grp-locale/localectl/Makefile index 2544d16309..347e68c024 100644 --- a/src/grp-locale/localectl/Makefile +++ b/src/grp-locale/localectl/Makefile @@ -29,6 +29,7 @@ localectl_SOURCES = \ src/locale/localectl.c localectl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la bin_PROGRAMS += \ @@ -39,6 +40,7 @@ dist_bashcompletion_data += \ dist_zshcompletion_data += \ shell-completion/zsh/_localectl + endif # ENABLE_LOCALED include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-locale/systemd-localed/.gitignore b/src/grp-locale/systemd-localed/.gitignore index b1e0ba755e..6d9d6089c0 100644 --- a/src/grp-locale/systemd-localed/.gitignore +++ b/src/grp-locale/systemd-localed/.gitignore @@ -1 +1 @@ -org.freedesktop.locale1.policy +/org.freedesktop.locale1.policy diff --git a/src/grp-locale/systemd-localed/Makefile b/src/grp-locale/systemd-localed/Makefile index 1a12959a61..5cd9e07936 100644 --- a/src/grp-locale/systemd-localed/Makefile +++ b/src/grp-locale/systemd-localed/Makefile @@ -30,6 +30,7 @@ systemd_localed_SOURCES = \ src/locale/keymap-util.h systemd_localed_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ -ldl @@ -86,4 +87,7 @@ polkitpolicy_in_files += \ EXTRA_DIST += \ units/systemd-localed.service.in +sd.CPPFLAGS += -DSYSTEMD_KBD_MODEL_MAP=\"$(pkgdatadir)/kbd-model-map\" +sd.CPPFLAGS += -DSYSTEMD_LANGUAGE_FALLBACK_MAP=\"$(pkgdatadir)/language-fallback-map\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-login/loginctl/Makefile b/src/grp-login/loginctl/Makefile index f1a474e1cc..12987f92bc 100644 --- a/src/grp-login/loginctl/Makefile +++ b/src/grp-login/loginctl/Makefile @@ -29,6 +29,7 @@ loginctl_SOURCES = \ src/login/sysfs-show.c loginctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootbin_PROGRAMS += \ diff --git a/src/grp-login/pam_systemd/Makefile b/src/grp-login/pam_systemd/Makefile index 2f1dfd9db1..2243572b11 100644 --- a/src/grp-login/pam_systemd/Makefile +++ b/src/grp-login/pam_systemd/Makefile @@ -39,6 +39,7 @@ pam_systemd_la_LDFLAGS = \ -Wl,--version-script=$(srcdir)/pam_systemd.sym pam_systemd_la_LIBADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ $(PAM_LIBS) diff --git a/src/grp-login/systemd-inhibit/Makefile b/src/grp-login/systemd-inhibit/Makefile index 8b3b7995d9..41775189d4 100644 --- a/src/grp-login/systemd-inhibit/Makefile +++ b/src/grp-login/systemd-inhibit/Makefile @@ -29,6 +29,7 @@ systemd_inhibit_SOURCES = \ src/login/inhibit.c systemd_inhibit_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootbin_PROGRAMS += \ diff --git a/src/grp-login/systemd-logind/Makefile b/src/grp-login/systemd-logind/Makefile index 24de945818..0dbbc9733b 100644 --- a/src/grp-login/systemd-logind/Makefile +++ b/src/grp-login/systemd-logind/Makefile @@ -23,9 +23,8 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -ifneq ($(ENABLE_LOGIND),) - systemd_logind_SOURCES = \ + $(_liblogind_core_la_SOURCES) \ src/login/logind.c \ src/login/logind.h @@ -33,9 +32,10 @@ nodist_systemd_logind_SOURCES = \ src/login/logind-gperf.c systemd_logind_LDADD = \ - liblogind-core.la + libsystemd-internal.la \ + libsystemd-shared.la -liblogind_core_la_SOURCES = \ +_liblogind_core_la_SOURCES = \ src/login/logind-core.c \ src/login/logind-device.c \ src/login/logind-device.h \ @@ -64,13 +64,10 @@ liblogind_core_la_LIBADD = \ libsystemd-shared.la ifneq ($(HAVE_ACL),) -liblogind_core_la_SOURCES += \ +_liblogind_core_la_SOURCES += \ src/login/logind-acl.c endif # HAVE_ACL -noinst_LTLIBRARIES += \ - liblogind-core.la - rootlibexec_PROGRAMS += \ systemd-logind @@ -115,8 +112,6 @@ nodist_udevrules_DATA += \ src/login/71-seat.rules \ src/login/73-seat-late.rules -endif # ENABLE_LOGIND - polkitpolicy_in_files += \ src/login/org.freedesktop.login1.policy.in @@ -129,4 +124,7 @@ EXTRA_DIST += \ units/systemd-logind.service.in \ src/login/logind.conf.in +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" +sd.CPPFLAGS += -DKEXEC=\"$(KEXEC)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-machine/grp-import/libimport/Makefile b/src/grp-machine/grp-import/libimport/Makefile index 585001b2fa..3e8b6b1401 100644 --- a/src/grp-machine/grp-import/libimport/Makefile +++ b/src/grp-machine/grp-import/libimport/Makefile @@ -23,6 +23,15 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +noinst_LTLIBRARIES += libimport.la + +libimport_la_SOURCES = \ + qcow2-util.c \ + import-common.c \ + import-compress.c + +libimport_la_LIBADD += libsystemd-basic.la + manual_tests += \ test-qcow2 diff --git a/src/grp-machine/grp-import/libimport/import-common.h b/src/grp-machine/grp-import/libimport/import-common.h index 07d3250e71..3abd62e8c3 100644 --- a/src/grp-machine/grp-import/libimport/import-common.h +++ b/src/grp-machine/grp-import/libimport/import-common.h @@ -19,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <sys/types.h> + int import_make_read_only_fd(int fd); int import_make_read_only(const char *path); diff --git a/src/grp-machine/grp-import/systemd-export/Makefile b/src/grp-machine/grp-import/systemd-export/Makefile index fa6306226f..f641d93f14 100644 --- a/src/grp-machine/grp-import/systemd-export/Makefile +++ b/src/grp-machine/grp-import/systemd-export/Makefile @@ -30,11 +30,7 @@ systemd_export_SOURCES = \ src/import/export-tar.c \ src/import/export-tar.h \ src/import/export-raw.c \ - src/import/export-raw.h \ - src/import/import-common.c \ - src/import/import-common.h \ - src/import/import-compress.c \ - src/import/import-compress.h + src/import/export-raw.h systemd_export_CFLAGS = \ $(XZ_CFLAGS) \ @@ -43,6 +39,7 @@ systemd_export_CFLAGS = \ systemd_export_LDADD = \ libsystemd-shared.la \ + libimport.la \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ $(BZIP2_LIBS) diff --git a/src/grp-machine/grp-import/systemd-import/Makefile b/src/grp-machine/grp-import/systemd-import/Makefile index 8d04ec18c5..51510f4470 100644 --- a/src/grp-machine/grp-import/systemd-import/Makefile +++ b/src/grp-machine/grp-import/systemd-import/Makefile @@ -29,13 +29,7 @@ systemd_import_SOURCES = \ src/import/import-raw.c \ src/import/import-raw.h \ src/import/import-tar.c \ - src/import/import-tar.h \ - src/import/import-common.c \ - src/import/import-common.h \ - src/import/import-compress.c \ - src/import/import-compress.h \ - src/import/qcow2-util.c \ - src/import/qcow2-util.h + src/import/import-tar.h systemd_import_CFLAGS = \ $(XZ_CFLAGS) \ @@ -44,6 +38,7 @@ systemd_import_CFLAGS = \ systemd_import_LDADD = \ libsystemd-shared.la \ + libimport.la \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ $(BZIP2_LIBS) diff --git a/src/grp-machine/grp-import/systemd-importd/Makefile b/src/grp-machine/grp-import/systemd-importd/Makefile index 19705a925e..58b760ea86 100644 --- a/src/grp-machine/grp-import/systemd-importd/Makefile +++ b/src/grp-machine/grp-import/systemd-importd/Makefile @@ -33,6 +33,7 @@ systemd_importd_CFLAGS = \ -D SYSTEMD_EXPORT_PATH=\"$(rootlibexecdir)/systemd-export\" systemd_importd_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la dist_rootlibexec_DATA += \ diff --git a/src/grp-machine/grp-import/systemd-pull/Makefile b/src/grp-machine/grp-import/systemd-pull/Makefile index a9653a5f2c..0b593158e4 100644 --- a/src/grp-machine/grp-import/systemd-pull/Makefile +++ b/src/grp-machine/grp-import/systemd-pull/Makefile @@ -34,14 +34,8 @@ systemd_pull_SOURCES = \ src/import/pull-job.h \ src/import/pull-common.c \ src/import/pull-common.h \ - src/import/import-common.c \ - src/import/import-common.h \ - src/import/import-compress.c \ - src/import/import-compress.h \ src/import/curl-util.c \ - src/import/curl-util.h \ - src/import/qcow2-util.c \ - src/import/qcow2-util.h + src/import/curl-util.h systemd_pull_CFLAGS = \ $(LIBCURL_CFLAGS) \ @@ -54,6 +48,7 @@ systemd_pull_CFLAGS = \ systemd_pull_LDADD = \ libsystemd-shared.la \ + libimport.la \ $(LIBCURL_LIBS) \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ diff --git a/src/grp-machine/libmachine-core/src/Makefile b/src/grp-machine/libmachine-core/src/Makefile index ac7cdc0e2d..a1e10f3cb4 100644 --- a/src/grp-machine/libmachine-core/src/Makefile +++ b/src/grp-machine/libmachine-core/src/Makefile @@ -35,6 +35,7 @@ libmachine_core_la_SOURCES = \ src/machine/operation.h libmachine_core_la_LIBADD = \ + libsystemd-internal.la \ libsystemd-shared.la noinst_LTLIBRARIES += \ diff --git a/src/grp-machine/machinectl/Makefile b/src/grp-machine/machinectl/Makefile index f6760f3174..397d4fd4da 100644 --- a/src/grp-machine/machinectl/Makefile +++ b/src/grp-machine/machinectl/Makefile @@ -27,6 +27,7 @@ machinectl_SOURCES = \ src/machine/machinectl.c machinectl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootbin_PROGRAMS += \ diff --git a/src/grp-machine/systemd-machined/Makefile b/src/grp-machine/systemd-machined/Makefile index 432a792a18..011e740e02 100644 --- a/src/grp-machine/systemd-machined/Makefile +++ b/src/grp-machine/systemd-machined/Makefile @@ -28,6 +28,9 @@ systemd_machined_SOURCES = \ src/machine/machined.h systemd_machined_LDADD = \ + libsystemd-internal.la \ + libsystemd-shared.la \ + libsystemd-basic.la \ libmachine-core.la rootlibexec_PROGRAMS += \ @@ -63,13 +66,4 @@ polkitpolicy_in_files += \ EXTRA_DIST += \ units/systemd-machined.service.in -# ------------------------------------------------------------------------------ -ifneq ($(ENABLE_IMPORTD),) - -ifneq ($(HAVE_LIBCURL),) -ifneq ($(HAVE_XZ),) -ifneq ($(HAVE_ZLIB),) -ifneq ($(HAVE_BZIP2),) -ifneq ($(HAVE_GCRYPT),) - include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-network/Makefile b/src/grp-network/Makefile index 504395e39d..d5e6d62689 100644 --- a/src/grp-network/Makefile +++ b/src/grp-network/Makefile @@ -23,7 +23,8 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -dist_network_DATA = \ +# TODO +_dist_network_DATA = \ network/99-default.link \ network/80-container-host0.network \ network/80-container-ve.network \ @@ -72,10 +73,8 @@ gperf_gperf_sources += \ src/network/networkd-network-gperf.gperf \ src/network/networkd-netdev-gperf.gperf -EXTRA_DIST += \ - units/systemd-networkd.service.m4.in \ - units/systemd-networkd-wait-online.service.in \ - test/networkd-test.py +dist_systempreset_DATA = \ + 90-networkd.preset nested.subdirs += libnetworkd-core nested.subdirs += networkctl diff --git a/src/grp-network/libnetworkd-core/Makefile b/src/grp-network/libnetworkd-core/Makefile index 5b4501f9ef..591e7830b6 100644 --- a/src/grp-network/libnetworkd-core/Makefile +++ b/src/grp-network/libnetworkd-core/Makefile @@ -94,6 +94,10 @@ nodist_libnetworkd_core_la_SOURCES = \ libnetworkd_core_la_LIBADD = \ libsystemd-network.la \ + libsystemd-internal.la \ + libsystemd-firewall.la \ libsystemd-shared.la +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-network/networkctl/Makefile b/src/grp-network/networkctl/Makefile index 7b651c7f74..4343011157 100644 --- a/src/grp-network/networkctl/Makefile +++ b/src/grp-network/networkctl/Makefile @@ -30,6 +30,7 @@ networkctl_SOURCES = \ src/network/networkctl.c networkctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ libsystemd-network.la diff --git a/src/grp-network/systemd-networkd-wait-online/Makefile b/src/grp-network/systemd-networkd-wait-online/Makefile index 421bb9a673..1b0c801833 100644 --- a/src/grp-network/systemd-networkd-wait-online/Makefile +++ b/src/grp-network/systemd-networkd-wait-online/Makefile @@ -37,7 +37,17 @@ systemd_networkd_wait_online_SOURCES = \ src/network/networkd-wait-online-link.c systemd_networkd_wait_online_LDADD = \ + libsystemd-internal.la \ libsystemd-network.la \ libsystemd-shared.la +nodist_systemunit_DATA += \ + units/systemd-networkd-wait-online.service + +GENERAL_ALIASES += \ + $(systemunitdir)/systemd-networkd-wait-online.service $(pkgsysconfdir)/system/network-online.target.wants/systemd-networkd-wait-online.service + +EXTRA_DIST += \ + units/systemd-networkd-wait-online.service.in + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-network/systemd-networkd/Makefile b/src/grp-network/systemd-networkd/Makefile index 118f627c16..9036159c70 100644 --- a/src/grp-network/systemd-networkd/Makefile +++ b/src/grp-network/systemd-networkd/Makefile @@ -30,6 +30,7 @@ systemd_networkd_SOURCES = \ src/network/networkd.c systemd_networkd_LDADD = \ + libsystemd-basic.la \ libnetworkd-core.la ifneq ($(HAVE_LIBIPTC),) @@ -41,8 +42,7 @@ dist_systemunit_DATA += \ units/systemd-networkd.socket nodist_systemunit_DATA += \ - units/systemd-networkd.service \ - units/systemd-networkd-wait-online.service + units/systemd-networkd.service dist_systemunit_DATA_busnames += \ units/org.freedesktop.network1.busname @@ -55,8 +55,7 @@ dist_dbuspolicy_DATA += \ GENERAL_ALIASES += \ $(systemunitdir)/systemd-networkd.socket $(pkgsysconfdir)/system/sockets.target.wants/systemd-networkd.socket \ - $(systemunitdir)/systemd-networkd.service $(pkgsysconfdir)/system/multi-user.target.wants/systemd-networkd.service \ - $(systemunitdir)/systemd-networkd-wait-online.service $(pkgsysconfdir)/system/network-online.target.wants/systemd-networkd-wait-online.service + $(systemunitdir)/systemd-networkd.service $(pkgsysconfdir)/system/multi-user.target.wants/systemd-networkd.service SYSTEM_UNIT_ALIASES += \ systemd-networkd.service dbus-org.freedesktop.network1.service @@ -64,4 +63,8 @@ SYSTEM_UNIT_ALIASES += \ BUSNAMES_TARGET_WANTS += \ org.freedesktop.network1.busname +EXTRA_DIST += \ + units/systemd-networkd.service.m4.in \ + test/networkd-test.py + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-resolve/Makefile b/src/grp-resolve/Makefile index 8132573d49..5e90fec8c7 100644 --- a/src/grp-resolve/Makefile +++ b/src/grp-resolve/Makefile @@ -23,6 +23,9 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +dist_systempreset_DATA = \ + 90-resolved.preset + nested.subdirs += libbasic-dns nested.subdirs += nss-resolve nested.subdirs += systemd-resolve diff --git a/src/grp-resolve/libbasic-dns/src/Makefile b/src/grp-resolve/libbasic-dns/src/Makefile index d7f12fafd4..ac3551fc1f 100644 --- a/src/grp-resolve/libbasic-dns/src/Makefile +++ b/src/grp-resolve/libbasic-dns/src/Makefile @@ -23,16 +23,16 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -$(outdir)/dns_type-list.txt: src/resolve/dns-type.h +$(outdir)/dns_type-list.txt: $(call at.path,$(srcdir)/../include/basic-dns/dns-type.h) $(AM_V_GEN)$(SED) -n -r 's/.* DNS_TYPE_(\w+).*/\1/p' <$< >$@ -$(outdir)/dns_type-to-name.h: src/resolve/dns_type-list.txt +$(outdir)/dns_type-to-name.h: $(outdir)/dns_type-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char *dns_type_to_string(int type) {\n\tswitch(type) {" } {printf " case DNS_TYPE_%s: return ", $$1; sub(/_/, "-"); printf "\"%s\";\n", $$1 } END{ print " default: return NULL;\n\t}\n}\n" }' <$< >$@ -$(outdir)/dns_type-from-name.gperf: src/resolve/dns_type-list.txt +$(outdir)/dns_type-from-name.gperf: $(outdir)/dns_type-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct dns_type_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { s=$$1; sub(/_/, "-", s); printf "%s, ", $$s; printf "DNS_TYPE_%s\n", $$1 }' <$< >$@ -basic_dns_sources = \ +libbasic_dns_la_SOURCES = \ src/resolve/resolved-dns-dnssec.c \ src/resolve/resolved-dns-dnssec.h \ src/resolve/resolved-dns-packet.c \ @@ -49,4 +49,11 @@ basic_dns_sources = \ gperf_txt_sources += \ src/resolve/dns_type-list.txt +noinst_LTLIBRARIES = libbasic-dns.la +libbasic_dns_la_LIBADD += \ + libsystemd-gcrypt.la \ + libsystemd-shared.la + +$(outdir)/dns-type.lo: $(outdir)/dns_type-from-name.h $(outdir)/dns_type-to-name.h + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-resolve/libbasic-dns/test/Makefile b/src/grp-resolve/libbasic-dns/test/Makefile index 165f401d26..4f4cbd42a3 100644 --- a/src/grp-resolve/libbasic-dns/test/Makefile +++ b/src/grp-resolve/libbasic-dns/test/Makefile @@ -42,6 +42,7 @@ test_resolve_tables_CFLAGS = \ $(GCRYPT_CFLAGS) test_resolve_tables_LDADD = \ + libbasic-dns.la \ libsystemd-shared.la \ $(GCRYPT_LIBS) \ -lm @@ -57,6 +58,7 @@ test_dns_packet_CFLAGS = \ $(GCRYPT_CFLAGS) test_dns_packet_LDADD = \ + libbasic-dns.la \ libsystemd-shared.la \ $(GCRYPT_LIBS) \ -lm @@ -82,6 +84,7 @@ test_dnssec_CFLAGS = \ $(GCRYPT_CFLAGS) test_dnssec_LDADD = \ + libbasic-dns.la \ libsystemd-shared.la \ $(GCRYPT_LIBS) \ -lm diff --git a/src/grp-resolve/systemd-resolve/Makefile b/src/grp-resolve/systemd-resolve/Makefile index 9d9b46d58d..ef8b1785dc 100644 --- a/src/grp-resolve/systemd-resolve/Makefile +++ b/src/grp-resolve/systemd-resolve/Makefile @@ -23,11 +23,11 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +basic_dns_sources = + systemd_resolve_SOURCES = \ src/resolve/resolve-tool.c \ - $(basic_dns_sources) \ - src/shared/gcrypt-util.c \ - src/shared/gcrypt-util.h + $(basic_dns_sources) nodist_systemd_resolve_SOURCES = \ src/resolve/dns_type-from-name.h \ @@ -37,6 +37,9 @@ systemd_resolve_CFLAGS = \ $(GCRYPT_CFLAGS) systemd_resolve_LDADD = \ + libsystemd-internal.la \ + libsystemd-gcrypt.la \ + libbasic-dns.la \ libsystemd-shared.la \ $(GCRYPT_LIBS) \ -lm diff --git a/src/grp-resolve/systemd-resolved/Makefile b/src/grp-resolve/systemd-resolved/Makefile index e8ae8ccc28..f1cd91483e 100644 --- a/src/grp-resolve/systemd-resolved/Makefile +++ b/src/grp-resolve/systemd-resolved/Makefile @@ -23,7 +23,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -ifneq ($(ENABLE_RESOLVED),) +basic_dns_sources = systemd_resolved_SOURCES = \ src/resolve/resolved.c \ @@ -68,9 +68,7 @@ systemd_resolved_SOURCES = \ src/resolve/resolved-dns-stub.h \ src/resolve/resolved-dns-stub.c \ src/resolve/resolved-etc-hosts.h \ - src/resolve/resolved-etc-hosts.c \ - src/shared/gcrypt-util.c \ - src/shared/gcrypt-util.h + src/resolve/resolved-etc-hosts.c nodist_systemd_resolved_SOURCES = \ src/resolve/dns_type-from-name.h \ @@ -81,6 +79,8 @@ systemd_resolved_CFLAGS = \ $(GCRYPT_CFLAGS) systemd_resolved_LDADD = \ + libbasic-dns.la \ + libsystemd-internal.la \ libsystemd-network.la \ libsystemd-shared.la \ $(GCRYPT_LIBS) \ @@ -113,7 +113,6 @@ GENERAL_ALIASES += \ nodist_pkgsysconf_DATA += \ src/resolve/resolved.conf -endif # ENABLE_RESOLVED gperf_gperf_sources += \ src/resolve/resolved-gperf.gperf @@ -124,4 +123,6 @@ EXTRA_DIST += \ dist_rootlibexec_DATA += \ src/resolve/resolv.conf +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-resolve/systemd-resolved/resolved-dns-scope.h b/src/grp-resolve/systemd-resolved/resolved-dns-scope.h index 26623b1878..69dd6320d3 100644 --- a/src/grp-resolve/systemd-resolved/resolved-dns-scope.h +++ b/src/grp-resolve/systemd-resolved/resolved-dns-scope.h @@ -32,6 +32,7 @@ typedef struct DnsScope DnsScope; #include "resolved-dns-stream.h" #include "resolved-dns-zone.h" #include "resolved-link.h" +#include "resolved-manager.h" typedef enum DnsScopeMatch { DNS_SCOPE_NO, diff --git a/src/grp-resolve/systemd-resolved/resolved-dns-server.h b/src/grp-resolve/systemd-resolved/resolved-dns-server.h index cb0ad80292..83d0d23bb4 100644 --- a/src/grp-resolve/systemd-resolved/resolved-dns-server.h +++ b/src/grp-resolve/systemd-resolved/resolved-dns-server.h @@ -23,16 +23,6 @@ typedef struct DnsServer DnsServer; -typedef enum DnsServerType { - DNS_SERVER_SYSTEM, - DNS_SERVER_FALLBACK, - DNS_SERVER_LINK, -} DnsServerType; -#define _DNS_SERVER_TYPE_MAX (DNS_SERVER_LINK + 1) - -const char* dns_server_type_to_string(DnsServerType i) _const_; -DnsServerType dns_server_type_from_string(const char *s) _pure_; - typedef enum DnsServerFeatureLevel { DNS_SERVER_FEATURE_LEVEL_TCP, DNS_SERVER_FEATURE_LEVEL_UDP, @@ -52,6 +42,16 @@ int dns_server_feature_level_from_string(const char *s) _pure_; #include "resolved-link.h" #include "resolved-manager.h" +typedef enum DnsServerType { + DNS_SERVER_SYSTEM, + DNS_SERVER_FALLBACK, + DNS_SERVER_LINK, +} DnsServerType; +#define _DNS_SERVER_TYPE_MAX (DNS_SERVER_LINK + 1) + +const char* dns_server_type_to_string(DnsServerType i) _const_; +DnsServerType dns_server_type_from_string(const char *s) _pure_; + struct DnsServer { Manager *manager; diff --git a/src/grp-resolve/systemd-resolved/resolved-dns-transaction.h b/src/grp-resolve/systemd-resolved/resolved-dns-transaction.h index 705336221d..babc206f7f 100644 --- a/src/grp-resolve/systemd-resolved/resolved-dns-transaction.h +++ b/src/grp-resolve/systemd-resolved/resolved-dns-transaction.h @@ -19,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <systemd/sd-event.h> + typedef struct DnsTransaction DnsTransaction; typedef enum DnsTransactionState DnsTransactionState; typedef enum DnsTransactionSource DnsTransactionSource; diff --git a/src/grp-resolve/systemd-resolved/resolved-manager.c b/src/grp-resolve/systemd-resolved/resolved-manager.c index 67bbe30f13..eea95a6fd9 100644 --- a/src/grp-resolve/systemd-resolved/resolved-manager.c +++ b/src/grp-resolve/systemd-resolved/resolved-manager.c @@ -21,7 +21,6 @@ #include <poll.h> #include <sys/ioctl.h> -#include "sd-netlink/netlink-util.h" #include "systemd-basic/af-list.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/dirent-util.h" diff --git a/src/grp-system/Makefile b/src/grp-system/Makefile index 482fbb5670..e9c6d7b07f 100644 --- a/src/grp-system/Makefile +++ b/src/grp-system/Makefile @@ -23,6 +23,9 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +dist_systempreset_DATA = \ + 90-systemd.preset + nested.subdirs += grp-utils nested.subdirs += libcore nested.subdirs += systemctl diff --git a/src/grp-system/grp-utils/systemd-analyze/Makefile b/src/grp-system/grp-utils/systemd-analyze/Makefile index cb1b72e77d..db8a29e9aa 100644 --- a/src/grp-system/grp-utils/systemd-analyze/Makefile +++ b/src/grp-system/grp-utils/systemd-analyze/Makefile @@ -34,6 +34,7 @@ systemd_analyze_CFLAGS = \ $(MOUNT_CFLAGS) systemd_analyze_LDADD = \ + libsystemd-internal.la \ libcore.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/grp-utils/systemd-fstab-generator/Makefile b/src/grp-system/grp-utils/systemd-fstab-generator/Makefile index 43475f69e1..be9090654b 100644 --- a/src/grp-system/grp-utils/systemd-fstab-generator/Makefile +++ b/src/grp-system/grp-utils/systemd-fstab-generator/Makefile @@ -25,10 +25,10 @@ include $(topsrcdir)/build-aux/Makefile.head.mk systemgenerator_PROGRAMS += systemd-fstab-generator systemd_fstab_generator_SOURCES = \ - src/fstab-generator/fstab-generator.c \ - src/core/mount-setup.c + src/fstab-generator/fstab-generator.c systemd_fstab_generator_LDADD = \ + libcore.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/grp-utils/systemd-run/Makefile b/src/grp-system/grp-utils/systemd-run/Makefile index 9664591eb6..48559f098e 100644 --- a/src/grp-system/grp-utils/systemd-run/Makefile +++ b/src/grp-system/grp-utils/systemd-run/Makefile @@ -28,6 +28,7 @@ systemd_run_SOURCES = \ src/run/run.c systemd_run_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/grp-utils/systemd-sysv-generator/Makefile b/src/grp-system/grp-utils/systemd-sysv-generator/Makefile index 9dec62efdc..dfb065af90 100644 --- a/src/grp-system/grp-utils/systemd-sysv-generator/Makefile +++ b/src/grp-system/grp-utils/systemd-sysv-generator/Makefile @@ -29,18 +29,10 @@ systemd_sysv_generator_SOURCES = \ systemd_sysv_generator_LDADD = \ libcore.la -ifneq ($(HAVE_SYSV_COMPAT),) sysvinit_DATA = \ docs/sysvinit/README -$(outdir)/README: docs/sysvinit/README.in - $(SED_PROCESS) - -CLEANFILES += \ - docs/sysvinit/README -endif # HAVE_SYSV_COMPAT - EXTRA_DIST += \ - docs/sysvinit/README.in + docs/sysvinit/README.in \ include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/libcore/include/core/bus-policy.h b/src/grp-system/libcore/include/core/bus-policy.h index a338f29af6..3fb64f0fd0 100644 --- a/src/grp-system/libcore/include/core/bus-policy.h +++ b/src/grp-system/libcore/include/core/bus-policy.h @@ -19,10 +19,11 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include "sd-bus/kdbus.h" #include "systemd-basic/list.h" #include "systemd-basic/macro.h" +struct kdbus_item; + typedef struct BusNamePolicy BusNamePolicy; typedef enum BusPolicyAccess { diff --git a/src/grp-system/libcore/include/core/busname.h b/src/grp-system/libcore/include/core/busname.h index aa7f0ecb1b..95a356bddc 100644 --- a/src/grp-system/libcore/include/core/busname.h +++ b/src/grp-system/libcore/include/core/busname.h @@ -20,7 +20,6 @@ ***/ typedef struct BusName BusName; -typedef struct BusNamePolicy BusNamePolicy; #include "bus-policy.h" #include "unit.h" diff --git a/src/grp-system/libcore/include/core/device.h b/src/grp-system/libcore/include/core/device.h index 184a1a349b..60d5122966 100644 --- a/src/grp-system/libcore/include/core/device.h +++ b/src/grp-system/libcore/include/core/device.h @@ -21,6 +21,8 @@ typedef struct Device Device; +#include "unit.h" + typedef enum DeviceFound { DEVICE_NOT_FOUND = 0, DEVICE_FOUND_UDEV = 1, diff --git a/src/grp-system/libcore/include/core/killall.h b/src/grp-system/libcore/include/core/killall.h index acc2439f00..bbb101c863 100644 --- a/src/grp-system/libcore/include/core/killall.h +++ b/src/grp-system/libcore/include/core/killall.h @@ -19,4 +19,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdbool.h> + void broadcast_signal(int sig, bool wait_for_exit, bool send_sighup); diff --git a/src/grp-system/libcore/include/core/machine-id-setup.h b/src/grp-system/libcore/include/core/machine-id-setup.h index 29f4620646..88830ecc42 100644 --- a/src/grp-system/libcore/include/core/machine-id-setup.h +++ b/src/grp-system/libcore/include/core/machine-id-setup.h @@ -19,5 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <systemd/sd-id128.h> + int machine_id_commit(const char *root); int machine_id_setup(const char *root, sd_id128_t requested, sd_id128_t *ret); diff --git a/src/grp-system/libcore/include/core/service.h b/src/grp-system/libcore/include/core/service.h index 1ebf62eed6..7e4763a0ae 100644 --- a/src/grp-system/libcore/include/core/service.h +++ b/src/grp-system/libcore/include/core/service.h @@ -27,6 +27,7 @@ typedef struct ServiceFDStore ServiceFDStore; #include "kill.h" #include "path.h" +#include "socket.h" typedef enum ServiceRestart { SERVICE_RESTART_NO, @@ -203,7 +204,7 @@ struct Service { extern const UnitVTable service_vtable; -int service_set_socket_fd(Service *s, int fd, struct Socket *socket, bool selinux_context_net); +int service_set_socket_fd(Service *s, int fd, Socket *socket, bool selinux_context_net); void service_close_socket_fd(Service *s); const char* service_restart_to_string(ServiceRestart i) _const_; diff --git a/src/grp-system/libcore/include/core/slice.h b/src/grp-system/libcore/include/core/slice.h index c9f3f61067..71e05a4d6a 100644 --- a/src/grp-system/libcore/include/core/slice.h +++ b/src/grp-system/libcore/include/core/slice.h @@ -21,6 +21,8 @@ typedef struct Slice Slice; +#include "unit.h" + struct Slice { Unit meta; diff --git a/src/grp-system/libcore/include/core/smack-setup.h b/src/grp-system/libcore/include/core/smack-setup.h index 78164c85e6..f8c62ce067 100644 --- a/src/grp-system/libcore/include/core/smack-setup.h +++ b/src/grp-system/libcore/include/core/smack-setup.h @@ -21,4 +21,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdbool.h> + int mac_smack_setup(bool *loaded_policy); diff --git a/src/grp-system/libcore/include/core/socket.h b/src/grp-system/libcore/include/core/socket.h index feba21dab3..d17bf70f18 100644 --- a/src/grp-system/libcore/include/core/socket.h +++ b/src/grp-system/libcore/include/core/socket.h @@ -24,7 +24,6 @@ typedef struct Socket Socket; typedef struct SocketPeer SocketPeer; -#include "mount.h" #include "service.h" typedef enum SocketExecCommand { diff --git a/src/grp-system/libcore/include/core/swap.h b/src/grp-system/libcore/include/core/swap.h index 64db3267b2..e0c204a062 100644 --- a/src/grp-system/libcore/include/core/swap.h +++ b/src/grp-system/libcore/include/core/swap.h @@ -24,6 +24,8 @@ typedef struct Swap Swap; +#include "unit.h" + typedef enum SwapExecCommand { SWAP_EXEC_ACTIVATE, SWAP_EXEC_DEACTIVATE, diff --git a/src/grp-system/libcore/include/core/target.h b/src/grp-system/libcore/include/core/target.h index 339aea154e..406b80019c 100644 --- a/src/grp-system/libcore/include/core/target.h +++ b/src/grp-system/libcore/include/core/target.h @@ -21,6 +21,8 @@ typedef struct Target Target; +#include "unit.h" + struct Target { Unit meta; diff --git a/src/grp-system/libcore/include/core/timer.h b/src/grp-system/libcore/include/core/timer.h index 9cb30249e3..4195423a61 100644 --- a/src/grp-system/libcore/include/core/timer.h +++ b/src/grp-system/libcore/include/core/timer.h @@ -23,6 +23,8 @@ typedef struct Timer Timer; +#include "unit.h" + typedef enum TimerBase { TIMER_ACTIVE, TIMER_BOOT, diff --git a/src/grp-system/libcore/include/core/unit.h b/src/grp-system/libcore/include/core/unit.h index 6864b71183..f40b23828a 100644 --- a/src/grp-system/libcore/include/core/unit.h +++ b/src/grp-system/libcore/include/core/unit.h @@ -278,8 +278,10 @@ typedef enum UnitSetPropertiesMode { #include "automount.h" #include "busname.h" #include "device.h" +#include "mount.h" #include "path.h" #include "scope.h" +#include "service.h" #include "slice.h" #include "socket.h" #include "swap.h" diff --git a/src/grp-system/libcore/src/Makefile b/src/grp-system/libcore/src/Makefile index cd63651f2a..ab731a5b4f 100644 --- a/src/grp-system/libcore/src/Makefile +++ b/src/grp-system/libcore/src/Makefile @@ -157,6 +157,7 @@ libcore_la_CFLAGS = \ $(SECCOMP_CFLAGS) libcore_la_LIBADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ $(PAM_LIBS) \ $(AUDIT_LIBS) \ @@ -164,7 +165,12 @@ libcore_la_LIBADD = \ $(APPARMOR_LIBS) \ $(MOUNT_LIBS) -$(outdir)/load-fragment-gperf-nulstr.c: src/core/load-fragment-gperf.gperf +$(outdir)/load-fragment-gperf-nulstr.c: $(outdir)/load-fragment-gperf.gperf $(AM_V_GEN)$(AWK) 'BEGIN{ keywords=0 ; FS="," ; print "extern const char load_fragment_gperf_nulstr[];" ; print "const char load_fragment_gperf_nulstr[] ="} ; keyword==1 { print "\"" $$1 "\\0\"" } ; /%%/ { keyword=1} ; END { print ";" }' < $< > $@ +sd.CPPFLAGS += -DMOUNT_PATH=\"$(MOUNT_PATH)\" +sd.CPPFLAGS += -DUMOUNT_PATH=\"$(UMOUNT_PATH)\" +sd.CPPFLAGS += -DSYSTEMD_CGROUP_AGENT_PATH=\"$(libexecdir)/systemd-cgroups-agent\" +sd.CPPFLAGS += -DSYSTEMD_BINARY_PATH=\"$(libexecdir)/systemd\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/libcore/src/dbus-automount.h b/src/grp-system/libcore/src/dbus-automount.h index f41adda2a6..34caf6fc4c 100644 --- a/src/grp-system/libcore/src/dbus-automount.h +++ b/src/grp-system/libcore/src/dbus-automount.h @@ -19,6 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <systemd/sd-bus.h> extern const sd_bus_vtable bus_automount_vtable[]; diff --git a/src/grp-system/libcore/src/dbus-busname.h b/src/grp-system/libcore/src/dbus-busname.h index 8643d1a404..c6aa90a424 100644 --- a/src/grp-system/libcore/src/dbus-busname.h +++ b/src/grp-system/libcore/src/dbus-busname.h @@ -19,5 +19,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <systemd/sd-bus.h> extern const sd_bus_vtable bus_busname_vtable[]; diff --git a/src/grp-system/libcore/src/dbus-path.h b/src/grp-system/libcore/src/dbus-path.h index d3c19e0c2b..f24b1d5d3d 100644 --- a/src/grp-system/libcore/src/dbus-path.h +++ b/src/grp-system/libcore/src/dbus-path.h @@ -19,6 +19,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ - +#include <systemd/sd-bus.h> extern const sd_bus_vtable bus_path_vtable[]; diff --git a/src/grp-system/libcore/src/loopback-setup.c b/src/grp-system/libcore/src/loopback-setup.c index 8eb6251bd7..d7085640e1 100644 --- a/src/grp-system/libcore/src/loopback-setup.c +++ b/src/grp-system/libcore/src/loopback-setup.c @@ -21,7 +21,6 @@ #include <stdlib.h> #include "core/loopback-setup.h" -#include "sd-netlink/netlink-util.h" #include "systemd-basic/missing.h" #include "systemd-staging/sd-netlink.h" diff --git a/src/grp-system/libcore/src/target.c b/src/grp-system/libcore/src/target.c index 1e5212d75d..717dee06a9 100644 --- a/src/grp-system/libcore/src/target.c +++ b/src/grp-system/libcore/src/target.c @@ -17,7 +17,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include "core/target.h" #include "core/unit.h" #include "systemd-basic/log.h" #include "systemd-basic/special.h" diff --git a/src/grp-system/systemctl/.gitignore b/src/grp-system/systemctl/.gitignore index ebd59d3c9e..89c7427edd 100644 --- a/src/grp-system/systemctl/.gitignore +++ b/src/grp-system/systemctl/.gitignore @@ -1,2 +1,2 @@ -/systemctl -/_systemctl +/systemctl.completion.bash +/systemctl.completion.zsh diff --git a/src/grp-system/systemctl/Makefile b/src/grp-system/systemctl/Makefile index 3551118514..5931d4dcbc 100644 --- a/src/grp-system/systemctl/Makefile +++ b/src/grp-system/systemctl/Makefile @@ -28,6 +28,15 @@ systemctl_SOURCES = \ src/systemctl/systemctl.c systemctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la +files.out.all += systemctl.completion.bash +files.out.all += systemctl.completion.zsh +sd.sed_files += systemctl.completion.bash +sd.sed_files += systemctl.completion.zsh +sd.CPPFLAGS += -DROOTLIBEXECDIR=\"$(rootlibexecdir)\" +sd.CPPFLAGS += -DSYSTEM_SYSVINIT_PATH=\"$(SYSTEM_SYSVINIT_PATH)\" +sd.CPPFLAGS += -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/systemd-shutdown/Makefile b/src/grp-system/systemd-shutdown/Makefile index f68758174a..619f1bbdb5 100644 --- a/src/grp-system/systemd-shutdown/Makefile +++ b/src/grp-system/systemd-shutdown/Makefile @@ -27,13 +27,13 @@ rootlibexec_PROGRAMS += systemd-shutdown systemd_shutdown_SOURCES = \ src/core/umount.c \ src/core/umount.h \ - src/core/shutdown.c \ - src/core/mount-setup.c \ - src/core/mount-setup.h \ - src/core/killall.h \ - src/core/killall.c + src/core/shutdown.c systemd_shutdown_LDADD = \ + libcore.la \ libsystemd-shared.la +sd.CPPFLAGS += -DSYSTEM_SHUTDOWN_PATH=\"$(systemshutdowndir)\" +sd.CPPFLAGS += -DKEXEC=\"$(KEXEC)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-system/systemd-shutdown/systemd-shutdown.xml b/src/grp-system/systemd-shutdown/systemd-shutdown.xml index d16e5d628f..b1d1f87ce9 100644 --- a/src/grp-system/systemd-shutdown/systemd-shutdown.xml +++ b/src/grp-system/systemd-shutdown/systemd-shutdown.xml @@ -21,10 +21,10 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. --> -<refentry id="systemd-halt.service"> +<refentry id="systemd-shutdown"> <refentryinfo> - <title>systemd-halt.service</title> + <title>systemd-shutdown</title> <productname>systemd</productname> <authorgroup> @@ -38,7 +38,7 @@ </refentryinfo> <refmeta> - <refentrytitle>systemd-halt.service</refentrytitle> + <refentrytitle>systemd-shutdown</refentrytitle> <manvolnum>8</manvolnum> </refmeta> diff --git a/src/grp-system/systemd-shutdown/umount.h b/src/grp-system/systemd-shutdown/umount.h index 4e2215a47d..ce2fd9ec58 100644 --- a/src/grp-system/systemd-shutdown/umount.h +++ b/src/grp-system/systemd-shutdown/umount.h @@ -19,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdbool.h> + int umount_all(bool *changed); int swapoff_all(bool *changed); diff --git a/src/grp-system/systemd/50-systemd-user.xorg b/src/grp-system/systemd/50-systemd-user.xinitrc index 4d49767228..4d49767228 100755 --- a/src/grp-system/systemd/50-systemd-user.xorg +++ b/src/grp-system/systemd/50-systemd-user.xinitrc diff --git a/src/grp-system/systemd/Makefile b/src/grp-system/systemd/Makefile index 7f7fbb963e..ab2a5fa7c8 100644 --- a/src/grp-system/systemd/Makefile +++ b/src/grp-system/systemd/Makefile @@ -32,7 +32,12 @@ systemd_CFLAGS = \ $(MOUNT_CFLAGS) systemd_LDADD = \ - libcore.la + libcore.la \ + libsystemd-internal.la + +dist_tmpfiles_DATA = \ + tmpfiles.d/systemd.conf \ + systemd-tmpfs.conf dist_pkgsysconf_DATA += \ src/core/system.conf \ @@ -70,4 +75,10 @@ dist_systemunit_DATA_busnames += \ BUSNAMES_TARGET_WANTS += \ org.freedesktop.systemd1.busname +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + +sd.CPPFLAGS += -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" +sd.CPPFLAGS += -DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" +sd.CPPFLAGS += -DSYSTEMCTL_BINARY_PATH=\"$(rootbindir)/systemctl\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-timedate/systemd-timedated/Makefile b/src/grp-timedate/systemd-timedated/Makefile index d06142536e..7478f8e568 100644 --- a/src/grp-timedate/systemd-timedated/Makefile +++ b/src/grp-timedate/systemd-timedated/Makefile @@ -28,6 +28,7 @@ systemd_timedated_SOURCES = \ src/timedate/timedated.c systemd_timedated_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootlibexec_PROGRAMS += \ diff --git a/src/grp-timedate/timedatectl/Makefile b/src/grp-timedate/timedatectl/Makefile index b1093dad9b..4bb965d6c0 100644 --- a/src/grp-timedate/timedatectl/Makefile +++ b/src/grp-timedate/timedatectl/Makefile @@ -28,6 +28,7 @@ timedatectl_SOURCES = \ src/timedate/timedatectl.c timedatectl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la bin_PROGRAMS += \ diff --git a/src/grp-udev/libudev-core/Makefile b/src/grp-udev/libudev-core/Makefile index 14d4e827a0..54a61b24ce 100644 --- a/src/grp-udev/libudev-core/Makefile +++ b/src/grp-udev/libudev-core/Makefile @@ -26,7 +26,7 @@ include $(topsrcdir)/build-aux/Makefile.head.mk noinst_LTLIBRARIES += \ libudev-core.la -$(outdir)/keyboard-keys-list.txt: +$(outdir)/keyboard-keys-list.txt: | $(outdir)/$(DEPDIR) $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9K]/ { if ($$2 != "KEY_MAX") { print $$2 } }' > $@ $(outdir)/keyboard-keys-from-name.gperf: $(outdir)/keyboard-keys-list.txt @@ -38,7 +38,7 @@ $(outdir)/keyboard-keys-from-name.h: $(outdir)/keyboard-keys-from-name.gperf gperf_txt_sources += \ src/udev/keyboard-keys-list.txt -libudev_core_la_SOURCES = \ +_libudev_core_la_SOURCES = \ src/udev/udev.h \ src/udev/udev-event.c \ src/udev/udev-watch.c \ @@ -59,7 +59,7 @@ libudev_core_la_SOURCES = \ src/udev/net/ethtool-util.h \ src/udev/net/ethtool-util.c -nodist_libudev_core_la_SOURCES = \ +_nodist_libudev_core_la_SOURCES = \ src/udev/keyboard-keys-from-name.h \ src/udev/net/link-config-gperf.c @@ -71,6 +71,9 @@ libudev_core_la_CFLAGS = \ $(KMOD_CFLAGS) libudev_core_la_LIBADD = \ + libsystemd-internal.la \ + libsystemd-basic.la \ + libsystemd-staging.la \ libsystemd-network.la \ libsystemd-shared.la \ $(BLKID_LIBS) \ @@ -94,6 +97,11 @@ libudev_core_la_SOURCES += \ src/systemd/sd-login.h endif # HAVE_ACL +sd.libudev-core_SOURCES = $(patsubst src/udev/%,%,$(filter %.c,$(_libudev_core_la_SOURCES) $(_nodist_libudev_core_la_SOURCES))) +$(outdir)/libudev-core.la: $(addprefix $(outdir)/,$(sd.libudev-core_SOURCES:.c=.lo)) +$(outdir)/udev-builtin-keyboard.lo: $(outdir)/keyboard-keys-from-name.h +sd.CPPFLAGS += -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" + nested.subdirs += net include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-udev/libudev-core/net/Makefile b/src/grp-udev/libudev-core/net/Makefile index ac615aad3b..afe70e8a3d 100644 --- a/src/grp-udev/libudev-core/net/Makefile +++ b/src/grp-udev/libudev-core/net/Makefile @@ -23,7 +23,10 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -sd.CPPFLAGS += $(libsystemd-shared.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-internal.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) sd.CPPFLAGS += $(libsystemd-network.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-shared.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-staging.CPPFLAGS) include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-udev/libudev-core/udev-builtin-input_id.c b/src/grp-udev/libudev-core/udev-builtin-input_id.c index d4ba49addd..e34b761cd1 100644 --- a/src/grp-udev/libudev-core/udev-builtin-input_id.c +++ b/src/grp-udev/libudev-core/udev-builtin-input_id.c @@ -28,8 +28,8 @@ #include <string.h> #include <unistd.h> -#include <linux/limits.h> #include <linux/input.h> +#include <linux/limits.h> #include "systemd-basic/fd-util.h" #include "systemd-basic/stdio-util.h" diff --git a/src/grp-udev/libudev-core/udev-builtin-net_setup_link.c b/src/grp-udev/libudev-core/udev-builtin-net_setup_link.c index 38d0955f3d..b64ea049ec 100644 --- a/src/grp-udev/libudev-core/udev-builtin-net_setup_link.c +++ b/src/grp-udev/libudev-core/udev-builtin-net_setup_link.c @@ -17,11 +17,12 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include "link-config.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/log.h" #include "udev.h" +#include "net/link-config.h" + static link_config_ctx *ctx = NULL; static int builtin_net_setup_link(struct udev_device *dev, int argc, char **argv, bool test) { diff --git a/src/grp-udev/mtd_probe/Makefile b/src/grp-udev/mtd_probe/Makefile index d7392a8a3b..dc408a7d4e 100644 --- a/src/grp-udev/mtd_probe/Makefile +++ b/src/grp-udev/mtd_probe/Makefile @@ -34,4 +34,6 @@ dist_udevrules_DATA += \ udevlibexec_PROGRAMS += \ mtd_probe +mtd_probe_LDADD += libsystemd-basic.la + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-udev/scsi_id/scsi.h b/src/grp-udev/scsi_id/scsi.h index a27a84a40a..497cfe3e31 100644 --- a/src/grp-udev/scsi_id/scsi.h +++ b/src/grp-udev/scsi_id/scsi.h @@ -13,6 +13,7 @@ */ #include <scsi/scsi.h> +#include <sys/types.h> struct scsi_ioctl_command { unsigned int inlen; /* excluding scsi command length */ diff --git a/src/grp-udev/scsi_id/scsi_id.h b/src/grp-udev/scsi_id/scsi_id.h index 5c2e1c28ee..86d56a0c3f 100644 --- a/src/grp-udev/scsi_id/scsi_id.h +++ b/src/grp-udev/scsi_id/scsi_id.h @@ -17,6 +17,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <libudev.h> + #define MAX_PATH_LEN 512 /* diff --git a/src/grp-udev/systemd-hwdb/Makefile b/src/grp-udev/systemd-hwdb/Makefile index 6f6731b3be..901753bdf0 100644 --- a/src/grp-udev/systemd-hwdb/Makefile +++ b/src/grp-udev/systemd-hwdb/Makefile @@ -32,6 +32,7 @@ systemd_hwdb_SOURCES = \ src/hwdb/hwdb.c systemd_hwdb_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la rootbin_PROGRAMS += \ @@ -45,4 +46,6 @@ endif # ENABLE_HWDB EXTRA_DIST += \ units/systemd-hwdb-update.service.in +sd.CPPFLAGS += -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.bash b/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.bash diff --git a/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.zsh b/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-udev/systemd-hwdb/systemd-hwdb.completion.zsh diff --git a/src/grp-udev/systemd-udevd/udevd.c b/src/grp-udev/systemd-udevd/udevd.c index ce50235c1b..942d733ee8 100644 --- a/src/grp-udev/systemd-udevd/udevd.c +++ b/src/grp-udev/systemd-udevd/udevd.c @@ -43,7 +43,6 @@ #include <systemd/sd-daemon.h> #include <systemd/sd-event.h> -#include "sd-netlink/netlink-util.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/cgroup-util.h" #include "systemd-basic/cpu-set-util.h" diff --git a/src/grp-udev/udevadm/Makefile b/src/grp-udev/udevadm/Makefile index 8f723e3a58..537dbcc5b2 100644 --- a/src/grp-udev/udevadm/Makefile +++ b/src/grp-udev/udevadm/Makefile @@ -41,6 +41,9 @@ udevadm_SOURCES = \ udevadm_LDADD = \ libudev-core.la \ + libsystemd-internal.la \ libsystemd-basic.la +sd.CPPFLAGS += -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-utils/systemd-escape/systemd-escape.completion.bash b/src/grp-utils/systemd-escape/systemd-escape.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-utils/systemd-escape/systemd-escape.completion.bash diff --git a/src/grp-utils/systemd-escape/systemd-escape.completion.zsh b/src/grp-utils/systemd-escape/systemd-escape.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-utils/systemd-escape/systemd-escape.completion.zsh diff --git a/src/grp-utils/systemd-path/Makefile b/src/grp-utils/systemd-path/Makefile index e2e40e0121..d8abf0f2ee 100644 --- a/src/grp-utils/systemd-path/Makefile +++ b/src/grp-utils/systemd-path/Makefile @@ -26,9 +26,13 @@ include $(topsrcdir)/build-aux/Makefile.head.mk bin_PROGRAMS += systemd-path systemd_path_SOURCES = \ + sd-path.c \ src/path/path.c systemd_path_LDADD = \ - libsystemd-shared.la + libsystemd-basic.la + +sd.CPPFLAGS += -DLIBDIR=\"$(libdir)\" +sd.CPPFLAGS += -DROOTLIBDIR=\"$(rootlibdir)\" include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/grp-utils/systemd-path/systemd-path.completion.zsh b/src/grp-utils/systemd-path/systemd-path.completion.zsh new file mode 100644 index 0000000000..4919cf4250 --- /dev/null +++ b/src/grp-utils/systemd-path/systemd-path.completion.zsh @@ -0,0 +1,18 @@ +#compdef systemd-path + +__get_names() { + systemd-path | { while IFS=: read -r a b; do echo " $a"; done; } +} + +__names() { + local -a _names + _names=(${(fo)"$(__get_names)"}) + typeset -U _names + _describe 'names' _names +} + +_arguments \ + {-h,--help}'[Show help message]' \ + '--version[Show package version]' \ + '--host=[Sufix to append to paths]:suffix' \ + '*:name:__names' diff --git a/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.bash b/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.bash diff --git a/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.zsh b/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/grp-utils/systemd-socket-activate/systemd-socket-activate.completion.zsh diff --git a/src/libsystemd-basic/include/systemd-basic/btrfs-ctree.h b/src/libsystemd-basic/include/systemd-basic/btrfs-ctree.h index 66bdf9736e..15e6d5582c 100644 --- a/src/libsystemd-basic/include/systemd-basic/btrfs-ctree.h +++ b/src/libsystemd-basic/include/systemd-basic/btrfs-ctree.h @@ -1,6 +1,7 @@ #pragma once #include "macro.h" +#include "missing.h" /* for BTRFS_UUID_SIZE */ #include "sparse-endian.h" /* Stolen from btrfs' ctree.h */ diff --git a/src/libsystemd-basic/include/systemd-basic/missing_syscall.h b/src/libsystemd-basic/include/systemd-basic/missing_syscall.h index e6fd67cb9d..9afba975fb 100644 --- a/src/libsystemd-basic/include/systemd-basic/missing_syscall.h +++ b/src/libsystemd-basic/include/systemd-basic/missing_syscall.h @@ -22,6 +22,10 @@ /* Missing glibc definitions to access certain kernel APIs */ +#if __INCLUDE_LEVEL__ <= 1 +#error "Do not include missing_syscall.h directly; include it through missing.h." +#endif + #if !HAVE_DECL_PIVOT_ROOT static inline int pivot_root(const char *new_root, const char *put_old) { return syscall(SYS_pivot_root, new_root, put_old); diff --git a/src/libsystemd-basic/include/systemd-basic/raw-clone.h b/src/libsystemd-basic/include/systemd-basic/raw-clone.h index d473828999..33fdf02f09 100644 --- a/src/libsystemd-basic/include/systemd-basic/raw-clone.h +++ b/src/libsystemd-basic/include/systemd-basic/raw-clone.h @@ -21,6 +21,7 @@ #include <sched.h> #include <sys/syscall.h> +#include <unistd.h> #include "log.h" #include "macro.h" diff --git a/src/libsystemd-basic/include/systemd-basic/rm-rf.h b/src/libsystemd-basic/include/systemd-basic/rm-rf.h index f693a5bb7c..8d315792ac 100644 --- a/src/libsystemd-basic/include/systemd-basic/rm-rf.h +++ b/src/libsystemd-basic/include/systemd-basic/rm-rf.h @@ -19,8 +19,11 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdlib.h> #include <sys/stat.h> +#include "macro.h" + typedef enum RemoveFlags { REMOVE_ONLY_DIRECTORIES = 1, REMOVE_ROOT = 2, diff --git a/src/libsystemd-basic/include/systemd-basic/socket-util.h b/src/libsystemd-basic/include/systemd-basic/socket-util.h index 7f1a87bc3e..f0f12c8c2e 100644 --- a/src/libsystemd-basic/include/systemd-basic/socket-util.h +++ b/src/libsystemd-basic/include/systemd-basic/socket-util.h @@ -27,8 +27,8 @@ #include <sys/types.h> #include <sys/un.h> -#include <linux/netlink.h> #include <linux/if_packet.h> +#include <linux/netlink.h> #include "macro.h" #include "util.h" diff --git a/src/libsystemd-basic/include/systemd-basic/time-util.h b/src/libsystemd-basic/include/systemd-basic/time-util.h index 558b0b5b7f..977f7b6bc5 100644 --- a/src/libsystemd-basic/include/systemd-basic/time-util.h +++ b/src/libsystemd-basic/include/systemd-basic/time-util.h @@ -26,6 +26,8 @@ #include <stdio.h> #include <time.h> +#include "macro.h" + typedef uint64_t usec_t; typedef uint64_t nsec_t; diff --git a/src/libsystemd-basic/src/Makefile b/src/libsystemd-basic/src/Makefile index 76336dca63..fd72f23308 100644 --- a/src/libsystemd-basic/src/Makefile +++ b/src/libsystemd-basic/src/Makefile @@ -23,7 +23,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -noinst_LTLIBRARIES += \ +rootlibexec_LTLIBRARIES += \ libsystemd-basic.la libsystemd_basic_la_SOURCES = \ @@ -238,19 +238,19 @@ libsystemd_basic_la_LIBADD = \ -lrt \ -lm -$(outdir)/errno-list.txt: +$(outdir)/errno-list.txt: | $(outdir)/$(DEPDIR) $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include errno.h - </dev/null | $(AWK) '/^#define[ \t]+E[^ _]+[ \t]+/ { print $$2; }' >$@ $(outdir)/errno-to-name.h: $(outdir)/errno-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const errno_names[] = { "} !/EDEADLOCK/ && !/EWOULDBLOCK/ && !/ENOTSUP/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ -$(outdir)/af-list.txt: +$(outdir)/af-list.txt: | $(outdir)/$(DEPDIR) $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include sys/socket.h - </dev/null | grep -v AF_UNSPEC | grep -v AF_MAX | $(AWK) '/^#define[ \t]+AF_[^ \t]+[ \t]+PF_[^ \t]/ { print $$2; }' >$@ $(outdir)/af-to-name.h: $(outdir)/af-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const af_names[] = { "} !/AF_FILE/ && !/AF_ROUTE/ && !/AF_LOCAL/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ -$(outdir)/arphrd-list.txt: +$(outdir)/arphrd-list.txt: | $(outdir)/$(DEPDIR) $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include net/if_arp.h - </dev/null | $(AWK) '/^#define[ \t]+ARPHRD_[^ \t]+[ \t]+[^ \t]/ { print $$2; }' | sed -e 's/ARPHRD_//' >$@ $(outdir)/arphrd-to-name.h: $(outdir)/arphrd-list.txt @@ -259,8 +259,8 @@ $(outdir)/arphrd-to-name.h: $(outdir)/arphrd-list.txt $(outdir)/arphrd-from-name.gperf: $(outdir)/arphrd-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct arphrd_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, ARPHRD_%s\n", $$1, $$1 }' <$< >$@ -$(outdir)/cap-list.txt: - $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include linux/capability.h -include missing.h - </dev/null | $(AWK) '/^#define[ \t]+CAP_[A-Z_]+[ \t]+/ { print $$2; }' | grep -v CAP_LAST_CAP >$@ +$(outdir)/cap-list.txt: | $(outdir)/$(DEPDIR) + $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM -include linux/capability.h -include systemd-basic/missing.h - </dev/null | $(AWK) '/^#define[ \t]+CAP_[A-Z_]+[ \t]+/ { print $$2; }' | grep -v CAP_LAST_CAP >$@ $(outdir)/cap-to-name.h: $(outdir)/cap-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const capability_names[] = { "} { printf "[%s] = \"%s\",\n", $$1, tolower($$1) } END{print "};"}' <$< >$@ @@ -271,4 +271,10 @@ $(outdir)/cap-from-name.gperf: $(outdir)/cap-list.txt $(outdir)/cap-from-name.h: $(outdir)/cap-from-name.gperf $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_capability -H hash_capability_name -p -C <$< >$@ +$(outdir)/af-list.lo: $(outdir)/af-from-name.h $(outdir)/af-to-name.h +$(outdir)/arphrd-list.lo: $(outdir)/arphrd-from-name.h $(outdir)/arphrd-to-name.h +$(outdir)/cap-list.lo: $(outdir)/cap-from-name.h $(outdir)/cap-to-name.h +$(outdir)/errno-list.lo: $(outdir)/errno-from-name.h $(outdir)/errno-to-name.h +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd-firewall/src/Makefile b/src/libsystemd-firewall/src/Makefile index b52d1fdad0..577cbb7a9f 100644 --- a/src/libsystemd-firewall/src/Makefile +++ b/src/libsystemd-firewall/src/Makefile @@ -24,7 +24,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk ifneq ($(HAVE_LIBIPTC),) -noinst_LTLIBRARIES += \ +rootlibexec_LTLIBRARIES += \ libsystemd-firewall.la libsystemd_firewall_la_SOURCES = \ @@ -35,6 +35,7 @@ libsystemd_firewall_la_CFLAGS = \ $(LIBIPTC_CFLAGS) libsystemd_firewall_la_LIBADD = \ + libsystemd-basic.la \ $(LIBIPTC_LIBS) endif # HAVE_LIBIPTC diff --git a/src/libsystemd-gcrypt/src/Makefile b/src/libsystemd-gcrypt/src/Makefile index 8166d5a253..6ed001dded 100644 --- a/src/libsystemd-gcrypt/src/Makefile +++ b/src/libsystemd-gcrypt/src/Makefile @@ -23,4 +23,18 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +rootlibexec_LTLIBRARIES += \ + libsystemd-gcrypt.la + +libsystemd_gcrypt_la_SOURCES = \ + src/shared/gcrypt-util.h \ + src/shared/gcrypt-util.c + +libsystemd_gcrypt_la_CFLAGS = \ + $(GCRYPT_CFLAGS) + +libsystemd_gcrypt_la_LIBADD = \ + libsystemd-basic.la \ + $(GCRYPT_LIBS) + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd-network/src/Makefile b/src/libsystemd-network/src/Makefile index c636e3cab1..3e89f7ca4f 100644 --- a/src/libsystemd-network/src/Makefile +++ b/src/libsystemd-network/src/Makefile @@ -23,7 +23,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -noinst_LTLIBRARIES += \ +rootlibexec_LTLIBRARIES += \ libsystemd-network.la libsystemd_network_la_CFLAGS = \ @@ -78,6 +78,9 @@ libsystemd_network_la_SOURCES = \ src/libsystemd-network/sd-lldp.c libsystemd_network_la_LIBADD = \ + libsystemd-basic.la \ + libsystemd.la \ + libsystemd-shared.la \ $(KMOD_LIBS) include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd-shared/include/systemd-shared/test-tables.h b/src/libsystemd-shared/include/systemd-shared/test-tables.h index 228e510104..83d3345e68 100644 --- a/src/libsystemd-shared/include/systemd-shared/test-tables.h +++ b/src/libsystemd-shared/include/systemd-shared/test-tables.h @@ -20,6 +20,8 @@ #include <stdio.h> #include <stdlib.h> +#include "systemd-basic/macro.h" + typedef const char* (*lookup_t)(int); typedef int (*reverse_t)(const char*); diff --git a/src/libsystemd-shared/src/Makefile b/src/libsystemd-shared/src/Makefile index 601daf855c..9cbcb79e4a 100644 --- a/src/libsystemd-shared/src/Makefile +++ b/src/libsystemd-shared/src/Makefile @@ -23,7 +23,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -noinst_LTLIBRARIES += \ +rootlibexec_LTLIBRARIES += \ libsystemd-shared.la libsystemd_shared_la_SOURCES = \ @@ -94,8 +94,6 @@ libsystemd_shared_la_SOURCES = \ src/shared/import-util.h \ src/shared/sysctl-util.c \ src/shared/sysctl-util.h \ - src/shared/bus-util.c \ - src/shared/bus-util.h \ src/shared/logs-show.c \ src/shared/logs-show.h \ src/shared/machine-image.c \ @@ -135,48 +133,38 @@ libsystemd_shared_la_CFLAGS = \ $(LIBIDN_CFLAGS) \ $(SECCOMP_CFLAGS) +# We can't use libshared.la here because it would +# pull in libsystemd*-internal.la +# -- Felipe Sateler +# What? We're pulling in libsystemd-internal.la +# anyway! +# -- Luke Shumaker libsystemd_shared_la_LIBADD = \ libsystemd-internal.la \ libsystemd-basic.la \ - libsystemd-journal-internal.la \ libudev-internal.la \ $(ACL_LIBS) \ $(LIBIDN_LIBS) \ $(SECCOMP_LIBS) -rootlibexec_LTLIBRARIES += \ - libsystemd-shared.la +libsystemd_shared_la_LDFLAGS = \ + -release $(PACKAGE_VERSION) -libsystemd_shared_la_SOURCES = \ - $(libsystemd_basic_la_SOURCES) \ - $(libsystemd_shared_la_SOURCES) \ - $(libsystemd_internal_la_SOURCES) \ - $(libsystemd_journal_internal_la_SOURCES) \ - $(libudev_internal_la_SOURCES) +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" +sd.CPPFLAGS += -DSYSTEM_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/system\" +sd.CPPFLAGS += -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" +sd.CPPFLAGS += -DSYSTEM_SYSVINIT_PATH=\"$(SYSTEM_SYSVINIT_PATH)\" +sd.CPPFLAGS += -DSYSTEM_SYSVRCND_PATH=\"$(SYSTEM_SYSVRCND_PATH)\" +sd.CPPFLAGS += -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" +sd.CPPFLAGS += -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" -libsystemd_shared_la_CFLAGS = \ - $(libsystemd_basic_la_CFLAGS) \ - $(libsystemd_shared_la_CFLAGS) \ - $(libsystemd_internal_la_CFLAGS) \ - $(libsystemd_journal_internal_la_CFLAGS) \ - $(libudev_internal_la_CFLAGS) \ - $(ACL_CFLAGS) \ - $(LIBIDN_CFLAGS) \ - $(SECCOMP_CFLAGS) \ - -fvisibility=default +sd.CPPFLAGS += -DSYSTEMD_FSCK_PATH=\"$(libexecdir)/systemd-fsck\" -# We can't use libsystemd_shared_la_LIBADD here because it would -# pull in libsystemd*-internal.la -libsystemd_shared_la_LIBADD = \ - libsystemd-basic.la \ - libsystemd_internal.la \ - libsystemd_journal_internal.la \ - libudev_internal.la \ - $(ACL_LIBS) \ - $(LIBIDN_LIBS) \ - $(SECCOMP_LIBS) +sd.CPPFLAGS += -DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(bindir)/systemd-tty-ask-password-agent\" -libsystemd_shared_la_LDFLAGS = \ - -release $(PACKAGE_VERSION) +sd.CPPFLAGS += -DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" +sd.CPPFLAGS += -DUSER_GENERATOR_PATH=\"$(usergeneratordir)\" + +sd.CPPFLAGS += -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/Makefile b/src/libsystemd/Makefile index be66c9c898..e85ef4a778 100644 --- a/src/libsystemd/Makefile +++ b/src/libsystemd/Makefile @@ -39,14 +39,14 @@ libsystemd_la_LDFLAGS = \ -Wl,--version-script=$(srcdir)/libsystemd.sym libsystemd_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-basic.la \ - libsystemd-journal-internal.la + libsystemd-internal.la + +libsystemd_la_LIBADD = $(libsystemd-internal.DEPENDS) pkgconfiglib_DATA += \ src/libsystemd/libsystemd.pc -pkginclude_HEADERS += \ +_pkginclude_HEADERS += \ src/systemd/sd-bus.h \ src/systemd/sd-bus-protocol.h \ src/systemd/sd-bus-vtable.h \ @@ -82,28 +82,33 @@ tests += \ test-local-addresses \ test-resolve -pkginclude_HEADERS += \ +_pkginclude_HEADERS += \ src/systemd/sd-journal.h \ src/systemd/sd-messages.h \ src/systemd/_sd-common.h -test-libsystemd-sym.c: \ - $(top_builddir)/src/libsystemd/libsystemd.sym \ - src/systemd/sd-journal.h \ - src/systemd/sd-daemon.h \ - src/systemd/sd-login.h \ - src/systemd/sd-bus.h \ - src/systemd/sd-utf8.h \ - src/systemd/sd-resolve.h \ - src/systemd/sd-path.h \ - src/systemd/sd-event.h - $(generate-sym-test) +$(outdir)/test-libsystemd-sym.c: \ + $(srcdir)/include/systemd/sd-journal.h \ + $(srcdir)/include/systemd/sd-daemon.h \ + $(srcdir)/include/systemd/sd-login.h \ + $(srcdir)/include/systemd/sd-bus.h \ + $(srcdir)/include/systemd/sd-utf8.h \ + $(srcdir)/include/systemd/sd-resolve.h \ + $(srcdir)/include/systemd/sd-path.h \ + $(srcdir)/include/systemd/sd-event.h nodist_test_libsystemd_sym_SOURCES = \ test-libsystemd-sym.c test_libsystemd_sym_LDADD = \ libsystemd.la +$(DESTDIR)$(pkgincludedir)/%.h: $(srcdir)/include/systemd/%.h + @$(NORMAL_INSTALL) + $(am.INSTALL_HEADERS) + +files.sys.all += $(addprefix $(pkgincludedir)/,$(notdir $(_pkginclude_HEADERS))) +$(outdir)/libsystemd.la: $(srcdir)/libsystemd.sym + nested.subdirs += src include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/include-staging/systemd-staging/sd-netlink.h b/src/libsystemd/include-staging/systemd-staging/sd-netlink.h index 8a8c85a004..7db35e1756 100644 --- a/src/libsystemd/include-staging/systemd-staging/sd-netlink.h +++ b/src/libsystemd/include-staging/systemd-staging/sd-netlink.h @@ -24,8 +24,8 @@ #include <netinet/ether.h> #include <netinet/in.h> -#include <linux/rtnetlink.h> #include <linux/neighbour.h> +#include <linux/rtnetlink.h> #include <systemd/_sd-common.h> #include <systemd/sd-event.h> diff --git a/src/libsystemd/include/systemd/sd-utf8.h b/src/libsystemd/include/systemd/sd-utf8.h deleted file mode 100644 index 6781983878..0000000000 --- a/src/libsystemd/include/systemd/sd-utf8.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef foosdutf8hfoo -#define foosdutf8hfoo - -/*** - This file is part of systemd. - - Copyright 2013 Lennart Poettering - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. -***/ - -#include "_sd-common.h" - -_SD_BEGIN_DECLARATIONS; - -_sd_pure_ const char *sd_utf8_is_valid(const char *s); -_sd_pure_ const char *sd_ascii_is_valid(const char *s); - -_SD_END_DECLARATIONS; - -#endif diff --git a/src/libsystemd/sd_event_get_fd.xml b/src/libsystemd/sd_event_get_fd.xml index f68752dd0e..982f279657 100644 --- a/src/libsystemd/sd_event_get_fd.xml +++ b/src/libsystemd/sd_event_get_fd.xml @@ -119,7 +119,7 @@ <example> <title>Integration in the GLib event loop</title> - <programlisting><xi:include href="glib-event-glue.c" parse="text" /></programlisting> + <programlisting><xi:include href="sd_event_get_fd-glib-example.c" parse="text" /></programlisting> </example> </refsect1> diff --git a/src/libsystemd/src/Makefile b/src/libsystemd/src/Makefile index a7c1b4789a..5907b378a4 100644 --- a/src/libsystemd/src/Makefile +++ b/src/libsystemd/src/Makefile @@ -23,18 +23,16 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -libsystemd_internal_la_SOURCES = \ +_libsystemd_internal_la_SOURCES = \ src/systemd/sd-bus.h \ src/systemd/sd-bus-protocol.h \ src/systemd/sd-bus-vtable.h \ - src/systemd/sd-utf8.h \ src/systemd/sd-event.h \ src/systemd/sd-netlink.h \ src/systemd/sd-resolve.h \ src/systemd/sd-login.h \ src/systemd/sd-id128.h \ src/systemd/sd-daemon.h \ - src/systemd/sd-path.h \ src/systemd/sd-network.h \ src/systemd/sd-hwdb.h \ src/systemd/sd-device.h \ @@ -81,7 +79,8 @@ libsystemd_internal_la_SOURCES = \ src/libsystemd/sd-bus/kdbus.h \ src/libsystemd/sd-bus/bus-dump.c \ src/libsystemd/sd-bus/bus-dump.h \ - src/libsystemd/sd-utf8/sd-utf8.c \ + src/libsystemd/sd-bus/bus-util.c \ + src/libsystemd/sd-bus/bus-util.h \ src/libsystemd/sd-event/sd-event.c \ src/libsystemd/sd-netlink/sd-netlink.c \ src/libsystemd/sd-netlink/netlink-internal.h \ @@ -99,7 +98,6 @@ libsystemd_internal_la_SOURCES = \ src/libsystemd/sd-id128/id128-util.c \ src/libsystemd/sd-daemon/sd-daemon.c \ src/libsystemd/sd-login/sd-login.c \ - src/libsystemd/sd-path/sd-path.c \ src/libsystemd/sd-network/sd-network.c \ src/libsystemd/sd-network/network-util.h \ src/libsystemd/sd-network/network-util.c \ @@ -118,10 +116,10 @@ libsystemd_internal_la_SOURCES = \ libsystemd_internal_la_LIBADD = \ -lresolv -noinst_LTLIBRARIES += \ +rootlibexec_LTLIBRARIES += \ libsystemd-internal.la -libsystemd_journal_internal_la_SOURCES = \ +_libsystemd_journal_internal_la_SOURCES = \ src/journal/sd-journal.c \ src/systemd/sd-journal.h \ src/systemd/_sd-common.h \ @@ -142,11 +140,9 @@ libsystemd_journal_internal_la_SOURCES = \ src/journal/mmap-cache.h \ src/journal/compress.c \ src/journal/audit-type.h \ - src/journal/audit-type.c \ - src/shared/gcrypt-util.h \ - src/shared/gcrypt-util.c + src/journal/audit-type.c -nodist_libsystemd_journal_internal_la_SOURCES = \ +#nodist_libsystemd_journal_internal_la_SOURCES = \ src/journal/audit_type-to-name.h gperf_txt_sources += \ @@ -174,7 +170,7 @@ libsystemd_journal_internal_la_LIBADD += \ endif # HAVE_LZ4 ifneq ($(HAVE_GCRYPT),) -libsystemd_journal_internal_la_SOURCES += \ +_libsystemd_journal_internal_la_SOURCES += \ src/journal/journal-authenticate.c \ src/journal/journal-authenticate.h \ src/journal/fsprg.c \ @@ -183,11 +179,30 @@ libsystemd_journal_internal_la_SOURCES += \ libsystemd_journal_internal_la_LIBADD += \ $(GCRYPT_LIBS) +libsystemd_journal_internal_la_CFLAGS += \ + $(GCRYPT_CFLAGS) endif # HAVE_GCRYPT -noinst_LTLIBRARIES += \ +#noinst_LTLIBRARIES += \ libsystemd-journal-internal.la +# Hook into the `am` module +libsystemd_internal_la_CFLAGS += $(libsystemd_journal_internal_la_CFLAGS) +libsystemd_internal_la_LIBADD += $(libsystemd_journal_internal_la_LIBADD) + +# Don't bother trying to hook into the `am` module for the sources; the only +# thing it adds over declaring the dependencies is adding the appropriate +# directories to am.subdirs=>at.subdirs; but we can do that here just as easily +# with nested.subdirs. +sd.libsystemd_SOURCES = +sd.libsystemd_SOURCES += $(patsubst src/libsystemd/%,%,$(filter %.c,$(_libsystemd_internal_la_SOURCES))) +sd.libsystemd_SOURCES += $(addprefix sd-journal/,$(notdir $(filter %.c,$(_libsystemd_journal_internal_la_SOURCES)))) +$(outdir)/libsystemd-internal.la: $(addprefix $(outdir)/,$(sd.libsystemd_SOURCES:.c=.lo)) + +libsystemd_internal_la_LIBADD += \ + libsystemd-basic.la \ + libsystemd-gcrypt.la + nested.subdirs += sd-bus nested.subdirs += sd-daemon nested.subdirs += sd-device diff --git a/src/libsystemd/src/sd-bus/Makefile b/src/libsystemd/src/sd-bus/Makefile index 60150788d8..a483e31fd1 100644 --- a/src/libsystemd/src/sd-bus/Makefile +++ b/src/libsystemd/src/sd-bus/Makefile @@ -20,7 +20,11 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. + include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +sd.CPPFLAGS += $(libsystemd.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/src/sd-bus/bus-signature.h b/src/libsystemd/src/sd-bus/bus-signature.h index 1e0cd7f587..8b7a45cef5 100644 --- a/src/libsystemd/src/sd-bus/bus-signature.h +++ b/src/libsystemd/src/sd-bus/bus-signature.h @@ -20,6 +20,7 @@ ***/ #include <stdbool.h> +#include <sys/types.h> bool signature_is_single(const char *s, bool allow_dict_entry); bool signature_is_pair(const char *s); diff --git a/src/libsystemd/src/sd-bus/bus-socket.h b/src/libsystemd/src/sd-bus/bus-socket.h index 6e1d32e6a7..712e37bcc0 100644 --- a/src/libsystemd/src/sd-bus/bus-socket.h +++ b/src/libsystemd/src/sd-bus/bus-socket.h @@ -19,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdbool.h> + #include <systemd/sd-bus.h> void bus_socket_setup(sd_bus *b); diff --git a/src/libsystemd/src/sd-bus/bus-track.h b/src/libsystemd/src/sd-bus/bus-track.h index 26bd05f5c7..68398281ae 100644 --- a/src/libsystemd/src/sd-bus/bus-track.h +++ b/src/libsystemd/src/sd-bus/bus-track.h @@ -19,5 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <systemd/sd-bus.h> + void bus_track_dispatch(sd_bus_track *track); void bus_track_close(sd_bus_track *track); diff --git a/src/libsystemd/src/sd-device/device-internal.h b/src/libsystemd/src/sd-device/device-internal.h index c2539feb89..c23e329ed4 100644 --- a/src/libsystemd/src/sd-device/device-internal.h +++ b/src/libsystemd/src/sd-device/device-internal.h @@ -22,6 +22,7 @@ #include "systemd-basic/hashmap.h" #include "systemd-basic/set.h" +#include "systemd-staging/sd-device.h" struct sd_device { uint64_t n_ref; diff --git a/src/libsystemd/src/sd-hwdb/Makefile b/src/libsystemd/src/sd-hwdb/Makefile index 60150788d8..a2696e2976 100644 --- a/src/libsystemd/src/sd-hwdb/Makefile +++ b/src/libsystemd/src/sd-hwdb/Makefile @@ -20,7 +20,13 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. + include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +sd.CPPFLAGS += $(libsystemd.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-staging.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) +sd.CPPFLAGS += -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/src/sd-journal/Makefile b/src/libsystemd/src/sd-journal/Makefile index d0415fb0d3..10cd8c45bb 100644 --- a/src/libsystemd/src/sd-journal/Makefile +++ b/src/libsystemd/src/sd-journal/Makefile @@ -23,20 +23,25 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -audit_list_includes = -include linux/audit.h -include missing.h +audit_list_includes = -include linux/audit.h -include systemd-basic/missing.h ifneq ($(HAVE_AUDIT),) audit_list_includes += -include libaudit.h endif # HAVE_AUDIT -$(outdir)/audit_type-list.txt: +$(outdir)/audit_type-list.txt: | $(outdir)/$(DEPDIR) $(AM_V_GEN)$(CPP) $(sd.ALL_CPPFLAGS) -dM $(audit_list_includes) - </dev/null | grep -vE 'AUDIT_.*(FIRST|LAST)_' | $(SED) -r -n 's/^#define\s+AUDIT_(\w+)\s+([0-9]{4})\s*$$/\1\t\2/p' | sort -k2 >$@ $(outdir)/audit_type-to-name.h: $(outdir)/audit_type-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char *audit_type_to_string(int type) {\n\tswitch(type) {" } {printf " case AUDIT_%s: return \"%s\";\n", $$1, $$1 } END{ print " default: return NULL;\n\t}\n}\n" }' <$< >$@ # fsprg.c is a drop-in file using void pointer arithmetic -libsystemd_journal_internal_la_CFLAGS += \ - $(GCRYPT_CFLAGS) \ - -Wno-pointer-arith +$(outdir)/fsprg.lo: sd.ALL_CFLAGS += -Wno-pointer-arith + +$(outdir)/audit-type.lo: $(outdir)/audit_type-to-name.h + +sd.CPPFLAGS += $(libsystemd.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-gcrypt.CPPFLAGS) +sd.CPPFLAGS += -DCATALOG_DATABASE=\"$(catalogstatedir)/database\" include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/src/sd-journal/mmap-cache.h b/src/libsystemd/src/sd-journal/mmap-cache.h index 199d944647..d7eca3c237 100644 --- a/src/libsystemd/src/sd-journal/mmap-cache.h +++ b/src/libsystemd/src/sd-journal/mmap-cache.h @@ -20,7 +20,9 @@ ***/ #include <stdbool.h> +#include <stdint.h> #include <sys/stat.h> +#include <sys/types.h> /* One context per object type, plus one of the header, plus one "additional" one */ #define MMAP_CACHE_MAX_CONTEXTS 9 diff --git a/src/libsystemd/src/sd-netlink/local-addresses.c b/src/libsystemd/src/sd-netlink/local-addresses.c index 74e1b2c2bf..6d6ee9c504 100644 --- a/src/libsystemd/src/sd-netlink/local-addresses.c +++ b/src/libsystemd/src/sd-netlink/local-addresses.c @@ -23,7 +23,6 @@ #include "systemd-staging/sd-netlink.h" #include "local-addresses.h" -#include "netlink-util.h" static int address_compare(const void *_a, const void *_b) { const struct local_address *a = _a, *b = _b; diff --git a/src/libsystemd/src/sd-network/network-util.h b/src/libsystemd/src/sd-network/network-util.h index 4527ed7c0f..253a6b9934 100644 --- a/src/libsystemd/src/sd-network/network-util.h +++ b/src/libsystemd/src/sd-network/network-util.h @@ -19,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <stdbool.h> + #include "systemd-staging/sd-network.h" bool network_is_online(void); diff --git a/src/libsystemd/src/sd-utf8/sd-utf8.c b/src/libsystemd/src/sd-utf8/sd-utf8.c deleted file mode 100644 index e00ec94390..0000000000 --- a/src/libsystemd/src/sd-utf8/sd-utf8.c +++ /dev/null @@ -1,35 +0,0 @@ -/*** - This file is part of systemd. - - Copyright 2013 Lennart Poettering - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. -***/ - -#include <systemd/sd-utf8.h> - -#include "systemd-basic/utf8.h" -#include "systemd-basic/util.h" - -_public_ const char *sd_utf8_is_valid(const char *s) { - assert_return(s, NULL); - - return utf8_is_valid(s); -} - -_public_ const char *sd_ascii_is_valid(const char *s) { - assert_return(s, NULL); - - return ascii_is_valid(s); -} diff --git a/src/libsystemd/src/subdir.mk b/src/libsystemd/src/subdir.mk index 605b592401..73c05740ce 100644 --- a/src/libsystemd/src/subdir.mk +++ b/src/libsystemd/src/subdir.mk @@ -20,10 +20,12 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk + +include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -sd.CPPFLAGS += -DLIBDIR=\"$(libdir)\" -sd.CPPFLAGS += -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" +sd.CPPFLAGS += $(libsystemd.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-staging.CPPFLAGS) +sd.CPPFLAGS += $(libsystemd-basic.CPPFLAGS) include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libsystemd/src/test.mk b/src/libsystemd/src/test.mk index c823a360f2..a4d107ba6b 100644 --- a/src/libsystemd/src/test.mk +++ b/src/libsystemd/src/test.mk @@ -20,8 +20,6 @@ # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see <http://www.gnu.org/licenses/>. -include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk -include $(topsrcdir)/build-aux/Makefile.head.mk test_bus_marshal_SOURCES = \ src/libsystemd/sd-bus/test-bus-marshal.c @@ -159,6 +157,3 @@ test_resolve_SOURCES = \ test_resolve_LDADD = \ libsystemd-shared.la - - -include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/libudev/Makefile b/src/libudev/Makefile index 737a750e3a..cf4745cc7e 100644 --- a/src/libudev/Makefile +++ b/src/libudev/Makefile @@ -47,10 +47,8 @@ pkgconfiglib_DATA += \ EXTRA_DIST += \ src/libudev/libudev.pc.in -test-libudev-sym.c: \ - src/libudev/libudev.sym \ - src/udev/udev.h - $(generate-sym-test) +$(outdir)/test-libudev-sym.c: \ + $(srcdir)/udev.h nodist_test_libudev_sym_SOURCES = \ test-libudev-sym.c diff --git a/src/libudev/src/Makefile b/src/libudev/src/Makefile index 46f122d52d..3f2f59ed39 100644 --- a/src/libudev/src/Makefile +++ b/src/libudev/src/Makefile @@ -23,7 +23,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -libudev_la_SOURCES =\ +libudev_internal_la_SOURCES =\ src/libudev/libudev.sym \ src/libudev/libudev-private.h \ src/libudev/libudev-device-internal.h \ @@ -36,10 +36,11 @@ libudev_la_SOURCES =\ src/libudev/libudev-monitor.c \ src/libudev/libudev-queue.c \ src/libudev/libudev-hwdb.c + +libudev_internal_la_LIBADD = \ + libsystemd-internal.la + noinst_LTLIBRARIES += \ libudev-internal.la -libudev_internal_la_SOURCES =\ - $(libudev_la_SOURCES) - include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-cgls/Makefile b/src/systemd-cgls/Makefile index 1ef82d8aef..9289eee967 100644 --- a/src/systemd-cgls/Makefile +++ b/src/systemd-cgls/Makefile @@ -28,6 +28,7 @@ systemd_cgls_SOURCES = \ src/cgls/cgls.c systemd_cgls_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-cgtop/Makefile b/src/systemd-cgtop/Makefile index abebe7f3d0..5400436100 100644 --- a/src/systemd-cgtop/Makefile +++ b/src/systemd-cgtop/Makefile @@ -28,6 +28,7 @@ systemd_cgtop_SOURCES = \ src/cgtop/cgtop.c systemd_cgtop_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-cryptsetup/Makefile b/src/systemd-cryptsetup/Makefile index f4c8afad96..1fdfe19a5d 100644 --- a/src/systemd-cryptsetup/Makefile +++ b/src/systemd-cryptsetup/Makefile @@ -41,6 +41,7 @@ systemd_cryptsetup_CFLAGS = \ $(LIBCRYPTSETUP_CFLAGS) systemd_cryptsetup_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la \ $(LIBCRYPTSETUP_LIBS) @@ -55,4 +56,6 @@ SYSINIT_TARGET_WANTS += \ endif # HAVE_LIBCRYPTSETUP +sd.CPPFLAGS += -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-debug-generator/Makefile b/src/systemd-debug-generator/Makefile index 542d8b5a5a..a326353121 100644 --- a/src/systemd-debug-generator/Makefile +++ b/src/systemd-debug-generator/Makefile @@ -31,4 +31,6 @@ systemd_debug_generator_SOURCES = \ systemd_debug_generator_LDADD = \ libsystemd-shared.la +sd.CPPFLAGS += -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-getty-generator/Makefile b/src/systemd-getty-generator/Makefile index 645dc189f7..4f90ae05ed 100644 --- a/src/systemd-getty-generator/Makefile +++ b/src/systemd-getty-generator/Makefile @@ -30,4 +30,6 @@ systemd_getty_generator_SOURCES = \ systemd_getty_generator_LDADD = \ libsystemd-shared.la +sd.CPPFLAGS += -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-gpt-auto-generator/Makefile b/src/systemd-gpt-auto-generator/Makefile index ce6b56f998..73283847bc 100644 --- a/src/systemd-gpt-auto-generator/Makefile +++ b/src/systemd-gpt-auto-generator/Makefile @@ -32,6 +32,7 @@ systemd_gpt_auto_generator_SOURCES = \ src/basic/blkid-util.h systemd_gpt_auto_generator_LDADD = \ + libsystemd-blkid.la \ libsystemd-shared.la \ $(BLKID_LIBS) @@ -39,4 +40,6 @@ systemd_gpt_auto_generator_CFLAGS = \ $(BLKID_CFLAGS) endif # HAVE_BLKID +sd.CPPFLAGS += -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-initctl/Makefile b/src/systemd-initctl/Makefile index 18d66993b7..0df78e788e 100644 --- a/src/systemd-initctl/Makefile +++ b/src/systemd-initctl/Makefile @@ -28,6 +28,7 @@ systemd_initctl_SOURCES = \ src/initctl/initctl.c systemd_initctl_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-machine-id-setup/Makefile b/src/systemd-machine-id-setup/Makefile index 4cbba418ff..97f9087ac6 100644 --- a/src/systemd-machine-id-setup/Makefile +++ b/src/systemd-machine-id-setup/Makefile @@ -25,12 +25,11 @@ include $(topsrcdir)/build-aux/Makefile.head.mk rootbin_PROGRAMS += systemd-machine-id-setup systemd_machine_id_setup_SOURCES = \ - src/machine-id-setup/machine-id-setup-main.c \ - src/core/machine-id-setup.c \ - src/core/machine-id-setup.h + src/machine-id-setup/machine-id-setup-main.c systemd_machine_id_setup_LDADD = \ - libsystemd-shared.la + libsystemd-basic.la \ + libcore.la SYSINIT_TARGET_WANTS += \ systemd-machine-id-commit.service diff --git a/src/systemd-nspawn/Makefile b/src/systemd-nspawn/Makefile index c0fc3bd98e..e43f5a2493 100644 --- a/src/systemd-nspawn/Makefile +++ b/src/systemd-nspawn/Makefile @@ -45,11 +45,7 @@ systemd_nspawn_SOURCES = \ src/nspawn/nspawn-stub-pid1.c \ src/nspawn/nspawn-stub-pid1.h \ src/nspawn/nspawn-patch-uid.c \ - src/nspawn/nspawn-patch-uid.h \ - src/core/mount-setup.c \ - src/core/mount-setup.h \ - src/core/loopback-setup.c \ - src/core/loopback-setup.h + src/nspawn/nspawn-patch-uid.h nodist_systemd_nspawn_SOURCES = \ src/nspawn/nspawn-gperf.c @@ -64,6 +60,9 @@ systemd_nspawn_CFLAGS = \ $(SELINUX_CFLAGS) systemd_nspawn_LDADD = \ + libcore.la \ + libsystemd-blkid.la \ + libsystemd-internal.la \ libsystemd-shared.la \ $(ACL_LIBS) \ $(BLKID_LIBS) \ @@ -90,4 +89,7 @@ test_patch_uid_LDADD = \ manual_tests += \ test-patch-uid +dist_tmpfiles_DATA = \ + tmpfiles.d/systemd-nspawn.conf + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-nspawn/nspawn-expose-ports.c b/src/systemd-nspawn/nspawn-expose-ports.c index 1ecebe8e30..efdc845476 100644 --- a/src/systemd-nspawn/nspawn-expose-ports.c +++ b/src/systemd-nspawn/nspawn-expose-ports.c @@ -18,7 +18,6 @@ ***/ #include "sd-netlink/local-addresses.h" -#include "sd-netlink/netlink-util.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/fd-util.h" #include "systemd-basic/in-addr-util.h" diff --git a/src/systemd-nspawn/nspawn-mount.h b/src/systemd-nspawn/nspawn-mount.h index 0d58439df3..8601dfdad3 100644 --- a/src/systemd-nspawn/nspawn-mount.h +++ b/src/systemd-nspawn/nspawn-mount.h @@ -20,6 +20,7 @@ ***/ #include <stdbool.h> +#include <sys/types.h> #include "systemd-basic/cgroup-util.h" diff --git a/src/systemd-nspawn/nspawn-network.c b/src/systemd-nspawn/nspawn-network.c index 2e0760ec86..2fae23376c 100644 --- a/src/systemd-nspawn/nspawn-network.c +++ b/src/systemd-nspawn/nspawn-network.c @@ -24,7 +24,6 @@ #include <libudev.h> #include <systemd/sd-id128.h> -#include "sd-netlink/netlink-util.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/ether-addr-util.h" #include "systemd-basic/lockfile-util.h" diff --git a/src/systemd-nspawn/nspawn-register.c b/src/systemd-nspawn/nspawn-register.c index de3ee23f09..1e45b8e58f 100644 --- a/src/systemd-nspawn/nspawn-register.c +++ b/src/systemd-nspawn/nspawn-register.c @@ -19,7 +19,7 @@ #include <systemd/sd-bus.h> -#include "sd-bus/bus-error.h" +#include "sd-bus/bus-error.h" /* for bus_error_message */ #include "sd-bus/bus-util.h" #include "systemd-basic/stat-util.h" #include "systemd-basic/strv.h" diff --git a/src/systemd-nspawn/nspawn-seccomp.h b/src/systemd-nspawn/nspawn-seccomp.h index 5bde16faf9..a01e110c70 100644 --- a/src/systemd-nspawn/nspawn-seccomp.h +++ b/src/systemd-nspawn/nspawn-seccomp.h @@ -19,6 +19,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include <sys/types.h> +#include <stdint.h> int setup_seccomp(uint64_t cap_list_retain); diff --git a/src/systemd-nspawn/nspawn.c b/src/systemd-nspawn/nspawn.c index 5a3624fad1..9514152b5b 100644 --- a/src/systemd-nspawn/nspawn.c +++ b/src/systemd-nspawn/nspawn.c @@ -46,7 +46,6 @@ #include "core/loopback-setup.h" #include "sd-id128/id128-util.h" -#include "sd-netlink/netlink-util.h" #include "systemd-basic/alloc-util.h" #include "systemd-basic/barrier.h" #include "systemd-basic/btrfs-util.h" diff --git a/src/systemd-remount-fs/Makefile b/src/systemd-remount-fs/Makefile index 55cc776cdb..76f4941afb 100644 --- a/src/systemd-remount-fs/Makefile +++ b/src/systemd-remount-fs/Makefile @@ -25,11 +25,13 @@ include $(topsrcdir)/build-aux/Makefile.head.mk rootlibexec_PROGRAMS += systemd-remount-fs systemd_remount_fs_SOURCES = \ - src/remount-fs/remount-fs.c \ - src/core/mount-setup.c \ - src/core/mount-setup.h + src/remount-fs/remount-fs.c systemd_remount_fs_LDADD = \ + libcore.la \ libsystemd-shared.la +sd.CPPFLAGS += -DMOUNT_PATH=\"$(MOUNT_PATH)\" +sd.CPPFLAGS += -DUMOUNT_PATH=\"$(UMOUNT_PATH)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-stdio-bridge/Makefile b/src/systemd-stdio-bridge/Makefile index 096d94b90a..cd15120b23 100644 --- a/src/systemd-stdio-bridge/Makefile +++ b/src/systemd-stdio-bridge/Makefile @@ -28,6 +28,7 @@ systemd_stdio_bridge_SOURCES = \ src/stdio-bridge/stdio-bridge.c systemd_stdio_bridge_LDADD = \ + libsystemd-internal.la \ libsystemd-shared.la include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.bash b/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.bash new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.bash diff --git a/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.zsh b/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.zsh new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/systemd-stdio-bridge/systemd-stdio-bridge.completion.zsh diff --git a/src/systemd-system-update-generator/Makefile b/src/systemd-system-update-generator/Makefile index 5e66309753..45504681b5 100644 --- a/src/systemd-system-update-generator/Makefile +++ b/src/systemd-system-update-generator/Makefile @@ -30,4 +30,6 @@ systemd_system_update_generator_SOURCES = \ systemd_system_update_generator_LDADD = \ libsystemd-shared.la +sd.CPPFLAGS += -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-timesyncd/Makefile b/src/systemd-timesyncd/Makefile index 8bea585e8c..698dce7044 100644 --- a/src/systemd-timesyncd/Makefile +++ b/src/systemd-timesyncd/Makefile @@ -37,6 +37,7 @@ nodist_systemd_timesyncd_SOURCES = \ src/timesync/timesyncd-gperf.c systemd_timesyncd_LDADD = \ + libsystemd-internal.la \ libsystemd-network.la \ libsystemd-shared.la \ -lm @@ -62,4 +63,9 @@ EXTRA_DIST += \ units/systemd-timesyncd.service.in \ src/timesync/timesyncd.conf.in +dist_systempreset_DATA = \ + 90-timesyncd.preset + +sd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/systemd-tty-ask-password-agent/Makefile b/src/systemd-tty-ask-password-agent/Makefile index 3091527a7f..beba28d912 100644 --- a/src/systemd-tty-ask-password-agent/Makefile +++ b/src/systemd-tty-ask-password-agent/Makefile @@ -30,4 +30,6 @@ systemd_tty_ask_password_agent_SOURCES = \ systemd_tty_ask_password_agent_LDADD = \ libsystemd-shared.la +sd.CPPFLAGS += -DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(rootbindir)/systemd-tty-ask-password-agent\" + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/test/test-netlink-manual.c b/src/test/test-netlink-manual.c index 3e82a7cc96..abe705f58e 100644 --- a/src/test/test-netlink-manual.c +++ b/src/test/test-netlink-manual.c @@ -21,8 +21,8 @@ #include <libkmod.h> #include <net/if.h> -#include <linux/ip.h> #include <linux/if_tunnel.h> +#include <linux/ip.h> #include "systemd-basic/macro.h" #include "systemd-basic/util.h" diff --git a/sysctl.d/.gitignore b/sysctl.d/.gitignore deleted file mode 100644 index e326c180c3..0000000000 --- a/sysctl.d/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/50-coredump.conf diff --git a/tmpfiles.d/.gitignore b/tmpfiles.d/.gitignore deleted file mode 100644 index c8c9fe059b..0000000000 --- a/tmpfiles.d/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/etc.conf -/systemd-journald.conf diff --git a/tools/git-prune b/tools/git-prune new file mode 100755 index 0000000000..d5a36dd4ee --- /dev/null +++ b/tools/git-prune @@ -0,0 +1,2 @@ +#!/bin/sh +git tag|grep '^elogind/v[0-9]*$'|xargs -n1 git tag -d diff --git a/tools/make-man-rules.py b/tools/make-man-rules.py index 5e61917d60..0b73ab04f7 100644 --- a/tools/make-man-rules.py +++ b/tools/make-man-rules.py @@ -24,16 +24,16 @@ import os.path from xml_helper import * SECTION = '''\ -MANPAGES += \\ +sdman.MANPAGES += \\ {manpages} -MANPAGES_ALIAS += \\ +sdman.MANPAGES_ALIAS += \\ {aliases} {rules} {htmlrules} ''' CONDITIONAL = '''\ -if {conditional} +ifneq ($({conditional}),) ''' \ + SECTION + \ '''\ @@ -54,7 +54,7 @@ HEADER = '''\ HTML_ALIAS_RULE = '''\ {}.html: {}.html - $(html-alias) + $(sdman.html-alias) ''' FOOTER = '''\ diff --git a/tools/test-header.sh b/tools/test-header.sh index b11285af7d..d63177bde0 100755 --- a/tools/test-header.sh +++ b/tools/test-header.sh @@ -1,2 +1,2 @@ #!/bin/bash -gcc -c -o /dev/null -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/libmount $(find src -type d |sed 's|^|-I&|') -include ./config.h -include "$(realpath -- "$1")" test-header.c +gcc -c -o /dev/null -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/libmount $(find src -type d |sed 's|^|-I&|') -include ./config.h -include "$(realpath -- "$1")" "$(dirname -- "$0")"/test-header.c |