mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 14:23:10 -05:00
Merge branch 'export-android-mk' into release-3.11
Merge-request: !1766
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <utility>
|
||||
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmGeneratorExpressionDAGChecker.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
#include "cmLinkItem.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
@@ -101,12 +102,21 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
|
||||
os << "LOCAL_CPP_FEATURES += ";
|
||||
os << (property.second) << "\n";
|
||||
} else if (property.first == "INTERFACE_LINK_LIBRARIES") {
|
||||
// evaluate any generator expressions with the current
|
||||
// build type of the makefile
|
||||
cmGeneratorExpression ge;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
target->GetName(), "INTERFACE_LINK_LIBRARIES", nullptr, nullptr);
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(property.second);
|
||||
std::string evaluated = cge->Evaluate(
|
||||
target->GetLocalGenerator(), config, false, target, &dagChecker);
|
||||
// need to look at list in pi->second and see if static or shared
|
||||
// FindTargetToLink
|
||||
// target->GetLocalGenerator()->FindGeneratorTargetToUse()
|
||||
// then add to LOCAL_CPPFLAGS
|
||||
std::vector<std::string> libraries;
|
||||
cmSystemTools::ExpandListArgument(property.second, libraries);
|
||||
cmSystemTools::ExpandListArgument(evaluated, libraries);
|
||||
std::string staticLibs;
|
||||
std::string sharedLibs;
|
||||
std::string ldlibs;
|
||||
@@ -122,12 +132,6 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
|
||||
staticLibs += " " + lib;
|
||||
}
|
||||
} else {
|
||||
// evaluate any generator expressions with the current
|
||||
// build type of the makefile
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(lib);
|
||||
std::string evaluated =
|
||||
cge->Evaluate(target->GetLocalGenerator(), config);
|
||||
bool relpath = false;
|
||||
if (type == cmExportBuildAndroidMKGenerator::INSTALL) {
|
||||
relpath = lib.substr(0, 3) == "../";
|
||||
@@ -135,12 +139,12 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
|
||||
// check for full path or if it already has a -l, or
|
||||
// in the case of an install check for relative paths
|
||||
// if it is full or a link library then use string directly
|
||||
if (cmSystemTools::FileIsFullPath(evaluated) ||
|
||||
evaluated.substr(0, 2) == "-l" || relpath) {
|
||||
ldlibs += " " + evaluated;
|
||||
if (cmSystemTools::FileIsFullPath(lib) ||
|
||||
lib.substr(0, 2) == "-l" || relpath) {
|
||||
ldlibs += " " + lib;
|
||||
// if it is not a path and does not have a -l then add -l
|
||||
} else if (!evaluated.empty()) {
|
||||
ldlibs += " -l" + evaluated;
|
||||
} else if (!lib.empty()) {
|
||||
ldlibs += " -l" + lib;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ add_library(foo foo.cxx)
|
||||
add_library(car foo.cxx)
|
||||
add_library(bar bar.c)
|
||||
add_library(dog foo.cxx)
|
||||
target_link_libraries(foo car bar dog debug -lm)
|
||||
target_link_libraries(foo PRIVATE car bar dog debug -lm)
|
||||
export(TARGETS bar dog car foo ANDROID_MK
|
||||
${build_BINARY_DIR}/Android.mk)
|
||||
install(TARGETS bar dog car foo DESTINATION lib EXPORT myexp)
|
||||
|
||||
Reference in New Issue
Block a user