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", 22 main: "gen_asm.py", 23 srcs: ["gen_asm.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.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_riscv32", 44 srcs: [ 45 "instructions/insn_def_riscv.json", 46 "instructions/insn_def_rv32.json", 47 ], 48} 49 50filegroup { 51 name: "libberberis_assembler_gen_inputs_riscv64", 52 srcs: [ 53 "instructions/insn_def_riscv.json", 54 "instructions/insn_def_rv64.json", 55 ], 56} 57 58filegroup { 59 name: "libberberis_assembler_gen_inputs_x86_32", 60 srcs: [ 61 "instructions/insn_def_x86.json", 62 "instructions/insn_def_x86_32.json", 63 ], 64} 65 66filegroup { 67 name: "libberberis_assembler_gen_inputs_x86_64", 68 srcs: [ 69 "instructions/insn_def_x86.json", 70 "instructions/insn_def_x86_64.json", 71 ], 72} 73 74genrule { 75 name: "libberberis_assembler_gen_public_headers_riscv32", 76 out: [ 77 "berberis/assembler/gen_assembler_common_riscv-inl.h", 78 "berberis/assembler/gen_assembler_rv32-inl.h", 79 ], 80 srcs: [":libberberis_assembler_gen_inputs_riscv32"], 81 tools: ["gen_asm"], 82 cmd: "$(location gen_asm) --binary-assembler $(out) $(in)", 83} 84 85genrule { 86 name: "libberberis_assembler_gen_public_headers_riscv64", 87 out: [ 88 "berberis/assembler/gen_assembler_common_riscv-inl.h", 89 "berberis/assembler/gen_assembler_rv64-inl.h", 90 ], 91 srcs: [":libberberis_assembler_gen_inputs_riscv64"], 92 tools: ["gen_asm"], 93 cmd: "$(location gen_asm) --binary-assembler $(out) $(in)", 94} 95 96genrule { 97 name: "libberberis_assembler_gen_public_headers_x86_32", 98 out: [ 99 "berberis/assembler/gen_assembler_x86_32_and_x86_64-inl.h", 100 "berberis/assembler/gen_assembler_x86_32-inl.h", 101 ], 102 srcs: [":libberberis_assembler_gen_inputs_x86_32"], 103 tools: ["gen_asm"], 104 cmd: "$(location gen_asm) --binary-assembler $(out) $(in)", 105} 106 107genrule { 108 name: "libberberis_assembler_gen_public_headers_x86_64", 109 out: [ 110 "berberis/assembler/gen_assembler_x86_32_and_x86_64-inl.h", 111 "berberis/assembler/gen_assembler_x86_64-inl.h", 112 ], 113 srcs: [":libberberis_assembler_gen_inputs_x86_64"], 114 tools: ["gen_asm"], 115 cmd: "$(location gen_asm) --binary-assembler $(out) $(in)", 116} 117 118cc_library_headers { 119 name: "libberberis_assembler_headers", 120 defaults: ["berberis_all_hosts_defaults"], 121 host_supported: true, 122 header_libs: ["libberberis_base_headers"], 123 export_header_lib_headers: ["libberberis_base_headers"], 124 generated_headers: [ 125 "libberberis_assembler_gen_public_headers_riscv32", 126 "libberberis_assembler_gen_public_headers_riscv64", 127 "libberberis_assembler_gen_public_headers_x86_32", 128 "libberberis_assembler_gen_public_headers_x86_64", 129 ], 130 export_generated_headers: [ 131 "libberberis_assembler_gen_public_headers_riscv32", 132 "libberberis_assembler_gen_public_headers_riscv64", 133 "libberberis_assembler_gen_public_headers_x86_32", 134 "libberberis_assembler_gen_public_headers_x86_64", 135 ], 136 export_include_dirs: ["include"], 137} 138 139cc_library_static { 140 name: "libberberis_assembler", 141 defaults: ["berberis_defaults"], 142 host_supported: true, 143 srcs: [ 144 "machine_code.cc", 145 ], 146 header_libs: ["libberberis_assembler_headers"], 147 export_header_lib_headers: ["libberberis_assembler_headers"], 148} 149 150cc_genrule { 151 name: "libberberis_assembler_test_gen_sources", 152 host_supported: true, 153 out: [ 154 "gen_asm_tests_ref.S", 155 "gen_asm_tests_test.cc", 156 ], 157 arch: { 158 x86: { 159 srcs: [":libberberis_assembler_gen_inputs_x86_32"], 160 }, 161 x86_64: { 162 srcs: [":libberberis_assembler_gen_inputs_x86_64"], 163 }, 164 }, 165 tools: ["gen_asm_tests_x86"], 166 cmd: "$(location gen_asm_tests_x86) $(out) $(in) --fast", 167} 168 169cc_test_library { 170 name: "libberberis_assembler_unit_tests", 171 defaults: ["berberis_defaults"], 172 host_supported: true, 173 header_libs: ["berberis_test_utils_headers"], 174 srcs: [ 175 "assembler_test.cc", 176 "immediates_test.cc", 177 "machine_code_test.cc", 178 ], 179 generated_sources: ["libberberis_assembler_test_gen_sources"], 180 static_libs: [ 181 "libberberis_assembler", 182 "libberberis_base", 183 ], 184 shared: { 185 enabled: false, 186 }, 187} 188