diff options
author | 2021-10-15 20:08:21 -0700 | |
---|---|---|
committer | 2021-10-15 20:08:21 -0700 | |
commit | bf2732599cc7e45f320f75b38672c1a1fc3d5583 (patch) | |
tree | 3bcd8ae4f91507158bf17a9fd5422812bee757b1 | |
parent | 10696680ff9012f7ca07ae2c1de5ed710647b4f9 (diff) | |
download | bun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.tar.gz bun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.tar.zst bun-bf2732599cc7e45f320f75b38672c1a1fc3d5583.zip |
update makefilejarred/gen
-rw-r--r-- | Makefile | 35 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | build.zig | 3 |
3 files changed, 23 insertions, 16 deletions
@@ -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 ""; @@ -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. @@ -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| { |