Commit Graph

105 Commits

Author SHA1 Message Date
Alexander Leidinger
21edb039c6 WITH_CTF can now be specified in src.conf (not recommended, there
are some problems with static executables), make.conf (would also
affect ports which do not use GNU make and do not override the
compile targets) or in the kernel config (via "makeoptions
WITH_CTF=yes").

Additional (related) changes:
 - propagate WITH_CTF to module builds
 - do not add -g to the linker flags, it's a noop there anyway
   (at least according to the man page of ld)
 - do not add -g to CFLAGS unconditionally
   we need to have a look if it is really needed (IMO not) or if there
   is a way to add it only when WITH_CTF is used

Note: ctfconvert / ctfmerge lines will not appear in the build output,
to protect the innocent (those which do not build with WITH_CTF would
see the shell-test and may think WITH_CTF is used).

Reviewed by:	imp, jhb, scottl (earlier version)
Discussed on:	arch@
2010-04-02 06:55:31 +00:00
Marcel Moolenaar
96f2d85e89 Unbreak WARNS=6 builds for C++ code: -Wold-style-definition is not accepted
by the C++ compiler. Filter it out.
2010-02-18 01:44:48 +00:00
Stephane E. Potvin
424b4e66a9 Introduce two new flags PO_CFLAGS and PO_CXXFLAGS to make it possible
to have different flags when building profiled objects.

MFC after:	1 month
2010-01-22 14:05:48 +00:00
John Birrell
770ac3b21f Add support for the Compact C Type (CTF) conversions throughout FreeBSD's
system makefiles.

Note that the CTF conversion defaults to off. We may choose to change this
default later if DTrace proves popular and people are prepared to wear
the compilation performance impact of compiling with debug symbols all the
time.

Setting NO_CTF in the make args or user environment turns off CTF conversion.
Even if we choose to default CTF generation to on later, we still need
NO_CTF so that the buildworld process can bootstrap the tools without
needlessly generating CTF data for temporary tools.

Setting WITH_CTF in the make args or user environment (and _NOT_ in
/etc/make.conf) is the only way to enable CTF data conversion. Nore that
this can't be implemented the same way that the WITH_ and WITHOUT_ stuff
is implemented throughout the buildworld because the CTF conversion needs
to work when building a simple object without a Makefile, using the
default rules in sys.mk.

Typing 'make test.o' with no makefile and just a source file test.c
should work. Also, typing 'make WITH_CTF=1 test.o without a makefile and
just a source file test.c should work and produce an object with a CTF
elf section. Typing 'make WITH_CTF=1 CFLAGS=-g test.o' without a makefile
and just a source file test.c should produce an object with both a CTF
elf section and the debug elf sections.

In the FreeBSD build where more .mk files are used than just sys.mk
which is included my make by default, the use of DEBUG_FLAGS is the
correct way to enable a debug build. The important thing to note here
is that it is the DEBUG_FLAGS setting that prevents libraries and
programs from being stripped on installation. So, for the addition of
CTF data conversion, setting DEBUG_FLAGS to contain -g, without NO_CTF,
will cause the ctfconvert and ctfmerge build programs to be executed
also with the -g arg so that debug symbols are retained rather than
being removed after the CTF data elf section has been added.

Add DTrace libraries to the list of libnames.
2008-05-22 01:14:43 +00:00
Warner Losh
fd08931dd5 MFp4 (mips2-jnpr):
o Default to -O on mips as well as arm.  -O2 has been strongly implicated
  in many problems in the past, so we're taking a conservative approach
  until the problems are well understood.
2008-04-04 21:12:40 +00:00
David E. O'Brien
20c46652dc PR ports/121363 (& ports/73797) has been committed, so we can now go back
to JB's revision 1.96 change to remove -fno-strict-aliasing from CFLAGS.

This makes the default CFLAGS to match the simple defaults that the
tinderboxes use.  By using -fno-strict-aliasing by default we are
choosing to ignore problems in code which had the potential to
shoot ourselves in the foot.
2008-04-02 17:24:22 +00:00
David E. O'Brien
92aa7717fa Temporarily back out revision 1.98 to give Portmgr some time to
address PR ports/121363 (current day re-opening of PR ports/73797)
to make ports CFLAGS more independent of src/'s CFLAGS WRT aliasing.

Discussed with: brooks
2008-03-04 20:26:03 +00:00
David E. O'Brien
b9b482710e Back out revision 1.97, which backed out part of revision 1.96.
Change the default CFLAGS to match the simple defaults that the
tinderboxes use.  By using -fno-strict-aliasing by default we are
choosing to ignore problems in code which had the potential to
shoot ourselves in the foot.
2008-03-04 19:00:11 +00:00
John Birrell
221a97c194 Although the entire src tree builds cleanly now without -fno-strict-aliasing
in the default CFLAGS, we're in the middle of a ports freeze, so we can't
really go making the corresponding change to the ports mk files.

I'll take -fno-strict-aliasing out again when the ports freeze ends.
2007-11-26 21:46:21 +00:00
John Birrell
cfb5b3256b Re-enable -Werror again.
This time, change the default CFLAGS to match the simple defaults that
the tinderboxes use. That is, don't use -fno-strict-aliasing by default.

My last attempt to re-anable -Werror gave me a lesson in what strict
aliasing is all about. There was code in libthr that wasn't 64-bit clean.
The default use of -fno-strict-aliasing hid that.

By using -fno-strict-aliasing by default we were choosing to ignore
problems in code which had the potential to shoot ourselves in the
foot. Sometimes it would be the 64-bit foot. I have both feet. The left
ones are 32 bits and the right ones are 64 bits. Don't ask about my
endian orientation. :-)

The -fno-strict-aliasing compiler arg can still be used if NO_STRING_ALIASING
is define in make.

We are early in the FreeBSD 8 development, so we have the opportunity to
wait and see if this works for us. I am sure that people will complain.
We can easily revert this. All I ask is that we take sides: clean code or
not. YMMV.

Note that by using -fno-strict-aliasing the build won't actually break.
Only where WARNS is set (and -Werror is used) will a compiler warning break
the build. The use of WARNS levels implies (to me at least) that the
developer has taken some care to make the code pass basic checks. This
commit makes those checks just a little bit more strict.
2007-11-22 23:21:12 +00:00
John Birrell
c117aee58e Weed out a warning argument that isn't applicable to C++ code. 2007-11-19 09:01:58 +00:00
Olivier Houchard
cdc162fe0e Switch arm to -O until the -O2 issues are resolved.
MFC After:	3 days
2007-11-05 23:08:34 +00:00
Yaroslav Tykhiy
a39cea66f4 Allow the shell used by make(1) to be changed early via the
__MAKE_SHELL variable.  This feature isn't supposed to be in wide
use, but it's needed now to make `installworld' independent of the
stock binaries and libs so that radical ABI changes can go in safely.

Reviewed by:	ru
2007-10-27 18:40:34 +00:00
Xin LI
179dc282b4 Restore -O2 optimization after gcc 4.2.1 import, which has
fixed the issue raised by gcc 4.2.0.

Tested with:	test case found in gcc bug 32500
Approved by:	re (kensmith), ache, kan
2007-08-14 13:44:08 +00:00
Andrey A. Chernov
5f308feb93 Switch to "-O1 -pipe" as cross-build compatible gcc workaround.
"Looks like Alexander chimed in with "I'm comfortable with that until we
can import a fixed GCC"."

Approved by:	re (kensmith)
2007-07-01 11:51:06 +00:00
Andrey A. Chernov
cf7e2eb063 Back out gcc workaround per re@ request. Details:
"There seems to be some continuing discussion about how this is best fixed,
and we'd like to get Alexander (as our gcc guru) to opine on a final
solution before picking one.  In the mean time, could you back out the
original commit (sys.mk:1.89)?"

Approved by:	re (rwatson)
2007-06-28 09:25:47 +00:00
Andrey A. Chernov
3f5b2c267b This is temp workaround of nasty gcc 4.2.0 -O2 bug which may skip the rest
of the loop when arrays used inside.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32500

Approved by:    re (kensmith)
2007-06-26 19:10:20 +00:00
Dejan Lesjak
eb91fad699 Remove X11BASE from here so the one from bsd.port.mk has a chance to set
default. Grepping through src shows only gnu/usr.bin/groff which doesn't
use it in src build and OpenSSH for which this was a NOOP.

Discussed with:	des, ru
Approved by:	ru
2006-10-06 23:32:23 +00:00
Ruslan Ermilov
d9423c1bc1 We bootstrap make(1) if necessary during an upgrade, so checking
if MACHINE_ARCH is defined is no longer needed.
2005-09-28 08:17:30 +00:00
Hartmut Brandt
dea3d8703e Toggle on warnings. This resolves the problem with building old releases
(getting zillions of warnings). Building an old release uses that release's
sys.mk which does not switch on these warnings, so make will be silent.
They can be switch on on the command line with the -x option to make.
This has been tested by building RELENG_5_4 on CURRENT.
2005-04-29 14:44:10 +00:00
Darren Reed
a63b0146dc IPFIlter problems that prevented building should all now be resolved so
remove this temporary measure.
2005-04-28 23:29:00 +00:00
Scott Long
6230360e99 Disable the IPFILTER bits until they compile again. This can be overriden
by adding WANT_IPFILTER to /etc/make.conf.  Note that this is only a partial
hack and only works when building the world and kernel the 'sanctioned' way.
I hope that this hack is only temporary and can be reverted soon.
2005-04-27 14:13:55 +00:00
Ruslan Ermilov
52dbe95f4d Include bsd.compat.mk early from sys.mk, enough for makefiles
using conditional statements to see the new spellings of NO_*
knobs (in case user still uses old spellings).

Reported by:	kris
2004-12-23 08:51:50 +00:00
David E. O'Brien
96b8536954 Compiling with 'strict-aliasing' optimization breaks some [notable] ports.
GCC turns on 'strict-aliasing' optimization at all levels above -O[1], so
explicitly turn it off when using compiling with the -O2 optimization level.
2004-11-11 01:09:56 +00:00
Dag-Erling Smørgrav
ecdb24f5d3 Switch the default CFLAGS to -O2 -pipe.
Submitted by:	obrien
2004-10-25 20:04:50 +00:00
Hartmut Brandt
acabf29a1b Use the '+' flag to make make recurse into sub-directories even when
given -n. For POLA reasons this behaviour is switched on only when
at least two -n flags are given to make. One -n flag keeps the old behaviour
of showing the shell command that would recurse into the sub-directories.

Discussed with: ru
2004-08-09 10:54:05 +00:00
Bruce Evans
8d962594e1 Moved FreeBSD build pollution (/etc/make.conf) and zombie aout support
(OBJFORMAT) into a non-POSIX section.
2004-05-12 22:53:52 +00:00
Bruce Evans
88d2251a91 Removed conditional include of /etc/make.conf.local and the error for the
existence of this file.  This stopped working more than 4 years ago when
the generation of the error was added in rev.1.44.  The .error directive
gives fatal errors, so stale /etc/make.conf.local files must have been
gone away more than 4 years on systems where make(1) works.
2004-05-12 21:51:11 +00:00
Dag-Erling Smørgrav
611b4102ed -W{missing,strict}-prototypes do not make sense for C++, and gcc34 will
complain about them, so remove them from CXXFLAGS.
2004-05-10 12:14:18 +00:00
Ruslan Ermilov
d9d11bfd48 g++(1) is unhappy with -Wnested-externs.
Prodded by:	des
2004-04-20 15:16:07 +00:00
Bruce Evans
d17387acd4 Fixed breakage of POSIX support in rev.1.31. -pipe was added to
CFLAGS in all cases, but POSIX requires a default of -O.  Adding
-pipe unconditionally still is still broken for non-gcc compilers
in the non-POSIX case.
2004-02-04 14:40:44 +00:00
Ruslan Ermilov
37e419a131 A shorter version of keeping all -std= options out of CXXFLAGS. 2004-02-03 09:40:11 +00:00
Ruslan Ermilov
65d2bdc62c Fixed bogus ${FOO:Mbar} tests where the actual intent is to check
if the result set is empty.  While here, replaced non-bogus empty
string comparisons with equivalent empty() checks.
2004-01-27 23:22:15 +00:00
Ruslan Ermilov
64ba14f2c7 Removed the ancient .LIBS setting that causes non-existent
libraries to be reported as up-to-date.

Before:

# make -f /dev/null nonexistent.a
`nonexistent.a' is up to date.

After:

# make -f /dev/null nonexistent.a
make: don't know how to make nonexistent.a. Stop

PR:		bin/44137 (part of)
2003-10-03 20:47:37 +00:00
Mark Murray
34d8158078 Separate out userland linting and kernel linting a bit more. This
make things a bit easier for folks using lints other than the
"base" lint.
2003-09-26 17:49:25 +00:00
Ruslan Ermilov
d58e932f04 Don't trust sys.mk,v 1.61 commit log, and make .asm alias for .S. 2003-07-02 17:03:28 +00:00
Ruslan Ermilov
a51613b6da There's no reason to keep separate AINC knob anymore.
The only real use of it (lib/libc/Makefile) has been
fixed, and if necessary, the contents of AINC should
be added to CFLAGS.

Explained by:	bde
2003-07-01 15:15:45 +00:00
Ruslan Ermilov
fdcdec572a Propagate the ${AINC} knob (assembler include) to sys.mk,
and remove the .S.o transformation rule from bsd.lib.mk.
2003-06-30 20:02:46 +00:00
David E. O'Brien
28c3f28e32 Use a bigger hammer -- keep all -std= out of CXXFLAGS.
Also allow for "CSTD=" in a Makefile.
2003-06-01 22:13:45 +00:00
Ruslan Ermilov
2244cda2bc Axe CXXINCLUDES from CXXFLAGS, it serves no useful purpose anymore.
Reviewed by:	bde
2003-04-22 11:04:25 +00:00
Ruslan Ermilov
ccc4bab104 Added the new variable CTAGS which, if set to "ctags", reverts
to creating the tags file using ctags(1).  Defaults to "gtags".
Made GTAGSFLAGS and HTAGSFLAGS overrideable, added CTAGSFLAGS.
Folded bsd.prog.mk version of `tags' into bsd.dep.mk.

PR:		bin/42852
2002-10-17 13:48:13 +00:00
Mark Murray
5741a42f2f Extend the lint handling a bit.
o Make it possible to prevent parts of the tree from being linted
  (say) during a 'make world' by setting NOLINT in a leaf Makefile.

o Make "make lint" work (better) for executable programs.

o Clean up (nuke!) a syntax damaged pipeline.
2002-09-20 19:32:51 +00:00
Peter Wemm
66422f5b7a Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports.  As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL.  It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha
2002-09-17 01:49:00 +00:00
Ruslan Ermilov
72d5490744 Make .asm transformation rules synonyms to the .s rules. 2002-04-22 08:56:34 +00:00
David E. O'Brien
e517d11e8d Add .asm as an alias for .s. .asm is common in contribed sources.
Helps with:	gcc31 build.
2002-04-19 18:01:03 +00:00
Ruslan Ermilov
2bdaf7e81c Don't include bsd.own.mk from sys.mk, this makes it impossible
to use ``.if defined()'' inside bsd.own.mk to test for defines
in individual makefiles.  For example, setting DEBUG_FLAGS in
Makefile didn't take the desired effect on the STRIP assignment.

Added bsd.init.mk (like in NetBSD) that handles the inclusion
of ../Makefile.inc and bsd.own.mk from all bsd.*.mk files that
"build something".

Back out bsd.own.mk,v 1.15: moved OBJFORMAT initialization back
to sys.mk (several source tree makefiles want to check it early)
and removed MACHINE_ARCH initialization (it's hard to see from
looking at the commitlogs what the problem was at the time, but
now it serves no purpose).

Prohibit the direct inclusion of bsd.man.mk and bsd.libnames.mk.

Protect bsd.obj.mk from repetitive inclusion.  Prohibiting the
direct inclusion of bsd.obj.mk might be a good idea too.
2002-04-17 13:49:29 +00:00
Ruslan Ermilov
bd42830f0f Make lint(1) a cross-tool.
(See commit log for usr.bin/xlint/Makefile,v 1.11 for what was wrong
with enabling build of lint libraries in rev. 1.12.)

This fixes cross-arch compiles (running binaries for a different arch
when generating lint.7 and lint libraries) and cross-branch compiles
(4.x -> 5.0 buildworld should be working again).
2002-03-20 18:25:50 +00:00
Warner Losh
0af93efb4d __MAKE_CONF?=/etc/make.conf
Use this where we are now using /etc/make.conf.

This allows people to override the current default of always including
/etc/make.conf.  Setting __MAKE_CONF to /dev/null disables it
completely, while setting it to something else allows one to override
what is on the system.  This can be desirable in situations where a
machine has many users and some of them want different defaults, or
defaults appropriate to cross building to be different than those for
normal building.

Not objected to by: arch@
2002-03-18 07:39:27 +00:00
Mark Murray
766f7d6e03 Allow "make lint" to mostly work. Our sources are very unclean WRT
lint, so this is turned off by default. Setting WANT_LINT will turn
on generation of lint libraries for /usr/libdata/lint/*.ln.

Reviewd by:	silence in -audit.
2002-03-17 10:05:57 +00:00
Alexander Langer
0d0667b51b Final way: Don't include /etc/defaults/make.conf at all. It wasn't
supposed to be edited by the user and didn't define important things,
thus we can just skip it (that's where it differs from the make.conf.local
change).

Submitted by:	ru
2001-08-31 12:20:43 +00:00