aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2017-07-14 22:23:19 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-07-14 22:23:19 +0000
commit3ef47148a4e33e8831f7c832faa2b69f42b3eac6 (patch)
tree339a2d27fea731c53a68df652582fe0635ce7c98
parent2b053515bd32557b3902faf0073e9a0901893552 (diff)
parent4cac9aaa7b044008dc4412f29d566d598512949c (diff)
downloadprebuilts_clang_host_linux-x86-3ef47148a4e33e8831f7c832faa2b69f42b3eac6.tar.gz
prebuilts_clang_host_linux-x86-3ef47148a4e33e8831f7c832faa2b69f42b3eac6.tar.bz2
prebuilts_clang_host_linux-x86-3ef47148a4e33e8831f7c832faa2b69f42b3eac6.zip
libclang_rt* libs are now specified in Android.bp am: 1050067936 am: c3a963bdbc
am: 4cac9aaa7b Change-Id: I031da75ef90373d85d7569363b241b7eeb0cffd4
-rw-r--r--Android.bp132
-rw-r--r--Android.mk132
-rw-r--r--soong/Android.bp6
-rw-r--r--soong/clangprebuilts.go (renamed from soong/libfuzzer.go)113
4 files changed, 217 insertions, 166 deletions
diff --git a/Android.bp b/Android.bp
index 9981e4d0..a46a7653 100644
--- a/Android.bp
+++ b/Android.bp
@@ -21,6 +21,138 @@ libfuzzer_prebuilt_library_static {
},
}
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-arm-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-aarch64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-mips-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-mips64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-i686-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-x86_64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86_64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-arm-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-aarch64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-mips-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-mips64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-i686-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-x86_64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86_64: {
+ enabled: true,
+ },
+ },
+}
+
subdirs = [
"soong",
]
diff --git a/Android.mk b/Android.mk
index 89758b2c..1cf3f5c2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,138 +22,6 @@ ifneq (true,$(FORCE_BUILD_SANITIZER_SHARED_OBJECTS))
libclang_dir := $(LLVM_PREBUILTS_VERSION)/lib64/clang/$(LLVM_RELEASE_VERSION)
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-arm-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-aarch64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-i686-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-mips-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-mips64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-arm-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-aarch64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-i686-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-x86_64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86_64
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-mips-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-mips64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
# Also build/install the newest asan_test for each arch
# We rename it to asan-test for now to avoid duplicate definitions.
diff --git a/soong/Android.bp b/soong/Android.bp
index 0bb87a89..ab020a59 100644
--- a/soong/Android.bp
+++ b/soong/Android.bp
@@ -15,8 +15,8 @@
//
bootstrap_go_package {
- name: "soong-libfuzzer",
- pkgPath: "android/soong/prebuilts/clang/host/linux-x86",
+ name: "soong-clang-prebuilts",
+ pkgPath: "android/soong/prebuilts/clang/host/linux-x86/clangprebuilts",
deps: [
"blueprint",
"soong-android",
@@ -24,7 +24,7 @@ bootstrap_go_package {
"soong-cc-config"
],
srcs: [
- "libfuzzer.go",
+ "clangprebuilts.go",
],
pluginFor: ["soong_build"],
}
diff --git a/soong/libfuzzer.go b/soong/clangprebuilts.go
index b6cc70aa..71e0b50a 100644
--- a/soong/libfuzzer.go
+++ b/soong/clangprebuilts.go
@@ -14,11 +14,12 @@
// limitations under the License.
//
-package libfuzzer
+package clangprebuilts
import (
"path"
"path/filepath"
+ "strings"
"github.com/google/blueprint/proptools"
@@ -27,13 +28,48 @@ import (
"android/soong/cc/config"
)
-// This module is used to generate libfuzzer static libraries. When
+// This module is used to generate libfuzzer static libraries and libclang_rt.* shared libraries. When
// LLVM_PREBUILTS_VERSION and LLVM_RELEASE_VERSION are set, the library will
// generated from the given path.
func init() {
android.RegisterModuleType("libfuzzer_prebuilt_library_static",
libfuzzerPrebuiltLibraryStaticFactory)
+ android.RegisterModuleType("libclang_rt_prebuilt_library_shared",
+ libClangRtPrebuiltLibrarySharedFactory)
+}
+
+func getClangDirs(ctx android.LoadHookContext) (libDir string, headerDir string) {
+ clangDir := path.Join(
+ "./",
+ ctx.AConfig().GetenvWithDefault("LLVM_PREBUILTS_VERSION", config.ClangDefaultVersion),
+ )
+ headerDir = path.Join(clangDir, "prebuilt_include", "llvm", "lib", "Fuzzer")
+ releaseVersion := ctx.AConfig().GetenvWithDefault("LLVM_RELEASE_VERSION",
+ config.ClangDefaultShortVersion)
+ libDir = path.Join(clangDir, "lib64", "clang", releaseVersion, "lib", "linux")
+ return
+}
+
+type archProps struct {
+ Android_arm struct {
+ Srcs []string
+ }
+ Android_arm64 struct {
+ Srcs []string
+ }
+ Android_mips struct {
+ Srcs []string
+ }
+ Android_mips64 struct {
+ Srcs []string
+ }
+ Android_x86 struct {
+ Srcs []string
+ }
+ Android_x86_64 struct {
+ Srcs []string
+ }
}
func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
@@ -52,38 +88,12 @@ func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
}
}
- clangDir := path.Join(
- "./",
- ctx.AConfig().GetenvWithDefault("LLVM_PREBUILTS_VERSION", config.ClangDefaultVersion),
- )
- headerDir := path.Join(clangDir, "prebuilt_include", "llvm", "lib", "Fuzzer")
- releaseVersion := ctx.AConfig().GetenvWithDefault("LLVM_RELEASE_VERSION",
- config.ClangDefaultShortVersion)
- libDir := path.Join(clangDir, "lib64", "clang", releaseVersion, "lib", "linux")
+ libDir, headerDir := getClangDirs(ctx)
type props struct {
- Enabled *bool
+ Enabled *bool
Export_include_dirs []string
- Target struct {
- Android_arm struct {
- Srcs []string
- }
- Android_arm64 struct {
- Srcs []string
- }
- Android_mips struct {
- Srcs []string
- }
- Android_mips64 struct {
- Srcs []string
- }
- Android_x86 struct {
- Srcs []string
- }
- Android_x86_64 struct {
- Srcs []string
- }
- }
+ Target archProps
}
p := &props{}
@@ -99,8 +109,49 @@ func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
ctx.AppendProperties(p)
}
+func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext) {
+ if ctx.AConfig().IsEnvTrue("FORCE_BUILD_SANITIZER_SHARED_OBJECTS") {
+ return
+ }
+
+ libDir, _ := getClangDirs(ctx)
+
+ type props struct {
+ Srcs []string
+ System_shared_libs []string
+ Sanitize struct {
+ Never bool
+ }
+ Strip struct {
+ None bool
+ }
+ Pack_relocations *bool
+ Stl *string
+ }
+
+ p := &props{}
+
+ name := strings.Replace(ctx.ModuleName(), "prebuilt_", "", 1)
+
+ p.Srcs = []string{path.Join(libDir, name+".so")}
+ p.System_shared_libs = []string{}
+ p.Sanitize.Never = true
+ p.Strip.None = true
+ disable := false
+ p.Pack_relocations = &disable
+ none := "none"
+ p.Stl = &none
+ ctx.AppendProperties(p)
+}
+
func libfuzzerPrebuiltLibraryStaticFactory() android.Module {
module, _ := cc.NewPrebuiltStaticLibrary(android.HostAndDeviceSupported)
android.AddLoadHook(module, libfuzzerPrebuiltLibraryStatic)
return module.Init()
}
+
+func libClangRtPrebuiltLibrarySharedFactory() android.Module {
+ module, _ := cc.NewPrebuiltSharedLibrary(android.DeviceSupported)
+ android.AddLoadHook(module, libClangRtPrebuiltLibraryShared)
+ return module.Init()
+}