1*99e0aae7SDavid Rees# Copyright 2019 Google LLC 2*99e0aae7SDavid Rees# 3*99e0aae7SDavid Rees# Licensed under the Apache License, Version 2.0 (the "License"); 4*99e0aae7SDavid Rees# you may not use this file except in compliance with the License. 5*99e0aae7SDavid Rees# You may obtain a copy of the License at 6*99e0aae7SDavid Rees# 7*99e0aae7SDavid Rees# https://www.apache.org/licenses/LICENSE-2.0 8*99e0aae7SDavid Rees# 9*99e0aae7SDavid Rees# Unless required by applicable law or agreed to in writing, software 10*99e0aae7SDavid Rees# distributed under the License is distributed on an "AS IS" BASIS, 11*99e0aae7SDavid Rees# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*99e0aae7SDavid Rees# See the License for the specific language governing permissions and 13*99e0aae7SDavid Rees# limitations under the License. 14*99e0aae7SDavid Rees 15*99e0aae7SDavid Rees# Emboss C++ code generator. 16*99e0aae7SDavid Rees 17*99e0aae7SDavid Reesload("@rules_python//python:py_binary.bzl", "py_binary") 18*99e0aae7SDavid Reesload("@rules_python//python:py_library.bzl", "py_library") 19*99e0aae7SDavid Reesload("@rules_python//python:py_test.bzl", "py_test") 20*99e0aae7SDavid Reesload(":build_defs.bzl", "emboss_cc_test") 21*99e0aae7SDavid Rees 22*99e0aae7SDavid Reespackage( 23*99e0aae7SDavid Rees default_visibility = [ 24*99e0aae7SDavid Rees "//visibility:private", 25*99e0aae7SDavid Rees ], 26*99e0aae7SDavid Rees features = ["-layering_check"], 27*99e0aae7SDavid Rees) 28*99e0aae7SDavid Rees 29*99e0aae7SDavid Reespy_binary( 30*99e0aae7SDavid Rees name = "emboss_codegen_cpp", 31*99e0aae7SDavid Rees srcs = ["emboss_codegen_cpp.py"], 32*99e0aae7SDavid Rees python_version = "PY3", 33*99e0aae7SDavid Rees visibility = ["//visibility:public"], 34*99e0aae7SDavid Rees deps = [ 35*99e0aae7SDavid Rees ":header_generator", 36*99e0aae7SDavid Rees "//compiler/util:ir_data", 37*99e0aae7SDavid Rees ], 38*99e0aae7SDavid Rees) 39*99e0aae7SDavid Rees 40*99e0aae7SDavid Reespy_library( 41*99e0aae7SDavid Rees name = "attributes", 42*99e0aae7SDavid Rees srcs = ["attributes.py"], 43*99e0aae7SDavid Rees deps = [], 44*99e0aae7SDavid Rees) 45*99e0aae7SDavid Rees 46*99e0aae7SDavid Reespy_library( 47*99e0aae7SDavid Rees name = "header_generator", 48*99e0aae7SDavid Rees srcs = ["header_generator.py"], 49*99e0aae7SDavid Rees data = [ 50*99e0aae7SDavid Rees "generated_code_templates", 51*99e0aae7SDavid Rees ], 52*99e0aae7SDavid Rees deps = [ 53*99e0aae7SDavid Rees ":attributes", 54*99e0aae7SDavid Rees "//compiler/back_end/util:code_template", 55*99e0aae7SDavid Rees "//compiler/util:attribute_util", 56*99e0aae7SDavid Rees "//compiler/util:ir_data", 57*99e0aae7SDavid Rees "//compiler/util:ir_util", 58*99e0aae7SDavid Rees "//compiler/util:name_conversion", 59*99e0aae7SDavid Rees "//compiler/util:resources", 60*99e0aae7SDavid Rees ], 61*99e0aae7SDavid Rees) 62*99e0aae7SDavid Rees 63*99e0aae7SDavid Reespy_test( 64*99e0aae7SDavid Rees name = "header_generator_test", 65*99e0aae7SDavid Rees srcs = ["header_generator_test.py"], 66*99e0aae7SDavid Rees deps = [ 67*99e0aae7SDavid Rees ":header_generator", 68*99e0aae7SDavid Rees "//compiler/front_end:glue", 69*99e0aae7SDavid Rees "//compiler/util:test_util", 70*99e0aae7SDavid Rees ], 71*99e0aae7SDavid Rees) 72*99e0aae7SDavid Rees 73*99e0aae7SDavid Reesemboss_cc_test( 74*99e0aae7SDavid Rees name = "span_se_log_file_status_emb_generated_code_test", 75*99e0aae7SDavid Rees srcs = [ 76*99e0aae7SDavid Rees "testcode/read_log_file_status_test.cc", 77*99e0aae7SDavid Rees ], 78*99e0aae7SDavid Rees deps = [ 79*99e0aae7SDavid Rees "//testdata:span_se_log_file_status_emboss", 80*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 81*99e0aae7SDavid Rees ], 82*99e0aae7SDavid Rees) 83*99e0aae7SDavid Rees 84*99e0aae7SDavid Reesemboss_cc_test( 85*99e0aae7SDavid Rees name = "nested_structure_test", 86*99e0aae7SDavid Rees srcs = [ 87*99e0aae7SDavid Rees "testcode/nested_structure_test.cc", 88*99e0aae7SDavid Rees ], 89*99e0aae7SDavid Rees deps = [ 90*99e0aae7SDavid Rees "//testdata:nested_structure_emboss", 91*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 92*99e0aae7SDavid Rees ], 93*99e0aae7SDavid Rees) 94*99e0aae7SDavid Rees 95*99e0aae7SDavid Reesemboss_cc_test( 96*99e0aae7SDavid Rees name = "alignments_test", 97*99e0aae7SDavid Rees srcs = [ 98*99e0aae7SDavid Rees "testcode/alignments_test.cc", 99*99e0aae7SDavid Rees ], 100*99e0aae7SDavid Rees deps = [ 101*99e0aae7SDavid Rees "//testdata:alignments_emboss", 102*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 103*99e0aae7SDavid Rees ], 104*99e0aae7SDavid Rees) 105*99e0aae7SDavid Rees 106*99e0aae7SDavid Reesemboss_cc_test( 107*99e0aae7SDavid Rees name = "condition_test", 108*99e0aae7SDavid Rees srcs = [ 109*99e0aae7SDavid Rees "testcode/condition_test.cc", 110*99e0aae7SDavid Rees ], 111*99e0aae7SDavid Rees deps = [ 112*99e0aae7SDavid Rees "//testdata:condition_emboss", 113*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 114*99e0aae7SDavid Rees ], 115*99e0aae7SDavid Rees) 116*99e0aae7SDavid Rees 117*99e0aae7SDavid Reesemboss_cc_test( 118*99e0aae7SDavid Rees name = "enum_test", 119*99e0aae7SDavid Rees srcs = [ 120*99e0aae7SDavid Rees "testcode/enum_test.cc", 121*99e0aae7SDavid Rees ], 122*99e0aae7SDavid Rees deps = [ 123*99e0aae7SDavid Rees "//testdata:enum_emboss", 124*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 125*99e0aae7SDavid Rees ], 126*99e0aae7SDavid Rees) 127*99e0aae7SDavid Rees 128*99e0aae7SDavid Reesemboss_cc_test( 129*99e0aae7SDavid Rees name = "enum_case_test", 130*99e0aae7SDavid Rees srcs = [ 131*99e0aae7SDavid Rees "testcode/enum_case_test.cc", 132*99e0aae7SDavid Rees ], 133*99e0aae7SDavid Rees deps = [ 134*99e0aae7SDavid Rees "//testdata:enum_case_emboss", 135*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 136*99e0aae7SDavid Rees ], 137*99e0aae7SDavid Rees) 138*99e0aae7SDavid Rees 139*99e0aae7SDavid Reesemboss_cc_test( 140*99e0aae7SDavid Rees name = "explicit_sizes_test", 141*99e0aae7SDavid Rees srcs = [ 142*99e0aae7SDavid Rees "testcode/explicit_sizes_test.cc", 143*99e0aae7SDavid Rees ], 144*99e0aae7SDavid Rees deps = [ 145*99e0aae7SDavid Rees "//testdata:explicit_sizes_emboss", 146*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 147*99e0aae7SDavid Rees ], 148*99e0aae7SDavid Rees) 149*99e0aae7SDavid Rees 150*99e0aae7SDavid Reesemboss_cc_test( 151*99e0aae7SDavid Rees name = "importer_test", 152*99e0aae7SDavid Rees srcs = [ 153*99e0aae7SDavid Rees "testcode/importer_test.cc", 154*99e0aae7SDavid Rees ], 155*99e0aae7SDavid Rees deps = [ 156*99e0aae7SDavid Rees "//testdata:importer_emboss", 157*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 158*99e0aae7SDavid Rees ], 159*99e0aae7SDavid Rees) 160*99e0aae7SDavid Rees 161*99e0aae7SDavid Reesemboss_cc_test( 162*99e0aae7SDavid Rees name = "importer2_test", 163*99e0aae7SDavid Rees srcs = [ 164*99e0aae7SDavid Rees "testcode/importer2_test.cc", 165*99e0aae7SDavid Rees ], 166*99e0aae7SDavid Rees deps = [ 167*99e0aae7SDavid Rees "//testdata:importer2_emboss", 168*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 169*99e0aae7SDavid Rees ], 170*99e0aae7SDavid Rees) 171*99e0aae7SDavid Rees 172*99e0aae7SDavid Reesemboss_cc_test( 173*99e0aae7SDavid Rees name = "uint_sizes_test", 174*99e0aae7SDavid Rees srcs = [ 175*99e0aae7SDavid Rees "testcode/uint_sizes_test.cc", 176*99e0aae7SDavid Rees ], 177*99e0aae7SDavid Rees deps = [ 178*99e0aae7SDavid Rees "//testdata:uint_sizes_emboss", 179*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 180*99e0aae7SDavid Rees ], 181*99e0aae7SDavid Rees) 182*99e0aae7SDavid Rees 183*99e0aae7SDavid Reesemboss_cc_test( 184*99e0aae7SDavid Rees name = "int_sizes_test", 185*99e0aae7SDavid Rees srcs = [ 186*99e0aae7SDavid Rees "testcode/int_sizes_test.cc", 187*99e0aae7SDavid Rees ], 188*99e0aae7SDavid Rees deps = [ 189*99e0aae7SDavid Rees "//testdata:int_sizes_emboss", 190*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 191*99e0aae7SDavid Rees ], 192*99e0aae7SDavid Rees) 193*99e0aae7SDavid Rees 194*99e0aae7SDavid Reesemboss_cc_test( 195*99e0aae7SDavid Rees name = "float_test", 196*99e0aae7SDavid Rees srcs = [ 197*99e0aae7SDavid Rees "testcode/float_test.cc", 198*99e0aae7SDavid Rees ], 199*99e0aae7SDavid Rees deps = [ 200*99e0aae7SDavid Rees "//testdata:float_emboss", 201*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 202*99e0aae7SDavid Rees ], 203*99e0aae7SDavid Rees) 204*99e0aae7SDavid Rees 205*99e0aae7SDavid Reesemboss_cc_test( 206*99e0aae7SDavid Rees name = "dynamic_size_test", 207*99e0aae7SDavid Rees srcs = [ 208*99e0aae7SDavid Rees "testcode/dynamic_size_test.cc", 209*99e0aae7SDavid Rees ], 210*99e0aae7SDavid Rees deps = [ 211*99e0aae7SDavid Rees "//testdata:dynamic_size_emboss", 212*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 213*99e0aae7SDavid Rees ], 214*99e0aae7SDavid Rees) 215*99e0aae7SDavid Rees 216*99e0aae7SDavid Reesemboss_cc_test( 217*99e0aae7SDavid Rees name = "auto_array_size_test", 218*99e0aae7SDavid Rees srcs = [ 219*99e0aae7SDavid Rees "testcode/auto_array_size_test.cc", 220*99e0aae7SDavid Rees ], 221*99e0aae7SDavid Rees deps = [ 222*99e0aae7SDavid Rees "//testdata:auto_array_size_emboss", 223*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 224*99e0aae7SDavid Rees ], 225*99e0aae7SDavid Rees) 226*99e0aae7SDavid Rees 227*99e0aae7SDavid Reesemboss_cc_test( 228*99e0aae7SDavid Rees name = "no_enum_traits_test", 229*99e0aae7SDavid Rees srcs = [ 230*99e0aae7SDavid Rees "testcode/no_enum_traits_test.cc", 231*99e0aae7SDavid Rees ], 232*99e0aae7SDavid Rees deps = [ 233*99e0aae7SDavid Rees "//testdata:no_enum_traits_emboss", 234*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 235*99e0aae7SDavid Rees ], 236*99e0aae7SDavid Rees) 237*99e0aae7SDavid Rees 238*99e0aae7SDavid Reesemboss_cc_test( 239*99e0aae7SDavid Rees name = "start_size_range_test", 240*99e0aae7SDavid Rees srcs = [ 241*99e0aae7SDavid Rees "testcode/start_size_range_test.cc", 242*99e0aae7SDavid Rees ], 243*99e0aae7SDavid Rees deps = [ 244*99e0aae7SDavid Rees "//testdata:start_size_range_emboss", 245*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 246*99e0aae7SDavid Rees ], 247*99e0aae7SDavid Rees) 248*99e0aae7SDavid Rees 249*99e0aae7SDavid Reesemboss_cc_test( 250*99e0aae7SDavid Rees name = "bcd_test", 251*99e0aae7SDavid Rees srcs = [ 252*99e0aae7SDavid Rees "testcode/bcd_test.cc", 253*99e0aae7SDavid Rees ], 254*99e0aae7SDavid Rees deps = [ 255*99e0aae7SDavid Rees "//testdata:bcd_emboss", 256*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 257*99e0aae7SDavid Rees ], 258*99e0aae7SDavid Rees) 259*99e0aae7SDavid Rees 260*99e0aae7SDavid Reesemboss_cc_test( 261*99e0aae7SDavid Rees name = "namespace_test", 262*99e0aae7SDavid Rees srcs = [ 263*99e0aae7SDavid Rees "testcode/namespace_test.cc", 264*99e0aae7SDavid Rees ], 265*99e0aae7SDavid Rees deps = [ 266*99e0aae7SDavid Rees "//testdata:absolute_cpp_namespace_emboss", 267*99e0aae7SDavid Rees "//testdata:cpp_namespace_emboss", 268*99e0aae7SDavid Rees "//testdata:no_cpp_namespace_emboss", 269*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 270*99e0aae7SDavid Rees ], 271*99e0aae7SDavid Rees) 272*99e0aae7SDavid Rees 273*99e0aae7SDavid Reesemboss_cc_test( 274*99e0aae7SDavid Rees name = "requires_test", 275*99e0aae7SDavid Rees srcs = [ 276*99e0aae7SDavid Rees "testcode/requires_test.cc", 277*99e0aae7SDavid Rees ], 278*99e0aae7SDavid Rees deps = [ 279*99e0aae7SDavid Rees "//testdata:requires_emboss", 280*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 281*99e0aae7SDavid Rees ], 282*99e0aae7SDavid Rees) 283*99e0aae7SDavid Rees 284*99e0aae7SDavid Reesemboss_cc_test( 285*99e0aae7SDavid Rees name = "subtypes_test", 286*99e0aae7SDavid Rees srcs = [ 287*99e0aae7SDavid Rees "testcode/subtypes_test.cc", 288*99e0aae7SDavid Rees ], 289*99e0aae7SDavid Rees deps = [ 290*99e0aae7SDavid Rees "//testdata:subtypes_emboss", 291*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 292*99e0aae7SDavid Rees ], 293*99e0aae7SDavid Rees) 294*99e0aae7SDavid Rees 295*99e0aae7SDavid Reesemboss_cc_test( 296*99e0aae7SDavid Rees name = "inline_type_test", 297*99e0aae7SDavid Rees srcs = [ 298*99e0aae7SDavid Rees "testcode/inline_type_test.cc", 299*99e0aae7SDavid Rees ], 300*99e0aae7SDavid Rees deps = [ 301*99e0aae7SDavid Rees "//testdata:inline_type_emboss", 302*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 303*99e0aae7SDavid Rees ], 304*99e0aae7SDavid Rees) 305*99e0aae7SDavid Rees 306*99e0aae7SDavid Reesemboss_cc_test( 307*99e0aae7SDavid Rees name = "bits_test", 308*99e0aae7SDavid Rees srcs = [ 309*99e0aae7SDavid Rees "testcode/bits_test.cc", 310*99e0aae7SDavid Rees ], 311*99e0aae7SDavid Rees deps = [ 312*99e0aae7SDavid Rees "//runtime/cpp:cpp_utils", 313*99e0aae7SDavid Rees "//testdata:bits_emboss", 314*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 315*99e0aae7SDavid Rees ], 316*99e0aae7SDavid Rees) 317*99e0aae7SDavid Rees 318*99e0aae7SDavid Reesemboss_cc_test( 319*99e0aae7SDavid Rees name = "anonymous_bits_test", 320*99e0aae7SDavid Rees srcs = [ 321*99e0aae7SDavid Rees "testcode/anonymous_bits_test.cc", 322*99e0aae7SDavid Rees ], 323*99e0aae7SDavid Rees deps = [ 324*99e0aae7SDavid Rees "//runtime/cpp:cpp_utils", 325*99e0aae7SDavid Rees "//testdata:anonymous_bits_emboss", 326*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 327*99e0aae7SDavid Rees ], 328*99e0aae7SDavid Rees) 329*99e0aae7SDavid Rees 330*99e0aae7SDavid Reesemboss_cc_test( 331*99e0aae7SDavid Rees name = "next_keyword_test", 332*99e0aae7SDavid Rees srcs = [ 333*99e0aae7SDavid Rees "testcode/next_keyword_test.cc", 334*99e0aae7SDavid Rees ], 335*99e0aae7SDavid Rees deps = [ 336*99e0aae7SDavid Rees "//testdata:next_keyword_emboss", 337*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 338*99e0aae7SDavid Rees ], 339*99e0aae7SDavid Rees) 340*99e0aae7SDavid Rees 341*99e0aae7SDavid Reesemboss_cc_test( 342*99e0aae7SDavid Rees name = "virtual_field_test", 343*99e0aae7SDavid Rees srcs = [ 344*99e0aae7SDavid Rees "testcode/virtual_field_test.cc", 345*99e0aae7SDavid Rees ], 346*99e0aae7SDavid Rees deps = [ 347*99e0aae7SDavid Rees "//testdata:virtual_field_emboss", 348*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 349*99e0aae7SDavid Rees ], 350*99e0aae7SDavid Rees) 351*99e0aae7SDavid Rees 352*99e0aae7SDavid Reesemboss_cc_test( 353*99e0aae7SDavid Rees name = "text_format_test", 354*99e0aae7SDavid Rees srcs = [ 355*99e0aae7SDavid Rees "testcode/text_format_test.cc", 356*99e0aae7SDavid Rees ], 357*99e0aae7SDavid Rees deps = [ 358*99e0aae7SDavid Rees "//testdata:text_format_emboss", 359*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 360*99e0aae7SDavid Rees ], 361*99e0aae7SDavid Rees) 362*99e0aae7SDavid Rees 363*99e0aae7SDavid Reesemboss_cc_test( 364*99e0aae7SDavid Rees name = "parameters_test", 365*99e0aae7SDavid Rees srcs = [ 366*99e0aae7SDavid Rees "testcode/parameters_test.cc", 367*99e0aae7SDavid Rees ], 368*99e0aae7SDavid Rees deps = [ 369*99e0aae7SDavid Rees "//testdata:parameters_emboss", 370*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 371*99e0aae7SDavid Rees ], 372*99e0aae7SDavid Rees) 373*99e0aae7SDavid Rees 374*99e0aae7SDavid Reesemboss_cc_test( 375*99e0aae7SDavid Rees name = "complex_structure_test", 376*99e0aae7SDavid Rees srcs = ["testcode/complex_structure_test.cc"], 377*99e0aae7SDavid Rees deps = [ 378*99e0aae7SDavid Rees "//testdata:complex_structure_emboss", 379*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 380*99e0aae7SDavid Rees ], 381*99e0aae7SDavid Rees) 382*99e0aae7SDavid Rees 383*99e0aae7SDavid Reesemboss_cc_test( 384*99e0aae7SDavid Rees name = "complex_offset_test", 385*99e0aae7SDavid Rees srcs = ["testcode/complex_offset_test.cc"], 386*99e0aae7SDavid Rees deps = [ 387*99e0aae7SDavid Rees "//testdata:complex_offset_emboss", 388*99e0aae7SDavid Rees "@com_google_googletest//:gtest_main", 389*99e0aae7SDavid Rees ], 390*99e0aae7SDavid Rees) 391