Chromium Code Reviews| Index: tools/relocation_packer/BUILD.gn |
| diff --git a/tools/relocation_packer/BUILD.gn b/tools/relocation_packer/BUILD.gn |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b31613333fcafee8fd2973638b1e3707cd5874fe |
| --- /dev/null |
| +++ b/tools/relocation_packer/BUILD.gn |
| @@ -0,0 +1,132 @@ |
| +# Copyright 2014 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +target_define = "TARGET_UNSUPPORTED" |
| +if (target_arch == "arm") { |
| + target_define = "TARGET_ARM" |
| +} else if (target_arch == "arm64") { |
| + target_define = "TARGET_ARM64" |
| +} |
|
simonb (inactive)
2014/10/17 12:30:20
You could 'else assert...' here, I think, if you w
cjhopman
2014/10/17 20:55:19
Done.
|
| + |
| +if (current_toolchain == host_toolchain) { |
| + # GYP: //tools/relocation_packer/relocation_packer.gyp:lib_relocation_packer |
| + source_set("lib_relocation_packer") { |
| + defines = [ target_define ] |
| + deps = [ "//third_party/elfutils:libelf" ] |
| + configs -= [ "//build/config/compiler:chromium_code" ] |
| + configs += [ "//build/config/compiler:no_chromium_code" ] |
| + sources = [ |
| + "src/debug.cc", |
| + "src/delta_encoder.cc", |
| + "src/elf_file.cc", |
| + "src/leb128.cc", |
| + "src/packer.cc", |
| + "src/sleb128.cc", |
| + "src/run_length_encoder.cc", |
| + ] |
| + } |
| + |
| + # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer |
| + executable("relocation_packer") { |
| + defines = [ target_define ] |
| + deps = [ |
| + ":lib_relocation_packer", |
| + "//third_party/elfutils:libelf", |
| + ] |
| + sources = [ "src/main.cc" ] |
| + } |
| + |
| + # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer_unittests |
| + test("relocation_packer_unittests") { |
| + sources = [ |
| + "src/debug_unittest.cc", |
| + "src/delta_encoder_unittest.cc", |
| + "src/elf_file_unittest.cc", |
| + "src/leb128_unittest.cc", |
| + "src/packer_unittest.cc", |
| + "src/sleb128_unittest.cc", |
| + "src/run_length_encoder_unittest.cc", |
| + "src/run_all_unittests.cc", |
| + ] |
| + rebased_test_data = rebase_path("test_data", root_build_dir) |
| + data = [ |
| + "test_data/elf_file_unittest_relocs_arm32.so", |
| + "test_data/elf_file_unittest_relocs_arm32_packed.so", |
| + "test_data/elf_file_unittest_relocs_arm64.so", |
| + "test_data/elf_file_unittest_relocs_arm64_packed.so", |
| + ] |
| + defines = [ |
| + target_define, |
| + "INTERMEDIATE_DIR=\"$rebased_test_data\"" |
| + ] |
| + include_dirs = [ "//" ] |
| + deps = [ |
| + ":lib_relocation_packer", |
| + ":relocation_packer_test_data", |
| + "//testing:gtest", |
| + ] |
| + } |
| +} |
| + |
| +if (current_toolchain == default_toolchain && |
| + (target_arch == "arm" || target_arch == "arm64")) { |
| + # Targets to build test data. These participate only in building test |
| + # data for use with elf_file_unittest.cc, and are not part of the main |
| + # relocation packer build. Unit test data files are checked in to the |
| + # source tree as 'golden' data, and are not generated 'on the fly' by |
| + # the build. |
| + # |
| + # See test_data/generate_elf_file_unittest_relocs.sh for instructions. |
| + |
| + # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer_test_data |
| + shared_library("relocation_packer_test_data") { |
| + cflags = [ "-O0", "-g0" ] |
| + sources = [ |
| + "test_data/elf_file_unittest_relocs.cc" |
| + ] |
| + } |
| + |
| + # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer_unittests_test_data |
| + action("relocation_packer_unittests_test_data") { |
| + script = "test_data/generate_elf_file_unittest_relocs.py" |
| + test_file = "$root_build_dir/librelocation_packer_test_data.so" |
| + if (target_arch == "arm") { |
| + added_section = ".android.rel.dyn" |
| + packed_output = "elf_file_unittest_relocs_arm32_packed.so" |
| + unpacked_output = "elf_file_unittest_relocs_arm32.so" |
| + } else if (target_arch == "arm64") { |
| + added_section = ".android.rela.dyn" |
| + packed_output = "elf_file_unittest_relocs_arm64_packed.so" |
| + unpacked_output = "elf_file_unittest_relocs_arm64.so" |
| + } else { |
| + assert(false, "Unsupported target arch for relocation packer") |
| + } |
| + |
| + packed_output = "$root_build_dir/$packed_output" |
| + unpacked_output = "$root_build_dir/$unpacked_output" |
| + |
| + inputs = [ |
| + test_file, |
| + ] |
| + |
| + deps = [ |
| + ":relocation_packer_test_data", |
| + ":relocation_packer($host_toolchain)", |
| + ] |
| + |
| + outputs = [ |
| + packed_output, |
| + unpacked_output, |
| + ] |
| + |
| + args = [ |
| + "--android-pack-relocations", rebase_path(relocation_packer_exe, root_build_dir), |
| + "--android-objcopy", rebase_path(android_objcopy, root_build_dir), |
| + "--added-section=$added_section", |
| + "--test-file", rebase_path(test_file, root_build_dir), |
| + "--packed-output", rebase_path(packed_output, root_build_dir), |
| + "--unpacked-output", rebase_path(unpacked_output, root_build_dir), |
| + ] |
| + } |
| +} |