WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Proposed fix
0001-Win-forwarding-headers-should-not-be-copies.patch (text/plain), 3.95 KB, created by
Mark Salisbury
on 2017-11-17 00:42:11 PST
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Mark Salisbury
Created:
2017-11-17 00:42:11 PST
Size:
3.95 KB
patch
obsolete
>From 00cf3844e041d9f362699a1efca7f314387fd87b Mon Sep 17 00:00:00 2001 >From: Mark Salisbury <mark.salisbury@hp.com> >Date: Fri, 17 Nov 2017 09:56:40 +0900 >Subject: [PATCH] [Win] forwarding headers should not be copies > >Forwarding headers created by JavaScriptCore are currently copies >of files, not files which have a #include path to the real header file. > >The problem with this approach is that if the same file ends up being >included twice, but at different paths, the #pragma once does nothing >and compile errors occur from multiply defined symbols. >--- > Source/JavaScriptCore/PlatformWin.cmake | 8 +++---- > .../Scripts/make-forwarding-headers.pl | 25 ++++++++++++++++++++++ > 2 files changed, 28 insertions(+), 5 deletions(-) > create mode 100644 Source/JavaScriptCore/Scripts/make-forwarding-headers.pl > >diff --git a/Source/JavaScriptCore/PlatformWin.cmake b/Source/JavaScriptCore/PlatformWin.cmake >index b348eaeafba..0202c5f1f1f 100644 >--- a/Source/JavaScriptCore/PlatformWin.cmake >+++ b/Source/JavaScriptCore/PlatformWin.cmake >@@ -34,15 +34,13 @@ file(COPY > ) > > file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/JavaScriptCore) >- > set(JavaScriptCore_PRE_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/JavaScriptCore/preBuild.cmd") > file(REMOVE "${JavaScriptCore_PRE_BUILD_COMMAND}") > foreach (_directory ${JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES}) >- file(APPEND "${JavaScriptCore_PRE_BUILD_COMMAND}" "@xcopy /y /d /f \"${JAVASCRIPTCORE_DIR}/${_directory}/*.h\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\" >nul 2>nul\n") >+ file(APPEND "${JavaScriptCore_PRE_BUILD_COMMAND}" "perl ${JAVASCRIPTCORE_DIR}/Scripts/make-forwarding-headers.pl \"${JAVASCRIPTCORE_DIR}/${_directory}/*.h\" \"${JAVASCRIPTCORE_DIR}/${_directory}\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\"\n") > endforeach () >- > set(JavaScriptCore_POST_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/JavaScriptCore/postBuild.cmd") >-file(WRITE "${JavaScriptCore_POST_BUILD_COMMAND}" "@xcopy /y /d /f \"${DERIVED_SOURCES_DIR}/JavaScriptCore/*.h\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\" >nul 2>nul\n") >-file(APPEND "${JavaScriptCore_POST_BUILD_COMMAND}" "@xcopy /y /d /f \"${DERIVED_SOURCES_DIR}/JavaScriptCore/inspector/*.h\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\" >nul 2>nul\n") >+file(WRITE "${JavaScriptCore_POST_BUILD_COMMAND}" "perl ${JAVASCRIPTCORE_DIR}/Scripts/make-forwarding-headers.pl \"${DERIVED_SOURCES_DIR}/JavaScriptCore/*.h\" \"${DERIVED_SOURCES_DIR}/JavaScriptCore\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\"\n") >+file(APPEND "${JavaScriptCore_POST_BUILD_COMMAND}" "perl ${JAVASCRIPTCORE_DIR}/Scripts/make-forwarding-headers.pl \"${DERIVED_SOURCES_DIR}/JavaScriptCore/inspector/*.h\" \"${DERIVED_SOURCES_DIR}/JavaScriptCore/inspector\" \"${FORWARDING_HEADERS_DIR}/JavaScriptCore\"\n") > > set(JavaScriptCore_OUTPUT_NAME JavaScriptCore${DEBUG_SUFFIX}) >diff --git a/Source/JavaScriptCore/Scripts/make-forwarding-headers.pl b/Source/JavaScriptCore/Scripts/make-forwarding-headers.pl >new file mode 100644 >index 00000000000..c92f6fda83f >--- /dev/null >+++ b/Source/JavaScriptCore/Scripts/make-forwarding-headers.pl >@@ -0,0 +1,25 @@ >+use strict; >+ >+use File::Basename; >+ >+my $searchPath = shift; >+my $includePath = shift; >+my $forwardingDir = shift; >+ >+my @headers = glob($searchPath); >+foreach(@headers) { >+ my $file = basename($_); >+ my $forwardingHeader = $forwardingDir.'/'.$file; >+ my $fileContent = "#include \"$includePath/$file\"\n"; >+ if (-e $forwardingHeader) { >+ open (HEADER, $forwardingHeader) or die("Unable to open $forwardingHeader"); >+ my $existingContent = <HEADER>; >+ $fileContent eq $existingContent or die("$forwardingHeader already exists and has content:\n $existingContent\nexpected:\n $fileContent\n"); >+ } >+ else { >+ open(HEADER, '>', $forwardingHeader); >+ print "Creating forwarding header $forwardingHeader with #include \"$includePath/$file\"\n"; >+ print HEADER $fileContent; >+ } >+ close(HEADER); >+} >-- >2.14.1.windows.1 >
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 179814
:
327155
|
327160
|
327163
|
327166