home | codereading | contact | github | math | misc | notes | patches | tech | README

make NetBSD specific (bmake) notes

This page is about the NetBSD make(1), not GNU Make. In this site, we will also find the make (portable) notes page that has interesting information about Makefile creation and techniques for building portable Makefiles.


Make cannot find a file included by .include <file.mk>

.include's in make is very similar to C's #include's. It searchs for file surrounded by "" (double quotes) in the local path and files surrounded by <> in system path (usually, /u../../share/mk).

To override system path, pass the -m option. It is highly recommended that it be a absolute path, if you use relative paths, subfiles parsed (included?) by this file will look for the same filepath, but relative to them -> this can yield problems if they are in a different directory level.

The -I option can be used to specify individual files.

For example, to compile kernel modules for NetBSD-current (5.99) I did:

$ cd src/sys/modules
$ make -m /disk/spare/netbsd-current/s../../share/mk/ TOOLDIR=/disk/spare/netbsd-current/tools/

Error bmake: no system rules (sys.mk)

If you receive an error like that (probably if you installed bmake in a non-default directory), export the MAKESYSPATH variable to the directory where sys.mk can be found:

$ export MAKESYSPATH=/opt/bmake/share/mk

This page was helpful.