Revision 156b56480a786db4d967bde5eb6d5edee56a27d0 authored by Brad King on 27 September 2019, 17:06:56 UTC, committed by Brad King on 27 September 2019, 18:15:00 UTC
Revert the main logic change from commit 827da1119e (Makefiles: Make build root targets "all", "clean" and "preinstall" recursive, 2019-05-17, v3.15.0-rc1~96^2~2) for the "all" and "preinstall" targets. The commit cleaned up the Makefile generator to use the same logic for the "all" target in the top-level directory as for subdirectories. It exposed a long-existing bug that caused the "all" target in a subdirectory to include the "all" targets from sub-subdirectories even if they are marked `EXCLUDE_FROM_ALL`. The `Tests/SubDir` test should fail but the problem is currently covered up by another bug introduced by commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) that causes the "all" targets in `EXCLUDE_FROM_ALL` subdirectories to be empty. Revert the top-level "all" and "preinstall" targets to the old approach to prepare to fix the latter bug without exposing the long-existing bug at the top-level. Leave the "clean" target in the new approach because it does not honor `EXCLUDE_FROM_ALL` anyway. Issue: #19753
1 parent 26a0e20
cmLinkLineComputer.h
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#ifndef cmLinkLineComputer_h
#define cmLinkLineComputer_h
#include "cmConfigure.h" // IWYU pragma: keep
#include <string>
#include "cmStateDirectory.h"
class cmComputeLinkInformation;
class cmGeneratorTarget;
class cmOutputConverter;
class cmLinkLineComputer
{
public:
cmLinkLineComputer(cmOutputConverter* outputConverter,
cmStateDirectory const& stateDir);
virtual ~cmLinkLineComputer();
cmLinkLineComputer(cmLinkLineComputer const&) = delete;
cmLinkLineComputer& operator=(cmLinkLineComputer const&) = delete;
void SetUseWatcomQuote(bool useWatcomQuote);
void SetForResponse(bool forResponse);
void SetRelink(bool relink);
virtual std::string ConvertToLinkReference(std::string const& input) const;
std::string ComputeLinkPath(cmComputeLinkInformation& cli,
std::string const& libPathFlag,
std::string const& libPathTerminator);
std::string ComputeFrameworkPath(cmComputeLinkInformation& cli,
std::string const& fwSearchFlag);
virtual std::string ComputeLinkLibraries(cmComputeLinkInformation& cli,
std::string const& stdLibString);
virtual std::string GetLinkerLanguage(cmGeneratorTarget* target,
std::string const& config);
protected:
std::string ComputeLinkLibs(cmComputeLinkInformation& cli);
std::string ComputeRPath(cmComputeLinkInformation& cli);
std::string ConvertToOutputFormat(std::string const& input);
std::string ConvertToOutputForExisting(std::string const& input);
cmStateDirectory StateDir;
cmOutputConverter* OutputConverter;
bool ForResponse;
bool UseWatcomQuote;
bool Relink;
};
#endif
Computing file changes ...