llvm.org GIT mirror llvm / 35e5e58
Allow suppressing host and target info in VersionPrinter Summary: VersionPrinter by default outputs information about the Host CPU and Default target. Printing this information requires linking in a large amount of data, such as supported target triples as C strings, which in turn bloats the binary size. Enable a new CMake option LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO which controls printing of the host and target info. This allows the target triple names to be dead-code stripped. This is a nice win for LLVM clients that wish to minimize their binary size, such as graphics drivers. By default this is ON, so there is no change in the default behavior. Clients who wish to suppress this printing can do so by setting this option to off via CMake. A test app on Linux that uses ParseCommandLineOptions() shows a binary size reduction of 23KB (from 149K to 126K) for a Release build, and 24KB (from 135K to 111K) in a MinSizeRel build. Reviewers: klimek, beanz, bogner, chandlerc, compnerd Reviewed By: compnerd Patch by pammon (Peter Ammon) ! Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30904 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300630 91177308-0d34-0410-b5e6-96231b3b80d8 Xin Tong 3 years ago
3 changed file(s) with 10 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
511511 option (LLVM_BUILD_EXTERNAL_COMPILER_RT
512512 "Build compiler-rt as an external project." OFF)
513513
514 option (LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO
515 "Show target and host info when tools are invoked with --version." ON)
516
514517 # You can configure which libraries from LLVM you want to include in the
515518 # shared library by setting LLVM_DYLIB_COMPONENTS to a semi-colon delimited
516519 # list of LLVM components. All component names handled by llvm-config are valid.
385385 /* LLVM version information */
386386 #cmakedefine LLVM_VERSION_INFO "${LLVM_VERSION_INFO}"
387387
388 /* Whether tools show host and target info when invoked with --version */
389 #cmakedefine01 LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO
390
388391 /* Major version of the LLVM API */
389392 #define LLVM_VERSION_MAJOR ${LLVM_VERSION_MAJOR}
390393
20682068 #ifndef NDEBUG
20692069 OS << " with assertions";
20702070 #endif
2071 #if LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO
20712072 std::string CPU = sys::getHostCPUName();
20722073 if (CPU == "generic")
20732074 CPU = "(unknown)";
20742075 OS << ".\n"
20752076 << " Default target: " << sys::getDefaultTargetTriple() << '\n'
2076 << " Host CPU: " << CPU << '\n';
2077 << " Host CPU: " << CPU;
2078 #endif
2079 OS << '\n';
20772080 }
20782081 void operator=(bool OptionWasSpecified) {
20792082 if (!OptionWasSpecified)