From 33ef929373218bb574632cdb374d543ee2d52926 Mon Sep 17 00:00:00 2001 From: Amber Dixon Date: Mon, 29 Nov 2021 16:45:30 -0800 Subject: [PATCH 1/2] reproduce inclusion problem --- tests/ios/InclusionProblemRepro/BUILD.bazel | 18 ++++++++++++++++++ .../Classes/Extensions/D.h | 1 + .../Classes/Extensions/D.m | 1 + .../InclusionProblemRepro/Classes/HeaderB.h | 0 .../InclusionProblemRepro/Classes/HeaderC.h | 1 + 5 files changed, 21 insertions(+) create mode 100644 tests/ios/InclusionProblemRepro/BUILD.bazel create mode 100644 tests/ios/InclusionProblemRepro/Classes/Extensions/D.h create mode 100644 tests/ios/InclusionProblemRepro/Classes/Extensions/D.m create mode 100644 tests/ios/InclusionProblemRepro/Classes/HeaderB.h create mode 100644 tests/ios/InclusionProblemRepro/Classes/HeaderC.h diff --git a/tests/ios/InclusionProblemRepro/BUILD.bazel b/tests/ios/InclusionProblemRepro/BUILD.bazel new file mode 100644 index 000000000..a02fd78ca --- /dev/null +++ b/tests/ios/InclusionProblemRepro/BUILD.bazel @@ -0,0 +1,18 @@ +load("//rules:library.bzl", "apple_library") + +apple_library( + name = "LibraryA", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + platforms = {"ios": "8.0"}, + public_headers = [ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + ], + visibility = ["//visibility:public"], +) diff --git a/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h new file mode 100644 index 000000000..a6d0c07a1 --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h @@ -0,0 +1 @@ +#import "HeaderC.h" \ No newline at end of file diff --git a/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m new file mode 100644 index 000000000..79b222238 --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m @@ -0,0 +1 @@ +#import "D.h" \ No newline at end of file diff --git a/tests/ios/InclusionProblemRepro/Classes/HeaderB.h b/tests/ios/InclusionProblemRepro/Classes/HeaderB.h new file mode 100644 index 000000000..e69de29bb diff --git a/tests/ios/InclusionProblemRepro/Classes/HeaderC.h b/tests/ios/InclusionProblemRepro/Classes/HeaderC.h new file mode 100644 index 000000000..703e195cb --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/HeaderC.h @@ -0,0 +1 @@ +#import "HeaderB.h" \ No newline at end of file From ad1037a57978028b3e4afd311a8bd9adc0d634ad Mon Sep 17 00:00:00 2001 From: Amber Dixon Date: Tue, 30 Nov 2021 13:05:56 -0800 Subject: [PATCH 2/2] Narrow down the repro case. It looks like the problem happens when both modules are enabled and we are using header maps --- tests/ios/InclusionProblemRepro/BUILD.bazel | 63 +++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/tests/ios/InclusionProblemRepro/BUILD.bazel b/tests/ios/InclusionProblemRepro/BUILD.bazel index a02fd78ca..9e96f94ef 100644 --- a/tests/ios/InclusionProblemRepro/BUILD.bazel +++ b/tests/ios/InclusionProblemRepro/BUILD.bazel @@ -1,4 +1,5 @@ load("//rules:library.bzl", "apple_library") +load("//rules:hmap.bzl", "headermap") apple_library( name = "LibraryA", @@ -16,3 +17,65 @@ apple_library( ], visibility = ["//visibility:public"], ) + + +headermap( + name="LibraryTest_private_hmap", + hdrs=glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + ]), +) + +# it looks like the use of header maps combined with -fmodules is waht causes the problem to happen. +objc_library( + name = "LibraryNoWorky_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + deps = ["LibraryTest_private_hmap"], + copts = [ + "-fmodules", + "-fmodule-name=LibraryNoWorky", + "-iquote$(execpath :LibraryTest_private_hmap)", + "-I." + ], + visibility = ["//visibility:public"], +) + + +objc_library( + name = "LibraryWorky_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + copts = [ + "-fmodules", + "-fmodule-name=LibraryWorky", + "-iquotetests/ios/InclusionProblemRepro/Classes", + ], + visibility = ["//visibility:public"], +) + +objc_library( + name = "LibraryWorkyToo_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + deps = ["LibraryTest_private_hmap"], + copts = [ + "-iquote$(execpath :LibraryTest_private_hmap)", + "-I." + ], + visibility = ["//visibility:public"], +)