History log of /freebsd-current/lib/libclang_rt/Makefile.inc
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 06c3fb27 02-Sep-2023 Dimitry Andric <dim@FreeBSD.org>

Merge llvm-project main llvmorg-17-init-19304-gd0b54bb50e51

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-17-init-19304-gd0b54bb50e51, the
last commit before the upstream release/17.x branch was created.

PR: 273753
MFC after: 1 month


# 78847e1e 11-Sep-2023 Doug Rabson <dfr@FreeBSD.org>

pkgbase: Move headers and libs out of runtime and utilities

Headers from src/include were in the runtime-dev package but
subdirectories of src/include ended up in utilities-dev by default.
Neither package is a good choice - the headers in src/include are not
useful without the libraries contained in clibs-dev.

This moves the standard C headers to clibs-dev (C++ headers are already
in this package). While working on this, I found that various clang
libraries and headers were also bundled into utilities-dev by default
so these are also moved to clang-dev.

I also added a FreeBSD-build-essential meta package to make it simple to
install all the toolchain parts.

PR: 254173
Reviewed byb: manu
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D41815

# d0b2dbfa 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line sh pattern

Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/

# 61ed578e 04-Aug-2021 Mitchell Horne <mhorne@FreeBSD.org>

Prefer MK_SSP=no to SSP_CFLAGS=

It is more idiomatic. CFLAGS is only augmented with $SSP_CFLAGS when
$MK_SSP != "no".

Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31401

# 7bc797e3 02-Aug-2021 Alex Richardson <arichardson@FreeBSD.org>

Add build system support for ASAN+UBSAN instrumentation

This adds two new options WITH_ASAN/WITH_UBSAN that can be set to
enable instrumentation of all binaries with AddressSanitizer and/or
UndefinedBehaviourSanitizer. This current patch is almost sufficient
to get a complete buildworld with sanitizer instrumentation but in
order to actually build and boot a system it depends on a few more
follow-up commits.

Reviewed By: brooks, kib, markj
Differential Revision: https://reviews.freebsd.org/D31043

# fe525d3f 12-Mar-2021 Alex Richardson <arichardson@FreeBSD.org>

Allow using sanitizers for ssp tests with out-of-tree compiler

With an out-of-tree Clang, we can use the -resource-dir flag when linking
to point it at the runtime libraries from the current SYSROOT.
This moves the path to the clang-internal library directory to a separate
.mk file that can be used by Makefiles that want to find the sanitizer
libraries. I intend to re-use this .mk file for my upcoming changes that
allow building the entire base system with ASAN/UBSAN/MSAN.

Reviewed By: dim
Differential Revision: https://reviews.freebsd.org/D28852

# eaeb601b 03-Jan-2021 Dimitry Andric <dim@FreeBSD.org>

Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
release/11.x llvmorg-11.0.1-rc2-0-g43ff75f2c3f (aka 11.0.1 rc2).

MFC after: 4 weeks
X-MFC-With: r364284


# 48aaf27b 06-Aug-2020 Dimitry Andric <dim@FreeBSD.org>

Update Makefiles under lib/clang and usr.bin/clang for 11.0.0 builds,
and also bump the version in the mtree files.

# d65cd7a5 23-May-2020 Dimitry Andric <dim@FreeBSD.org>

Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
llvmorg-10.0.1-rc1-0-gf79cd71e145 (aka 10.0.1 rc1).

MFC after: 3 weeks


# fac6dee9 12-May-2020 Eric van Gyzen <vangyzen@FreeBSD.org>

Remove tests for obsolete compilers in the build system

Assume gcc is at least 6.4, the oldest xtoolchain in the ports tree.
Assume clang is at least 6, which was in 11.2-RELEASE. Drop conditions
for older compilers.

Reviewed by: imp (earlier version), emaste, jhb
MFC after: 2 weeks
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D24802

# 0af133f6 27-Jan-2020 Dimitry Andric <dim@FreeBSD.org>

Update build glue for libclang_rt.

# 0b37c159 25-Jan-2020 Dimitry Andric <dim@FreeBSD.org>

* Bump version numbers to 10.0.0
* Update UPDATING
* Update (Optional)ObsoleteFiles.inc
* Update VCS(Revision|Version) files
* Update generated config headers
* Update clang internal headers Makefile

# c14a5a88 22-Dec-2019 Dimitry Andric <dim@FreeBSD.org>

Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
9.0.1 final release c1a0a213378a458fbea1a5c77b315c7dce08fd05.

Release notes for llvm, clang, lld and libc++ 9.0.1 will become
available here:

https://releases.llvm.org/9.0.1/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.1/tools/clang/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.1/tools/lld/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.1/projects/libcxx/docs/ReleaseNotes.html

PR: 240629
MFC after: 1 month


# 0b57cec5 20-Dec-2019 Dimitry Andric <dim@FreeBSD.org>

Move all sources from the llvm project into contrib/llvm-project.

This uses the new layout of the upstream repository, which was recently
migrated to GitHub, and converted into a "monorepo". That is, most of
the earlier separate sub-projects with their own branches and tags were
consolidated into one top-level directory, and are now branched and
tagged together.

Updating the vendor area to match this layout is next.

# 1bb8eb56 23-Nov-2019 Dimitry Andric <dim@FreeBSD.org>

libclang_rt: enable on powerpc*

Summary:
Enable on powerpc64 and in lib/libclang_rt/Makefile change
MACHINE_CPUARCH to MACHINE_ARCH because on powerpc64
MACHINE_ARCH==MACHINE_CPUARCH so the 32-bit library overwrites 64-bit
library during installworld.

This patch doesn't enable any other libclang_rt libraries because they
need to be separately ported.

I have verified that games/julius (which fails on powerpc64 elfv2
without this change because of no libclang_rt profiling library) builds.

Test Plan: Ship it, test on powerpc and powerpcspe

Submitted by: pkubaj
Reviewed by: dim, jhibbits
Differential Revision: https://reviews.freebsd.org/D22425
MFC after: 1 month
X-MFC-With: r353358

# f57be329 01-Sep-2019 Dimitry Andric <dim@FreeBSD.org>

Update libclang_rt:
* Add cfi, dd, fuzzer and xray
* Update arch support
* Update OptionalObsoleteFiles.inc

# 72e1e271 23-Aug-2019 Dimitry Andric <dim@FreeBSD.org>

Change clang lib dir to 9.0.0.

# efc5c442 12-Jun-2019 Dimitry Andric <dim@FreeBSD.org>

Upgrade our copies of clang, llvm, lld, lldb, compiler-rt, libc++,
libunwind and openmp to the upstream release_80 branch r363030
(effectively, 8.0.1 rc2). The 8.0.1 release should follow this within a
week or so.

MFC after: 2 weeks


# e8067928 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Standardize `-std=c++* as `CXXSTD`

CXXSTD was added as the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
MFC with: r345203, r345704, r345705
Relnotes: yes
Tested with: make tinderbox
Differential Revision: https://reviews.freebsd.org/D19732

# bdbf3440 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Revert r345706: the third time will be the charm

When a review is closed via Phabricator it updates the patch attached to the
review. I downloaded the raw patch from Phabricator, applied it, and repeated
my mistake from r345704 by accident mixing content from D19732 and D19738.

For my own personal sanity, I will try not to mix reviews like this in the
future.

MFC after: 1 month
MFC with: r345706
Approved by: emaste (mentor, implicit)

# 760b1a81 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Standardize `-std=c++* as `CXXSTD`

CXXSTD was added as the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
MFC with: r345203, r345704, r345705
Relnotes: yes
Tested with: make tinderbox
Differential Revision: https://reviews.freebsd.org/D19732

# 752cabaa 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Revert r345704

I accidentally committed code from two reviews. I will reintroduce the code to
bsd.progs.mk as part of a separate commit from r345704.

Approved by: emaste (mentor, implicit)
MFC after: 2 months
MFC with: r345704

# 9a41926b 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

CXXSTD is the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D19732

# 0bf31f1f 20-Jan-2019 Dimitry Andric <dim@FreeBSD.org>

Update version numbers, and regenerate config headers for llvm, clang,
lld and lldb. Update ObsoleteFiles.inc and OptionalObsoleteFiles.inc.

# 68948600 04-Nov-2018 Dimitry Andric <dim@FreeBSD.org>

Merge llvm, clang, lld, lldb, compiler-rt and libc++ release_70 branch
r346007 (effectively 7.0.1 rc2), resolve conflicts, and bump version
numbers.

PR: 230240, 230355


# bbd7a929 04-Aug-2018 Dimitry Andric <dim@FreeBSD.org>

Merge ^/head r336870 through r337285, and resolve conflicts.


# 52f9bacb 03-Aug-2018 John Baldwin <jhb@FreeBSD.org>

Install the 32-bit compat sanitizer libraries.

The lib32 build was already building the i386 version of
the clang sanitizers (libclang_rt) but they were not being
installed. This enables the installation.

MK_TOOLCHAIN=no was originally added to the install make
environment to disable includes so that NO_INCS could be
removed. The MK_TOOLCHAIN in bsd.incs.mk was subsequently
renamed to MK_INCLUDES, but bsd.lib.mk doesn't even include
bsd.incs.mk when LIBRARIES_ONLY is defined which the install
make environment for compat libs now defines. However,
setting MK_TOOLCHAIN=no forced MK_CLANG=no which disabled
libclang_rt during the install32 phase. Remove MK_TOOLCHAIN=no
since LIBRARIES_ONLY is now sufficient.

Since the libcompat environment overrides both LIBDIR and
SHLIBDIR, libclang_rt/Makefile.inc has to set both variables
to force the libraries to be installed to the location
expected by the compiler.

Reviewed by: bdrewery, dim
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D16574

# 6dfa117f 31-Jul-2018 Dimitry Andric <dim@FreeBSD.org>

Update llvm/clang version numbers in various files.

# 55458465 30-Jun-2018 Dimitry Andric <dim@FreeBSD.org>

More follow-up to r335799 (llvm/clang 6.0.1 update), where I forgot to
update mtree files, ObsoleteFiles and a number of other paths. Sorry
about all the breakage.

Pointy hat to: me
MFC after: 2 weeks
X-MFC-With: r335799

# fb142d88 23-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Next step in updating llvm/clang build glue: make libclang_rt build.

# 507b79f9 20-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Update libclang_rt version number.

# d4419f6f 02-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Upgrade our copies of clang, llvm, lldb and libc++ to r319231 from the
upstream release_50 branch. This corresponds to 5.0.1 rc2.

MFC after: 2 weeks


# 133637d5 02-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Make the assignment of CRTARCH conditional, even in the armhf case, and
slightly rework the .if statement. While here, fix a minor typo.

# 8f3b60c5 07-Nov-2017 Warner Losh <imp@FreeBSD.org>

Correct the detection of hard float arm

* Don't test MACHINE, it's irrelevant to userland and should never be
used in userland Makefiles.
* If we match armv[67] and CPUTYPE is undefined OR it doesn't have
'soft' in it, choose armhf.
* Add a note that the soft float on armv[67] may be broken.

Sponsored by: Netflix

# d61b3d7a 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Redo r325502

:U:Mfoo expands to :Mfoo, apparently. Explicit check for CPUTYPE being
defined, and test for it's value not containing *soft* before calling CRTARCH
armhf.

Tested, somewhat. Unfortunately recent changes appear to have affected
cross-builds where it no longer works, per my tests after universe12a being
upgraded from 07/2017 to 11/2017 sources (DESTDIR isn't being used in WORLDTMP;
MK_SYSTEM_COMPILER might be causing issues right now).

MFC after: 1 week
MFC with: r325502
Reported by: imp

# c03bb933 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Handle arm/armv[67] hosted/targeted builds gracefully

CPUTYPE (apparently) isn't defined in non-cross-builds, which caused
arm/armv[67] hosted/targeted builds to fail when evaluating CPUTYPE.

Add the :U modifier to CPUTYPE so it evaluates to "". This allows armv[67] to
get past the conditional successfully.

MFC after: 1 week
Reported by: bob prohaska <fbsd@www.zefox.net>

# a2a14248 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Use bsd.compiler.mk instead of src.opts.mk

- MK_PROFILE is controlled in bsd.opts.mk, which is pulled in via bsd.own.mk,
which is pulled in via bsd.init.mk . All upstream Makefiles which build off
of this one use bsd.init.mk.
- COMPILER_{TYPE,VERSION} is set via bsd.compiler.mk .

This reduces the namespace pollution/complexity somewhat.

MFC after: 1 week

# 792bc222 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Choose a simpler, more philosophically correct version for CRTARCH with armv[67]

This is a rework of r325443.

PR: 222925
Tested with: make buildenv with appropriate TARGET/TARGET_ARCH pairs

# c9c9774c 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Revert r325443

Despite the fact that it's a working solution, it doesn't follow the design
philosophy of only doing TARGET_* in Makefile.inc1 and special locations in
the source tree.

PR: 222925
Requested by: imp

# 571e134e 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Fix paths for cross-built versions of lib/libclang_rt and hardfloat arm variants

- Define TARGET_CPUARCH and use in libclang_rt as the basis for CRTARCH

When cross-compiling, the wrong architecture was being embedded in the
libclang_rt binary filenames. It should be based on TARGET_ARCH (target), not
MACHINE_ARCH (host).

If TARGET_ARCH isn't defined (host-builds), fallback to MACHINE_ARCH.

- Define CRTARCH to armhf when TARGET/TARGET_ARCH are set to arm/armv[67]

TARGET_ABI/TARGET_CPU in Makefile.inc1 sets the ABI to gnueabihf, which
affects the clang lookup path per `getArchNameForCompilerRTLib(..)` in
contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp, so chase clang and
Linux's assumed naming convention for hard-float arm architectures.

CROSSENV (in Makefile.inc1) sets CPUTYPE/MACHINE(_ARCH)? to the
TARGET*-relevant values when building the `libraries` target, so test
those variables instead.

- Add OLD_FILES/OLD_LIBS entries for TARGET/TARGET_ARCH == arm/armv[67]. This
impacts only arm/armv6 and arm/armv7.

PR: 222925


# a060f141 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Support compiling lib/libclang_rt/profile a bit more with recent versions of gcc

Several of the flags were being treated as CFLAGS, when they were actually
technically CXXFLAGS. Move them there.

Only apply -fno-sanitize=safe-stack with clang.

PR: 223179

# 600da319 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Simplify r325427

CROSSENV (in Makefile.inc1) sets CPUTYPE/MACHINE(_ARCH)? to the
TARGET*-relevant values when building the `libraries` target.

PR: 222925

# 7efeac5c 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Define CRTARCH to armhf when TARGET/TARGET_ARCH are set to arm/armv[67]

TARGET_ABI/TARGET_CPU in Makefile.inc1 sets the ABI to gnueabihf, which affects
the clang lookup path per getArchNameForCompilerRTLib(..) in
contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp .

This is a follow up to r324873.

PR: 222925

# c547fc0f 22-Oct-2017 Enji Cooper <ngie@FreeBSD.org>

Support compiling lib/libclang_rt/profile with gcc

Several of the flags were being treated as CFLAGS, when they were actually
technically CXXFLAGS. Move them there.

Also, only apply -fno-sanitize=safe-stack with clang.

This is a draft diff.

PR: 223179

# 69735ece 22-Oct-2017 Enji Cooper <ngie@FreeBSD.org>

Define TARGET_CPUARCH and use in libclang_rt as the basis for CRTARCH

When cross-compiling, the wrong architecture was being embedded in the
libclang_rt binary filenames. It should be based on TARGET_ARCH (target), not
MACHINE_ARCH (host).

This is a draft commit against my project branch. Will fix on ^/head soon.

PR: 222925

# 5897d2f0 17-Apr-2017 Dimitry Andric <dim@FreeBSD.org>

Initial update of clang/llvm build glue, for building just a minimal
clang executable.

# 53fe1d28 05-Jan-2017 Dimitry Andric <dim@FreeBSD.org>

Adjust version numbers for the clang library directory.

# 5b41a5b6 25-Nov-2016 Dimitry Andric <dim@FreeBSD.org>

Update build glue for llvm/clang 3.9.1.

# 53b715b5 03-Sep-2016 Dimitry Andric <dim@FreeBSD.org>

Update compiler-rt to 3.9.0 release, and update the build glue for
libcompiler_rt and libclang_rt.


# 7fff4413 19-Aug-2016 Dimitry Andric <dim@FreeBSD.org>

Update build glue for clang and the llvm/clang extras.

# 802df53c 30-Dec-2015 Dimitry Andric <dim@FreeBSD.org>

Update various build glue files for the new llvm/clang version number.

# 9a4b3118 25-Dec-2015 Dimitry Andric <dim@FreeBSD.org>

Upgrade our copies of clang and llvm to 3.7.1 release. This is a
bugfix-only release, with no new features.

Please note that from 3.5.0 onwards, clang and llvm require C++11
support to build; see UPDATING for more information.


# 85ab8f98 29-Nov-2015 Dimitry Andric <dim@FreeBSD.org>

Install the public sanitizer headers. These are useful for programs
that want to directly interface with sanitizer internals.

# 85279087 10-Sep-2015 Dimitry Andric <dim@FreeBSD.org>

Update compiler-rt to 3.7.0 release. This also includes the sanitizer
and profile libraries.


# ebeff3f9 30-May-2015 Dimitry Andric <dim@FreeBSD.org>

Update Makefiles and other build glue for llvm/clang 3.7.0, as of trunk
r238337.

# ef6fa9e2 25-May-2015 Dimitry Andric <dim@FreeBSD.org>

Upgrade our copy of clang and llvm to 3.6.1 release.

This release contains the following cherry-picked revisions from
upstream trunk:

226124 226151 226164 226165 226166 226407 226408 226409 226652
226905 226983 227084 227087 227089 227208 227209 227210 227211
227212 227213 227214 227269 227430 227482 227503 227519 227574
227822 227986 227987 227988 227989 227990 228037 228038 228039
228040 228188 228189 228190 228273 228372 228373 228374 228403
228765 228848 228918 229223 229225 229226 229227 229228 229230
229234 229235 229236 229238 229239 229413 229507 229680 229750
229751 229752 229911 230146 230147 230235 230253 230255 230469
230500 230564 230603 230657 230742 230748 230956 231219 231237
231245 231259 231280 231451 231563 231601 231658 231659 231662
231984 231986 232046 232085 232142 232176 232179 232189 232382
232386 232389 232425 232438 232443 232675 232786 232797 232943
232957 233075 233080 233351 233353 233409 233410 233508 233584
233819 233904 234629 234636 234891 234975 234977 235524 235641
235662 235931 236099 236306 236307

Please note that from 3.5.0 onwards, clang and llvm require C++11
support to build; see UPDATING for more information.


# 7ff61602 22-Feb-2015 Dimitry Andric <dim@FreeBSD.org>

Update compiler-rt to trunk r228651. This enables using Address
Sanitizer and Undefined Behavior Sanitizer with clang 3.6.0.


# 1ae6788e 26-Jan-2015 Dimitry Andric <dim@FreeBSD.org>

Update llvm and clang library and binary Makefiles for 3.6.0 rc1.

# 9cac79b3 18-Jan-2015 Dimitry Andric <dim@FreeBSD.org>

Upgrade our copy of clang and llvm to 3.5.1 release. This is a bugfix
only release, no new features have been added.

Please note that this version requires C++11 support to build; see
UPDATING for more information.

Release notes for llvm and clang can be found here:
<http://llvm.org/releases/3.5.1/docs/ReleaseNotes.html>
<http://llvm.org/releases/3.5.1/tools/clang/docs/ReleaseNotes.html>

MFC after: 1 month
X-MFC-With: 276479


# 91d03e2e 08-Jan-2015 Dimitry Andric <dim@FreeBSD.org>

Now compiler-rt has been updated in r276851, bring in the various
sanitizer libraries that already work on FreeBSD:

* asan: Address Sanitizer
* ubsan: Undefined Behavior Sanitizer
* profile: Profile Guided Optimization support

Please note that these libraries are *experimental* at this stage, so
the main Makefile is not yet connected to the build.

Since I didn't want to needlessly edit BSD.usr.dist, you will also have
to create the install directory /usr/lib/clang/3.5.0/lib/freebsd
manually for now.

# 78847e1e 11-Sep-2023 Doug Rabson <dfr@FreeBSD.org>

pkgbase: Move headers and libs out of runtime and utilities

Headers from src/include were in the runtime-dev package but
subdirectories of src/include ended up in utilities-dev by default.
Neither package is a good choice - the headers in src/include are not
useful without the libraries contained in clibs-dev.

This moves the standard C headers to clibs-dev (C++ headers are already
in this package). While working on this, I found that various clang
libraries and headers were also bundled into utilities-dev by default
so these are also moved to clang-dev.

I also added a FreeBSD-build-essential meta package to make it simple to
install all the toolchain parts.

PR: 254173
Reviewed byb: manu
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D41815


# d0b2dbfa 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line sh pattern

Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/


# 61ed578e 04-Aug-2021 Mitchell Horne <mhorne@FreeBSD.org>

Prefer MK_SSP=no to SSP_CFLAGS=

It is more idiomatic. CFLAGS is only augmented with $SSP_CFLAGS when
$MK_SSP != "no".

Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31401


# 7bc797e3 02-Aug-2021 Alex Richardson <arichardson@FreeBSD.org>

Add build system support for ASAN+UBSAN instrumentation

This adds two new options WITH_ASAN/WITH_UBSAN that can be set to
enable instrumentation of all binaries with AddressSanitizer and/or
UndefinedBehaviourSanitizer. This current patch is almost sufficient
to get a complete buildworld with sanitizer instrumentation but in
order to actually build and boot a system it depends on a few more
follow-up commits.

Reviewed By: brooks, kib, markj
Differential Revision: https://reviews.freebsd.org/D31043


# fe525d3f 12-Mar-2021 Alex Richardson <arichardson@FreeBSD.org>

Allow using sanitizers for ssp tests with out-of-tree compiler

With an out-of-tree Clang, we can use the -resource-dir flag when linking
to point it at the runtime libraries from the current SYSROOT.
This moves the path to the clang-internal library directory to a separate
.mk file that can be used by Makefiles that want to find the sanitizer
libraries. I intend to re-use this .mk file for my upcoming changes that
allow building the entire base system with ASAN/UBSAN/MSAN.

Reviewed By: dim
Differential Revision: https://reviews.freebsd.org/D28852


# 48aaf27b 06-Aug-2020 Dimitry Andric <dim@FreeBSD.org>

Update Makefiles under lib/clang and usr.bin/clang for 11.0.0 builds,
and also bump the version in the mtree files.


# fac6dee9 12-May-2020 Eric van Gyzen <vangyzen@FreeBSD.org>

Remove tests for obsolete compilers in the build system

Assume gcc is at least 6.4, the oldest xtoolchain in the ports tree.
Assume clang is at least 6, which was in 11.2-RELEASE. Drop conditions
for older compilers.

Reviewed by: imp (earlier version), emaste, jhb
MFC after: 2 weeks
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D24802


# 0af133f6 27-Jan-2020 Dimitry Andric <dim@FreeBSD.org>

Update build glue for libclang_rt.


# 0b37c159 25-Jan-2020 Dimitry Andric <dim@FreeBSD.org>

* Bump version numbers to 10.0.0
* Update UPDATING
* Update (Optional)ObsoleteFiles.inc
* Update VCS(Revision|Version) files
* Update generated config headers
* Update clang internal headers Makefile


# 0b57cec5 20-Dec-2019 Dimitry Andric <dim@FreeBSD.org>

Move all sources from the llvm project into contrib/llvm-project.

This uses the new layout of the upstream repository, which was recently
migrated to GitHub, and converted into a "monorepo". That is, most of
the earlier separate sub-projects with their own branches and tags were
consolidated into one top-level directory, and are now branched and
tagged together.

Updating the vendor area to match this layout is next.


# 1bb8eb56 23-Nov-2019 Dimitry Andric <dim@FreeBSD.org>

libclang_rt: enable on powerpc*

Summary:
Enable on powerpc64 and in lib/libclang_rt/Makefile change
MACHINE_CPUARCH to MACHINE_ARCH because on powerpc64
MACHINE_ARCH==MACHINE_CPUARCH so the 32-bit library overwrites 64-bit
library during installworld.

This patch doesn't enable any other libclang_rt libraries because they
need to be separately ported.

I have verified that games/julius (which fails on powerpc64 elfv2
without this change because of no libclang_rt profiling library) builds.

Test Plan: Ship it, test on powerpc and powerpcspe

Submitted by: pkubaj
Reviewed by: dim, jhibbits
Differential Revision: https://reviews.freebsd.org/D22425
MFC after: 1 month
X-MFC-With: r353358


# f57be329 01-Sep-2019 Dimitry Andric <dim@FreeBSD.org>

Update libclang_rt:
* Add cfi, dd, fuzzer and xray
* Update arch support
* Update OptionalObsoleteFiles.inc


# 72e1e271 23-Aug-2019 Dimitry Andric <dim@FreeBSD.org>

Change clang lib dir to 9.0.0.


# e8067928 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Standardize `-std=c++* as `CXXSTD`

CXXSTD was added as the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
MFC with: r345203, r345704, r345705
Relnotes: yes
Tested with: make tinderbox
Differential Revision: https://reviews.freebsd.org/D19732


# bdbf3440 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Revert r345706: the third time will be the charm

When a review is closed via Phabricator it updates the patch attached to the
review. I downloaded the raw patch from Phabricator, applied it, and repeated
my mistake from r345704 by accident mixing content from D19732 and D19738.

For my own personal sanity, I will try not to mix reviews like this in the
future.

MFC after: 1 month
MFC with: r345706
Approved by: emaste (mentor, implicit)


# 760b1a81 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Standardize `-std=c++* as `CXXSTD`

CXXSTD was added as the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
MFC with: r345203, r345704, r345705
Relnotes: yes
Tested with: make tinderbox
Differential Revision: https://reviews.freebsd.org/D19732


# 752cabaa 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

Revert r345704

I accidentally committed code from two reviews. I will reintroduce the code to
bsd.progs.mk as part of a separate commit from r345704.

Approved by: emaste (mentor, implicit)
MFC after: 2 months
MFC with: r345704


# 9a41926b 29-Mar-2019 Enji Cooper <ngie@FreeBSD.org>

CXXSTD is the C++ analogue to CSTD.

CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
otherwise for older versions of g++.

This change standardizes the CXXSTD variable, originally added to
googletest.test.inc.mk as part of r345203.

As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.

Notes:

This value is not sanity checked in bsd.sys.mk, however, given the two
most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
likely to work with both toolchains. This method will be refined in the future
to support more variants of C++, as not all versions of clang++ and g++ (for
instance) support C++14, C++17, etc.

Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
Example:

Before this commit:
```
CXXFLAGS+= -std=c++14
```

After this commit:
```
CXXSTD= c++14
```

Reviewed by: asomers
Approved by: emaste (mentor)
MFC after: 1 month
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D19732


# 0bf31f1f 20-Jan-2019 Dimitry Andric <dim@FreeBSD.org>

Update version numbers, and regenerate config headers for llvm, clang,
lld and lldb. Update ObsoleteFiles.inc and OptionalObsoleteFiles.inc.


# 52f9bacb 03-Aug-2018 John Baldwin <jhb@FreeBSD.org>

Install the 32-bit compat sanitizer libraries.

The lib32 build was already building the i386 version of
the clang sanitizers (libclang_rt) but they were not being
installed. This enables the installation.

MK_TOOLCHAIN=no was originally added to the install make
environment to disable includes so that NO_INCS could be
removed. The MK_TOOLCHAIN in bsd.incs.mk was subsequently
renamed to MK_INCLUDES, but bsd.lib.mk doesn't even include
bsd.incs.mk when LIBRARIES_ONLY is defined which the install
make environment for compat libs now defines. However,
setting MK_TOOLCHAIN=no forced MK_CLANG=no which disabled
libclang_rt during the install32 phase. Remove MK_TOOLCHAIN=no
since LIBRARIES_ONLY is now sufficient.

Since the libcompat environment overrides both LIBDIR and
SHLIBDIR, libclang_rt/Makefile.inc has to set both variables
to force the libraries to be installed to the location
expected by the compiler.

Reviewed by: bdrewery, dim
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D16574


# 6dfa117f 31-Jul-2018 Dimitry Andric <dim@FreeBSD.org>

Update llvm/clang version numbers in various files.


# 55458465 30-Jun-2018 Dimitry Andric <dim@FreeBSD.org>

More follow-up to r335799 (llvm/clang 6.0.1 update), where I forgot to
update mtree files, ObsoleteFiles and a number of other paths. Sorry
about all the breakage.

Pointy hat to: me
MFC after: 2 weeks
X-MFC-With: r335799


# fb142d88 23-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Next step in updating llvm/clang build glue: make libclang_rt build.


# 507b79f9 20-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Update libclang_rt version number.


# 133637d5 02-Dec-2017 Dimitry Andric <dim@FreeBSD.org>

Make the assignment of CRTARCH conditional, even in the armhf case, and
slightly rework the .if statement. While here, fix a minor typo.


# 8f3b60c5 07-Nov-2017 Warner Losh <imp@FreeBSD.org>

Correct the detection of hard float arm

* Don't test MACHINE, it's irrelevant to userland and should never be
used in userland Makefiles.
* If we match armv[67] and CPUTYPE is undefined OR it doesn't have
'soft' in it, choose armhf.
* Add a note that the soft float on armv[67] may be broken.

Sponsored by: Netflix


# d61b3d7a 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Redo r325502

:U:Mfoo expands to :Mfoo, apparently. Explicit check for CPUTYPE being
defined, and test for it's value not containing *soft* before calling CRTARCH
armhf.

Tested, somewhat. Unfortunately recent changes appear to have affected
cross-builds where it no longer works, per my tests after universe12a being
upgraded from 07/2017 to 11/2017 sources (DESTDIR isn't being used in WORLDTMP;
MK_SYSTEM_COMPILER might be causing issues right now).

MFC after: 1 week
MFC with: r325502
Reported by: imp


# c03bb933 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Handle arm/armv[67] hosted/targeted builds gracefully

CPUTYPE (apparently) isn't defined in non-cross-builds, which caused
arm/armv[67] hosted/targeted builds to fail when evaluating CPUTYPE.

Add the :U modifier to CPUTYPE so it evaluates to "". This allows armv[67] to
get past the conditional successfully.

MFC after: 1 week
Reported by: bob prohaska <fbsd@www.zefox.net>


# a2a14248 06-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Use bsd.compiler.mk instead of src.opts.mk

- MK_PROFILE is controlled in bsd.opts.mk, which is pulled in via bsd.own.mk,
which is pulled in via bsd.init.mk . All upstream Makefiles which build off
of this one use bsd.init.mk.
- COMPILER_{TYPE,VERSION} is set via bsd.compiler.mk .

This reduces the namespace pollution/complexity somewhat.

MFC after: 1 week


# 792bc222 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Choose a simpler, more philosophically correct version for CRTARCH with armv[67]

This is a rework of r325443.

PR: 222925
Tested with: make buildenv with appropriate TARGET/TARGET_ARCH pairs


# c9c9774c 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Revert r325443

Despite the fact that it's a working solution, it doesn't follow the design
philosophy of only doing TARGET_* in Makefile.inc1 and special locations in
the source tree.

PR: 222925
Requested by: imp


# a060f141 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Support compiling lib/libclang_rt/profile a bit more with recent versions of gcc

Several of the flags were being treated as CFLAGS, when they were actually
technically CXXFLAGS. Move them there.

Only apply -fno-sanitize=safe-stack with clang.

PR: 223179


# 600da319 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Simplify r325427

CROSSENV (in Makefile.inc1) sets CPUTYPE/MACHINE(_ARCH)? to the
TARGET*-relevant values when building the `libraries` target.

PR: 222925


# 7efeac5c 05-Nov-2017 Enji Cooper <ngie@FreeBSD.org>

Define CRTARCH to armhf when TARGET/TARGET_ARCH are set to arm/armv[67]

TARGET_ABI/TARGET_CPU in Makefile.inc1 sets the ABI to gnueabihf, which affects
the clang lookup path per getArchNameForCompilerRTLib(..) in
contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp .

This is a follow up to r324873.

PR: 222925


# c547fc0f 22-Oct-2017 Enji Cooper <ngie@FreeBSD.org>

Support compiling lib/libclang_rt/profile with gcc

Several of the flags were being treated as CFLAGS, when they were actually
technically CXXFLAGS. Move them there.

Also, only apply -fno-sanitize=safe-stack with clang.

This is a draft diff.

PR: 223179


# 69735ece 22-Oct-2017 Enji Cooper <ngie@FreeBSD.org>

Define TARGET_CPUARCH and use in libclang_rt as the basis for CRTARCH

When cross-compiling, the wrong architecture was being embedded in the
libclang_rt binary filenames. It should be based on TARGET_ARCH (target), not
MACHINE_ARCH (host).

This is a draft commit against my project branch. Will fix on ^/head soon.

PR: 222925


# 5897d2f0 17-Apr-2017 Dimitry Andric <dim@FreeBSD.org>

Initial update of clang/llvm build glue, for building just a minimal
clang executable.


# 53fe1d28 05-Jan-2017 Dimitry Andric <dim@FreeBSD.org>

Adjust version numbers for the clang library directory.


# 5b41a5b6 25-Nov-2016 Dimitry Andric <dim@FreeBSD.org>

Update build glue for llvm/clang 3.9.1.


# 7fff4413 19-Aug-2016 Dimitry Andric <dim@FreeBSD.org>

Update build glue for clang and the llvm/clang extras.


# 802df53c 30-Dec-2015 Dimitry Andric <dim@FreeBSD.org>

Update various build glue files for the new llvm/clang version number.


# 85ab8f98 29-Nov-2015 Dimitry Andric <dim@FreeBSD.org>

Install the public sanitizer headers. These are useful for programs
that want to directly interface with sanitizer internals.


# ebeff3f9 30-May-2015 Dimitry Andric <dim@FreeBSD.org>

Update Makefiles and other build glue for llvm/clang 3.7.0, as of trunk
r238337.


# 1ae6788e 26-Jan-2015 Dimitry Andric <dim@FreeBSD.org>

Update llvm and clang library and binary Makefiles for 3.6.0 rc1.


# 91d03e2e 08-Jan-2015 Dimitry Andric <dim@FreeBSD.org>

Now compiler-rt has been updated in r276851, bring in the various
sanitizer libraries that already work on FreeBSD:

* asan: Address Sanitizer
* ubsan: Undefined Behavior Sanitizer
* profile: Profile Guided Optimization support

Please note that these libraries are *experimental* at this stage, so
the main Makefile is not yet connected to the build.

Since I didn't want to needlessly edit BSD.usr.dist, you will also have
to create the install directory /usr/lib/clang/3.5.0/lib/freebsd
manually for now.