Provided by: bear_2.1.5-1_amd64 bug

NAME

       bear - build ear

SYNOPSIS

       bear [options] [build commands]

DESCRIPTION

       Bear is a tool to generate compilation database for clang tooling.

       The JSON compilation database (http://clang.llvm.org/docs/JSONCompilationDatabase.html) is
       used in clang project to provide information how a single compilation unit was  processed.
       When that is available then it is easy to re-run the compilation with different programs.

       Bear  execs the original build command and intercept the exec calls.  To achieve that Bear
       uses the LD_PRELOAD or DYLD_INSERT_LIBRARIES mechanisms provided by  the  dynamic  linker.
       There is a library which defines the exec methods and used in every child processes of the
       build command.  The executable itself sets the  environment  up  to  child  processes  and
       writes the output file.

OPTIONS

       -o output, --cdb output
              Specify output file.  Default value provided.

       -a, --append
              Use  previously  generated  output file and append the new entries to it.  This way
              you can run bear continuously during work, and it keeps the compilation database up
              to  date.  File deletion and addition are both considered. But build process change
              (modifying compiler flags) will cause duplicate entries.

       -v, --verbose
              Make bear more verbose.

       -l library
              Specify the preloaded library location.   Default  value  provided.   (This  option
              mainly for development purposes.)

       -n     Disable  filter.   The output is also a JSON formated file. But the result is not a
              compilation database. It contains all available  information  of  the  exec  calls.
              (This option mainly for development purposes.)

OUTPUT

       There  are two version of output formats.  One is defined by the clang tooling.  This goes
       like this:

              [
                { "directory": "/home/user/llvm/build",
                  "command": "clang++ -Irelative -c -o file.o file.cc",
                  "file": "file.cc" },
                ...
              ]

       To achieve this bear has to run some filtering  and  formating.   Build  tools  exec  many
       commands  during  the  build process.  Bear has to find was that a compiler call, and what
       was the source file?  The other output format is generated by the -n flag. (This output is
       not formalized, it's used to debug bear itself.)

EXIT STATUS

       Bear  exit status is the exit status of the build command.  Except when bear crashes, then
       it sets to non zero.

ENVIRONMENT

       BEAR_OUTPUT
              The place of the temporary files where client shall report exec calls. Value set by
              bear, overrides previous value for child processes.

       LD_PRELOAD
              Used by the dynamic loader on Linux, FreeBSD and other UNIX OS.  Value set by bear,
              overrides previous value for child processes.

       DYLD_INSERT_LIBRARIES
              Used by the dynamic loader on OS X.  Value set by bear,  overrides  previous  value
              for child processes.

       DYLD_FORCE_FLAT_NAMESPACE
              Used  by  the  dynamic loader on OS X.  Value set by bear, overrides previous value
              for child processes.

FILES

       /usr/lib/x86_64-linux-gnu/bear/libear.so
              bear library to implement exec calls.

SEE ALSO

       ld.so(8), exec(3)

BUGS

       Because Bear uses LD_PRELOAD or DYLD_INSERT_LIBRARIES environment variables, it  does  not
       append  to it, but overrides it. So builds which are using these variables might not work.
       (I don't know any build tool which does that, but please let me know if you do.)

       Security extension/modes on different operating systems might  disable  library  preloads.
       This case Bear behaves normaly, but the result compilation database will be empty. (Please
       make sure it's not the case when reporting bugs.)  Notable examples for  enabled  security
       modes are: SIP on OS X Captain and SELinux on Fedora, CentOS, RHEL.

COPYRIGHT

       Copyright (C) 2012-2016 by László Nagy <https://github.com/rizsotto/Bear>

AUTHORS

       László Nagy.