Skip to content

Commit 21b1a3c

Browse files
committed
Update fixes to work with gcc
1 parent f81216c commit 21b1a3c

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

build_osx.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ reset_patch_targets() {
181181
Source/GSDictionary.m \
182182
Source/NSDictionary.m \
183183
Source/NSPropertyList.m \
184+
Source/NSSerializer.m \
184185
Source/NSFileManager.m \
185186
Source/NSDatePrivate.h \
186187
Source/NSNumber.m \
@@ -356,6 +357,8 @@ patch_nsfilemanager_cached_imp_for_darwin_gcc() {
356357
perl -0pi -e 's/IMP(\s+)addImp;/void (*addImp)(id, SEL, id);/g' "$filemanager"
357358
perl -0pi -e 's/(\n\s+nxtImp\s*=\s*)\[direnum\s+methodForSelector:\s*@selector\(nextObject\)\];/$1(id (*)(id, SEL))[direnum methodForSelector: @selector(nextObject)];/g' "$filemanager"
358359
perl -0pi -e 's/(\n\s+addImp\s*=\s*)\[content\s+methodForSelector:\s*@selector\(addObject:\)\];/$1(void (*)(id, SEL, id))[content methodForSelector: @selector(addObject:)];/g' "$filemanager"
360+
perl -0pi -e 's/\n\s+id \(\*nxtImp\)\(id, SEL\);\n\s+void \(\*addImp\)\(id, SEL, id\);\n\s*\n\s+nxtImp = \[direnum methodForSelector: @selector\(nextObject\)\];\n\s+addImp = \[content methodForSelector: @selector\(addObject:\)\];\n\s*\n\s+while \(\(path = \(\*nxtImp\)\(direnum, @selector\(nextObject\)\)\) != nil\)\n\s+\{\n\s+\(\*addImp\)\(content, @selector\(addObject:\), path\);\n\s+\}/\n while ((path = [direnum nextObject]) != nil)\n\t{\n\t [content addObject: path];\n\t}/g' "$filemanager"
361+
perl -0pi -e 's/\n\s+id \(\*nxtImp\)\(id, SEL\);\n(\s+NSMutableArray\s+\*urlArray;\n\s+NSString\s+\*tempPath;\n\s*\n)\s+nxtImp = \[direnum methodForSelector: @selector\(nextObject\)\];\n\s*\n(\s+urlArray = \[NSMutableArray arrayWithCapacity: 128\];\n)\s+while \(\(tempPath = \(\*nxtImp\)\(direnum, @selector\(nextObject\)\)\) != nil\)/\n$1$2 while ((tempPath = [direnum nextObject]) != nil)/g' "$filemanager"
359362
}
360363

361364
patch_nspropertylist_cached_imp_for_darwin_gcc() {
@@ -367,6 +370,16 @@ patch_nspropertylist_cached_imp_for_darwin_gcc() {
367370
perl -0pi -e 's/IMP(\s+)myObj(\s*=\s*\[obj\s+methodForSelector:\s*objSel\];)/id (*myObj)(id, SEL, id)$2/g' "$plist"
368371
}
369372

373+
patch_nsserializer_cached_imp_for_darwin_gcc() {
374+
local serializer="$SRCROOT/libs-base/Source/NSSerializer.m"
375+
if [[ ! -f "$serializer" ]]; then
376+
return
377+
fi
378+
379+
perl -0pi -e 's/IMP(\s+)nxtImp;/id (*nxtImp)(id, SEL);/g' "$serializer"
380+
perl -0pi -e 's/IMP(\s+)objImp;/id (*objImp)(id, SEL, id);/g' "$serializer"
381+
}
382+
370383
# patch_nsobject_for_gnu_runtime
371384
#
372385
# Wraps GNU-Objective-C-2 runtime API calls inside NSObject.m with
@@ -592,6 +605,7 @@ patch_nsdictionary_cached_imp_for_darwin_gcc
592605
patch_nsuserdefaults_cached_imp_for_darwin_gcc
593606
patch_nsfilemanager_cached_imp_for_darwin_gcc
594607
patch_nspropertylist_cached_imp_for_darwin_gcc
608+
patch_nsserializer_cached_imp_for_darwin_gcc
595609
patch_nsobject_for_gnu_runtime
596610
patch_nsnotificationcenter_for_gnu_runtime
597611
patch_nszone_for_darwin_gcc

0 commit comments

Comments
 (0)