Skip to content

Commit 79cd5b9

Browse files
committed
Merge pull request #19 from showxu/feature/787_1
feat(objc4): Update for objc4-787.1, Xcode 12, Catalina
2 parents 750b3c7 + 5415dd3 commit 79cd5b9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+2464
-823
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ jobs:
2121
-scheme ${{ matrix.scheme }} \
2222
-configuration ${{ matrix.configuration }} \
2323
-arch ${{ matrix.arch }} \
24-
-sdk ${{ matrix.sdk }}
24+
-sdk ${{ matrix.sdk }}

README.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![Join the chat at https://gitter.im/showxu/objc4](https://badges.gitter.im/showxu/objc4.svg)](https://gitter.im/showxu/objc4?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
44
![support](https://img.shields.io/badge/support-macOS%20%7C%20iOS-orange.svg)
55

6-
This project is a buildable and debuggable version of latest Objective-C runtime (**objc4-781**) on [Apple Open Source](https://opensource.apple.com/tarballs/objc4/)
6+
This project is a buildable and debuggable version of latest Objective-C runtime (**objc4-787.1**) on [Apple Open Source](https://opensource.apple.com/tarballs/objc4/)
77

88
- [Requirement](#Requirement)
99
- [Installation](#Installation)
@@ -15,8 +15,8 @@ This project is a buildable and debuggable version of latest Objective-C runtime
1515

1616

1717
## **Requirement**
18-
[![Xcode 11.3](https://img.shields.io/badge/Xcode-11.3-blue?colorA=3caefc&colorB=24292e)](https://developer.apple.com/xcode/)
19-
[![macOS Catalina](https://img.shields.io/badge/macOS-Catalina-blue?colorA=blueviolet&colorB=24292e)](https://developer.apple.com/macos/)
18+
[![Xcode 12](https://img.shields.io/badge/Xcode-12-blue?colorA=1A5DE3&colorB=2A2C3A)](https://developer.apple.com/xcode/)
19+
[![macOS Catalina](https://img.shields.io/badge/macOS-Catalina-blue?colorA=314C78&colorB=181B2D)](https://developer.apple.com/macos/)
2020

2121

2222
## **Installation**
@@ -30,7 +30,7 @@ After building the **objc scheme**, manually integrate generated `libobjc.A.dyli
3030

3131

3232
## **objc4 tarballs**
33-
- [objc4-781](https://opensource.apple.com/tarballs/objc4/objc4-781.tar.gz)
33+
- [objc4-787.1](https://opensource.apple.com/tarballs/objc4/objc4-787.1.tar.gz)
3434
- [xnu-6153.41.3](https://opensource.apple.com/tarballs/xnu/xnu-6153.41.3.tar.gz)
3535
- [Libc-1353.41.1](https://opensource.apple.com/tarballs/Libc/Libc-1353.41.1.tar.gz)
3636
- [dyld-733.6](https://opensource.apple.com/tarballs/dyld/dyld-733.6.tar.gz)
@@ -59,7 +59,7 @@ After building the **objc scheme**, manually integrate generated `libobjc.A.dyli
5959
| objc-os.h | `#include <crt_externs.h>` | /Libc-1353.41.1/include/crt_externs.h |
6060
| objc-runtime-new.mm | `#include <mach/shared_region.h>` | /xnu-6153.41.3/osfmk/mach/shared_region.h |
6161
| objc-cache.mm | `#include <kern/restartable.h>` | /xnu-6153.41.3/osfmk/mach/restartable.defs, build from xnu kernel |
62-
| objc-os.h | `#include <CrashReporterClient.h>` | /Libc-825.24/include/CrashReporterClient.h |
62+
| objc-os.h | `#include_next <CrashReporterClient.h>` => `#include <CrashReporterClient.h>` | /Libc-825.24/include/CrashReporterClient.h |
6363

6464
#### Private Header Included Header
6565
| private header | #include | tarball |
@@ -69,10 +69,12 @@ After building the **objc scheme**, manually integrate generated `libobjc.A.dyli
6969
| lock_private.h | `#include <pthread/tsd_private.h>` | /libpthread-416.40.3/private/tsd_private.h |
7070
| workqueue_private.h | `#include <pthread/qos_private.h>` | /llibpthread-416.40.3/private/qos_private.h |
7171
| qos_private.h | `#include <sys/qos_private.h>` | /libpthread-416.40.3/sys/qos_private.h |
72+
| objc-exception.mm | `#include <objc/objc-abi.h>` | removed |
73+
| objc-gdb.h | `#include <objc/maptable.h>` | removed |
7274

7375
#### Bridge OS
7476

75-
In public macosx sdk (latest Xcode 11.3.1), bridgeos (e.g. `__has_feature(attribute_availability_bridgeos)`) is unavailable, bridgeos availability should be removed or commented-out.
77+
In public macosx sdk (latest Xcode 12.2), bridgeos (e.g. `__has_feature(attribute_availability_bridgeos)`) is unavailable, bridgeos availability should be removed or commented-out.
7678

7779
#### dyld
7880

@@ -86,12 +88,12 @@ In latest dyld-733.6 (dyld-421.2 later), apple use this [ruby script](https://op
8688
## **Build Setting**
8789
| Declaration | Value |
8890
|-------------|-------|
89-
| `HEADER_SEARCH_PATHS` | $(SRCROOT)/../macosx.internal/System/Library/Frameworks/System.framework/PrivateHeaders |
90-
| `GCC_PREPROCESSOR_DEFINITIONS` | LIBC_NO_LIBCRASHREPORTERCLIENT |
91+
| `HEADER_SEARCH_PATHS` | $(SRCROOT)/../macosx.internal/System/Library/Frameworks/System.framework/PrivateHeaders, also append `$(inherited)` to target objc |
92+
| `GCC_PREPROCESSOR_DEFINITIONS` | LIBC_NO_LIBCRASHREPORTERCLIENT, also append `$(inherited)` to target objc |
9193
| `ORDER_FILE` | $(SRCROOT)/libobjc.order |
92-
| `OTHER_LDFLAGS[sdk=macosx*]` | -lc++abi -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt |
93-
| `OTHER_LDFLAGS[sdk=iphoneos*][arch=*]` | -lc++abi -Wl,-segalign,0x4000 -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt -isystem -iframework |
94-
| `OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]` | -lc++abi -Xlinker -interposable_list -Xlinker interposable.txt |
94+
| `OTHER_LDFLAGS[sdk=macosx*]` | -lc++abi -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt, remove build setting in target objc |
95+
| `OTHER_LDFLAGS[sdk=iphoneos*][arch=*]` | -lc++abi -Wl,-segalign,0x4000 -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt, remove build setting in target objc |
96+
| `OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]` | -lc++abi -Xlinker -interposable_list -Xlinker interposable.txt, remove build setting in target objc |
9597

9698
### Run Script
9799
Evidently public macosx sdk is our only choice, we need to update value of parameter `-sdk` from `macosx.internal` to `macosx` in run script of objc target.

inspect/objc-inspect.xcodeproj/project.pbxproj

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@
109109
335562AE1FE3A17F00BD601B /* Project object */ = {
110110
isa = PBXProject;
111111
attributes = {
112-
LastUpgradeCheck = 0900;
112+
LastUpgradeCheck = 1220;
113113
ORGANIZATIONNAME = alchemistxxd;
114114
TargetAttributes = {
115115
33B571A31FE3A49100FCE649 = {
@@ -124,6 +124,7 @@
124124
hasScannedForEncodings = 0;
125125
knownRegions = (
126126
en,
127+
Base,
127128
);
128129
mainGroup = 335562AD1FE3A17F00BD601B;
129130
productRefGroup = 335562AD1FE3A17F00BD601B;
@@ -162,15 +163,18 @@
162163
CLANG_WARN_BOOL_CONVERSION = YES;
163164
CLANG_WARN_COMMA = YES;
164165
CLANG_WARN_CONSTANT_CONVERSION = YES;
166+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
165167
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
166168
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
167169
CLANG_WARN_EMPTY_BODY = YES;
168170
CLANG_WARN_ENUM_CONVERSION = YES;
169171
CLANG_WARN_INFINITE_RECURSION = YES;
170172
CLANG_WARN_INT_CONVERSION = YES;
171173
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
174+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
172175
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
173176
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
177+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
174178
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
175179
CLANG_WARN_STRICT_PROTOTYPES = YES;
176180
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -219,15 +223,18 @@
219223
CLANG_WARN_BOOL_CONVERSION = YES;
220224
CLANG_WARN_COMMA = YES;
221225
CLANG_WARN_CONSTANT_CONVERSION = YES;
226+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
222227
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
223228
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
224229
CLANG_WARN_EMPTY_BODY = YES;
225230
CLANG_WARN_ENUM_CONVERSION = YES;
226231
CLANG_WARN_INFINITE_RECURSION = YES;
227232
CLANG_WARN_INT_CONVERSION = YES;
228233
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
234+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
229235
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
230236
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
237+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
231238
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
232239
CLANG_WARN_STRICT_PROTOTYPES = YES;
233240
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -257,7 +264,7 @@
257264
33B571A91FE3A49100FCE649 /* Debug */ = {
258265
isa = XCBuildConfiguration;
259266
buildSettings = {
260-
CODE_SIGN_IDENTITY = "";
267+
CODE_SIGN_IDENTITY = "-";
261268
CODE_SIGN_STYLE = Manual;
262269
DEVELOPMENT_TEAM = "";
263270
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -268,7 +275,7 @@
268275
33B571AA1FE3A49100FCE649 /* Release */ = {
269276
isa = XCBuildConfiguration;
270277
buildSettings = {
271-
CODE_SIGN_IDENTITY = "";
278+
CODE_SIGN_IDENTITY = "-";
272279
CODE_SIGN_STYLE = Manual;
273280
DEVELOPMENT_TEAM = "";
274281
PRODUCT_NAME = "$(TARGET_NAME)";

inspect/objc-inspect.xcodeproj/xcshareddata/xcschemes/objc-inspect.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1130"
3+
LastUpgradeVersion = "1220"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

macosx.internal/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/CrashReporterClient.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#else /* !LIBC_NO_LIBCRASHREPORTERCLIENT */
3838

3939
/* Include the real CrashReporterClient.h */
40-
#include_next <CrashReporterClient.h>
40+
#include <CrashReporterClient.h>
4141

4242
#endif /* !LIBC_NO_LIBCRASHREPORTERCLIENT */
4343

objc.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ ORDER_FILE = $(SRCROOT)/libobjc.order
1717
// resolve ld: library not found for -lCrashReporterClient clang: error: linker command failed with exit code 1 (use -v to see invocation)
1818
// OTHER_LDFLAGS[sdk=macosx*] = -lCrashReporterClient -lc++abi -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt
1919
OTHER_LDFLAGS[sdk=macosx*] = -lc++abi -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt
20-
OTHER_LDFLAGS[sdk=iphoneos*][arch=*] = -lc++abi -Wl,-segalign,0x4000 -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt -isystem -iframework
20+
OTHER_LDFLAGS[sdk=iphoneos*][arch=*] = -lc++abi -Wl,-segalign,0x4000 -Xlinker -sectalign -Xlinker __DATA -Xlinker __objc_data -Xlinker 0x1000 -Xlinker -interposable_list -Xlinker interposable.txt
2121
OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*] = -lc++abi -Xlinker -interposable_list -Xlinker interposable.txt

objc4/libobjc.order

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ __objc_update_stubs_in_mach_header
1919
_sel_init
2020
___sel_registerName
2121
__objc_search_builtins
22-
__ZNK8objc_opt13objc_selopt_t3getEPKc
23-
__ZNK8objc_opt13objc_selopt_t4hashEPKc
2422
_sel_registerName
2523
_arr_init
2624
__ZN4objc8DenseMapIP11objc_objectmLb1ENS_12DenseMapInfoIS2_EENS3_ImEEE4initEj

0 commit comments

Comments
 (0)