aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
Commit message (Collapse)AuthorAge
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-2.6.18Greg Kroah-Hartman2006-08-16
|\
| * kbuild: correct assingment to CFLAGS with CROSS_COMPILESam Ravnborg2006-08-16
| | | | | | | | | | | | | | | | | | | | Some architectures change $CC in arch/$(ARCH)/Makefile mips is one example. That have impact on what options are supported by gcc so move all $(call cc-option, ...) after include of arch specific Makefile. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-2.6.18Greg Kroah-Hartman2006-08-07
|\|
| * kbuild: external modules shall not check config consistencySam Ravnborg2006-08-07
| | | | | | | | | | | | | | | | | | | | external modules needs include/linux/autoconf.h and include/config/auto.conf but skip the integrity test of these. Even with a newer Kconfig file we shall just proceed since external modules simply uses the kernel source and shall not attempt to modify it. Error out if a config fiel is missing since they are mandatory. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | Linux v2.6.18-rc4v2.6.18-rc4Linus Torvalds2006-08-06
|/
* kbuild: -fno-stack-protector is not goodSam Ravnborg2006-08-01
| | | | | | | Ubuntu gcc has hardcoded -fstack-protector - but does not understand -fno-stack-protector-all. So only try -fno-stack-protector. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: version.h and new headers_* targets does not require a kernel configSam Ravnborg2006-08-01
| | | | Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Linux v2.6.18-rc3v2.6.18-rc3Linus Torvalds2006-07-30
|
* Linux 2.6.18-rc2v2.6.18-rc2Linus Torvalds2006-07-15
| | | | | | Finishing up for the kernel summit. Ottawa, here I come. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Linux 2.6.18-rc1v2.6.18-rc1Linus Torvalds2006-07-06
| | | | It's all good.
* [PATCH] Makefile typoAndreas Schwab2006-07-05
| | | | | | | Fix a typo in the toplevel makefile. Signed-off-by: Andreas Schwab <schwab@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge git://git.infradead.org/hdrinstall-2.6Linus Torvalds2006-07-04
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.infradead.org/hdrinstall-2.6: Remove export of include/linux/isdn/tpam.h Remove <linux/i2c-id.h> and <linux/i2c-algo-ite.h> from userspace export Restrict headers exported to userspace for SPARC and SPARC64 Add empty Kbuild files for 'make headers_install' in remaining arches. Add Kbuild file for Alpha 'make headers_install' Add Kbuild file for SPARC 'make headers_install' Add Kbuild file for IA64 'make headers_install' Add Kbuild file for S390 'make headers_install' Add Kbuild file for i386 'make headers_install' Add Kbuild file for x86_64 'make headers_install' Add Kbuild file for PowerPC 'make headers_install' Add generic Kbuild files for 'make headers_install' Basic implementation of 'make headers_check' Basic implementation of 'make headers_install'
| * Basic implementation of 'make headers_check'David Woodhouse2006-06-18
| | | | | | | | | | | | | | | | Based on the 'headers_install' target, this performs a basic sanity check on the exported headers -- so far only checking that they do not include any other headers which aren't selected for import, but easily extendable. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
| * Basic implementation of 'make headers_install'David Woodhouse2006-06-18
| | | | | | | | | | | | | | | | | | | | | | | | | | This adds a make target which exports a subset of headers which contain definitions which are useful for system libraries and tools. It uses the BSD 'unifdef' tool to remove instances of #ifdef __KERNEL__, and uses sed to remove markers like __user. Based on an original implementation by Arnd Bergmann <arnd@arndb.de> Hacked about by David Woodhouse <dwmw2@infradead.org> Reviewed and cleaned up by Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | kbuild: introduce utsrelease.hSam Ravnborg2006-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | include/linux/version.h contained both actual KERNEL version and UTS_RELEASE that contains a subset from git SHA1 for when kernel was compiled as part of a git repository. This had the unfortunate side-effect that all files including version.h would be recompiled when some git changes was made due to changes SHA1. Split it out so we keep independent parts in separate files. Also update checkversion.pl script to no longer check for UTS_RELEASE. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | kbuild: explicit turn off gcc stack-protectorSam Ravnborg2006-07-02
| | | | | | | | | | | | | | | | | | Ubuntu has enabled -fstack-protector per default in gcc breaking kernel build. Explicit turn it off for now. Later we may decide to make it configurable if the kernel starts to support it. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | kbuild: documentation change on allowing checkers besides sparseDustin Kirkland2006-07-01
| | | | | | | | | | | | | | | | | | | | | | Minor documentation change on allowing checkers besides sparse This patch cleans up a couple of mentions of sparse in the inline toplevel Makefile documentation such that it's clear that other checkers besides sparse can override CHECK and CHECKFLAGS. Signed-off-by: Dustin Kirkland <dustin.kirkland@us.ibm.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | kbuild: fix ia64 breakage after introducing make -rRSam Ravnborg2006-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kbuild used $ยค(*F to get filename of target without extension. This was used in several places all over kbuild, but introducing make -rR broke his for all cases where we specified full path to target/prerequsite. It is assumed that make -rR disables old style suffix-rules which is why is suddenly failed. ia64 was impacted by this change because several div* routines in arch/ia64/lib are build using explicit paths and then kbuild failed. Thanks to David Mosberger-Tang <David.Mosberger@acm.org> for an explanation what was the root-cause and for testing on ia64. This patch also fixes two uses of $(*F) in arch/um Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuildLinus Torvalds2006-06-26
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits) kbuild: trivial fixes in Makefile kbuild: adding symbols in Kconfig and defconfig to TAGS kbuild: replace abort() with exit(1) kbuild: support for %.symtypes files kbuild: fix silentoldconfig recursion kbuild: add option for stripping modules while installing them kbuild: kill some false positives from modpost kbuild: export-symbol usage report generator kbuild: fix make -rR breakage kbuild: append -dirty for updated but uncommited changes kbuild: append git revision for all untagged commits kbuild: fix module.symvers parsing in modpost kbuild: ignore make's built-in rules & variables kbuild: bugfix with initramfs kbuild: modpost build fix kbuild: check license compatibility when building modules kbuild: export-type enhancement to modpost.c kbuild: add dependency on kernel.release to the package targets kbuild: `make kernelrelease' speedup kconfig: KCONFIG_OVERWRITECONFIG ...
| * | kbuild: trivial fixes in MakefileSam Ravnborg2006-06-24
| | | | | | | | | | | | Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: adding symbols in Kconfig and defconfig to TAGSMasatake YAMATO2006-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm using TAGS generated from "make TAGS" to read the kernel source code. When I met a ifdef block #ifdef CONFIG_FOO ... #endif in the soruce code I would like to know the meaning CONFIG_FOO to decide whether I should read inside the ifdef block or not. meaning CONFIG_FOO is well documented in Kconfig. So it is nice if I can jump to CONFIG_FOO entry in Kconfig from "#ifdef CONFIG_FOO" with the tag jump. Here is the patch to add symbols in Kconfig and defconfig to TAGS in "make TAGS" operation. Signed-off-by: Masatake YAMATO <jet@gyve.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: support for %.symtypes filesAndreas Gruenbacher2006-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here is a patch that adds a new -T option to genksyms for generating dumps of the type definition that makes up the symbol version hashes. This allows to trace modversion changes back to what caused them. The dump format is the name of the type defined, followed by its definition (which is almost C): s#list_head struct list_head { s#list_head * next , * prev ; } The s#, u#, e#, and t# prefixes stand for struct, union, enum, and typedef. The exported symbols do not define types, and thus do not have an x# prefix: nfs4_acl_get_whotype int nfs4_acl_get_whotype ( char * , t#u32 ) The symbol type defintion of a single file can be generated with: make fs/jbd/journal.symtypes If KBUILD_SYMTYPES is defined, all the *.symtypes of all object files that export symbols are generated. The single *.symtypes files can be combined into a single file after a kernel build with a script like the following: for f in $(find -name '*.symtypes' | sort); do f=${f#./} echo "/* ${f%.symtypes}.o */" cat $f echo done \ | sed -e '\:UNKNOWN:d' \ -e 's:[,;] }:}:g' \ -e 's:\([[({]\) :\1:g' \ -e 's: \([])},;]\):\1:g' \ -e 's: $::' \ $f \ | awk ' /^.#/ { if (defined[$1] == $0) { print $1 next } defined[$1] = $0 } { print } ' When the kernel ABI changes, diffing individual *.symtype files, or the combined files, against each other will show which symbol changes caused the ABI changes. This can save a tremendous amount of time. Dump the types that make up modversions Signed-off-by: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: fix silentoldconfig recursionRoman Zippel2006-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kconfig-fix-config-dependencies causes this: make CC=cc KBUILD_VERBOSE=1 -C /usr/src/25 SUBDIRS=/home/akpm/NVIDIA-Linux-x86_64-1.0-8762-pkg2/usr/src/nv modules make -f /usr/src/devel/Makefile silentoldconfig make -f /usr/src/devel/Makefile silentoldconfig make -f /usr/src/devel/Makefile silentoldconfig The basic problem is if we compile external modules, config-targets isn't set which can cause recursive calls to silentoldconfig to update the kernel configuration. Bail out and ask the user to update manually. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: add option for stripping modules while installing themTheodore Ts'o2006-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add option for stripping modules while installing them. This function adds support for stripping modules while they are being installed. CONFIG_DEBUG_KERNEL (which will probably become more popular as developers use kdump) causes the size of the installed modules to grow by a factor of 9 or so. Some kernel package systems solve this problem by stripping the debug information from /lib/modules after running "make modules_install", but that may not work for people who are installing directly into /lib/modules --- root partitions that were sized to handle 16 megs worth of modules may not be quite so happy with 145 megs of modules, so the "make modules_install" never succeeds. This patch allows such users to request modules_install to strip the modules as they are installed. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: ignore make's built-in rules & variablesSam Ravnborg2006-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kbuild does explicitly specify what to do in all cases, and each time make's built-in rules & variables has been used it has been a bug. So to speed up things and to avoid the hard-to-debug error situations ignore the built-in definitions. If any part of the kernel uses the built-in definitions the build will just stop there and it should be trivial to fix. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: add dependency on kernel.release to the package targetsZach Brown2006-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The binrpm-pkg target uses KERNELRELEASE when generated its .spec file. When binrpm-pkg was the first build target run in a tree it generated the .spec before kernel.release so the Version: tag in the .spec was empty. I don't know if this is the best fix, but binrpm-pkg works when we explicitly build kernel.release before descending into package-dir. Signed-off-by: Zach Brown <zach.brown@oracle.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kbuild: `make kernelrelease' speedupRoman Zippel2006-06-09
| | | | | | | | | | | | | | | Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kconfig: KCONFIG_OVERWRITECONFIGRoman Zippel2006-06-09
| | | | | | | | | | | | | | | | | | | | | | | | If you set KCONFIG_OVERWRITECONFIG in environment, Kconfig will not break symlinks when .config is a symlink to somewhere else. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kconfig: move .kernelreleaseRoman Zippel2006-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves the .kernelrelease file into include/config directory. Remove its generation from the config step, if the config step doesn't leave a proper .config behind, it triggers a call to silentoldconfig. Instead its generation can be done via proper dependencies. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kconfig: integrate split config into silentoldconfigRoman Zippel2006-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that kconfig can load multiple configurations, it becomes simple to integrate the split config step, by simply comparing the new .config file with the old auto.conf (and then saving the new auto.conf). A nice side effect is that this saves a bit of disk space and cache, as no data needs to be read from or saved into the splitted config files anymore (e.g. include/config is now 648KB instead of 5.2MB). Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * | kconfig: fix .config dependenciesRoman Zippel2006-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes one of the worst kbuild warts left - the broken dependencies used to check and regenerate the .config file. This was done via an indirect dependency and the .config itself had an empty command, which can cause make not to reread the changed .config file. Instead of this we generate now a new file include/config/auto.conf from .config, which is used for kbuild and has the proper dependencies. It's also the main make target now for all files generated during this step (and thus replaces include/linux/autoconf.h). This also means we can now relax the syntax requirements for the .config file and we don't have to rewrite it all the time, i.e. silentoldconfig only writes .config now when it's necessary to keep it in sync with the Kconfig files and even this can be suppressed by setting the environment variable KCONFIG_NOSILENTUPDATE, so the update can (and must) be done manually. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* | | Linux v2.6.17v2.6.17Linus Torvalds2006-06-17
|/ / | | | | | | | | Being named "Crazed Snow-Weasel" instills a lot of confidence in this release, so I'm sure this will be one of the better ones.
* | Linux 2.6.17-rc6v2.6.17-rc6Linus Torvalds2006-06-05
| |
* | Linux 2.6.17-rc5v2.6.17-rc5Linus Torvalds2006-05-24
|/
* Linux v2.6.17-rc4v2.6.17-rc4Linus Torvalds2006-05-11
|
* kbuild: Do not overwrite makefile as anohter userJan Beulich2006-05-08
| | | | | | | | | | | Change the conditional of the outputmakefile rule to be evaluated entirely in make, and add a conditional to not touch the generated makefile when e.g. running 'make install' as root while the build was done as non-root. Also adjust the comment describing this, and move the message printing and redirection to mkmakefile. Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: removing .tmp_versions considered harmfulPavel Roskin2006-04-30
| | | | | | | | | | | Remove *.mod files but not .tmp_versions for external builds When "make install" is run as root, .tmp_versions is re-created and becomes owned by root. Subsequent "make" run by user fails because .tmp_versions cannot be removed. Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Linux v2.6.17-rc3v2.6.17-rc3Linus Torvalds2006-04-26
|
* Linux v2.6.17-rc2v2.6.17-rc2Linus Torvalds2006-04-18
|
* kbuild: modules_install for external modules must not remove existing modulesAndreas Gruenbacher2006-04-06
| | | | | | | | | | | | | | | When installing external modules with `make modules_install', the first thing that happens is a rm -rf of the target directory. This works only once, and breaks when installing more than one (set of) external module(s). With following fix we have the functionality: - for a in-kernel modules_install the $(MODLIB)/kernel directory will be deleted before module installation - for external modules the existing modules will be left as is assuming one may be building and installign several external modules Signed-off-by: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix make dir/Sam Ravnborg2006-04-06
| | | | | | | kbuild added an extra '/' after the directory - resulting in all files being rebuild in a subdirectory. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix building single targets with make O=.. single-targetSam Ravnborg2006-04-05
| | | | | | | | | | | | | This fixes single targets build so it now works relaiably in following cases: - build with mixed kernel source and output files (make single-target) - build with separate output directory (make O=.. single-target) - external module with mixed kernel source and output files (make M='pwd' single-target) - external module with separate kernel source and output files (make O=.. M='pwd' single-target) Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Linux v2.6.17-rc1v2.6.17-rc1Linus Torvalds2006-04-02
| | | | Close of the merge window..
* [PATCH] x86_64: Don't define string functions to builtinAndi Kleen2006-03-25
| | | | | | | | | | | | | | | | gcc should handle this anyways, and it causes problems when sprintf is turned into strcpy by gcc behind our backs and the C fallback version of strcpy is actually defining __builtin_strcpy Then drop -ffreestanding from the main Makefile because it isn't needed anymore and implies -fno-builtin, which is wrong now. (it was only added for x86-64, so dropping it should be safe) Noticed by Roman Zippel Cc: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuildLinus Torvalds2006-03-25
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild: (46 commits) kbuild: remove obsoleted scripts/reference_* files kbuild: fix make help & make *pkg kconfig: fix time ordering of writes to .kconfig.d and include/linux/autoconf.h Kconfig: remove the CONFIG_CC_ALIGN_* options kbuild: add -fverbose-asm to i386 Makefile kbuild: clean-up genksyms kbuild: Lindent genksyms.c kbuild: fix genksyms build error kbuild: in makefile.txt note that Makefile is preferred name for kbuild files kbuild: replace PHONY with FORCE kbuild: Fix bug in crc symbol generating of kernel and modules kbuild: change kbuild to not rely on incorrect GNU make behavior kbuild: when warning symbols exported twice now tell user this is the problem kbuild: fix make dir/file.xx when asm symlink is missing kbuild: in the section mismatch check try harder to find symbols kbuild: fix section mismatch check for unwind on IA64 kbuild: kill false positives from section mismatch warnings for powerpc kbuild: kill trailing whitespace in modpost & friends kbuild: small update of allnoconfig description kbuild: make namespace.pl CROSS_COMPILE happy ... Trivial conflict in arch/ppc/boot/Makefile manually fixed up
| * kbuild: remove obsoleted scripts/reference_* filesSam Ravnborg2006-03-21
| | | | | | | | | | | | | | The checks performed by scripts/reference_* has been moved to modpost. Remove the files and their reference in top-level Makefile. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * kbuild: fix make help & make *pkgSam Ravnborg2006-03-21
| | | | | | | | | | | | | | | | FORCE was not defined => error. Use kbuild infrastructure to call down to the relevant Makefile. This enables us to use the FORCE definition from kbuild. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * Kconfig: remove the CONFIG_CC_ALIGN_* optionsAdrian Bunk2006-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't see any use case for the CONFIG_CC_ALIGN_* options: - they are only available if EMBEDDED - people using EMBEDDED will most likely also enable CC_OPTIMIZE_FOR_SIZE - the default for -Os is to disable alignment In case someone is doing performance comparisons and discovers that the default settings gcc chooses aren't good, the only sane thing is to discuss whether it makes sense to change this, not through offering options to change this locally. Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * kbuild: replace PHONY with FORCESam Ravnborg2006-03-08
| | | | | | | | | | | | | | .PHONY: does not take patterns so use FORCE to achive same effect. Thanks to "Paul D. Smith" <psmith@gnu.org> for noticing this. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| * kbuild: change kbuild to not rely on incorrect GNU make behaviorPaul Smith2006-03-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The kbuild system takes advantage of an incorrect behavior in GNU make. Once this behavior is fixed, all files in the kernel rebuild every time, even if nothing has changed. This patch ensures kbuild works with both the incorrect and correct behaviors of GNU make. For more details on the incorrect behavior, see: http://lists.gnu.org/archive/html/bug-make/2006-03/msg00003.html Changes in this patch: - Keep all targets that are to be marked .PHONY in a variable, PHONY. - Add .PHONY: $(PHONY) to mark them properly. - Remove any $(PHONY) files from the $? list when determining whether targets are up-to-date or not. Signed-off-by: Paul Smith <psmith@gnu.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>