From be0d7f66644d9ee36caac43cee21e679b4503015 Mon Sep 17 00:00:00 2001 From: Thomas Van Lenten Date: Mon, 27 Jun 2016 14:24:59 -0400 Subject: [PATCH] Don't #import the .m files. As bazel folks are looking at getting auto generation of module maps going and the importing of sources files causes issues there. We were only do it to hack around some of the apple linker behaviors around objc classes and categories, but even that isn't complete and CocoaPods was already doing -ObjC, and developers not using pods could have still needed it to ensure everything was linked anyways; so drop the hack of importing sources. --- Protobuf.podspec | 8 ++------ objectivec/GPBDescriptor.m | 3 +-- objectivec/GPBProtocolBuffers.m | 6 ++---- objectivec/GPBWellKnownTypes.m | 2 -- objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj | 6 ++++++ objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj | 6 ++++++ 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Protobuf.podspec b/Protobuf.podspec index 75a5e31f3f..2523076a4a 100644 --- a/Protobuf.podspec +++ b/Protobuf.podspec @@ -18,18 +18,14 @@ Pod::Spec.new do |s| s.source_files = 'objectivec/*.{h,m}', 'objectivec/google/protobuf/Any.pbobjc.{h,m}', 'objectivec/google/protobuf/Api.pbobjc.{h,m}', - 'objectivec/google/protobuf/Duration.pbobjc.h', + 'objectivec/google/protobuf/Duration.pbobjc.{h,m}', 'objectivec/google/protobuf/Empty.pbobjc.{h,m}', 'objectivec/google/protobuf/FieldMask.pbobjc.{h,m}', 'objectivec/google/protobuf/SourceContext.pbobjc.{h,m}', 'objectivec/google/protobuf/Struct.pbobjc.{h,m}', - 'objectivec/google/protobuf/Timestamp.pbobjc.h', + 'objectivec/google/protobuf/Timestamp.pbobjc.{h,m}', 'objectivec/google/protobuf/Type.pbobjc.{h,m}', 'objectivec/google/protobuf/Wrappers.pbobjc.{h,m}' - # Timestamp.pbobjc.m and Duration.pbobjc.m are #imported by GPBWellKnownTypes.m. So we can't - # compile them (duplicate symbols), but we need them available for the importing: - s.preserve_paths = 'objectivec/google/protobuf/Duration.pbobjc.m', - 'objectivec/google/protobuf/Timestamp.pbobjc.m' # The following would cause duplicate symbol definitions. GPBProtocolBuffers is expected to be # left out, as it's an umbrella implementation file. s.exclude_files = 'objectivec/GPBProtocolBuffers.m' diff --git a/objectivec/GPBDescriptor.m b/objectivec/GPBDescriptor.m index 0212fb0d14..dccb9bc8ef 100644 --- a/objectivec/GPBDescriptor.m +++ b/objectivec/GPBDescriptor.m @@ -756,8 +756,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { return NO; } -- (BOOL)getValue:(int32_t *)outValue forEnumTextFormatName:(NSString *)textFormatName; -{ +- (BOOL)getValue:(int32_t *)outValue forEnumTextFormatName:(NSString *)textFormatName { if (nameOffsets_ == NULL) [self calcValueNameOffsets]; for (uint32_t i = 0; i < valueCount_; ++i) { diff --git a/objectivec/GPBProtocolBuffers.m b/objectivec/GPBProtocolBuffers.m index 7393939194..d04c8be155 100644 --- a/objectivec/GPBProtocolBuffers.m +++ b/objectivec/GPBProtocolBuffers.m @@ -54,15 +54,13 @@ #import "GPBWellKnownTypes.m" #import "GPBWireFormat.m" -// Duration and Timestamp are #imported into GPBWellKnownTypes.m to the -// Objective C categories added will always be linked in with the classes. #import "google/protobuf/Any.pbobjc.m" #import "google/protobuf/Api.pbobjc.m" -// #import "google/protobuf/Duration.pbobjc.m" +#import "google/protobuf/Duration.pbobjc.m" #import "google/protobuf/Empty.pbobjc.m" #import "google/protobuf/FieldMask.pbobjc.m" #import "google/protobuf/SourceContext.pbobjc.m" #import "google/protobuf/Struct.pbobjc.m" -// #import "google/protobuf/Timestamp.pbobjc.m" +#import "google/protobuf/Timestamp.pbobjc.m" #import "google/protobuf/Type.pbobjc.m" #import "google/protobuf/Wrappers.pbobjc.m" diff --git a/objectivec/GPBWellKnownTypes.m b/objectivec/GPBWellKnownTypes.m index fe02f5de11..5cdd62d53a 100644 --- a/objectivec/GPBWellKnownTypes.m +++ b/objectivec/GPBWellKnownTypes.m @@ -32,8 +32,6 @@ // the static library. If these were compiled separately, the category methods // below would be stripped by the linker. -#import "google/protobuf/Timestamp.pbobjc.m" -#import "google/protobuf/Duration.pbobjc.m" #import "GPBWellKnownTypes.h" static NSTimeInterval TimeIntervalSince1970FromSecondsAndNanos(int64_t seconds, diff --git a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj index 41ba767604..3206791017 100644 --- a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj +++ b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj @@ -54,6 +54,8 @@ F4487C831AAF6AB300531423 /* GPBMessageTests+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C821AAF6AB300531423 /* GPBMessageTests+Merge.m */; }; F45C69CC16DFD08D0081955B /* GPBExtensionInternals.m in Sources */ = {isa = PBXBuildFile; fileRef = F45C69CB16DFD08D0081955B /* GPBExtensionInternals.m */; }; F45E57C71AE6DC6A000B7D99 /* text_format_map_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F45E57C61AE6DC6A000B7D99 /* text_format_map_unittest_data.txt */; }; + F47476E51D21A524007C7B1A /* Duration.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248D41A92826400BC1EC6 /* Duration.pbobjc.m */; }; + F47476E61D21A524007C7B1A /* Timestamp.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248D61A92826400BC1EC6 /* Timestamp.pbobjc.m */; }; F4B51B1E1BBC610700744318 /* GPBObjectiveCPlusPlusTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4B51B1D1BBC610700744318 /* GPBObjectiveCPlusPlusTest.mm */; }; F4E675971B21D0000054530B /* Any.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E675871B21D0000054530B /* Any.pbobjc.m */; }; F4E675991B21D0000054530B /* Api.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E675891B21D0000054530B /* Api.pbobjc.m */; }; @@ -625,6 +627,7 @@ F4E6759D1B21D0000054530B /* FieldMask.pbobjc.m in Sources */, 7461B54C0F94FB4E00A0C422 /* GPBUnknownField.m in Sources */, 7461B5530F94FB4E00A0C422 /* GPBMessage.m in Sources */, + F47476E51D21A524007C7B1A /* Duration.pbobjc.m in Sources */, 7461B5610F94FB4E00A0C422 /* GPBUnknownFieldSet.m in Sources */, 7461B5630F94FB4E00A0C422 /* GPBUtilities.m in Sources */, 7461B5640F94FB4E00A0C422 /* GPBWireFormat.m in Sources */, @@ -639,6 +642,7 @@ F4E675A31B21D0000054530B /* Type.pbobjc.m in Sources */, F4E675A11B21D0000054530B /* Struct.pbobjc.m in Sources */, F4E675A51B21D0000054530B /* Wrappers.pbobjc.m in Sources */, + F47476E61D21A524007C7B1A /* Timestamp.pbobjc.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -727,6 +731,7 @@ ); INFOPLIST_FILE = "Tests/UnitTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + OTHER_LDFLAGS = "-ObjC"; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = UnitTests; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; @@ -751,6 +756,7 @@ ); INFOPLIST_FILE = "Tests/UnitTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + OTHER_LDFLAGS = "-ObjC"; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = UnitTests; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; diff --git a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj index 7f95a75496..9f688f8d19 100644 --- a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj +++ b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj @@ -62,6 +62,8 @@ F4487C851AAF6AC500531423 /* GPBMessageTests+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C841AAF6AC500531423 /* GPBMessageTests+Merge.m */; }; F45C69CC16DFD08D0081955B /* GPBExtensionInternals.m in Sources */ = {isa = PBXBuildFile; fileRef = F45C69CB16DFD08D0081955B /* GPBExtensionInternals.m */; }; F45E57C91AE6DC98000B7D99 /* text_format_map_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F45E57C81AE6DC98000B7D99 /* text_format_map_unittest_data.txt */; }; + F47476E91D21A537007C7B1A /* Duration.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248DE1A929C7D00BC1EC6 /* Duration.pbobjc.m */; }; + F47476EA1D21A537007C7B1A /* Timestamp.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248E01A929C7D00BC1EC6 /* Timestamp.pbobjc.m */; }; F4B51B1C1BBC5C7100744318 /* GPBObjectiveCPlusPlusTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4B51B1B1BBC5C7100744318 /* GPBObjectiveCPlusPlusTest.mm */; }; F4E675D01B21D1620054530B /* Any.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E675B71B21D1440054530B /* Any.pbobjc.m */; }; F4E675D11B21D1620054530B /* Api.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E675B91B21D1440054530B /* Api.pbobjc.m */; }; @@ -713,6 +715,7 @@ F4E675D31B21D1620054530B /* FieldMask.pbobjc.m in Sources */, 7461B54C0F94FB4E00A0C422 /* GPBUnknownField.m in Sources */, 7461B5530F94FB4E00A0C422 /* GPBMessage.m in Sources */, + F47476E91D21A537007C7B1A /* Duration.pbobjc.m in Sources */, 7461B5610F94FB4E00A0C422 /* GPBUnknownFieldSet.m in Sources */, 7461B5630F94FB4E00A0C422 /* GPBUtilities.m in Sources */, 7461B5640F94FB4E00A0C422 /* GPBWireFormat.m in Sources */, @@ -727,6 +730,7 @@ F4E675D61B21D1620054530B /* Type.pbobjc.m in Sources */, F4E675D51B21D1620054530B /* Struct.pbobjc.m in Sources */, F4E675D71B21D1620054530B /* Wrappers.pbobjc.m in Sources */, + F47476EA1D21A537007C7B1A /* Timestamp.pbobjc.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -878,6 +882,7 @@ "$(inherited)", "\"$(DEVELOPER_DIR)/usr/lib\"", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = UnitTests; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -912,6 +917,7 @@ "$(inherited)", "\"$(DEVELOPER_DIR)/usr/lib\"", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = UnitTests; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; TARGETED_DEVICE_FAMILY = "1,2";