1// Copyright (C) 2018 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14// 15 16package { 17 default_applicable_licenses: ["Android-Apache-2.0"], 18} 19 20python_binary_host { 21 name: "gen_asm_x86", 22 main: "gen_asm_x86.py", 23 srcs: ["gen_asm_x86.py"], 24 libs: ["asm_defs_lib"], 25} 26 27python_binary_host { 28 name: "gen_asm_tests_x86", 29 main: "gen_asm_tests_x86.py", 30 srcs: [ 31 "gen_asm_tests_x86.py", 32 "gen_asm_x86.py", 33 ], 34 libs: ["asm_defs_lib"], 35} 36 37python_library_host { 38 name: "asm_defs_lib", 39 srcs: ["asm_defs.py"], 40} 41 42filegroup { 43 name: "libberberis_assembler_gen_inputs_x86_32", 44 srcs: [ 45 "instructions/insn_def_x86.json", 46 "instructions/insn_def_x86_32.json", 47 ], 48} 49 50filegroup { 51 name: "libberberis_assembler_gen_inputs_x86_64", 52 srcs: [ 53 "instructions/insn_def_x86.json", 54 "instructions/insn_def_x86_64.json", 55 ], 56} 57 58genrule { 59 name: "libberberis_assembler_gen_public_headers_x86_32", 60 out: [ 61 "berberis/assembler/gen_assembler_common_x86-inl.h", 62 "berberis/assembler/gen_assembler_x86_32-inl.h", 63 ], 64 srcs: [":libberberis_assembler_gen_inputs_x86_32"], 65 tools: ["gen_asm_x86"], 66 cmd: "$(location gen_asm_x86) --binary-assembler $(out) $(in)", 67} 68 69genrule { 70 name: "libberberis_assembler_gen_public_headers_x86_64", 71 out: [ 72 "berberis/assembler/gen_assembler_common_x86-inl.h", 73 "berberis/assembler/gen_assembler_x86_64-inl.h", 74 ], 75 srcs: [":libberberis_assembler_gen_inputs_x86_64"], 76 tools: ["gen_asm_x86"], 77 cmd: "$(location gen_asm_x86) --binary-assembler $(out) $(in)", 78} 79 80cc_library_static { 81 name: "libberberis_assembler", 82 defaults: ["berberis_defaults"], 83 host_supported: true, 84 srcs: [ 85 "machine_code.cc", 86 ], 87 generated_headers: [ 88 "libberberis_assembler_gen_public_headers_x86_32", 89 "libberberis_assembler_gen_public_headers_x86_64", 90 ], 91 export_generated_headers: [ 92 "libberberis_assembler_gen_public_headers_x86_32", 93 "libberberis_assembler_gen_public_headers_x86_64", 94 ], 95 static_libs: ["libberberis_base"], 96 export_include_dirs: ["include"], 97 export_static_lib_headers: ["libberberis_base"], 98} 99 100cc_genrule { 101 name: "libberberis_assembler_test_gen_sources", 102 host_supported: true, 103 out: [ 104 "gen_asm_tests_ref.S", 105 "gen_asm_tests_test.cc", 106 ], 107 arch: { 108 x86: { 109 srcs: [":libberberis_assembler_gen_inputs_x86_32"], 110 }, 111 x86_64: { 112 srcs: [":libberberis_assembler_gen_inputs_x86_64"], 113 }, 114 }, 115 tools: ["gen_asm_tests_x86"], 116 cmd: "$(location gen_asm_tests_x86) $(out) $(in) --fast", 117} 118 119cc_test_library { 120 name: "libberberis_assembler_unit_tests", 121 defaults: ["berberis_defaults"], 122 host_supported: true, 123 header_libs: ["berberis_test_utils_headers"], 124 srcs: [ 125 "assembler_test.cc", 126 "machine_code_test.cc", 127 ], 128 generated_sources: ["libberberis_assembler_test_gen_sources"], 129 static_libs: [ 130 "libberberis_assembler", 131 "libberberis_base", 132 ], 133 shared: { 134 enabled: false, 135 }, 136} 137