aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile62
1 files changed, 45 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index ccf00f5ed..d550a9645 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,9 @@ BUN_BUILD_TAG = bun-v$(PACKAGE_JSON_VERSION)
BUN_RELEASE_BIN = $(PACKAGE_DIR)/bun
PRETTIER ?= $(shell which prettier || echo "./node_modules/.bin/prettier")
+WEBKIT_DIR ?= $(realpath src/javascript/jsc/WebKit)
+WEBKIT_RELEASE_DIR ?= $(WEBKIT_DIR)/WebKitBuild/Release
+
NPM_CLIENT = $(shell which npm)
ZIG ?= $(shell which zig || echo -e "error: Missing zig. Please make sure zig is in PATH. Or set ZIG=/path/to-zig-executable")
@@ -105,7 +108,7 @@ DEFAULT_LINKER_FLAGS =
JSC_BUILD_STEPS :=
ifeq ($(OS_NAME),linux)
- JSC_BUILD_STEPS += jsc-check
+ JSC_BUILD_STEPS += jsc-build-linux
DEFAULT_LINKER_FLAGS= -pthread -ldl
endif
ifeq ($(OS_NAME),darwin)
@@ -126,18 +129,20 @@ SRC_DIR := src/javascript/jsc/bindings
OBJ_DIR := src/javascript/jsc/bindings-obj
SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
-MAC_INCLUDE_DIRS := -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/WTF/Headers \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ICU/Headers \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ \
+MAC_INCLUDE_DIRS := -I$(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders \
+ -I$(WEBKIT_RELEASE_DIR)/WTF/Headers \
+ -I$(WEBKIT_RELEASE_DIR)/ICU/Headers \
+ -I$(WEBKIT_RELEASE_DIR)/ \
-Isrc/javascript/jsc/bindings/ \
- -Isrc/javascript/jsc/WebKit/Source/bmalloc
+ -I$(WEBKIT_DIR)/Source/bmalloc
LINUX_INCLUDE_DIRS := -I$(JSC_INCLUDE_DIR) \
-Isrc/javascript/jsc/bindings/
INCLUDE_DIRS :=
+
+
ifeq ($(OS_NAME),linux)
INCLUDE_DIRS += $(LINUX_INCLUDE_DIRS)
endif
@@ -210,7 +215,7 @@ ARCHIVE_FILES = $(ARCHIVE_FILES_WITHOUT_LIBCRYPTO) src/deps/libcrypto.boring.a
PLATFORM_LINKER_FLAGS =
ifeq ($(OS_NAME), linux)
-PLATFORM_LINKER_FLAGS = -lstdc++fs \
+PLATFORM_LINKER_FLAGS = -lstdc++ \
-lc \
-Wl,-z,now \
-Wl,--as-needed \
@@ -219,7 +224,8 @@ PLATFORM_LINKER_FLAGS = -lstdc++fs \
-ffunction-sections \
-fdata-sections \
-Wl,--gc-sections \
- -fuse-ld=lld
+ -fuse-ld=lld \
+ -static
endif
@@ -581,22 +587,44 @@ test-dev-bunjs:
test-dev: test-dev-with-hmr
jsc-copy-headers:
- find src/javascript/jsc/WebKit/WebKitBuild/Release/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} src/javascript/jsc/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/ \;
+ find $(WEBKIT_RELEASE_DIR)/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/ \;
jsc-build-mac-compile:
- cd src/javascript/jsc/WebKit && ICU_INCLUDE_DIRS="$(HOMEBREW_PREFIX)opt/icu4c/include" ./Tools/Scripts/build-jsc --jsc-only --cmakeargs="-DENABLE_STATIC_JSC=ON -DCMAKE_BUILD_TYPE=relwithdebinfo -DUSE_PTHREAD_JIT_PERMISSIONS_API=ON $(CMAKE_FLAGS_WITHOUT_RELEASE)"
+ cd $(WEBKIT_DIR) && ICU_INCLUDE_DIRS="$(HOMEBREW_PREFIX)opt/icu4c/include" ./Tools/Scripts/build-jsc --jsc-only --cmakeargs="-DENABLE_STATIC_JSC=ON -DCMAKE_BUILD_TYPE=relwithdebinfo -DUSE_PTHREAD_JIT_PERMISSIONS_API=ON $(CMAKE_FLAGS_WITHOUT_RELEASE)"
+
+jsc-build-linux-compile-config:
+ mkdir -p $(WEBKIT_RELEASE_DIR)
+ cd $(WEBKIT_RELEASE_DIR) && \
+ cmake \
+ -DPORT="JSCOnly" \
+ -DENABLE_STATIC_JSC=ON \
+ -DCMAKE_BUILD_TYPE=relwithdebuginfo \
+ -DUSE_THIN_ARCHIVES=OFF \
+ -DENABLE_FTL_JIT=ON \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
+ -G Ninja \
+ -DCMAKE_CXX_COMPILER=$(CXX) \
+ -DCMAKE_C_COMPILER=$(CC) \
+ $(WEBKIT_DIR) \
+ $(WEBKIT_RELEASE_DIR)
+
+# If you get "Error: could not load cache"
+# run rm -rf src/javascript/jsc/WebKit/CMakeCache.txt
+jsc-build-linux-compile-build:
+ mkdir -p $(WEBKIT_RELEASE_DIR) && \
+ cd $(WEBKIT_RELEASE_DIR) && \
+ CFLAGS="$CFLAGS -ffat-lto-objects" CXXFLAGS="$CXXFLAGS -ffat-lto-objects" \
+ cmake --build $(WEBKIT_RELEASE_DIR) --config relwithdebuginfo --target jsc
-jsc-build-linux-compile:
- cd src/javascript/jsc/WebKit && ./Tools/Scripts/build-jsc --jsc-only --cmakeargs="-DENABLE_STATIC_JSC=ON -DCMAKE_BUILD_TYPE=relwithdebinfo -DUSE_THIN_ARCHIVES=OFF"
jsc-build-mac: jsc-build-mac-compile jsc-build-mac-copy
-jsc-build-linux: jsc-build-linux-compile jsc-build-mac-copy
+jsc-build-linux: jsc-build-linux-compile-config jsc-build-linux-compile-build jsc-build-mac-copy
jsc-build-mac-copy:
- cp src/javascript/jsc/WebKit/WebKitBuild/Release/lib/libJavaScriptCore.a src/deps/libJavaScriptCore.a
- cp src/javascript/jsc/WebKit/WebKitBuild/Release/lib/libWTF.a src/deps/libWTF.a
- cp src/javascript/jsc/WebKit/WebKitBuild/Release/lib/libbmalloc.a src/deps/libbmalloc.a
+ cp $(WEBKIT_RELEASE_DIR)/lib/libJavaScriptCore.a src/deps/libJavaScriptCore.a
+ cp $(WEBKIT_RELEASE_DIR)/lib/libWTF.a src/deps/libWTF.a
+ cp $(WEBKIT_RELEASE_DIR)/lib/libbmalloc.a src/deps/libbmalloc.a
clean-bindings:
rm -rf $(OBJ_DIR)/*.o
@@ -647,7 +675,7 @@ bun-link-lld-release:
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CXX) -c -o $@ $< \
$(CLANG_FLAGS) \
- -O1 \
+ -O3 \
-w
sizegen: