Home | History | Annotate | Download | only in spirit
      1 //
      2 // Copyright (C) 2017 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 cc_defaults {
     18     name: "spirit_defaults",
     19 
     20     cflags: [
     21         "-Wall",
     22         "-Werror",
     23     ],
     24     target: {
     25         host: {
     26             compile_multilib: "first",
     27         },
     28     },
     29     product_variables: {
     30         pdk: {
     31             enabled: false,
     32         },
     33         unbundled_build: {
     34             enabled: false,
     35         },
     36     },
     37 }
     38 
     39 python_binary_host {
     40     name: "libspirit_generate_py",
     41     main: "generate.py",
     42     srcs: ["generate.py"],
     43     version: {
     44         py2: {
     45             enabled: true,
     46             embedded_launcher: true,
     47         },
     48         py3: {
     49             enabled: false,
     50         },
     51     },
     52 }
     53 
     54 genrule {
     55     name: "libspirit_gen",
     56     tools: ["libspirit_generate_py"],
     57     cmd: "$(location libspirit_generate_py) $(location :spirv.core.grammar.json-1.1) " +
     58         "--instructions=$(location instructions_generated.h) " +
     59         "--types=$(location types_generated.h) " +
     60         "--opcodes=$(location opcodes_generated.h) " +
     61         "--instruction_dispatches=$(location instruction_dispatches_generated.h) " +
     62         "--enum_dispatches=$(location enum_dispatches_generated.h) " +
     63         "--type_inst_dispatches=$(location type_inst_dispatches_generated.h) " +
     64         "--const_inst_dispatches=$(location const_inst_dispatches_generated.h) " +
     65         "--factory_methods=$(location factory_methods_generated.h)",
     66     srcs: [":spirv.core.grammar.json-1.1"],
     67     out: [
     68         "instructions_generated.h",
     69         "types_generated.h",
     70         "opcodes_generated.h",
     71         "instruction_dispatches_generated.h",
     72         "enum_dispatches_generated.h",
     73         "type_inst_dispatches_generated.h",
     74         "const_inst_dispatches_generated.h",
     75         "factory_methods_generated.h",
     76     ],
     77 }
     78 
     79 //=====================================================================
     80 // Host and device shared library libspirit.so
     81 //=====================================================================
     82 cc_library_shared {
     83     name: "libspirit",
     84     defaults: ["spirit_defaults"],
     85     host_supported: true,
     86 
     87     srcs: [
     88         "builder.cpp",
     89         "entity.cpp",
     90         "instructions.cpp",
     91         "module.cpp",
     92         "pass.cpp",
     93         "pass_queue.cpp",
     94         "transformer.cpp",
     95         "visitor.cpp",
     96         "word_stream.cpp",
     97         "word_stream_impl.cpp",
     98     ],
     99 
    100     generated_headers: ["libspirit_gen"],
    101     export_generated_headers: ["libspirit_gen"],
    102 
    103     export_include_dirs: ["."],
    104 
    105     target: {
    106         android: {
    107             cflags: ["-Wno-error=non-virtual-dtor"],
    108         },
    109     },
    110 }
    111 
    112 //=====================================================================
    113 // Tests for host module word_stream
    114 //=====================================================================
    115 cc_test_host {
    116     name: "word_stream_test",
    117     defaults: ["spirit_defaults"],
    118     srcs: [
    119         "word_stream.cpp",
    120         "word_stream_impl.cpp",
    121         "word_stream_test.cpp",
    122     ],
    123     generated_headers: ["libspirit_gen"],
    124 }
    125 
    126 //=====================================================================
    127 // Tests for host module instructions
    128 //=====================================================================
    129 
    130 cc_test_host {
    131     name: "instructions_test",
    132     defaults: ["spirit_defaults"],
    133     srcs: [
    134         "entity.cpp",
    135         "instructions.cpp",
    136         "instructions_test.cpp",
    137         "visitor.cpp",
    138         "word_stream.cpp",
    139         "word_stream_impl.cpp",
    140     ],
    141     generated_headers: ["libspirit_gen"],
    142 }
    143 
    144 //=====================================================================
    145 // Tests for host module pass queue
    146 //=====================================================================
    147 
    148 cc_test_host {
    149     name: "pass_queue_test",
    150     defaults: ["spirit_defaults"],
    151     srcs: [
    152         "pass.cpp",
    153         "pass_queue.cpp",
    154         "pass_queue_test.cpp",
    155     ],
    156     shared_libs: ["libspirit"],
    157 }
    158 
    159 //=====================================================================
    160 // Tests for host shared library
    161 //=====================================================================
    162 
    163 cc_test_host {
    164     name: "libspirit_test",
    165     defaults: ["spirit_defaults"],
    166     srcs: [
    167         "builder_test.cpp",
    168         "module_test.cpp",
    169         "transformer_test.cpp",
    170     ],
    171     shared_libs: ["libspirit"],
    172 }
    173