WebKit Bugzilla
Attachment 349614 Details for
Bug 189570
: Start replacing the postprocess-headers bash scripts with a shared script
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189570-20180912192509.patch (text/plain), 24.70 KB, created by
Keith Miller
on 2018-09-12 19:25:11 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Keith Miller
Created:
2018-09-12 19:25:11 PDT
Size:
24.70 KB
patch
obsolete
>Subversion Revision: 235963 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 38c6e6702983b8c281b71fb9d4ab2b6a14b20ad5..b1640675f3d47c133652fead4677967ad6f43ecf 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,20 @@ >+2018-09-12 Keith Miller <keith_miller@apple.com> >+ >+ Start replacing the postprocess-headers bash scripts with a shared script >+ https://bugs.webkit.org/show_bug.cgi?id=189570 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add a postprocess header replacements script for JSC and wired >+ support for it into the xcode build. Right now the script relies >+ on a bunch of enviroment variables being set. In the future we >+ should figure out how to canonicalize these values between CMake >+ and Xcode, at least until we move to CMake only. >+ >+ * CMakeLists.txt: >+ * JavaScriptCore.xcodeproj/project.pbxproj: >+ * postprocess-headers-replacements.rb: Added. >+ > 2018-09-12 Guillaume Emont <guijemont@igalia.com> > > Add IGNORE_WARNING_.* macros >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index 605aa7dce35773baf575c314f7f1dccd986b9d7b..4b088bd6fc7800ef108672fcf9600d10af952807 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,23 @@ >+2018-09-12 Keith Miller <keith_miller@apple.com> >+ >+ Start replacing the postprocess-headers bash scripts with a shared script >+ https://bugs.webkit.org/show_bug.cgi?id=189570 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add a new script that will postprocess our framework header files. >+ This script is intended to be shared amongst all the projects that >+ do header post-processing. The script can be passed a list of >+ directories or files which it will process using the replacements >+ supplied by the called. replacements are specified as a ruby file >+ that defines a function addReplacements. This function should >+ provide an array of Replacement objects. Right now only the >+ ReplacementRegex object is used but when WebKitLegacy support is >+ added we will start using a replacement based on feature defines. >+ >+ * Scripts/postprocess-headers.rb: Added. >+ * wtf/CMakeLists.txt: >+ > 2018-09-12 Guillaume Emont <guijemont@igalia.com> > > Add IGNORE_WARNING_.* macros >diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt >index 9305648c55857d59e9618dea114d93d492cbcf2e..afaf7443383b6549b64db5e285bd1be7bb06d475 100644 >--- a/Source/JavaScriptCore/CMakeLists.txt >+++ b/Source/JavaScriptCore/CMakeLists.txt >@@ -1207,6 +1207,7 @@ endif () > WEBKIT_MAKE_FORWARDING_HEADERS(JavaScriptCore > FILES ${JavaScriptCore_PUBLIC_FRAMEWORK_HEADERS} > FLATTENED >+ POSTPROCESS_HEADERS > ) > > WEBKIT_MAKE_FORWARDING_HEADERS(JavaScriptCore >@@ -1214,6 +1215,7 @@ WEBKIT_MAKE_FORWARDING_HEADERS(JavaScriptCore > FILES ${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS} > DERIVED_SOURCE_DIRECTORIES ${DERIVED_SOURCES_DIR}/JavaScriptCore ${DERIVED_SOURCES_DIR}/JavaScriptCore/inspector > FLATTENED >+ POSTPROCESS_HEADERS > ) > > target_include_directories(LLIntOffsetsExtractor PRIVATE >diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >index 1308f88a18fe6ddf5396ed62bb4fa963f4302014..3ce4ba05f53d367cd61e714b146e03f33e970435 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >@@ -846,6 +846,7 @@ > 4443AE3316E188D90076F110 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; }; > 451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 473DA4A4764C45FE871B0485 /* DefinePropertyAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 169948EDE68D4054B01EF797 /* DefinePropertyAttributes.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 4BAA07CEB81F49A296E02203 /* WasmSignatureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 521131F71F82BF14007CCEEE /* PolyProtoAccessChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 521131F61F82BF11007CCEEE /* PolyProtoAccessChain.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 521322461ECBCE8200F65615 /* WebAssemblyFunctionBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 521322441ECBCE8200F65615 /* WebAssemblyFunctionBase.h */; }; > 5250D2D21E8DA05A0029A932 /* WasmThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 5250D2D01E8DA05A0029A932 /* WasmThunks.h */; settings = {ATTRIBUTES = (Private, ); }; }; >@@ -1536,7 +1537,6 @@ > AD5C36EC1F75AD7C000BCAAF /* WasmToJS.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD09AEE1F5F623F001313C2 /* WasmToJS.h */; settings = {ATTRIBUTES = (Private, ); }; }; > AD5C36EF1F7A263A000BCAAF /* WasmMemoryMode.h in Headers */ = {isa = PBXBuildFile; fileRef = AD5C36EE1F7A2629000BCAAF /* WasmMemoryMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; > AD7438C01E0457A400FD0C2A /* WasmSignature.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7438BF1E04579200FD0C2A /* WasmSignature.h */; settings = {ATTRIBUTES = (Private, ); }; }; >- 4BAA07CEB81F49A296E02203 /* WasmSignatureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; > AD7B4B2E1FA3E29800C9DF79 /* WasmNameSection.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7B4B2D1FA3E28600C9DF79 /* WasmNameSection.h */; settings = {ATTRIBUTES = (Private, ); }; }; > AD86A93E1AA4D88D002FE77F /* WeakGCMapInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = AD86A93D1AA4D87C002FE77F /* WeakGCMapInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; > AD8FF3981EB5BDB20087FF82 /* WasmIndexOrName.h in Headers */ = {isa = PBXBuildFile; fileRef = AD8FF3951EB5BD850087FF82 /* WasmIndexOrName.h */; settings = {ATTRIBUTES = (Private, ); }; }; >@@ -3242,6 +3242,7 @@ > 2AF7382A18BBBF92008A5A37 /* StructureIDTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructureIDTable.cpp; sourceTree = "<group>"; }; > 2AF7382B18BBBF92008A5A37 /* StructureIDTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureIDTable.h; sourceTree = "<group>"; }; > 3032175DF1AD47D8998B34E1 /* JSSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSourceCode.h; sourceTree = "<group>"; }; >+ 30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmSignatureInlines.h; sourceTree = "<group>"; }; > 37119A7720CCB5DC002C6DC9 /* WebKitTargetConditionals.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebKitTargetConditionals.xcconfig; sourceTree = "<group>"; }; > 371D842C17C98B6E00ECF994 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; > 37C738D11EDB5672003F2B0B /* ParseInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParseInt.h; sourceTree = "<group>"; }; >@@ -4365,7 +4366,6 @@ > AD5C36F01F7A26BF000BCAAF /* WasmMemoryMode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WasmMemoryMode.cpp; sourceTree = "<group>"; }; > AD7438BE1E04579200FD0C2A /* WasmSignature.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WasmSignature.cpp; sourceTree = "<group>"; }; > AD7438BF1E04579200FD0C2A /* WasmSignature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmSignature.h; sourceTree = "<group>"; }; >- 30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmSignatureInlines.h; sourceTree = "<group>"; }; > AD7B4B2D1FA3E28600C9DF79 /* WasmNameSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmNameSection.h; sourceTree = "<group>"; }; > AD86A93D1AA4D87C002FE77F /* WeakGCMapInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakGCMapInlines.h; sourceTree = "<group>"; }; > AD8DD6CF1F67089F0004EB52 /* JSToWasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JSToWasm.h; path = js/JSToWasm.h; sourceTree = "<group>"; }; >@@ -9336,6 +9336,7 @@ > BC18C4460E16F5CD00B34460 /* ObjectPrototype.h in Headers */, > E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */, > 969A079B0ED1D3AE00F1F681 /* Opcode.h in Headers */, >+ FE64872E2141D04800AB0D3E /* OpcodeInlines.h in Headers */, > 0F2BDC2C151FDE9100CD8910 /* Operands.h in Headers */, > A70447EA17A0BD4600F5898E /* OperandsInlines.h in Headers */, > BC18C4480E16F5CD00B34460 /* Operations.h in Headers */, >@@ -9481,7 +9482,6 @@ > E49DC16C12EF294E00184A1F /* SourceProviderCache.h in Headers */, > E49DC16D12EF295300184A1F /* SourceProviderCacheItem.h in Headers */, > 0FDE87FC1DFE6E510064C390 /* SpaceTimeMutatorScheduler.h in Headers */, >- FE64872E2141D04800AB0D3E /* OpcodeInlines.h in Headers */, > 0FB7F39E15ED8E4600F167B2 /* SparseArrayValueMap.h in Headers */, > A7386554118697B400540279 /* SpecializedThunkJIT.h in Headers */, > 0F5541B21613C1FB00CE3E25 /* SpecialPointer.h in Headers */, >@@ -10021,7 +10021,7 @@ > ); > runOnlyForDeploymentPostprocessing = 0; > shellPath = /bin/sh; >- shellScript = "exec ${SRCROOT}/postprocess-headers.sh"; >+ shellScript = "set -e\n\ncd $SRCROOT\n\nif [ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]; then\n BUILD_SCRIPTS_DIR=\"${SDKROOT}/${WK_ALTERNATE_WEBKIT_SDK_PATH}/usr/local/include/wtf/Scripts\"\n INTERNAL_REPLACEMENTS=\"${SDKROOT}/usr/local/include/WebKitAdditions/Scripts/postprocess-headers-replacements.rb\"\nelse\n BUILD_SCRIPTS_DIR=\"${BUILT_PRODUCTS_DIR}/usr/local/include/wtf/Scripts\"\n INTERNAL_REPLACEMENTS=\"${BUILT_PRODUCTS_DIR}/usr/local/include/WebKitAdditions/Scripts/postprocess-headers-replacements.rb\"\nfi\n\nREPLACEMENTS=\"${SRCROOT}/postprocess-headers-replacements.rb\"\nif [ -f $INTERNAL_REPLACEMENTS ]; then\n REPLACEMENTS=\"${INTERNAL_REPLACEMENTS};${REPLACEMENTS}\"\nfi \n\n# Pass our lists of header directories is a ; separated list because that's what CMake does\n/usr/bin/env ruby \"${BUILD_SCRIPTS_DIR}/postprocess-headers.rb\" \"--forwarding-headers-paths\" \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH};${TARGET_BUILD_DIR}/${PRIVATE_HEADERS_FOLDER_PATH}\" \"--definitions\" \"${REPLACEMENTS}\"\n"; > }; > 374F95C9205F9975002BF68F /* Make libWTF.a Symbolic Link */ = { > isa = PBXShellScriptBuildPhase; >@@ -10049,7 +10049,7 @@ > ); > runOnlyForDeploymentPostprocessing = 0; > shellPath = /bin/sh; >- shellScript = "set -e\n\ncd $SRCROOT\n\nif [ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]; then\n BUILD_SCRIPTS_DIR=\"${SDKROOT}${WK_ALTERNATE_WEBKIT_SDK_PATH}/usr/local/include/wtf/Scripts\"\nelse\n BUILD_SCRIPTS_DIR=\"${BUILT_PRODUCTS_DIR}/usr/local/include/wtf/Scripts\"\nfi\n\nUnifiedSourceCppFileCount=145\nUnifiedSourceMmFileCount=5\n\n/usr/bin/env ruby \"${BUILD_SCRIPTS_DIR}/generate-unified-source-bundles.rb\" \"--derived-sources-path\" \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\" \"--source-tree-path\" \"${SRCROOT}\" \"--max-cpp-bundle-count\" \"${UnifiedSourceCppFileCount}\" \"--max-obj-c-bundle-count\" \"${UnifiedSourceMmFileCount}\" \"Sources.txt\" \"SourcesCocoa.txt\" > /dev/null\n"; >+ shellScript = "set -e\n\ncd $SRCROOT\n\nif [ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]; then\n BUILD_SCRIPTS_DIR=\"${SDKROOT}/${WK_ALTERNATE_WEBKIT_SDK_PATH}/usr/local/include/wtf/Scripts\"\nelse\n BUILD_SCRIPTS_DIR=\"${BUILT_PRODUCTS_DIR}/usr/local/include/wtf/Scripts\"\nfi\n\nUnifiedSourceCppFileCount=145\nUnifiedSourceMmFileCount=5\n\n/usr/bin/env ruby \"${BUILD_SCRIPTS_DIR}/generate-unified-source-bundles.rb\" \"--derived-sources-path\" \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\" \"--source-tree-path\" \"${SRCROOT}\" \"--max-cpp-bundle-count\" \"${UnifiedSourceCppFileCount}\" \"--max-obj-c-bundle-count\" \"${UnifiedSourceMmFileCount}\" \"Sources.txt\" \"SourcesCocoa.txt\" > /dev/null\n"; > }; > 5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */ = { > isa = PBXShellScriptBuildPhase; >diff --git a/Source/JavaScriptCore/postprocess-headers-replacements.rb b/Source/JavaScriptCore/postprocess-headers-replacements.rb >new file mode 100644 >index 0000000000000000000000000000000000000000..4db5c3dff036f98975ce8c25e7a4b7da85532e34 >--- /dev/null >+++ b/Source/JavaScriptCore/postprocess-headers-replacements.rb >@@ -0,0 +1,29 @@ >+# computeReplacements is run from the Source/WTF/Scripts/postprocess-headers.rb script. >+def computeReplacements() >+ replacements = [] >+ platformName = ENV["PLATFORM_NAME"] >+ if platformName == "macosx" >+ replacements.push(ReplacementRegex.new(/JSC_MAC_TBA/, ENV["MACOSX_DEPLOYMENT_TARGET"])) >+ replacements.push(ReplacementRegex.new(/JSC_IOS_TBA/, "NA")) >+ replacements.push(ReplacementRegex.new(/JSC_MAC_VERSION_TBA/, ENV["TARGET_MAC_OS_X_VERSION_MAJOR"])) >+ replacements.push(ReplacementRegex.new(/JSC_IOS_VERSION_TBA/, "0")) >+ replacements.push(ReplacementRegex.new(/JSC_API_AVAILABLE/, "API_AVAILABLE")) >+ replacements.push(ReplacementRegex.new(/JSC_API_DEPRECATED/, "API_DEPRECATED")) >+ replacements.push(ReplacementRegex.new(/^JSC_CLASS_AVAILABLE/, "JSC_EXTERN API_AVAILABLE")) >+ replacements.push(ReplacementRegex.new(/^JSC_CLASS_DEPRECATED/, "JSC_EXTERN API_DEPRECATED")) >+ elsif platformName =~ "iphone" >+ replacements.push(ReplacementRegex.new(/JSC_MAC_TBA/, "NA")) >+ replacements.push(ReplacementRegex.new(/JSC_IOS_TBA/, ENV["IPHONEOS_DEPLOYMENT_TARGET"])) >+ replacements.push(ReplacementRegex.new(/JSC_MAC_VERSION_TBA/, "0")) >+ replacements.push(ReplacementRegex.new(/JSC_IOS_VERSION_TBA/, ENV["SDK_VERSION_MAJOR"])) >+ replacements.push(ReplacementRegex.new(/JSC_API_AVAILABLE/, "API_AVAILABLE")) >+ replacements.push(ReplacementRegex.new(/JSC_API_DEPRECATED/, "API_DEPRECATED")) >+ replacements.push(ReplacementRegex.new(/^JSC_CLASS_AVAILABLE/, "JSC_EXTERN API_AVAILABLE")) >+ replacements.push(ReplacementRegex.new(/^JSC_CLASS_DEPRECATED/, "JSC_EXTERN API_DEPRECATED")) >+ else >+ replacements.push(ReplacementRegex.new(/JSC_(API_|CLASS_)AVAILABLE\(.*\)\s*\)/, "")) >+ replacements.push(ReplacementRegex.new(/JSC_(API_|CLASS_)DEPRECATED(_WITH_REPLACEMENT)?\(.*\)\s*\)/, "")) >+ replacements.push(ReplacementRegex.new(/JSC_(MAC|IOS)_VERSION_TBA/, "0")) >+ end >+ replacements >+end >diff --git a/Source/WTF/Scripts/postprocess-headers.rb b/Source/WTF/Scripts/postprocess-headers.rb >new file mode 100644 >index 0000000000000000000000000000000000000000..0c8ea77370e95160fd379812357a3c198014fee1 >--- /dev/null >+++ b/Source/WTF/Scripts/postprocess-headers.rb >@@ -0,0 +1,167 @@ >+#!/usr/local/ruby >+# >+# Copyright (C) 2018 Apple Inc. All rights reserved. >+# >+# Redistribution and use in source and binary forms, with or without >+# modification, are permitted provided that the following conditions >+# are met: >+# 1. Redistributions of source code must retain the above copyright >+# notice, this list of conditions and the following disclaimer. >+# 2. Redistributions in binary form must reproduce the above copyright >+# notice, this list of conditions and the following disclaimer in the >+# documentation and/or other materials provided with the distribution. >+# >+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+# THE POSSIBILITY OF SUCH DAMAGE. >+# >+ >+require 'pathname' >+require 'getoptlong' >+require 'open3' >+ >+SCRIPT_NAME = File.basename($0) >+ >+def usage(message) >+ if message >+ puts "Error: #{message}" >+ puts >+ end >+ >+ puts "usage: #{SCRIPT_NAME} [options] <sources-list-file>..." >+ puts "All option's arguments can be passed as a semi-colon separated list (because that's what CMake uses)" >+ puts "--help (-h) Print this message" >+ puts "--verbose (-v) Adds extra logging to stderr." >+ puts >+ puts "Required arguments:" >+ puts "--forwarding-headers Paths to files that should be postprocessed." >+ puts "--forwarding-headers-paths Paths to directories that should be recursively postprocessed." >+ puts >+ puts "Optional arguments:" >+ puts "--definitions (-d) Paths to definitions replacement files. The file should be a ruby" >+ puts " script that defs a function computeReplacements(). Where" >+ puts " computeReplacements returns an array of Replacement objects." >+ exit 1 >+end >+ >+$verbose = false >+$forwardingHeaders = [] >+$definitionsPaths = [] >+ >+def log(text) >+ $stderr.puts text if $verbose >+end >+ >+GetoptLong.new(['--help', '-h', GetoptLong::NO_ARGUMENT], >+ ['--verbose', '-v', GetoptLong::NO_ARGUMENT], >+ ['--forwarding-headers', GetoptLong::REQUIRED_ARGUMENT], >+ ['--forwarding-headers-paths', GetoptLong::REQUIRED_ARGUMENT], >+ ['--definitions', '-d', GetoptLong::REQUIRED_ARGUMENT]).each { >+ | opt, arg | >+ case opt >+ when '--help' >+ usage(nil) >+ when '--verbose' >+ $verbose = true >+ when '--forwarding-headers' >+ $forwardingHeaders.concat(arg.split(";").map { |x| Pathname.new(x) }) >+ when '--forwarding-headers-paths' >+ arg.split(";").each { >+ | forwardingHeaderDir | >+ forwardingHeaderDir = Pathname.new(forwardingHeaderDir) >+ usage("Derived sources directory: #{arg} does not exist.") if !forwardingHeaderDir.exist? or !forwardingHeaderDir.directory? >+ $forwardingHeaders.concat(Dir.glob(["#{forwardingHeaderDir}/**/*.h"])) >+ } >+ when '--definitions' >+ arg.split(";").each { >+ | definition | >+ definitionPath = Pathname.new(definition) >+ usage("Source tree #{definition} does not exist.") if !definitionPath.exist? or !definitionPath.file? >+ $definitionsPaths.push(definitionPath) >+ } >+ end >+} >+ >+usage("no forwarding headers provided not provided.") if !$forwardingHeaders.length >+ >+class ReplacementRegex >+ attr_reader :pattern, :replacement >+ >+ def initialize(pattern, replacement) >+ @pattern = pattern >+ @replacement = replacement >+ end >+ >+ def run(source) >+ result = source.gsub(pattern, replacement) >+ return result >+ end >+end >+ >+class ReplacementIfDef >+ attr_reader :features >+ >+ def initialize(features) >+ @features = features >+ end >+ >+ def computeCLIParameters >+ result = "" >+ @features.each_pair { >+ | feature, value | >+ result += " -D#{feature}=#{value}" >+ } >+ >+ result = "-B \"" + result + "\"" if result != "" >+ return result >+ end >+ >+ def run(source) >+ exit_status = nil >+ Open3.popen3("unifdef #{computeCLIParameters}") do | stdin, stdout, stderr, thread | >+ stdin.write(source) >+ source = stdout.read() >+ exit_status = thread.value >+ end >+ >+ usage("unifdef returned exit status: #{exit_status}, which indicates an error") if exit_status == nil or exit_status >= 2 >+ return source >+ end >+end >+ >+$replacements = [] >+ >+if !$definitionsPaths.length >+ $replacements.push(ReplacementRegex.new(/\s*(WK|JSC)_API_AVAILABLE\(.*\)/, '')) >+else >+ $definitionsPaths.each { >+ | definition | >+ log("Running definitions file: #{definition}") >+ eval File.read(definition) >+ $replacements.concat(computeReplacements()) >+ } >+end >+ >+$forwardingHeaders.each { >+ | path | >+ log("Scanning #{path}") >+ file = File.read(path) >+ result = file >+ $replacements.each { >+ | replacement | >+ result = replacement.run(result) >+ } >+ >+ if file != result >+ log("Replacing #{path}") >+ File.write(path, result) >+ end >+} >diff --git a/Source/WTF/wtf/CMakeLists.txt b/Source/WTF/wtf/CMakeLists.txt >index fb348abc3f82d05398581718d64ac0f523dcfca6..f843c5e56fa29d1d157a7eed8a70e3385abaa739 100644 >--- a/Source/WTF/wtf/CMakeLists.txt >+++ b/Source/WTF/wtf/CMakeLists.txt >@@ -521,19 +521,25 @@ if (MSVC) > TARGET WTF > PRE_BUILD > COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/auto-version.pl ${DERIVED_SOURCES_DIR} >- VERBATIM) >+ VERBATIM >+ ) > > add_custom_command( > TARGET WTF > POST_BUILD > COMMAND ${PERL_EXECUTABLE} ${WEBKIT_LIBRARIES_DIR}/tools/scripts/version-stamp.pl ${DERIVED_SOURCES_DIR} $<TARGET_FILE:WTF> >- VERBATIM) >+ VERBATIM >+ ) > endif () > >+set(forwarded_build_scripts >+ generate-unified-source-bundles.rb >+ postprocess-headers.rb >+) >+ > file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/wtf/Scripts) > >-file(COPY >- ../Scripts/generate-unified-source-bundles.rb >- DESTINATION >- ${FORWARDING_HEADERS_DIR}/wtf/Scripts >-) >+foreach (script IN LISTS forwarded_build_scripts) >+ # We list these as configuration files since we use some of them at build time. >+ configure_file(../Scripts/${script} ${FORWARDING_HEADERS_DIR}/wtf/Scripts/${script} COPYONLY) >+endforeach () >diff --git a/Source/cmake/WebKitMacros.cmake b/Source/cmake/WebKitMacros.cmake >index 36e5a0200c92cd692445c1458741a3feab9e29ee..ebcde7a5a37c527b6fad0528c14b1b9acaba464e 100644 >--- a/Source/cmake/WebKitMacros.cmake >+++ b/Source/cmake/WebKitMacros.cmake >@@ -216,10 +216,17 @@ macro(WEBKIT_CREATE_FORWARDING_HEADERS _framework) > endmacro() > > function(WEBKIT_MAKE_FORWARDING_HEADERS framework) >- set(options FLATTENED) >+ set(options FLATTENED POSTPROCESS_HEADERS) > set(oneValueArgs DESTINATION TARGET_NAME) > set(multiValueArgs DIRECTORIES EXTRA_DIRECTORIES DERIVED_SOURCE_DIRECTORIES FILES) > cmake_parse_arguments(opt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) >+ >+ if (WIN32 AND INTERNAL_BUILD) >+ set(WTF_SCRIPTS_DIR "${CMAKE_BINARY_DIR}/../include/private/WTF/Scripts") >+ else () >+ set(WTF_SCRIPTS_DIR "${FORWARDING_HEADERS_DIR}/wtf/Scripts") >+ endif () >+ > set(headers ${opt_FILES}) > if (opt_DESTINATION) > set(destination ${opt_DESTINATION}) >@@ -268,8 +275,20 @@ function(WEBKIT_MAKE_FORWARDING_HEADERS framework) > else () > set(target_name ${framework}ForwardingHeaders) > endif () >+ # FIXME: There should probably be a dependency between regenerating these headers and the postprocessing script changing. > add_custom_target(${target_name} DEPENDS ${fwd_headers}) > add_dependencies(${framework} ${target_name}) >+ >+ if (opt_POSTPROCESS_HEADERS) >+ add_custom_command(TARGET ${target_name} >+ POST_BUILD >+ COMMAND ${RUBY_EXECUTABLE} ${WTF_SCRIPTS_DIR}/postprocess-headers.rb >+ "--forwarding-headers" "${fwd_headers}" >+ COMMENT "Postprossessing Headers for ${framework}" >+ VERBATIM >+ ) >+ endif () >+ > if (opt_DERIVED_SOURCE_DIRECTORIES) > set(script ${CMAKE_CURRENT_BINARY_DIR}/makeForwardingHeaders.cmake) > set(content "") >diff --git a/ChangeLog b/ChangeLog >index 8dc07b7942a20a29bf21f7db72f997f8626d1578..da09bcc70dac58cc6b5fcc4de8df4e33c542efb7 100644 >--- a/ChangeLog >+++ b/ChangeLog >@@ -1,3 +1,15 @@ >+2018-09-12 Keith Miller <keith_miller@apple.com> >+ >+ Start replacing the postprocess-headers bash scripts with a shared script >+ https://bugs.webkit.org/show_bug.cgi?id=189570 >+ >+ update the WEBKIT_CREATE_FORWARDING_HEADERS function to take a new optional >+ parameter that will invoke the post-processing script exported by WTF. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Source/cmake/WebKitMacros.cmake: >+ > 2018-09-12 Dan Bernstein <mitz@apple.com> > > Updated svn:ignore after r235381.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189570
: 349614