summaryrefslogtreecommitdiffstats
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* freedreno: bump required libdrm versionChristian Gmeiner2018-03-061-1/+1
| | | | | | | | | Fixes: 26a9321d0a "freedreno: add global_bindings state" Signed-off-by: Christian Gmeiner <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Rob Clark <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* st/omx/tizonia: Add --enable-omx-tizonia flag and build filesGurkirpal Singh2018-03-061-2/+44
| | | | | | | | | | | | Allow only bellagio or tizonia to be used at the same time. Detect tizonia package config file Generate libomx_mesa.so and install it to libtizcore.pc::pluginsdir Only compile empty source (target.c) for now. GSoC Project link: https://summerofcode.withgoogle.com/projects/#4737166321123328 Acked-by: Leo Liu <[email protected]> Reviewed-by: Julien Isorce <[email protected]>
* st/omx/bellagio: Rename st and target directoriesGurkirpal Singh2018-03-061-2/+3
| | | | | | | | | | | | | | | | | | | v2: Refactor out screen functions to st/omx Allows to keep all the code under st/omx (st/omx/tizonia and st/omx/bellagio). Reverts targets/omx_bellagio to omx as additions to existing files is enough to compile for both bellagio and tizonia. * autotools changes: --enable-omx -> --enable-omx-bellagio * meson changes: -Dgallium-omx=false -> -Dgallium-omx=disabled -Dgallium-omx=true -> -Dgallium-omx=bellagio Acked-by: Leo Liu <[email protected]> Reviewed-by: Julien Isorce <[email protected]>
* *-symbol-check: use correct `nm` path when cross-compilingEric Engestrom2018-02-261-0/+1
| | | | | | Inspired-by: a similar patch for libdrm by Heiko Becker Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* build: Move wayland-scanner check into platformDaniel Stone2018-02-261-7/+7
| | | | | | | | | | | | Also only check for wayland-scanner if building for the Wayland platform. Signed-off-by: Daniel Stone <[email protected]> Fixes: bfa22266cd4d ("vulkan/wsi/wayland: Add support for zwp_dmabuf") Cc: Emil Velikov <[email protected]> Reported-by: Dieter Nützel <[email protected]> Tested-by: Dieter Nützel <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105211
* build: Move wayland-protocols check into platformDaniel Stone2018-02-261-9/+3
| | | | | | | | | | | | In line with wayland-client and wayland-server, move the check for wayland-protocols into the wayland platform branch. Signed-off-by: Daniel Stone <[email protected]> Fixes: bfa22266cd4d ("vulkan/wsi/wayland: Add support for zwp_dmabuf") Cc: Emil Velikov <[email protected]> Reported-by: Dieter Nützel <[email protected]> Tested-by: Dieter Nützel <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105211
* configure.ac: pthread-stubs not present on OpenBSDJonathan Gray2018-02-201-2/+2
| | | | | | | | | | pthread-stubs is no longer required on OpenBSD and has been removed. libpthread parts involved moved to libc. Signed-off-by: Jonathan Gray <[email protected]> Cc: 17.3 18.0 <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* swr: bump minimum supported LLVM version to 4.0Andres Gomez2018-02-201-3/+3
| | | | | | | | | | | | | | | | | | Since radv and radeonsi removed support for LLVM 3.9 the distcheck target got broken because SWR distribution needed 3.9.x. After checking with George Kyriazis, SWR is OK with moving to LLVM 4.0 and above, which will solve this problem. Fixes: 3bf1e036e8a ("amd: remove support for LLVM 3.9") Cc: George Kyriazis <[email protected]> Cc: Tim Rowley <[email protected]> Cc: Emil Velikov <[email protected]> Cc: Dylan Baker <[email protected]> Cc: Eric Engestrom <[email protected]> Signed-off-by: Andres Gomez <[email protected]> Reviewed-by: Dylan Baker <[email protected]> Reviewed-by: George Kyriazis <[email protected]>
* ac: query high bits of 32-bit address spaceMarek Olšák2018-02-171-1/+1
|
* amd: remove support for LLVM 3.9Marek Olšák2018-02-021-2/+2
| | | | | | | | | | | Only these are supported: - LLVM 4.0 - LLVM 5.0 - LLVM 6.0 - master (7.0) Reviewed-by: Dylan Baker <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* osx: ld doesn't support --build-idJon Turney2018-02-011-0/+13
| | | | | Signed-off-by: Jon Turney <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* configure: Default to gbm=no on osxJon Turney2018-02-011-2/+2
| | | | | Signed-off-by: Jon Turney <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* configure.ac: add missing llvm dependencies to .pc filesChuck Atkins2018-01-251-0/+12
| | | | | | | | v2: Only add as dependencies for gallium-osmesa and gallium-xlib CC: <[email protected]> Signed-of-by: Chuck Atkins <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* configure.ac: correct driglx-direct help textEmil Velikov2018-01-251-1/+1
| | | | | | | | | | The default was toggled a while back, but the text wasn't updated. Fixes: bd526ec9e1b ("configure: Always default to --enable-driglx-direct") Cc: Jon TURNEY <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Daniel Stone <[email protected]>
* swr: (autoconf) allow a single swr architecture to be builtinChuck Atkins2018-01-191-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | Part 1 of 2 (part 1 is autoconf changes, part 2 is C++ changes) When only a single SWR architecture is being used, this allows that architecture to be builtin rather than as a separate libswrARCH.so that gets loaded via dlopen. Since there are now several different code paths for each detected CPU architecture, the log output is also adjusted to convey where the backend is getting loaded from. This allows SWR to be used for static mesa builds which are still important for large HPC environments where shared libraries can impose unacceptable application startup times as hundreds of thousands of copies of the libs are loaded from a shared parallel filesystem. Based on an initial implementation by Tim Rowley. v2: Fix comment placement pointed out by Bruce C. Signed-off-by: Chuck Atkins <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]> CC: Tim Rowley <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]>
* android,configure,meson: define HAVE_ZLIBGrazvydas Ignotas2018-01-141-0/+1
| | | | | | | | | The next change wants to use some optional zlib functionality, however not all platforms currently use zlib. Based on earlier Jordan Justen's patches and their review feedback. Signed-off-by: Grazvydas Ignotas <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* freedreno: context priority supportRob Clark2017-12-191-1/+1
| | | | | | | For devices (and kernels) which support different priority ringbuffers, expose context priority support. Signed-off-by: Rob Clark <[email protected]>
* configure/meson: Bump libdrm_amdgpu version requirement.Bas Nieuwenhuizen2017-12-181-1/+1
| | | | | | For the radv dependencies on syncobj signal/reset. Reviewed-by: Dave Airlie <[email protected]>
* util: Add a NORETURN macroJason Ekstrand2017-12-041-0/+1
| | | | | Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* configure: avoid testing for negative compiler optionsMarc Dietrich2017-12-011-2/+4
| | | | | | | | | | | | | | | gcc seems to always accept unsupported negative compiler warning options: echo "int i;" | gcc -c -xc -Wno-bob - # no error echo "int i;" | gcc -c -xc -Walice - # unsupported compiler option Inverting the options fixes the tests. V2: fix options in meson build Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Dylan Baker <[email protected]> Signed-off-by: Marc Dietrich <[email protected]>
* anv: Check if memfd_create is already defined.Vinson Lee2017-11-301-0/+1
| | | | | | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103909 Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* autotools: change version TINY -> PATCHDylan Baker2017-11-161-4/+4
| | | | | | | | Because patch is more common than tiny for talking about the 3rd element of a version. Signed-off-by: Dylan Baker <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* autotools: set XA versions in configure.ac and configure header fileDylan Baker2017-11-161-8/+4
| | | | | | | | | | | | | | | | | | | | Currently the versions are set in the header, and then sed is used to extract them, so that autotools can use them elsewhere. This is odd. Autotools is perfectly capable of configuring the header with the versions, and then they don't need to be extracted from the the header. This is cleaner and more obvious. Tested with make distcheck. v2: - Split tiny -> patch change - Drop temporary variables - change XA_VERSION_* -> XA_* v3: - Finish splitting the tiny -> patch change Signed-off-by: Dylan Baker <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]> (v2)
* threads,configure.ac,meson.build: define and use HAVE_TIMESPEC_GETNicolai Hähnle2017-11-161-0/+1
| | | | | | | | | | | | | | | Tested with Travis and Appveyor. v2: add HAVE_TIMESPEC_GET for non-Windows Scons builds v3: use check_functions in Scons (Eric) Cc: Rob Herring <[email protected]> Cc: Alexander von Gluck IV <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103674 Fixes: f1a364878431 ("threads: update for late C11 changes") Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Dylan Baker <[email protected]> Reviewed-by: Jon Turney <[email protected]> (v2)
* mesa: Add new fast mtx_t mutex type for basic use casesTimothy Arceri2017-11-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While modern pthread mutexes are very fast, they still incur a call to an external DSO and overhead of the generality and features of pthread mutexes. Most mutexes in mesa only needs lock/unlock, and the idea here is that we can inline the atomic operation and make the fast case just two intructions. Mutexes are subtle and finicky to implement, so we carefully copy the implementation from Ulrich Dreppers well-written and well-reviewed paper: "Futexes Are Tricky" http://www.akkadia.org/drepper/futex.pdf We implement "mutex3", which gives us a mutex that has no syscalls on uncontended lock or unlock. Further, the uncontended case boils down to a cmpxchg and an untaken branch and the uncontended unlock is just a locked decr and an untaken branch. We use __builtin_expect() to indicate that contention is unlikely so that gcc will put the contention code out of the main code flow. A fast mutex only supports lock/unlock, can't be recursive or used with condition variables. We keep the pthread mutex implementation around as for the few places where we use condition variables or recursive locking. For platforms or compilers where futex and atomics aren't available, simple_mtx_t falls back to the pthread mutex. The pthread mutex lock/unlock overhead shows up on benchmarks for CPU bound applications. Most CPU bound cases are helped and some of our internal bind_buffer_object heavy benchmarks gain up to 10%. Signed-off-by: Kristian Høgsberg <[email protected]> Signed-off-by: Timothy Arceri <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* clover: use the unified check for c++11 instead of the gcc version numberGert Wollny2017-11-081-2/+2
| | | | | | | | So far clover based its test for compiler support on the version of gcc, while in reality support for c++11 is required. This patch replaces the version check by the check unified for all modules that require c++11. Reviewed-by: Emil Velikov <[email protected]>
* swr: Replace the check for c++11 by the unified versionGert Wollny2017-11-081-4/+3
| | | | Reviewed-by: Emil Velikov <[email protected]>
* configure: check for -std=c++11 support and enable st/mesa test accordinglyGert Wollny2017-11-081-0/+56
| | | | | | | | | | | | | | | | | | Add a check that tests whether the c++ compiler supports c++11, either by default, by adding the compiler flag -std=c++11, or by adding a compiler flag that the user has specified via the environment variable CXX11_CXXFLAGS. The test only does a very shallow check of c++11 support, i.e. it tests whether the define __cplusplus >= 201103L to confirm language support by the compiler, and it checks whether the header <tuple> is available to test the availability of the c++11 standard library. A make file conditional HAVE_STD_CXX11 is provided that is used in this patch to enable the test in st/mesa if C++11 support is available. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102665 Acked-by: Emil Velikov <[email protected]>
* configure.ac: append to existing initializer override flagsEmil Velikov2017-11-081-2/+2
| | | | | | | | | | Currently we were overwriting the existing warning flags, instead of adding new [as applicable]. Fixes c5d2e2d43f6 ("configure: Test for -Wno-initializer-overrides") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* configure.ac: append to existing MSVC compat flagsEmil Velikov2017-11-081-4/+4
| | | | | | | | | | | | | Currently we were overwriting the existing warning flags, instead of adding new [as applicable]. v2: Add missing space before -Werror (Eric) Fixes e4b2b69e828 ("configure: Add and use AX_CHECK_COMPILE_FLAG") Cc: Matt Turner <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]> (v1) Reviewed-by: Eric Engestrom <[email protected]>
* configure.ac: require xcb* for the omx/va/... when using x11 platformEmil Velikov2017-11-081-1/+3
| | | | | | | | | | | | Targets such as omx and va can work w/o anything X related. Mandate the xcb* dependencies only when the X11 platform is selected. Reported-by: Lukas Rusak <[email protected]> Fixes: 63e11ac2b5c ("configure: error out if building VA w/o supported platform") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Tested-by: Lukas Rusak <[email protected]> (v1)
* configure.ac: loosen --enable-glvnd check to honour eglEmil Velikov2017-11-081-8/+4
| | | | | | | | | | | | | | | Currently we error out when building GLVND w/o GLX. That was the original premice before we had EGL. As the commit says, that error should be reworked to honour both - do so. v2: Drop noop *);; (Eric) Reported-by: Lukas Rusak <[email protected]> Fixes: ce562f9e3fa ("EGL: Implement the libglvnd interface for EGL (v3)") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Tested-by: Lukas Rusak <[email protected]> (v1)
* configure: enable the OpenCL ICD by defaultEmil Velikov2017-11-081-2/+2
| | | | | | | | | | | | | | | | | | | | Nearly all the distributions* that build Mesa OpenCL, enable the ICD. Since building a non-ICD driver has the chance of conflicting with existing OpenCL binary (libOpenCL.so). Furthermore, some applications expect the library to provide annotated/versioned symbols. https://lists.freedesktop.org/archives/mesa-dev/2017-September/171093.html *Fedora, Suse, Arch, Debian, Ubuntu, FreeBSD use the ICD Gentoo manages the conflicting files via eselect. Cc: Matt Turner <[email protected]> Cc: Jan Vesely <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> Reviewed-By: Aaron Watry <[email protected]>
* winsys/amdgpu: Add R600_DEBUG flag to reserve VMID per ctx.Andrey Grodzovsky2017-11-031-1/+1
| | | | | | | | | | Fixes reverted patch f03b7c9 by doing VMID reservation per process and not per context. Also updates required amdgpu libdrm version since the change involved interface updates in amdgpu libdrm. Signed-off-by: Andrey Grodzovsky <[email protected]> Signed-off-by: Marek Olšák <[email protected]>
* Revert "winsys/amdgpu: Add R600_DEBUG flag to reserve VMID per ctx."Marek Olšák2017-11-011-1/+1
| | | | | | This reverts commit f03b7c9ad92c1656a221297819fbc6d065cc0af7. The libdrm interface is wrong.
* winsys/amdgpu: Add R600_DEBUG flag to reserve VMID per ctx.Andrey Grodzovsky2017-10-311-1/+1
| | | | | Signed-off-by: Andrey Grodzovsky <[email protected]> Signed-off-by: Marek Olšák <[email protected]>
* configure: Allow android as an EGL platformBenjamin Gordon2017-10-241-1/+2
| | | | | | | | | I'm working on radeonsi support in the Chrome OS Android container (ARC++). Mesa in ARC++ uses autotools instead of Android.mk, but all the necessary EGL bits are there, so the existing check is too strict. Signed-off-by: Benjamin Gordon <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* configure.ac: Bump libdrm_amdgpu version to 2.4.85.Bas Nieuwenhuizen2017-10-211-1/+1
| | | | | | For VK_EXT_global_priority in radv. Acked-by: Andres Rodriguez <[email protected]>
* configure: commit test filesDylan Baker2017-10-161-16/+2
| | | | | | | | | | | These are currently auto-generated, but meson needs the same files, so lets commit them to reduce duplication. v3: - Rename .build to build-support Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Signed-off-by: Dylan Baker <[email protected]>
* configure.ac: add missing LLVM components for OpenCLEmil Velikov2017-10-131-0/+3
| | | | | | | | | | | Coverage and LTO seems to be hard requirements for Clang, while coroutines is needed as of LLVM/Clang 4.0. Mark the last one as "optional" so we handle every case. Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tobias Droste <[email protected]>
* configure.ac: add llvm_add_optional_component helperEmil Velikov2017-10-131-3/+10
| | | | | | | | | | | | | | We want to add "optional" components, which have been added with later LLVM versions. One such in-tree example is inteljitevents. Others are to follow shortly. v2: Use the correct function, add blank line between functions (Tobias) Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tobias Droste <[email protected]>
* configure.ac: rework llvm libs handling for 3.9+Emil Velikov2017-10-131-10/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Earlier versions need different quirks, but as of LLVM 3.9 llvm-config provides --link-shared/link-static toggles. The output of which seems to be reliable - looking at LLVM 3.9, 4.0 and 5.0. Note that there are earlier code will be used for pre LLVM 3.9 and is unchanged. This effectively fixes LLVM static linking, while providing a clearer and more robust solution for future versions. Mildly interesting side notes: - build-mode (introduced with 3.8) was buggy with 3.8 It shows "static" when build with -DLLVM_LINK_LLVM_DYLIB=ON, yet it was consistent with --libs. The latter shows the static libraries. - libnames and libfiles are broken with LVM 3.9 The library prefix and extension is printed twice liblibLLVM-3.9.so.so v2: Invoke llvm-config twice, instead of using sed, to combine the two lines into one (Tobias) Cc: [email protected] Cc: Dieter Nützel <[email protected]> Cc: Michel Dänzer <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tobias Droste <[email protected]>
* configure.ac: factor out detection for old and buggy llvmEmil Velikov2017-10-131-29/+34
| | | | | | | | | | As of LLVM 3.9 one could use consistent ways to handle the component. Factor out the current handling, as it will be used for older versions. Cc: [email protected] Cc: Michel Dänzer <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tobias Droste <[email protected]>
* configure.ac: remove no longer necessary llvm-config --libs checkEmil Velikov2017-10-131-3/+0
| | | | | | | | | | | Prior to the refactor/cleanup by Tobias one could add an invalid component to LLVM_COMPONENTS. Since that's no longer the case we can drop the current check. Cc: Tobias Droste <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tobias Droste <[email protected]>
* configure.ac: bump Clover LLVM requirement to 3.9Emil Velikov2017-10-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The only driver that utilises Clover already depends on LLVM 3.9. Close to every supported distribution has said version. Additionally libclc also requires LLVM 3.9. With this in mind, we can safely bump the requirement. There is a handful of dead code that we could remove, which will be resolved with later commits. Note: this drops the LLVM 3.6 build from the Travis build. LLVM 3.9 (and later) are already covered in there. https://lists.freedesktop.org/archives/mesa-dev/2017-September/170028.html v2: Add reference to discussion thread (Eric), adjust libclc LLVM req. (Jan). Cc: Aaron Watry <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Acked-by: Vedran Miletić <[email protected]> Acked-by: Jan Vesely <[email protected]> Acked-by: Francisco Jerez <[email protected]>
* winsys/amdgpu: implement sync_file import/exportMarek Olšák2017-10-121-1/+1
| | | | | | syncobj is used internally for interactions with command submission. Reviewed-by: Nicolai Hähnle <[email protected]>
* broadcom: Add V3D 3.3 gallium driver called "vc5", for BCM7268.Eric Anholt2017-10-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | V3D 3.3 is a continuation of the 3D implementation in VC4 (v2.1 and v2.6). V3D 3.3 introduces an MMU (no more CMA allocations) and support for GLES3.1. This driver is not currently conformant, though that will be a target as soon as possible. V3D 3.x parts use a new texture tiling layout common across many Broadcom graphics parts including and the HVS scanout engine. It also massively changes the QPU instructions, introducing a common physical register file (no more A/B split) and half-float instructions, while removing the 4x8 unorm instructions in favor of half-float for talking to fixed function interfaces. Because so much has changed, vc5 is implemented in a separate gallium driver, using only the XML code-generation support from vc4. v2: Fix tile layout for 64bpp textures. Fix texture swizzling for 32-bit returns. Fix up a bit of MRT setup. Sync the simulator to kernel behavior a bit more. Improve uniform debugging code. Rebase on QIR->VIR rename. Move texture state mostly to the CSOs. Improve cache flushing on the simulator. Fix program deletion use-after-frees. Acked-by: Dave Airlie <[email protected]> (uabi plan) Acked-by: Daniel Vetter <[email protected]> (uabi plan)
* configure: Add the new "vc5" driver to the list, requiring a simulator.Eric Anholt2017-10-101-1/+14
| | | | | | | | | | | | My intent is to develop the vc5 driver in-tree for some time to build the CL generation and shader compiler code, and keep out-of-tree patches for talking to an actual kernel driver until the kernel driver can be stabilized on the hardware. v2: Define a HAVE_BROADCOM_DRIVERS, like HAVE_INTEL or HAVE_AMD. Reviewed-by: Adam Jackson <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* build: Remove HAVE_DLOPENMatt Turner2017-10-021-2/+2
| | | | | Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* util: Add tests for the string bufferThomas Helland2017-09-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | More tests could probably be added, but this should cover concatenation, resizing, clearing, formatted printing, and checking the length, so it should be quite complete. Signed-off-by: Thomas Helland <[email protected]> Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com> Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de> V2: Address review feedback from Timothy, plus fixes - Use a large enough char array - Actually test the formatted appending - Test that clear function resets string length V3: Port to gtest V4: Fix test makefile Fix copyright header Fix missing extern C Use more appropriate name for C-file Add tests for append_char