Build: Move TF source file inclusion from build system to source files

Outside of compiler-rt (where it's arguably an anti-pattern too),
LLVM tries to keep its build files as simple as possible. See e.g.
llvm/docs/SupportLibrary.rst, "Code Organization".

Differential Revision: https://reviews.llvm.org/D84243
This commit is contained in:
Nico Weber 2020-07-21 11:44:47 -04:00
parent 9dff04c406
commit 3900b1c685
8 changed files with 30 additions and 32 deletions

View File

@ -347,4 +347,7 @@
/* Whether Timers signpost passes in Xcode Instruments */
#cmakedefine01 LLVM_SUPPORT_XCODE_SIGNPOSTS
/* Define if LLVM was built with a dependency to the tensorflow compiler */
#cmakedefine LLVM_HAVE_TF_AOT
#endif

View File

@ -1,38 +1,17 @@
set(CommonMLSources MLInlineAdvisor.cpp)
set(ReleaseModeMLSources ReleaseModeModelRunner.cpp)
set(DevelopmentModeMLSources
DevelopmentModeInlineAdvisor.cpp
TFUtils.cpp
)
if (DEFINED LLVM_HAVE_TF_AOT OR DEFINED LLVM_HAVE_TF_API)
set(MLPolicySources ${CommonMLSources})
if (DEFINED LLVM_HAVE_TF_AOT)
include(TensorFlowCompile)
tfcompile(models/inliner serve action InlinerSizeModel llvm::InlinerSizeModel)
list(APPEND ReleaseModeMLSources
list(APPEND GeneratedMLSources
$<TARGET_OBJECTS:tf_xla_runtime_objects>
${GENERATED_OBJS}
)
LIST(APPEND MLPolicySources ${ReleaseModeMLSources})
else()
LIST(APPEND LLVM_OPTIONAL_SOURCES ${ReleaseModeMLSources})
endif()
if (DEFINED LLVM_HAVE_TF_API)
LIST(APPEND MLPolicySources ${DevelopmentModeMLSources})
LIST(APPEND MLLinkDeps ${tensorflow_c_api})
else()
LIST(APPEND LLVM_OPTIONAL_SOURCES ${DevelopmentModeMLSources})
endif()
else()
LIST(APPEND LLVM_OPTIONAL_SOURCES
${CommonMLSources}
${DevelopmentModeMLSources}
${ReleaseModeMLSources}
)
endif()
add_llvm_component_library(LLVMAnalysis
AliasAnalysis.cpp
@ -64,6 +43,7 @@ add_llvm_component_library(LLVMAnalysis
DemandedBits.cpp
DependenceAnalysis.cpp
DependenceGraphBuilder.cpp
DevelopmentModeInlineAdvisor.cpp
DivergenceAnalysis.cpp
DomPrinter.cpp
DomTreeUpdater.cpp
@ -98,6 +78,7 @@ add_llvm_component_library(LLVMAnalysis
LoopUnrollAnalyzer.cpp
LoopInfo.cpp
LoopPass.cpp
MLInlineAdvisor.cpp
MemDepPrinter.cpp
MemDerefPrinter.cpp
MemoryBuiltins.cpp
@ -120,6 +101,7 @@ add_llvm_component_library(LLVMAnalysis
RegionInfo.cpp
RegionPass.cpp
RegionPrinter.cpp
ReleaseModeModelRunner.cpp
ScalarEvolution.cpp
ScalarEvolutionAliasAnalysis.cpp
ScalarEvolutionDivision.cpp
@ -128,6 +110,7 @@ add_llvm_component_library(LLVMAnalysis
StackSafetyAnalysis.cpp
SyncDependenceAnalysis.cpp
SyntheticCountsUtils.cpp
TFUtils.cpp
TargetLibraryInfo.cpp
TargetTransformInfo.cpp
Trace.cpp
@ -139,7 +122,7 @@ add_llvm_component_library(LLVMAnalysis
ValueTracking.cpp
VectorUtils.cpp
VFABIDemangling.cpp
${MLPolicySources}
${GeneratedMLSources}
ADDITIONAL_HEADER_DIRS
${LLVM_MAIN_INCLUDE_DIR}/llvm/Analysis

View File

@ -11,6 +11,9 @@
// loading of a model from a command line option.
//
//===----------------------------------------------------------------------===//
#include "llvm/Config/config.h"
#if defined(LLVM_HAVE_TF_API)
#include "llvm/Analysis/CallGraph.h"
#include "llvm/Analysis/InlineSizeEstimatorAnalysis.h"
#include "llvm/Analysis/MLInlineAdvisor.h"
@ -482,4 +485,5 @@ std::unique_ptr<InlineAdvisor> llvm::getDevelopmentModeAdvisor(
}
return std::make_unique<DevelopmentModeMLInlineAdvisor>(
M, MAM, std::move(Runner), GetDefaultAdvice, IsDoingInference);
}
}
#endif // defined(LLVM_HAVE_TF_API)

View File

@ -11,6 +11,9 @@
// 'release' mode) or a runtime-loaded model (the 'development' case).
//
//===----------------------------------------------------------------------===//
#include "llvm/Config/config.h"
#if defined(LLVM_HAVE_TF_AOT) || defined(LLVM_HAVE_TF_API)
#include <limits>
#include <unordered_map>
#include <unordered_set>
@ -298,4 +301,5 @@ void MLInlineAdvice::recordUnattemptedInliningImpl() {
reportContextForRemark(R);
return R;
});
}
}
#endif // defined(LLVM_HAVE_TF_AOT) || defined(LLVM_HAVE_TF_API)

View File

@ -10,6 +10,8 @@
// Only inference is supported.
//
//===----------------------------------------------------------------------===//
#include "llvm/Config/config.h"
#if defined(LLVM_HAVE_TF_AOT)
#include "llvm/Analysis/InlineModelFeatureMaps.h"
#include "llvm/Analysis/MLInlineAdvisor.h"
@ -85,3 +87,4 @@ llvm::getReleaseModeAdvisor(Module &M, ModuleAnalysisManager &MAM) {
auto AOTRunner = std::make_unique<ReleaseModeModelRunner>(M.getContext());
return std::make_unique<MLInlineAdvisor>(M, MAM, std::move(AOTRunner));
}
#endif // defined(LLVM_HAVE_TF_AOT)

View File

@ -10,6 +10,8 @@
// This file implements utilities for interfacing with tensorflow C APIs.
//
//===----------------------------------------------------------------------===//
#include "llvm/Config/config.h"
#if defined(LLVM_HAVE_TF_API)
#include "llvm/Analysis/Utils/TFUtils.h"
#include "llvm/ADT/Twine.h"
@ -287,3 +289,4 @@ template <> int TFModelEvaluator::getModelTypeIndex<uint64_t>() {
TFModelEvaluator::EvaluationResult::~EvaluationResult() {}
TFModelEvaluator::~TFModelEvaluator() {}
#endif // defined(LLVM_HAVE_TF_API)

View File

@ -124,6 +124,7 @@ write_cmake_config("config") {
"RETSIGTYPE=void",
"LLVM_GISEL_COV_ENABLED=",
"LLVM_GISEL_COV_PREFIX=",
"LLVM_HAVE_TF_AOT=",
"LLVM_WITH_Z3=",
# FIXME: Set to 1 on mac once the 10.14 SDK is in common use.

View File

@ -41,6 +41,7 @@ static_library("Analysis") {
"DemandedBits.cpp",
"DependenceAnalysis.cpp",
"DependenceGraphBuilder.cpp",
"DevelopmentModeInlineAdvisor.cpp",
"DivergenceAnalysis.cpp",
"DomPrinter.cpp",
"DomTreeUpdater.cpp",
@ -75,6 +76,7 @@ static_library("Analysis") {
"LoopNestAnalysis.cpp",
"LoopPass.cpp",
"LoopUnrollAnalyzer.cpp",
"MLInlineAdvisor.cpp",
"MemDepPrinter.cpp",
"MemDerefPrinter.cpp",
"MemoryBuiltins.cpp",
@ -97,6 +99,7 @@ static_library("Analysis") {
"RegionInfo.cpp",
"RegionPass.cpp",
"RegionPrinter.cpp",
"ReleaseModeModelRunner.cpp",
"ScalarEvolution.cpp",
"ScalarEvolutionAliasAnalysis.cpp",
"ScalarEvolutionDivision.cpp",
@ -106,6 +109,7 @@ static_library("Analysis") {
"StackSafetyAnalysis.cpp",
"SyncDependenceAnalysis.cpp",
"SyntheticCountsUtils.cpp",
"TFUtils.cpp",
"TargetLibraryInfo.cpp",
"TargetTransformInfo.cpp",
"Trace.cpp",
@ -118,10 +122,3 @@ static_library("Analysis") {
"VectorUtils.cpp",
]
}
static_library("TensorFlow") {
sources = [
"DevelopmentModeInlineAdvisor.cpp",
"TFUtils.cpp",
]
}