• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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