The #include directives to pull in sub-modules use file names relative
to the main module. Works only when all modules are in the same
directory, or the main module's output directory is in the compiler's
include path. Use relative file names instead.
The dummy variable we generate to avoid empty .o files has an invalid
name for sub-modules in other directories. Fix that.
Both messed up in commit 252dc3105f
"qapi: Generate separate .h, .c
for each module". Escaped testing because tests/qapi-schema-test.json
doesn't cover sub-modules in other directories, only
tests/qapi-schema/include-relpath.json does, and we generate and
compile C code only for the former, not the latter. Fold the latter
into the former. This would have caught the mistakes fixed in this
commit.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190301154051.23317-5-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
347 lines
11 KiB
Plaintext
347 lines
11 KiB
Plaintext
module None
|
|
object q_empty
|
|
enum QType
|
|
prefix QTYPE
|
|
member none
|
|
member qnull
|
|
member qnum
|
|
member qstring
|
|
member qdict
|
|
member qlist
|
|
member qbool
|
|
module qapi-schema-test.json
|
|
object TestStruct
|
|
member integer: int optional=False
|
|
member boolean: bool optional=False
|
|
member string: str optional=False
|
|
object NestedEnumsOne
|
|
member enum1: EnumOne optional=False
|
|
member enum2: EnumOne optional=True
|
|
member enum3: EnumOne optional=False
|
|
member enum4: EnumOne optional=True
|
|
enum MyEnum
|
|
object Empty1
|
|
object Empty2
|
|
base Empty1
|
|
command user_def_cmd0 Empty2 -> Empty2
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
enum QEnumTwo
|
|
prefix QENUM_TWO
|
|
member value1
|
|
member value2
|
|
object UserDefOne
|
|
base UserDefZero
|
|
member string: str optional=False
|
|
member enum1: EnumOne optional=True
|
|
enum EnumOne
|
|
member value1
|
|
member value2
|
|
member value3
|
|
member value4
|
|
object UserDefZero
|
|
member integer: int optional=False
|
|
object UserDefTwoDictDict
|
|
member userdef: UserDefOne optional=False
|
|
member string: str optional=False
|
|
object UserDefTwoDict
|
|
member string1: str optional=False
|
|
member dict2: UserDefTwoDictDict optional=False
|
|
member dict3: UserDefTwoDictDict optional=True
|
|
object UserDefTwo
|
|
member string0: str optional=False
|
|
member dict1: UserDefTwoDict optional=False
|
|
object UserDefThree
|
|
member string0: str optional=False
|
|
array UserDefOneList UserDefOne
|
|
array UserDefTwoList UserDefTwo
|
|
array TestStructList TestStruct
|
|
object ForceArrays
|
|
member unused1: UserDefOneList optional=False
|
|
member unused2: UserDefTwoList optional=False
|
|
member unused3: TestStructList optional=False
|
|
object UserDefA
|
|
member boolean: bool optional=False
|
|
member a_b: int optional=True
|
|
object UserDefB
|
|
member intb: int optional=False
|
|
member a-b: bool optional=True
|
|
object UserDefFlatUnion
|
|
base UserDefUnionBase
|
|
tag enum1
|
|
case value1: UserDefA
|
|
case value2: UserDefB
|
|
case value3: UserDefB
|
|
case value4: q_empty
|
|
object UserDefUnionBase
|
|
base UserDefZero
|
|
member string: str optional=False
|
|
member enum1: EnumOne optional=False
|
|
object q_obj_UserDefFlatUnion2-base
|
|
member integer: int optional=True
|
|
member string: str optional=False
|
|
member enum1: QEnumTwo optional=False
|
|
object UserDefFlatUnion2
|
|
base q_obj_UserDefFlatUnion2-base
|
|
tag enum1
|
|
case value1: UserDefC
|
|
case value2: UserDefB
|
|
object WrapAlternate
|
|
member alt: UserDefAlternate optional=False
|
|
alternate UserDefAlternate
|
|
tag type
|
|
case udfu: UserDefFlatUnion
|
|
case e: EnumOne
|
|
case i: int
|
|
case n: null
|
|
object UserDefC
|
|
member string1: str optional=False
|
|
member string2: str optional=False
|
|
alternate AltEnumBool
|
|
tag type
|
|
case e: EnumOne
|
|
case b: bool
|
|
alternate AltEnumNum
|
|
tag type
|
|
case e: EnumOne
|
|
case n: number
|
|
alternate AltNumEnum
|
|
tag type
|
|
case n: number
|
|
case e: EnumOne
|
|
alternate AltEnumInt
|
|
tag type
|
|
case e: EnumOne
|
|
case i: int
|
|
alternate AltStrObj
|
|
tag type
|
|
case s: str
|
|
case o: TestStruct
|
|
object q_obj_intList-wrapper
|
|
member data: intList optional=False
|
|
object q_obj_int8List-wrapper
|
|
member data: int8List optional=False
|
|
object q_obj_int16List-wrapper
|
|
member data: int16List optional=False
|
|
object q_obj_int32List-wrapper
|
|
member data: int32List optional=False
|
|
object q_obj_int64List-wrapper
|
|
member data: int64List optional=False
|
|
object q_obj_uint8List-wrapper
|
|
member data: uint8List optional=False
|
|
object q_obj_uint16List-wrapper
|
|
member data: uint16List optional=False
|
|
object q_obj_uint32List-wrapper
|
|
member data: uint32List optional=False
|
|
object q_obj_uint64List-wrapper
|
|
member data: uint64List optional=False
|
|
object q_obj_numberList-wrapper
|
|
member data: numberList optional=False
|
|
object q_obj_boolList-wrapper
|
|
member data: boolList optional=False
|
|
object q_obj_strList-wrapper
|
|
member data: strList optional=False
|
|
object q_obj_sizeList-wrapper
|
|
member data: sizeList optional=False
|
|
object q_obj_anyList-wrapper
|
|
member data: anyList optional=False
|
|
enum UserDefNativeListUnionKind
|
|
member integer
|
|
member s8
|
|
member s16
|
|
member s32
|
|
member s64
|
|
member u8
|
|
member u16
|
|
member u32
|
|
member u64
|
|
member number
|
|
member boolean
|
|
member string
|
|
member sizes
|
|
member any
|
|
object UserDefNativeListUnion
|
|
member type: UserDefNativeListUnionKind optional=False
|
|
tag type
|
|
case integer: q_obj_intList-wrapper
|
|
case s8: q_obj_int8List-wrapper
|
|
case s16: q_obj_int16List-wrapper
|
|
case s32: q_obj_int32List-wrapper
|
|
case s64: q_obj_int64List-wrapper
|
|
case u8: q_obj_uint8List-wrapper
|
|
case u16: q_obj_uint16List-wrapper
|
|
case u32: q_obj_uint32List-wrapper
|
|
case u64: q_obj_uint64List-wrapper
|
|
case number: q_obj_numberList-wrapper
|
|
case boolean: q_obj_boolList-wrapper
|
|
case string: q_obj_strList-wrapper
|
|
case sizes: q_obj_sizeList-wrapper
|
|
case any: q_obj_anyList-wrapper
|
|
include include/sub-module.json
|
|
module include/sub-module.json
|
|
include sub-sub-module.json
|
|
module sub-sub-module.json
|
|
enum Status
|
|
member good
|
|
member bad
|
|
member ugly
|
|
module qapi-schema-test.json
|
|
command user_def_cmd None -> None
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
object q_obj_user_def_cmd1-arg
|
|
member ud1a: UserDefOne optional=False
|
|
command user_def_cmd1 q_obj_user_def_cmd1-arg -> None
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
object q_obj_user_def_cmd2-arg
|
|
member ud1a: UserDefOne optional=False
|
|
member ud1b: UserDefOne optional=True
|
|
command user_def_cmd2 q_obj_user_def_cmd2-arg -> UserDefTwo
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
command cmd-success-response None -> None
|
|
gen=True success_response=False boxed=False oob=False preconfig=False
|
|
object q_obj_guest-get-time-arg
|
|
member a: int optional=False
|
|
member b: int optional=True
|
|
command guest-get-time q_obj_guest-get-time-arg -> int
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
object q_obj_guest-sync-arg
|
|
member arg: any optional=False
|
|
command guest-sync q_obj_guest-sync-arg -> any
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
command boxed-struct UserDefZero -> None
|
|
gen=True success_response=True boxed=True oob=False preconfig=False
|
|
command boxed-union UserDefNativeListUnion -> None
|
|
gen=True success_response=True boxed=True oob=False preconfig=False
|
|
command test-flags-command None -> None
|
|
gen=True success_response=True boxed=False oob=True preconfig=True
|
|
object UserDefOptions
|
|
member i64: intList optional=True
|
|
member u64: uint64List optional=True
|
|
member u16: uint16List optional=True
|
|
member i64x: int optional=True
|
|
member u64x: uint64 optional=True
|
|
object EventStructOne
|
|
member struct1: UserDefOne optional=False
|
|
member string: str optional=False
|
|
member enum2: EnumOne optional=True
|
|
event EVENT_A None
|
|
boxed=False
|
|
event EVENT_B None
|
|
boxed=False
|
|
object q_obj_EVENT_C-arg
|
|
member a: int optional=True
|
|
member b: UserDefOne optional=True
|
|
member c: str optional=False
|
|
event EVENT_C q_obj_EVENT_C-arg
|
|
boxed=False
|
|
object q_obj_EVENT_D-arg
|
|
member a: EventStructOne optional=False
|
|
member b: str optional=False
|
|
member c: str optional=True
|
|
member enum3: EnumOne optional=True
|
|
event EVENT_D q_obj_EVENT_D-arg
|
|
boxed=False
|
|
event EVENT_E UserDefZero
|
|
boxed=True
|
|
event EVENT_F UserDefAlternate
|
|
boxed=True
|
|
enum __org.qemu_x-Enum
|
|
member __org.qemu_x-value
|
|
object __org.qemu_x-Base
|
|
member __org.qemu_x-member1: __org.qemu_x-Enum optional=False
|
|
object __org.qemu_x-Struct
|
|
base __org.qemu_x-Base
|
|
member __org.qemu_x-member2: str optional=False
|
|
member wchar-t: int optional=True
|
|
object q_obj_str-wrapper
|
|
member data: str optional=False
|
|
enum __org.qemu_x-Union1Kind
|
|
member __org.qemu_x-branch
|
|
object __org.qemu_x-Union1
|
|
member type: __org.qemu_x-Union1Kind optional=False
|
|
tag type
|
|
case __org.qemu_x-branch: q_obj_str-wrapper
|
|
array __org.qemu_x-Union1List __org.qemu_x-Union1
|
|
object __org.qemu_x-Struct2
|
|
member array: __org.qemu_x-Union1List optional=False
|
|
object __org.qemu_x-Union2
|
|
base __org.qemu_x-Base
|
|
tag __org.qemu_x-member1
|
|
case __org.qemu_x-value: __org.qemu_x-Struct2
|
|
alternate __org.qemu_x-Alt
|
|
tag type
|
|
case __org.qemu_x-branch: str
|
|
case b: __org.qemu_x-Base
|
|
event __ORG.QEMU_X-EVENT __org.qemu_x-Struct
|
|
boxed=False
|
|
array __org.qemu_x-EnumList __org.qemu_x-Enum
|
|
array __org.qemu_x-StructList __org.qemu_x-Struct
|
|
object q_obj___org.qemu_x-command-arg
|
|
member a: __org.qemu_x-EnumList optional=False
|
|
member b: __org.qemu_x-StructList optional=False
|
|
member c: __org.qemu_x-Union2 optional=False
|
|
member d: __org.qemu_x-Alt optional=False
|
|
command __org.qemu_x-command q_obj___org.qemu_x-command-arg -> __org.qemu_x-Union1
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
object TestIfStruct
|
|
member foo: int optional=False
|
|
member bar: int optional=False
|
|
if ['defined(TEST_IF_STRUCT_BAR)']
|
|
if ['defined(TEST_IF_STRUCT)']
|
|
enum TestIfEnum
|
|
member foo
|
|
member bar
|
|
if ['defined(TEST_IF_ENUM_BAR)']
|
|
if ['defined(TEST_IF_ENUM)']
|
|
object q_obj_TestStruct-wrapper
|
|
member data: TestStruct optional=False
|
|
enum TestIfUnionKind
|
|
member foo
|
|
member union_bar
|
|
if ['defined(TEST_IF_UNION_BAR)']
|
|
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
|
|
object TestIfUnion
|
|
member type: TestIfUnionKind optional=False
|
|
tag type
|
|
case foo: q_obj_TestStruct-wrapper
|
|
case union_bar: q_obj_str-wrapper
|
|
if ['defined(TEST_IF_UNION_BAR)']
|
|
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
|
|
object q_obj_TestIfUnionCmd-arg
|
|
member union_cmd_arg: TestIfUnion optional=False
|
|
if ['defined(TEST_IF_UNION)']
|
|
command TestIfUnionCmd q_obj_TestIfUnionCmd-arg -> None
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
if ['defined(TEST_IF_UNION)']
|
|
alternate TestIfAlternate
|
|
tag type
|
|
case foo: int
|
|
case bar: TestStruct
|
|
if ['defined(TEST_IF_ALT_BAR)']
|
|
if ['defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT)']
|
|
object q_obj_TestIfAlternateCmd-arg
|
|
member alt_cmd_arg: TestIfAlternate optional=False
|
|
if ['defined(TEST_IF_ALT)']
|
|
command TestIfAlternateCmd q_obj_TestIfAlternateCmd-arg -> None
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
if ['defined(TEST_IF_ALT)']
|
|
object q_obj_TestIfCmd-arg
|
|
member foo: TestIfStruct optional=False
|
|
member bar: TestIfEnum optional=False
|
|
if ['defined(TEST_IF_CMD_BAR)']
|
|
if ['defined(TEST_IF_CMD)', 'defined(TEST_IF_STRUCT)']
|
|
command TestIfCmd q_obj_TestIfCmd-arg -> UserDefThree
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
if ['defined(TEST_IF_CMD)', 'defined(TEST_IF_STRUCT)']
|
|
command TestCmdReturnDefThree None -> UserDefThree
|
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
|
array TestIfEnumList TestIfEnum
|
|
if ['defined(TEST_IF_ENUM)']
|
|
object q_obj_TestIfEvent-arg
|
|
member foo: TestIfStruct optional=False
|
|
member bar: TestIfEnumList optional=False
|
|
if ['defined(TEST_IF_EVT_BAR)']
|
|
if ['defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)']
|
|
event TestIfEvent q_obj_TestIfEvent-arg
|
|
boxed=False
|
|
if ['defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)']
|