* Using OS-specific append writing functions instead of simple fopen/
fwrite/fclose we can guarantee that multiple processes writing to the
same log file won't trash or interleave their log output.
* To make the logs readable the PID is now included along with the
project/timestamp.
* After that, we make sure that when we launch a program we set the
output log to the same file as the parent UI. This keeps all the logs
together and removes user confusion over which logfile is needed.
* We also move all of RenderDoc's temporary files under a RenderDoc
folder in the temp folder, instead of scattering the files in the root
* This also fixes the problem of capturing 32-bit programs with 64-bit
RenderDoc failing to properly insert environment variables and
error'ing when it tries to do it directly.
* This allows qrenderdoc to link properly when opened directly in
qtcreator, as otherwise it doesn't know where to link to the generated
librenderdoc.so somewhere in CMake's build directory
* This is similar to the button on the capture dialog of the windows UI,
except on linux the situation is a bit more complex as layers can be
registered in two different system locations (one for distro packages
and one for non-distro stuff), as well as in $HOME.
* On linux we make sure the json always contains an absolute path so we
can tell from any given build whether or not a json is our own or not.
* By default we now install the json to /etc since /usr is reserved for
proper distro packages, and shouldn't be written to by 'make install'.
There's a CMake variable for overriding this for anyone who wants to
make install into a custom folder (maybe for packaging).
* Distributions will just be a tarball with binaries and library, so if
the user doesn't install it somewhere in LD_LIBRARY_PATH, we want it
to still work.
* Also allow disabling GL a little better by removing the dependency in
renderdoccmd.
* Disabling them now completely removes all xcb and xlib build
dependencies. The resulting library/executable is only useful in
limited situations - e.g. replaying vulkan remotely which doesn't need
any window system interaction. Or capturing vulkan as well with the
KHR_display WSI extension which doesn't need any built-time includes
or libs.
* This is primarily for vulkan, which supports either xlib or xcb (and
not necessarily both). GL still only supports xlib, windows and
android only support one system regardless of API.
* This should also support xlib again for fetching keystates etc.
* Descriptions for readers, for better error reporting and usage help.
This also allows these descriptions to be multiline, and they're
indented correctly.
* A bit better formatting of options and defaults.
* Print full list of errors when there are more than one.
* #undef max
* Header as well as footer on single-line command help.
* Remove parse and parse_check variants I don't use.
* Allow processing without looking at argv[0].
* Optionally stop the processing at the first non-command, so that
you can have a program and its arguments without trying to parse
the arguments themselves.