diff options
author | Jiyong Park <jiyong@google.com> | 2017-07-14 22:23:19 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-07-14 22:23:19 +0000 |
commit | 3ef47148a4e33e8831f7c832faa2b69f42b3eac6 (patch) | |
tree | 339a2d27fea731c53a68df652582fe0635ce7c98 | |
parent | 2b053515bd32557b3902faf0073e9a0901893552 (diff) | |
parent | 4cac9aaa7b044008dc4412f29d566d598512949c (diff) | |
download | prebuilts_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.bp | 132 | ||||
-rw-r--r-- | Android.mk | 132 | ||||
-rw-r--r-- | soong/Android.bp | 6 | ||||
-rw-r--r-- | soong/clangprebuilts.go (renamed from soong/libfuzzer.go) | 113 |
4 files changed, 217 insertions, 166 deletions
@@ -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", ] @@ -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() +} |