blob: 96b418503c6ec1a165efab87dd527f14f3a8a029 [file] [log] [blame]
# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
config("sabi") {
sabi_json = read_file(sabi_path, "json")
sabi_variables = sabi_json.variables
forward_variables_from(sabi_variables, "*")
arch_uppercase = exec_script("//starboard/build/gyp_functions.py",
[
"str_upper",
target_arch,
],
"trim string")
calling_convention_uppercase =
exec_script("//starboard/build/gyp_functions.py",
[
"str_upper",
calling_convention,
],
"trim string")
floating_point_abi_uppercase =
exec_script("//starboard/build/gyp_functions.py",
[
"str_upper",
floating_point_abi,
],
"trim string")
sabi_id = exec_script("//starboard/sabi/generate_sabi_id.py",
[
"-f",
rebase_path(sabi_path, root_build_dir),
],
"trim string")
defines = [
"SB_SABI_JSON_ID=R\"($sabi_id)\"",
"SB_API_VERSION=$sb_api_version",
"SB_SABI_TARGET_ARCH=\"${target_cpu}\"",
"SB_SABI_WORD_SIZE=\"${word_size}\"",
"SB_IS_ARCH_${arch_uppercase}=1",
"SB_HAS_${calling_convention_uppercase}_CALLING=1",
"SB_HAS_${floating_point_abi_uppercase}_FLOATS=1",
"SB_IS_${word_size}_BIT=1",
"SB_ALIGNMENT_OF_CHAR=${alignment_char}",
"SB_ALIGNMENT_OF_DOUBLE=${alignment_double}",
"SB_ALIGNMENT_OF_FLOAT=${alignment_float}",
"SB_ALIGNMENT_OF_INT=${alignment_int}",
"SB_ALIGNMENT_OF_LLONG=${alignment_llong}",
"SB_ALIGNMENT_OF_LONG=${alignment_long}",
"SB_ALIGNMENT_OF_POINTER=${alignment_pointer}",
"SB_ALIGNMENT_OF_SHORT=${alignment_short}",
"SB_SIZE_OF_CHAR=${size_of_char}",
"SB_SIZE_OF_ENUM=${size_of_enum}",
"SB_SIZE_OF_DOUBLE=${size_of_double}",
"SB_SIZE_OF_FLOAT=${size_of_float}",
"SB_SIZE_OF_INT=${size_of_int}",
"SB_SIZE_OF_LONG=${size_of_long}",
"SB_SIZE_OF_LLONG=${size_of_llong}",
"SB_SIZE_OF_POINTER=${size_of_pointer}",
"SB_SIZE_OF_SHORT=${size_of_short}",
]
if (endianness == "little") {
defines += [
"SB_IS_BIG_ENDIAN=0",
"SB_IS_LITTLE_ENDIAN=1",
]
} else {
defines += [
"SB_IS_BIG_ENDIAN=1",
"SB_IS_LITTLE_ENDIAN=0",
]
}
if (signedness_of_char == "signed") {
defines += [ "SB_HAS_SIGNED_CHAR=1" ]
} else {
defines += [ "SB_HAS_SIGNED_CHAR=0" ]
}
if (signedness_of_enum == "signed") {
defines += [ "SB_HAS_SIGNED_ENUM=1" ]
} else {
defines += [ "SB_HAS_SIGNED_ENUM=1" ]
}
not_needed("*")
}