aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-15 20:08:21 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-15 20:08:21 -0700
commitbf2732599cc7e45f320f75b38672c1a1fc3d5583 (patch)
tree3bcd8ae4f91507158bf17a9fd5422812bee757b1
parent10696680ff9012f7ca07ae2c1de5ed710647b4f9 (diff)
downloadbun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.tar.gz
bun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.tar.zst
bun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.zip
update makefilejarred/gen
-rw-r--r--Makefile35
-rw-r--r--README.md1
-rw-r--r--build.zig3
3 files changed, 23 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 271fadb8f..16713bddb 100644
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,10 @@ make-lazy = $(eval $1 = $​$(eval $1 := $(value $(1)))$​$($1))
ARCH_NAME :=
ifeq ($(ARCH_NAME_RAW),arm64)
ARCH_NAME = aarch64
+ BREW_PREFIX_PATH = /opt/homebrew
else
ARCH_NAME = x64
+ BREW_PREFIX_PATH = /usr/local
endif
TRIPLET = $(OS_NAME)-$(ARCH_NAME)
@@ -28,9 +30,10 @@ DEPS_DIR = $(shell pwd)/src/deps
CPUS ?= $(shell nproc)
USER ?= $(echo $USER)
-LIBCRYPTO_STATIC_LIB = $(shell brew list openssl@1.1|grep libcrypto.a)
-LIBCRYPTO_PREFIX_LIB_DIR = $(shell dirname $(LIBCRYPTO_STATIC_LIB))
-LIBCRYPTO_PREFIX_DIR = $(shell dirname $(LIBCRYPTO_PREFIX_LIB_DIR))
+LIBICONV_PATH ?= $(BREW_PREFIX_PATH)/opt/libiconv/lib/libiconv.a
+
+LIBCRYPTO_PREFIX_DIR = $(BREW_PREFIX_PATH)/opt/openssl@1.1
+LIBCRYPTO_STATIC_LIB ?= $(LIBCRYPTO_PREFIX_DIR)/lib/libcrypto.a
LIBCRYPTO_INCLUDE_DIR = $(LIBCRYPTO_PREFIX_DIR)/include
BUN_TMP_DIR := /tmp/make-bun
@@ -73,9 +76,7 @@ endif
STRIP ?= $(shell which llvm-strip || which llvm-strip-12 || echo "Missing llvm-strip. Please pass it in the STRIP environment var"; exit 1;)
-ifeq ($(OS_NAME),darwin)
- HOMEBREW_PREFIX = $(shell brew --prefix)/
-endif
+HOMEBREW_PREFIX ?= BREW_PREFIX_PATH
SRC_DIR := src/javascript/jsc/bindings
@@ -104,11 +105,11 @@ endif
-MACOS_ICU_FILES := $(HOMEBREW_PREFIX)opt/icu4c/lib/libicudata.a \
+MACOS_ICU_FILES = $(HOMEBREW_PREFIX)opt/icu4c/lib/libicudata.a \
$(HOMEBREW_PREFIX)opt/icu4c/lib/libicui18n.a \
$(HOMEBREW_PREFIX)opt/icu4c/lib/libicuuc.a
-MACOS_ICU_INCLUDE := $(HOMEBREW_PREFIX)opt/icu4c/include
+MACOS_ICU_INCLUDE = $(HOMEBREW_PREFIX)opt/icu4c/include
ICU_FLAGS :=
@@ -158,6 +159,7 @@ BUN_LLD_FLAGS = $(OBJ_FILES) \
src/deps/libs2n.a \
src/deps/libcrypto.a \
src/deps/picohttpparser.o \
+ $(LIBICONV_PATH) \
$(CLANG_FLAGS) \
-liconv \
@@ -179,11 +181,10 @@ endif
bun: vendor build-obj bun-link-lld-release
-vendor-without-check: api analytics node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib openssl
+vendor-without-check: api analytics node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib openssl s2n libarchive
libarchive:
cd src/deps/libarchive; \
- make clean; \
cmake . -DENABLE_ZLIB=OFF -DENABLE_OPENSSL=OFF; \
make -j${CPUS}; \
cp libarchive/libarchive.a $(DEPS_DIR)/libarchive.a;
@@ -199,6 +200,8 @@ require:
@cmake --version >/dev/null 2>&1 || (echo "ERROR: cmake is required."; exit 1)
@esbuild --version >/dev/null 2>&1 || (echo "ERROR: esbuild is required."; exit 1)
@npm --version >/dev/null 2>&1 || (echo "ERROR: npm is required."; exit 1)
+ @stat $(LIBICONV_PATH) >/dev/null 2>&1 || (echo "ERROR: libiconv is required. Please:\nbrew install libiconv"; exit 1)
+ @stat $(LIBCRYPTO_STATIC_LIB) >/dev/null 2>&1 || (echo "ERROR: OpenSSL 1.1 is required. Please:\nbrew install openssl@1.1"; exit 1)
init-submodules:
git submodule update --init --recursive --progress --depth=1
@@ -268,7 +271,7 @@ s2n-mac:
-DLibCrypto_INCLUDE_DIR=$(LIBCRYPTO_INCLUDE_DIR) \
-DLibCrypto_STATIC_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
-DLibCrypto_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
- -DCMAKE_PREFIX_PATH=$(shell brew --prefix openssl@1.1); \
+ -DCMAKE_PREFIX_PATH=$(LIBCRYPTO_PREFIX_DIR); \
CC=$(CC) CXX=$(CXX) cmake --build ./build -j$(CPUS); \
CC=$(CC) CXX=$(CXX) CTEST_PARALLEL_LEVEL=$(CPUS) ninja -C build
cp $(DEPS_DIR)/s2n-tls/build/lib/libs2n.a $(DEPS_DIR)/libs2n.a
@@ -284,7 +287,7 @@ s2n-mac-debug:
-DLibCrypto_INCLUDE_DIR=$(LIBCRYPTO_INCLUDE_DIR) \
-DLibCrypto_STATIC_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
-DLibCrypto_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
- -DCMAKE_PREFIX_PATH=$(shell brew --prefix openssl@1.1); \
+ -DCMAKE_PREFIX_PATH=$(LIBCRYPTO_PREFIX_DIR); \
CC=$(CC) CXX=$(CXX) cmake --build ./build -j$(CPUS); \
CC=$(CC) CXX=$(CXX) CTEST_PARALLEL_LEVEL=$(CPUS) ninja -C build test
cp $(DEPS_DIR)/s2n-tls/build/lib/libs2n.a $(DEPS_DIR)/libs2n.a
@@ -414,9 +417,11 @@ clean-bindings:
clean: clean-bindings
rm src/deps/*.a src/deps/*.o
- cd src/deps/mimalloc && make clean;
-
-
+ (cd src/deps/mimalloc && make clean) || echo "";
+ (cd src/deps/libarchive && make clean) || echo "";
+ (cd src/deps/s2n-tls && make clean) || echo "";
+ (cd src/deps/picohttp && make clean) || echo "";
+ (cd src/deps/zlib && make clean) || echo "";
diff --git a/README.md b/README.md
index f521d9f18..6ee1de08e 100644
--- a/README.md
+++ b/README.md
@@ -718,6 +718,7 @@ Bun also statically links these libraries:
- [`zlib-cloudflare`](https://github.com/cloudflare/zlib), which is zlib licensed
- [`s2n-tls`](https://github.com/aws/s2n-tls), which is MIT licensed
- [`libarchive`](https://github.com/libarchive/libarchive), which has [several licenses](https://github.com/libarchive/libarchive/blob/master/COPYING)
+- [`libiconv`](https://www.gnu.org/software/libiconv/), which is LGPL2. It's a dependency of libarchive.
For compatibiltiy reasons, these NPM packages are embedded into Bun's binary and injected if imported.
diff --git a/build.zig b/build.zig
index 4f57f0712..664490906 100644
--- a/build.zig
+++ b/build.zig
@@ -235,7 +235,6 @@ pub fn build(b: *std.build.Builder) !void {
step.addObjectFile("src/deps/libs2n.a");
step.addObjectFile("src/deps/zlib/libz.a");
- step.addObjectFile("src/deps/openssl/libssl.a");
step.addObjectFile("src/deps/mimalloc/libmimalloc.a");
step.addLibPath("src/deps/mimalloc");
@@ -253,6 +252,7 @@ pub fn build(b: *std.build.Builder) !void {
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicudata.a");
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicui18n.a");
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicuuc.a");
+ step.addObjectFile(homebrew_prefix ++ "opt/libiconv/lib/libiconv.a");
// icucore is a weird macOS only library
step.linkSystemLibrary("icucore");
step.addLibPath(homebrew_prefix ++ "opt/icu4c/lib");
@@ -261,6 +261,7 @@ pub fn build(b: *std.build.Builder) !void {
step.linkSystemLibrary("icuuc");
step.linkSystemLibrary("icudata");
step.linkSystemLibrary("icui18n");
+ step.linkSystemLibrary("iconv");
}
for (bindings_files.items) |binding| {