diff --git a/starboard/build/config/base_configuration.gni b/starboard/build/config/base_configuration.gni index 58397a6a6316..f0a0f2c28c08 100644 --- a/starboard/build/config/base_configuration.gni +++ b/starboard/build/config/base_configuration.gni @@ -35,7 +35,7 @@ declare_args() { # The Starboard API version of the current build configuration. The default # value is meant to be overridden by a Starboard ABI file. - sb_api_version = 16 + sb_api_version = 17 # Enables embedding Cobalt as a shared library within another app. This # requires a 'lib' starboard implementation for the corresponding platform. diff --git a/starboard/configuration.h b/starboard/configuration.h index 9ee67356a65a..06accfbee943 100644 --- a/starboard/configuration.h +++ b/starboard/configuration.h @@ -39,7 +39,7 @@ // The maximum API version allowed by this version of the Starboard headers, // inclusive. The API version is not stable and is open for changes. -#define SB_MAXIMUM_API_VERSION 16 +#define SB_MAXIMUM_API_VERSION 17 // --- Common Detected Features ---------------------------------------------- diff --git a/starboard/linux/x64x11/system_get_property_impl.cc b/starboard/linux/x64x11/system_get_property_impl.cc index 33c7decf2445..5612b2d7c300 100644 --- a/starboard/linux/x64x11/system_get_property_impl.cc +++ b/starboard/linux/x64x11/system_get_property_impl.cc @@ -32,6 +32,10 @@ const char kModelName[] = "ModelName"; const char kPlatformName[] = "X11; Linux x86_64"; const char kSystemIntegratorName[] = "SystemIntegratorName"; +#if SB_API_VERSION == 17 +const char kModelYear[] = "2026"; +#endif // SB_API_VERSION == 17 + #if SB_API_VERSION == 16 const char kModelYear[] = "2025"; #endif // SB_API_VERSION == 16 diff --git a/starboard/nplb/nplb_evergreen_compat_tests/sabi_test.cc b/starboard/nplb/nplb_evergreen_compat_tests/sabi_test.cc index 47d1991d0b0c..e048e71615dd 100644 --- a/starboard/nplb/nplb_evergreen_compat_tests/sabi_test.cc +++ b/starboard/nplb/nplb_evergreen_compat_tests/sabi_test.cc @@ -197,6 +197,55 @@ const char* kSabiJsonIdX64Sysv = "\"target_arch\":\"x64\",\"target_arch_sub\":\"\",\"word_size\":64}"; #endif // SB_API_VERSION == 16 +#if SB_API_VERSION == 17 +const char* kSabiJsonIdArmHardfp = + "{\"alignment_char\":1,\"alignment_double\":8,\"alignment_float\":4," + "\"alignment_int\":4,\"alignment_llong\":8,\"alignment_long\":4," + "\"alignment_pointer\":4,\"alignment_short\":2,\"calling_convention\":" + "\"eabi\",\"endianness\":\"little\",\"floating_point_abi\":\"hard\"," + "\"floating_point_fpu\":\"vfpv3\",\"sb_api_version\":17,\"signedness_of_" + "char\":\"signed\",\"signedness_of_enum\":\"signed\",\"size_of_char\":1," + "\"size_of_double\":8,\"size_of_enum\":4,\"size_of_float\":4,\"size_of_" + "int\":4,\"size_of_llong\":8,\"size_of_long\":4,\"size_of_pointer\":4," + "\"size_of_short\":2,\"target_arch\":\"arm\",\"target_arch_sub\":\"v7a\"," + "\"word_size\":32}"; + +const char* kSabiJsonIdArmSoftfp = + "{\"alignment_char\":1,\"alignment_double\":8,\"alignment_float\":4," + "\"alignment_int\":4,\"alignment_llong\":8,\"alignment_long\":4," + "\"alignment_pointer\":4,\"alignment_short\":2,\"calling_convention\":" + "\"eabi\",\"endianness\":\"little\",\"floating_point_abi\":\"softfp\"," + "\"floating_point_fpu\":\"vfpv3\",\"sb_api_version\":17,\"signedness_of_" + "char\":\"signed\",\"signedness_of_enum\":\"signed\",\"size_of_char\":1," + "\"size_of_double\":8,\"size_of_enum\":4,\"size_of_float\":4,\"size_of_" + "int\":4,\"size_of_llong\":8,\"size_of_long\":4,\"size_of_pointer\":4," + "\"size_of_short\":2,\"target_arch\":\"arm\",\"target_arch_sub\":\"v7a\"," + "\"word_size\":32}"; + +const char* kSabiJsonIdArm64 = + "{\"alignment_char\":1,\"alignment_double\":8,\"alignment_float\":4," + "\"alignment_int\":4,\"alignment_llong\":8,\"alignment_long\":8," + "\"alignment_pointer\":8,\"alignment_short\":2,\"calling_convention\":" + "\"aarch64\",\"endianness\":\"little\",\"floating_point_abi\":\"\"," + "\"floating_point_fpu\":\"\",\"sb_api_version\":17,\"signedness_of_char\":" + "\"signed\",\"signedness_of_enum\":\"signed\",\"size_of_char\":1,\"size_of_" + "double\":8,\"size_of_enum\":4,\"size_of_float\":4,\"size_of_int\":4," + "\"size_of_llong\":8,\"size_of_long\":8,\"size_of_pointer\":8,\"size_of_" + "short\":2,\"target_arch\":\"arm64\",\"target_arch_sub\":\"v8a\",\"word_" + "size\":64}"; + +const char* kSabiJsonIdX64Sysv = + "{\"alignment_char\":1,\"alignment_double\":8,\"alignment_float\":4," + "\"alignment_int\":4,\"alignment_llong\":8,\"alignment_long\":8," + "\"alignment_pointer\":8,\"alignment_short\":2,\"calling_convention\":" + "\"sysv\",\"endianness\":\"little\",\"floating_point_abi\":\"\",\"floating_" + "point_fpu\":\"\",\"sb_api_version\":17,\"signedness_of_char\":\"signed\"," + "\"signedness_of_enum\":\"signed\",\"size_of_char\":1,\"size_of_double\":8," + "\"size_of_enum\":4,\"size_of_float\":4,\"size_of_int\":4,\"size_of_" + "llong\":8,\"size_of_long\":8,\"size_of_pointer\":8,\"size_of_short\":2," + "\"target_arch\":\"x64\",\"target_arch_sub\":\"\",\"word_size\":64}"; +#endif // SB_API_VERSION == 17 + class SabiTest : public ::testing::Test { protected: SabiTest() {} diff --git a/starboard/sabi/arm/hardfp/sabi-v17.json b/starboard/sabi/arm/hardfp/sabi-v17.json new file mode 100644 index 000000000000..38a3a92740b2 --- /dev/null +++ b/starboard/sabi/arm/hardfp/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "arm", + "target_arch_sub": "v7a", + "word_size": 32, + "endianness": "little", + "calling_convention": "eabi", + "floating_point_abi": "hard", + "floating_point_fpu": "vfpv3", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 4, + "alignment_pointer": 4, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 4, + "size_of_pointer": 4, + "size_of_short": 2 + } +} diff --git a/starboard/sabi/arm/softfp/sabi-v17.json b/starboard/sabi/arm/softfp/sabi-v17.json new file mode 100644 index 000000000000..a824728c4470 --- /dev/null +++ b/starboard/sabi/arm/softfp/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "arm", + "target_arch_sub": "v7a", + "word_size": 32, + "endianness": "little", + "calling_convention": "eabi", + "floating_point_abi": "softfp", + "floating_point_fpu": "vfpv3", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 4, + "alignment_pointer": 4, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 4, + "size_of_pointer": 4, + "size_of_short": 2 + } +} diff --git a/starboard/sabi/arm64/sabi-v17.json b/starboard/sabi/arm64/sabi-v17.json new file mode 100644 index 000000000000..de4a94e2e294 --- /dev/null +++ b/starboard/sabi/arm64/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "arm64", + "target_arch_sub": "v8a", + "word_size": 64, + "endianness": "little", + "calling_convention": "aarch64", + "floating_point_abi": "", + "floating_point_fpu": "", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 8, + "alignment_pointer": 8, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 8, + "size_of_pointer": 8, + "size_of_short": 2 + } +} diff --git a/starboard/sabi/schema/sabi-v17.schema.json b/starboard/sabi/schema/sabi-v17.schema.json new file mode 100644 index 000000000000..6574bf9a76ec --- /dev/null +++ b/starboard/sabi/schema/sabi-v17.schema.json @@ -0,0 +1,172 @@ +{ + "title": "Starboard ABI Schema", + "description": "This schema validates that a Starboard ABI file contains the required keys, no extras, and that the corresponding values are valid.", + "type": "object", + "properties": { + "sb_api_version": { + "type": "integer", + "description": "The Starboard API version.", + "enum": [17] + }, + "target_arch": { + "type": "string", + "description": "The targeted architecture.", + "enum": ["arm", "arm64", "x86", "x64"] + }, + "target_arch_sub": { + "type": "string", + "description": "The targeted sub-architecture.", + "enum": ["v7a", "v8a", ""] + }, + "word_size": { + "type": "integer", + "description": "The word size.", + "enum": [32, 64] + }, + "endianness": { + "type": "string", + "description": "The endianness.", + "enum": ["big", "little"] + }, + "calling_convention": { + "type": "string", + "description": "The calling convention.", + "enum": ["sysv", "eabi", "windows", "aarch64"] + }, + "floating_point_abi": { + "type": "string", + "description": "The floating-point ABI.", + "enum": ["hard", "softfp", ""] + }, + "floating_point_fpu": { + "type": "string", + "description": "The floating-point hardware, if available.", + "enum": ["vfpv2", "vfpv3", ""] + }, + "signedness_of_char": { + "type": "string", + "description": "The signedness of the 'char' data type.", + "enum": ["signed", "unsigned"] + }, + "signedness_of_enum": { + "type": "string", + "description": "The signedness of the 'enum' data type.", + "enum": ["signed", "unsigned"] + }, + "alignment_char": { + "type": "integer", + "description": "The alignment of the 'char' data type.", + "enum": [1] + }, + "alignment_double": { + "type": "integer", + "description": "The alignment of the 'double' data type.", + "enum": [8] + }, + "alignment_float": { + "type": "integer", + "description": "The alignment of the 'float' data type.", + "enum": [4] + }, + "alignment_int": { + "type": "integer", + "description": "The alignment of the 'int' data type.", + "enum": [4] + }, + "alignment_llong": { + "type": "integer", + "description": "The alignment of the 'long long' data type.", + "enum": [8] + }, + "alignment_long": { + "type": "integer", + "description": "The alignment of the 'long' data type.", + "enum": [4, 8] + }, + "alignment_pointer": { + "type": "integer", + "description": "The alignment of pointers.", + "enum": [4, 8] + }, + "alignment_short": { + "type": "integer", + "description": "The alignment of the 'short' data type.", + "enum": [2] + }, + "size_of_char": { + "type": "integer", + "description": "The size of the 'char' data type.", + "enum": [1] + }, + "size_of_double": { + "type": "integer", + "description": "The size of the 'double' data type.", + "enum": [8] + }, + "size_of_enum": { + "type": "integer", + "description": "The size of the 'enum' data type.", + "enum": [4] + }, + "size_of_float": { + "type": "integer", + "description": "The size of the 'float' data type.", + "enum": [4] + }, + "size_of_int": { + "type": "integer", + "description": "The size of the 'int' data type.", + "enum": [4] + }, + "size_of_llong": { + "type": "integer", + "description": "The size of the 'long long' data type.", + "enum": [8] + }, + "size_of_long": { + "type": "integer", + "description": "The size of the 'long' data type.", + "enum": [4, 8] + }, + "size_of_pointer": { + "type": "integer", + "description": "The size of pointers.", + "enum": [4, 8] + }, + "size_of_short": { + "type": "integer", + "description": "The size of the 'short' data type.", + "enum": [2] + } + }, + "required": [ + "sb_api_version", + "target_arch", + "target_arch_sub", + "word_size", + "endianness", + "calling_convention", + "floating_point_abi", + "floating_point_fpu", + "signedness_of_char", + "signedness_of_enum", + "alignment_char", + "alignment_double", + "alignment_float", + "alignment_int", + "alignment_llong", + "alignment_long", + "alignment_pointer", + "alignment_short", + "size_of_char", + "size_of_enum", + "size_of_double", + "size_of_float", + "size_of_int", + "size_of_llong", + "size_of_long", + "size_of_pointer", + "size_of_short" + ], + "additionalProperties": false +} diff --git a/starboard/sabi/x64/sysv/sabi-v17.json b/starboard/sabi/x64/sysv/sabi-v17.json new file mode 100644 index 000000000000..3e12aded1045 --- /dev/null +++ b/starboard/sabi/x64/sysv/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "x64", + "target_arch_sub": "", + "word_size": 64, + "endianness": "little", + "calling_convention": "sysv", + "floating_point_abi": "", + "floating_point_fpu": "", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 8, + "alignment_pointer": 8, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 8, + "size_of_pointer": 8, + "size_of_short": 2 + } +} diff --git a/starboard/sabi/x64/windows/sabi-v17.json b/starboard/sabi/x64/windows/sabi-v17.json new file mode 100644 index 000000000000..1731dabde578 --- /dev/null +++ b/starboard/sabi/x64/windows/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "x64", + "target_arch_sub": "", + "word_size": 64, + "endianness": "little", + "calling_convention": "windows", + "floating_point_abi": "", + "floating_point_fpu": "", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 4, + "alignment_pointer": 8, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 4, + "size_of_pointer": 8, + "size_of_short": 2 + } +} diff --git a/starboard/sabi/x86/sabi-v17.json b/starboard/sabi/x86/sabi-v17.json new file mode 100644 index 000000000000..3a21241ffe1a --- /dev/null +++ b/starboard/sabi/x86/sabi-v17.json @@ -0,0 +1,31 @@ +{ + "variables": { + "sb_api_version": 17, + "target_arch": "x86", + "target_arch_sub": "", + "word_size": 32, + "endianness": "little", + "calling_convention": "sysv", + "floating_point_abi": "", + "floating_point_fpu": "", + "signedness_of_char": "signed", + "signedness_of_enum": "signed", + "alignment_char": 1, + "alignment_double": 8, + "alignment_float": 4, + "alignment_int": 4, + "alignment_llong": 8, + "alignment_long": 4, + "alignment_pointer": 4, + "alignment_short": 2, + "size_of_char": 1, + "size_of_double": 8, + "size_of_enum": 4, + "size_of_float": 4, + "size_of_int": 4, + "size_of_llong": 8, + "size_of_long": 4, + "size_of_pointer": 4, + "size_of_short": 2 + } +}