History log of /freebsd-11.0-release/share/mk/bsd.progs.mk
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 304489 19-Aug-2016 bdrewery

MFS r304144:

MFC r303964:

PROGS: Support INTERNALPROG.prog=yes to not install it.

Approved by: re (gjb)


# 304489 19-Aug-2016 bdrewery

MFS r304144:

MFC r303964:

PROGS: Support INTERNALPROG.prog=yes to not install it.

Approved by: re (gjb)

# 303975 11-Aug-2016 gjb

Copy stable/11@r303970 to releng/11.0 as part of the 11.0-RELEASE
cycle.

Prune svn:mergeinfo from the new branch, and rename it to RC1.

Update __FreeBSD_version.

Use the quarterly branch for the default FreeBSD.conf pkg(8) repo and
the dvd1.iso packages population.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 302408 08-Jul-2016 gjb

Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, as nothing has been merged
here.

Additional commits post-branch will follow.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 298012 14-Apr-2016 ngie

Add DEBUG_FLAGS to PROG_VARS and STRIP to PROG_OVERRIDE_VARS

This will allow the variables [*] to be overridden on a per-PROG basis,
which is useful when controlling "stripping" behavior for some tests
that require debug symbols or to be unstripped

DEBUG_FLAGS (similar to CFLAGS) supports appending, whereas STRIP is
an override

*: Due to how STRIP is defined in bsd.own.mk (in addition to
bsd.lib.mk and bsd.prog.mk), and the fact that bsd.test.mk pulls in
bsd.own.mk first, overriding STRIP doesn't work today.

A follow up commit is pending to "rectify" this after additional
testing is done.

Discussed with: bdrewery
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 297456 31-Mar-2016 bdrewery

We don't support DPLIBS.

Sponsored by: EMC / Isilon Storage Division


# 297282 26-Mar-2016 bdrewery

We don't have a CPPFLAGS, COPTS or CPUFLAGS.

Sponsored by: EMC / Isilon Storage Division


# 296555 09-Mar-2016 bdrewery

DIRDEPS_BUILD+PROGS: Fix staging not respecting (BINDIR|PROGNAME)[._]${PROG}.

Observed in tests/sys/kern.

Sponsored by: EMC / Isilon Storage Division


# 296553 09-Mar-2016 bdrewery

PROGS: Track child meta files.

This will allow Makefile.depend to properly capture all dependencies.
It is not 100% optimal but works. Other options would be to use *.meta
here which would include too much or to keep a Makefile.depend per PROG
and include it from the main Makefile.depend which would not be
straight forward.

Sponsored by: EMC / Isilon Storage Division


# 296122 26-Feb-2016 bdrewery

Move PROGS logic to proper place and remove redundant and unneeded logic.

- bsd.progs.mk is safe to include regardless of PROGS/PROGS_CXX/SCRIPTS
being set.
- bsd.progs.mk includes bsd.prog.mk always and will bring in
bsd.files.mk and bsd.obj.mk.
- DIRDEPS_BUILD: There's no need for _SKIP_BUILD or _SKIP_STAGING as the
PROGS were implicitly being built by the staging dependency anyway. This
was also preventing other objects from building if they were not part of
the staging sets.
- DIRDEPS_BUILD: This fixes PROGS without bsd.test.mk not staging.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 296121 26-Feb-2016 bdrewery

DIRDEPS_BUILD: Fix some things building in MAKELEVEL0.

For PROGS this was recursing twice since MAKELEVEL0 is for 'dirdeps'
which then really builds in a sub-make.

Sponsored by: EMC / Isilon Storage Division


# 296000 24-Feb-2016 bdrewery

PROGS: Only the main process will install INCS.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 295994 24-Feb-2016 bdrewery

PROGS: Remove the 'build one' optimization since it breaks 'build multiple'

Given PROG1 PROG2, 'make PROG1' would work but 'make PROG1 PROG2' would not.
Just build them as normal in a sub-make to avoid any issues.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 295976 24-Feb-2016 bdrewery

PROGS: Only recurse on called targets like done for SUBDIR in r291635.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 294873 27-Jan-2016 bdrewery

Set a value for _RECURSING_PROGS for debugging.

MFC after: 3 days
Sponsored by: EMC / Isilon Storage Division


# 291340 25-Nov-2015 bdrewery

Follow-up r291338 to handle .d, .y and .l files better as well.

X-MFC-With: r291338
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 291338 25-Nov-2015 bdrewery

Fix the "common object" handling to not depend on ".o" if SRCS only contains
headers.

This resulted in 'don't know how to make .o.' errors after the changes in
r289286.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 290870 15-Nov-2015 ngie

Add NO_WERROR and WARNS to PROG_OVERRIDE_VARS for bsd.prog.mk compatibility

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 290181 30-Oct-2015 ngie

Unbreak bsd.progs.mk with PROGS (but not PROGS_CXX) and when invoking the
"one of many" targets, e.g. `make hello_world`, where hello_world is a C
program

Tested with: PROGS and PROGS_CXX
MFC after: 1 week
X-MFC with: r289289
Sponsored by: EMC / Isilon Storage Division


# 289669 21-Oct-2015 bdrewery

Fix building in a directory with SUBDIRs and SUBDIR_PARALLEL.

The SUBDIR_PARALLEL feature uses a .for dir in ${SUBDIR} loop. The old code
here for recursing was setting SUBDIR= as a make *argument*. The SUBDIR=
replacement was not actually handled until after the .for loop was unrolled.
This could be seen with a '.info ${SUBDIR} ${dir}' inside of the loop which
showed an empty ${SUBDIR} and a set ${dir}. Setting NO_SUBIDR= before calling
${MAKE} as an *environment* variable handles the case fine and is a more
proper mechanism for disabling subdir handling.

This could be seen with 'make -C tests/sys/kern -j15 SUBDIR_PARALLEL=yes'.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 289289 14-Oct-2015 bdrewery

Fix support for building a PROG_CXX, and PROG, directly.

For example in lib/atf/libatf-c++/tests/detail it is now possible to
run 'make application_test'. This was intended to worked for PROGS,
but lacked support for PROGS_CXX.

Also fix redefining the main PROG target to recurse. This isn't needed
since the main process is setting PROG/PROG_CXX to handle it directly
via bsd.prog.mk.

MFC after: 3 weeks
Sponsored by: EMC / Isilon Storage Division


# 289286 14-Oct-2015 bdrewery

Follow-up r288218 by ensuring common objects are built before recursing.

Some example where this is a problem:
lib/atf/libatf-c++/tests/Makefile:SRCS.${_T}= ${_T}.cpp test_helpers.cpp
lib/atf/libatf-c++/tests/detail/Makefile:SRCS.${_T}= ${_T}.cpp test_helpers.cpp
lib/atf/libatf-c/tests/Makefile:SRCS.${_T}= ${_T}.c test_helpers.c
lib/atf/libatf-c/tests/detail/Makefile:SRCS.${_T}= ${_T}.c test_helpers.c
lib/libpam/libpam/tests/Makefile:SRCS.${test} = ${test}.c ${COMMONSRC}

A similar change may be needed for FILES, SCRIPTS, or INCS, but for now stay
with just SRCS.

Reported by: rodrigc
MFC after: 3 weeks
X-MFC-With: r288218
Sponsored by: EMC / Isilon Storage Division


# 289085 09-Oct-2015 bapt

Add a new bsd.confs.mk similar to bsd.files.mk or bsd.incs.mk

It defines a CONFS variable for all files supposed to be installed as a
configuration file and handle as such


# 288218 25-Sep-2015 bdrewery

PROGS: Let the parent run the children in parallel.

This seems to work fine.

MFC after: 3 weeks
Sponsored by: EMC / Isilon Storage Division


# 288201 25-Sep-2015 bdrewery

Don't recurse with cleanobj.

bsd.obj.mk handles the needs fine. When an objdir exists it will
just rm -Rf the objdir. When it does not exist though it will
call 'clean' and 'cleandepend', which properly recurse in bsd.progs.mk.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 288160 24-Sep-2015 bdrewery

Document bsd.progs.mk and add more variables overrides.

BINGRP BINMODE BINOWN LINKS MLINKS PROGNAME.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 288158 23-Sep-2015 bdrewery

Fix most cases of bsd.progs.mk running duplicate or missing commands.

This mostly fixes an interaction with bsd.test.mk with PROGS and SCRIPTS.
This was most notable with 'make clean' and 'make install', which r281055
and r272055 attempted to address but were inadequate.

It also addresses similar issues in bsd.progs.mk when not using bsd.test.mk.

This also fixes cases of NOT running commands in the parent when using
bsd.progs.mk:
- 'make clean' was not run for the main process for Makefiles which had both
FILES and SUBDIR but no PROGS or SCRIPTS. This usually was just a
leftover Kyuafile.auto. One such example is usr.bin/bmake/tests/sysmk/t1/2.
- 'make obj' was not running in the current directory with bsd.test.mk due
to early inclusion of bsd.subdir.mk. This was not really a problem due to
the SUBDIRS using 'mkdir -p' for their objdirs.

There were subtle bugs causing this wrong behavior:
1. bsd.progs.mk needs to set SCRIPTS to empty when recursing to avoid
the sub-makes from installing, cleaning or building the SCRIPTS;
only the parent make should be doing this. r281055 effectively did
the same but wasn't enough.
2. CLEANFILES may contain (especially from *.test.mk) files which only
the parent should clean, such as from FILES and SCRIPTS. To resolve
sub-makes also cleaning these, reset CLEANFILES and CLEANDIRS in the
children before including bsd.prog.mk. A tempting alternative would be
to only handle CLEANFILES in the parent but then the child bsd.prog.mk
CLEANFILES of per-PROGS wouldn't be setup.
3. bsd.subdir.mk was included too soon in bsd.test.mk. It needs to be
included after bsd.prog.mk as the SCRIPTS logic is short-circuitted if
'install:' is already defined (which bsd.subdir.mk does). There is
actually no need to include bsd.subdir.mk from bsd.test.mk as bsd.prog.mk
and bsd.obj.mk will do so in the proper order. The description in r257095
covers this for FILES and was fixed differently, though changing the
handling of target(install) in bsd.prog.mk may make sense after more
research.
4. bsd.progs.mk had extra logic to handle recursing SCRIPTS if PROGS was
empty, which isn't its business to be doing. SCRIPTS is handled fine
by bsd.prog.mk. This mostly reverts and reworks the fix in r259209 and
partially reverts r272055.
5. bsd.progs.mk has no need to depend 'all:' on SCRIPTS and FILES. These
are handled by bsd.prog.mk/bsd.files.mk fine. This also partially reverts
r272055.
6. bsd.progs.mk was not drop-in safe for bsd.prog.mk. Move the PROGS
check from r273186 to allow it to be used safely.

Specific tested cases:
SCRIPTS:no PROGS:no FILES:yes SUBDIR:yes
usr.bin/bmake/tests/sysmk/t1/2

SCRIPTS:yes PROGS:no FILES:yes SUBDIR:no
usr.bin/bmake/tests/sysmk/t1/2/1

SCRIPTS:yes PROGS:yes FILES:yes SUBDIR:yes
lib/libthr/tests

SCRIPTS:yes PROGS:no FILES:yes SUBDIR:no
usr.bin/yacc/tests
libexec/atf/atf-sh/tests

A full buildworld/installworld/clean comparison with mtree was also done.
The only relevant difference was the new fixed behavior of removing
Kyuafile.auto from the objdir in 'clean'.

Converting SCRIPTS to be a special case FILES group will make this less
fragile and is being explored.

One known remaining issue is 'cleandepend' removing the tags files for
every recursive call.

Note that the 'make clean' command runs for the CURDIR last, which can make
it appear to run multiple times when cleaning in tests/, but each command is
for a SUBDIR returning up the chain. This is purely bsd.subdir.mk behavior.

PR: 191055
PR: 191955
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 284288 11-Jun-2015 sjg

Do not override variables on command line that build needs to change.

It is sufficient to explicitly set DEPENDFILE in env for each sub-make.


# 281503 13-Apr-2015 ngie

Revert r281055 as it breaks installing test scripts in the mixed PROGS/SCRIPT
case

Repro is as follows:

% sudo pkg install -y kyua
% sudo rm -Rf /usr/tests
% sudo make hier
% (cd lib/libthr/tests/; make obj; make depend; make all; sudo make install)
% (cd /usr/tests/lib/libthr; kyua list)

Failure seen in Jenkins build starting here:
https://jenkins.freebsd.org/job/FreeBSD_HEAD-tests2/927/

Pointyhat to: bapt


# 281055 04-Apr-2015 bapt

Do not install scripts multiple time when using bsd.progs.mk


# 276317 27-Dec-2014 ngie

Add LIBADD to PROG_VARS, similar to DPADD/LDADD


# 274079 04-Nov-2014 ngie

Import proper fix for misc/49356 (/usr/include/atf-c/config.h) after atf-c/config.h
was removed from the build

Pointyhat to: me (again, for not running make delete-old after running test builds)


# 273873 30-Oct-2014 jmmv

Use the right depend file for each program.

bsd.progs.mk generates a separate depend file for every program being
built, but then it does not properly tell each submake to use those
individual files. Properly propagate the depend file to use.

Discovered while preparing the update of atf to 0.21 and noticing that
the test programs were not being relinked to the new library.

This change is "make tinderbox" clean.


# 273186 16-Oct-2014 markj

Don't define rules based on PROGS if PROGS is empty.

Reviewed by: sjg, ngie
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 272917 10-Oct-2014 ngie

Add LDFLAGS to PROG_VARS so it can be overridden on a per-PROG basis

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 272055 24-Sep-2014 ngie

Improve bsd.progs.mk compatibility with bsd.prog.mk

1. Do not install FILES/SCRIPTS multiple times if PROGS is specified; this is
already handled via bsd.prog.mk when it's called recursively (PR: 191055,
191955).
2. Some variables, like BINDIR and PROGNAME, default to a value if unset
whereas others get appended to, like CFLAGS. Add support for the former case
(PR: 191056)
3. Make "checkdpadd" and "clean" available targets for recursive execution.

Reviewed by: marcel, sjg
Phabric: D822
PR: 191055, 191056, 191955
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 259209 11-Dec-2013 jmmv

Make bsd.progs.mk work in directories with SCRIPTS but no PROGS.

This change fixes some cases where bsd.progs.mk would fail to handle
directories with SCRIPTS but no PROGS. In particular, "install" did
not handle such scripts nor dependent files when bsd.subdir.mk was
added to the mix.

This is "make tinderbox" clean.

Reviewed by: freebsd-testing
Approved by: rpaulo (mentor)


# 258330 19-Nov-2013 sjg

Need to also test for defined(${v}_${PROG})


# 258095 13-Nov-2013 sjg

Allow this to work with fmake
Based on patch from Garret Cooper.


# 249770 22-Apr-2013 sjg

Pass more variables to bsd.prog.mk and
only append to already defined variables.

Submitted by: Garrett Cooper


# 242710 07-Nov-2012 sjg

Latest progs.mk from crufty.net for ATF

Approved by: marcel (mentor)


# 241823 22-Oct-2012 marcel

Add ATF to the build. This is may be a bit rought around the egdes,
but committing it helps to get everyone on the same page and makes
sure we make progress.

Tinderbox breakages that are the result of this commit are entirely
the committer's fault -- in other words: buildworld testing on amd64
only.

Credits follow:

Submitted by: Garrett Cooper <yanegomi@gmail.com>
Sponsored by: Isilon Systems
Based on work by: keramida@
Thanks to: gnn@, mdf@, mlaier@, sjg@
Special thanks to: keramida@