# Customization Points

The custom directory is an injection point for custom user configurations.

## Header gtest.h

### The following macros can be defined:

*   GTEST_OS_STACK_TRACE_GETTER_ - The name of an implementation of
    OsStackTraceGetterInterface.
*   GTEST_CUSTOM_TEMPDIR_FUNCTION_ - An override for testing::TempDir(). See
    testing::TempDir for semantics and signature.

## Header gtest-port.h

The following macros can be defined:

### Flag related macros:

*   GTEST_FLAG(flag_name)
*   GTEST_USE_OWN_FLAGFILE_FLAG_ - Define to 0 when the system provides its own
    flagfile flag parsing.
*   GTEST_DECLARE_bool_(name)
*   GTEST_DECLARE_int32_(name)
*   GTEST_DECLARE_string_(name) *
*   GTEST_DEFINE_bool_(name, default_val, doc)
*   GTEST_DEFINE_int32_(name, default_val, doc)
*   GTEST_DEFINE_string_(name, default_val, doc)

### Logging:

*   GTEST_LOG_(severity)
*   GTEST_CHECK_(condition)
*   Functions LogToStderr() and FlushInfoLog() have to be provided too.

### Threading:

*   GTEST_HAS_NOTIFICATION_ - Enabled if Notification is already provided.
*   GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ - Enabled if Mutex and ThreadLocal are
    already provided. Must also provide GTEST_DECLARE_STATIC_MUTEX_(mutex) and
    GTEST_DEFINE_STATIC_MUTEX_(mutex)
*   GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
*   GTEST_LOCK_EXCLUDED_(locks)

### Underlying library support features

*   GTEST_HAS_CXXABI_H_

### Exporting API symbols:

*   GTEST_API_ - Specifier for exported symbols.

## Header gtest-printers.h

*   See documentation at gtest/gtest-printers.h for details on how to define a
    custom printer.
