Android: Record use of C++ by static libs in exported Android.mk files
When a `PREBUILT_STATIC_LIBRARY` uses C++ in its sources then the `.a` file will have a link-time dependency on the C++ runtime libraries. Android NDK r14 will add a way to give this information to the NDK build system by adding a `LOCAL_HAS_CPP` setting to the `Android.mk` file. Add this for exported static libraries that use C++.
This commit is contained in:
parent
b99bbfe88d
commit
dda6775c94
|
@ -9,6 +9,8 @@
|
|||
#include "cmMakefile.h"
|
||||
#include "cmTargetExport.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
cmExportBuildAndroidMKGenerator::cmExportBuildAndroidMKGenerator()
|
||||
{
|
||||
this->LG = CM_NULLPTR;
|
||||
|
@ -164,6 +166,16 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell the NDK build system if prebuilt static libraries use C++.
|
||||
if (target->GetType() == cmState::STATIC_LIBRARY) {
|
||||
cmLinkImplementation const* li = target->GetLinkImplementation(config);
|
||||
if (std::find(li->Languages.begin(), li->Languages.end(), "CXX") !=
|
||||
li->Languages.end()) {
|
||||
os << "LOCAL_HAS_CPP := true\n";
|
||||
}
|
||||
}
|
||||
|
||||
switch (target->GetType()) {
|
||||
case cmState::SHARED_LIBRARY:
|
||||
case cmState::MODULE_LIBRARY:
|
||||
|
|
|
@ -2,7 +2,7 @@ project(build)
|
|||
set(CMAKE_BUILD_TYPE Debug)
|
||||
add_library(foo foo.cxx)
|
||||
add_library(car foo.cxx)
|
||||
add_library(bar foo.cxx)
|
||||
add_library(bar bar.c)
|
||||
add_library(dog foo.cxx)
|
||||
target_link_libraries(foo car bar dog debug -lm)
|
||||
export(TARGETS bar dog car foo ANDROID_MK
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
void bar(void)
|
||||
{
|
||||
}
|
|
@ -7,11 +7,13 @@ include.*PREBUILT_STATIC_LIBRARY.*
|
|||
include.*CLEAR_VARS.*
|
||||
LOCAL_MODULE.*dog
|
||||
LOCAL_SRC_FILES.*.*dog.*
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
.*
|
||||
include.*CLEAR_VARS.*
|
||||
LOCAL_MODULE.*car
|
||||
LOCAL_SRC_FILES.*.*car.*
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
.*
|
||||
include.*CLEAR_VARS.*
|
||||
|
@ -20,4 +22,5 @@ LOCAL_SRC_FILES.*.*foo.*
|
|||
LOCAL_CPP_FEATURES.*rtti exceptions
|
||||
LOCAL_STATIC_LIBRARIES.*car bar dog
|
||||
LOCAL_EXPORT_LDLIBS := -lm
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
|
|
|
@ -9,11 +9,13 @@ include.*PREBUILT_STATIC_LIBRARY.*
|
|||
include.*CLEAR_VARS.
|
||||
LOCAL_MODULE.*dog
|
||||
LOCAL_SRC_FILES.*_IMPORT_PREFIX./lib.*dog.*
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
|
||||
include.*CLEAR_VARS.*
|
||||
LOCAL_MODULE.*car
|
||||
LOCAL_SRC_FILES.*_IMPORT_PREFIX./lib.*car.*
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
|
||||
include.*CLEAR_VARS.*
|
||||
|
@ -22,4 +24,5 @@ LOCAL_SRC_FILES.*_IMPORT_PREFIX\)/lib.*foo.*
|
|||
LOCAL_CPP_FEATURES.*rtti exceptions
|
||||
LOCAL_STATIC_LIBRARIES.*car bar dog
|
||||
LOCAL_EXPORT_LDLIBS := -lm
|
||||
LOCAL_HAS_CPP := true
|
||||
include.*PREBUILT_STATIC_LIBRARY.*
|
||||
|
|
Loading…
Reference in New Issue