Skip to content

Commit

Permalink
[Xcode] Use CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE to read headers vf…
Browse files Browse the repository at this point in the history
…s file

rdar://114352538
https://bugs.webkit.org/show_bug.cgi?id=271009

Reviewed by Alex Christensen.

Bind the location of bmalloc and WTF's VFS file to a build setting, and
use that setting to power generate-tapi-filelist.py in the respective
projects.

The VFS path is a listing of the public and private headers of a target.
When tapi support landed last year, this path was hard-coded. Later
workarounds (272426@main, 272986@main) added some conditional logic to
find the VFS file in various locations but resulted in the input edge on
the "Generate TAPI filelist" script phases being removed. This meant
that the WTF/bmalloc file lists could become stale when a header was
removed from their respective projects.

* Source/WTF/Configurations/WTF.xcconfig:
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/bmalloc/Configurations/bmalloc.xcconfig:
* Source/bmalloc/bmalloc.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/276134@main
  • Loading branch information
emw-apple committed Mar 15, 2024
1 parent 884b0d2 commit 86e114a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
4 changes: 4 additions & 0 deletions Source/WTF/Configurations/WTF.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,7 @@ ICU_HEADERS_FOLDER_PATH_NO = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PA
ICU_HEADERS_FOLDER_PATH_YES = $(WTF_INSTALL_PATH_PREFIX)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/unicode;

SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(WK_PRIVATE_SDK_DIR)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks

// Used to generate headers filelist for TAPI in JavaScriptCore. CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE
// is not exported to script phases, so it must be bound to a different name.
WK_HEADERS_VFS_FILE = $(CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE);
4 changes: 3 additions & 1 deletion Source/WTF/WTF.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3826,6 +3826,8 @@
inputFileListPaths = (
);
inputPaths = (
"$(SRCROOT)/Scripts/generate-tapi-filelist.py",
"$(WK_HEADERS_VFS_FILE)",
);
name = "Generate TAPI filelist";
outputFileListPaths = (
Expand All @@ -3836,7 +3838,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if [ ${DEPLOYMENT_LOCATION} != YES ]; then\n if [ -z ${PROJECT_GUID} ]; then\n \"${SRCROOT}/Scripts/generate-tapi-filelist.py\" --from=\"${TEMP_FILE_DIR}\"/all-product-headers.yaml --install-dir=\"${BUILT_PRODUCTS_DIR}${WK_LIBRARY_HEADERS_FOLDER_PATH}\" --relative-to=\"${SRCROOT}\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n else\n \"${SRCROOT}/Scripts/generate-tapi-filelist.py\" --from=${CONFIGURATION_TEMP_DIR}/${PROJECT}-${PROJECT_GUID}-VFS${EFFECTIVE_PLATFORM_NAME}/all-product-headers.yaml --install-dir=\"${BUILT_PRODUCTS_DIR}${WK_LIBRARY_HEADERS_FOLDER_PATH}\" --relative-to=\"${SRCROOT}\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n fi\nelse\n \"${SRCROOT}/Scripts/generate-tapi-filelist.py\" --from=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" --install-dir=\"<SDKROOT>${PRIVATE_HEADERS_FOLDER_PATH}\" --relative-to=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_1}\"\nfi\n";
shellScript = "if [ ${DEPLOYMENT_LOCATION} != YES ]; then\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${WK_HEADERS_VFS_FILE}\" --install-dir=\"${BUILT_PRODUCTS_DIR}${PRIVATE_HEADERS_FOLDER_PATH}\" --relative-to=\"${SRCROOT}/wtf\" > \"${SCRIPT_OUTPUT_FILE_0}\"\nelse\n \"${SRCROOT}/Scripts/generate-tapi-filelist.py\" --from=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" --install-dir=\"<SDKROOT>${PRIVATE_HEADERS_FOLDER_PATH}\" --relative-to=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_1}\"\nfi\n";
};
/* End PBXShellScriptBuildPhase section */

Expand Down
4 changes: 4 additions & 0 deletions Source/bmalloc/Configurations/bmalloc.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ PRODUCT_NAME = bmalloc;

GCC_SYMBOLS_PRIVATE_EXTERN = YES;
STRIP_INSTALLED_PRODUCT = NO;

// Used to generate headers filelist for TAPI in JavaScriptCore. CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE
// is not exported to script phases, so it must be bound to a different name.
WK_HEADERS_VFS_FILE = $(CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE);
3 changes: 2 additions & 1 deletion Source/bmalloc/bmalloc.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2810,6 +2810,7 @@
);
inputPaths = (
"$(SRCROOT)/../WTF/Scripts/generate-tapi-filelist.py",
"$(WK_HEADERS_VFS_FILE)",
);
name = "Generate TAPI filelist";
outputFileListPaths = (
Expand All @@ -2820,7 +2821,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if [ ${DEPLOYMENT_LOCATION} != YES ]; then\n if [ -z ${PROJECT_GUID} ]; then\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${TEMP_FILE_DIR}/all-product-headers.yaml\" --install-dir=\"${BUILT_PRODUCTS_DIR}${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n else\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${CONFIGURATION_TEMP_DIR}/${PROJECT}-${PROJECT_GUID}-VFS${EFFECTIVE_PLATFORM_NAME}/all-product-headers.yaml\" --install-dir=\"${BUILT_PRODUCTS_DIR}${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n fi\nelse\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" --install-dir=\"<SDKROOT>${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_1}\" \nfi\n";
shellScript = "if [ ${DEPLOYMENT_LOCATION} != YES ]; then\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${WK_HEADERS_VFS_FILE}\" --install-dir=\"${BUILT_PRODUCTS_DIR}${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_0}\"\nelse\n \"${SCRIPT_INPUT_FILE_0}\" --from=\"${DSTROOT}${PRIVATE_HEADERS_FOLDER_PATH}\" --install-dir=\"<SDKROOT>${PRIVATE_HEADERS_FOLDER_PATH}\" > \"${SCRIPT_OUTPUT_FILE_1}\" \nfi\n";
};
/* End PBXShellScriptBuildPhase section */

Expand Down

0 comments on commit 86e114a

Please sign in to comment.