Files
cmake/Source/bindexplib.h
T
Chuck Atkins a887fda85e WINDOWS_EXPORT_ALL_SYMBOLS: Improve performance with Clang toolsets
- Separate definition files from object files while reading the
  generated input list.
- Add batch bindexplib interfaces.
- Preserve native Windows COFF parsing for ordinary objects.
- Collect objects requiring nm and pass them to one nm process through a
  response file. On non-Windows hosts, pass every object to nm.
- Request --print-file-name so single- and multi-object output use the
  same format.
- Recognize text, data, and MSVC vftable symbols; ignore known
  non-exported types and warn about unknown types.
- Capture nm stderr separately so diagnostics cannot corrupt stdout
  symbol records.

Closes: #27995
2026-08-05 10:58:20 -04:00

29 lines
826 B
C++

/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file LICENSE.rst or https://cmake.org/licensing for details. */
#pragma once
#include "cmConfigure.h" // IWYU pragma: keep
#include <iosfwd>
#include <set>
#include <string>
#include <vector>
class bindexplib
{
public:
bool AddDefinitionFile(std::string const& definitionFile);
bool AddDefinitionFile(std::vector<std::string> const& definitionFiles);
bool AddObjectFile(std::string const& objectFile);
bool AddObjectFile(std::vector<std::string> const& objectFiles,
std::string const& responseFile = "exports.def.objs.rsp");
bool WriteFile(std::ostream& output);
void SetNmPath(std::string const& nm);
private:
std::set<std::string> Symbols;
std::set<std::string> DataSymbols;
std::string NmPath;
};