mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 14:43:28 +00:00
130 lines
3.6 KiB
Makefile
130 lines
3.6 KiB
Makefile
# Variables
|
|
# ---------
|
|
|
|
ZIG := zig
|
|
BC := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
|
|
|
# Infos
|
|
# -----
|
|
.PHONY: help
|
|
|
|
## Display this help screen
|
|
help:
|
|
@printf "\e[36m%-35s %s\e[0m\n" "Command" "Usage"
|
|
@sed -n -e '/^## /{'\
|
|
-e 's/## //g;'\
|
|
-e 'h;'\
|
|
-e 'n;'\
|
|
-e 's/:.*//g;'\
|
|
-e 'G;'\
|
|
-e 's/\n/ /g;'\
|
|
-e 'p;}' Makefile | awk '{printf "\033[33m%-35s\033[0m%s\n", $$1, substr($$0,length($$1)+1)}'
|
|
|
|
|
|
# $(ZIG) commands
|
|
# ------------
|
|
.PHONY: build build-release run run-release shell test bench
|
|
|
|
## Build in debug mode
|
|
build:
|
|
@printf "\e[36mBuilding (debug)...\e[0m\n"
|
|
@$(ZIG) build -Dengine=v8 || (printf "\e[33mBuild ERROR\e[0m\n"; exit 1;)
|
|
@printf "\e[33mBuild OK\e[0m\n"
|
|
|
|
build-release:
|
|
@printf "\e[36mBuilding (release safe)...\e[0m\n"
|
|
@$(ZIG) build -Doptimize=ReleaseSafe -Dengine=v8 || (printf "\e[33mBuild ERROR\e[0m\n"; exit 1;)
|
|
@printf "\e[33mBuild OK\e[0m\n"
|
|
|
|
## Run the server
|
|
run: build
|
|
@printf "\e[36mRunning...\e[0m\n"
|
|
@./zig-out/bin/browsercore || (printf "\e[33mRun ERROR\e[0m\n"; exit 1;)
|
|
|
|
## Run a JS shell in release-safe mode
|
|
shell:
|
|
@printf "\e[36mBuilding shell...\e[0m\n"
|
|
@$(ZIG) build shell -Dengine=v8 || (printf "\e[33mBuild ERROR\e[0m\n"; exit 1;)
|
|
|
|
## Test
|
|
test:
|
|
@printf "\e[36mTesting...\e[0m\n"
|
|
@$(ZIG) build test -Dengine=v8 || (printf "\e[33mTest ERROR\e[0m\n"; exit 1;)
|
|
@printf "\e[33mTest OK\e[0m\n"
|
|
|
|
# Install and build required dependencies commands
|
|
# ------------
|
|
.PHONY: install-submodule
|
|
.PHONY: install-lexbor install-jsruntime install-jsruntime-dev
|
|
.PHONY: install-dev install
|
|
|
|
## Install and build dependencies for release
|
|
install: install-submodule install-lexbor install-jsruntime
|
|
|
|
## Install and build dependencies for dev
|
|
install-dev: install-submodule install-lexbor install-jsruntime-dev
|
|
|
|
BC_NS := $(BC)vendor/netsurf
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S), Darwin)
|
|
ICONV := /opt/homebrew/opt/libiconv
|
|
endif
|
|
# TODO: add Linux iconv path (I guess it depends on the distro)
|
|
# TODO: this way of linking libiconv is not ideal. We should have a more generic way
|
|
# and stick to a specif version. Maybe build from source. Anyway not now.
|
|
install-netsurf:
|
|
@printf "\e[36mInstalling NetSurf...\e[0m\n" && \
|
|
ls $(ICONV) 1> /dev/null || (printf "\e[33mERROR: you need to install libiconv in your system (on MacOS on with Homebrew)\e[0m\n"; exit 1;) && \
|
|
export PREFIX=$(BC_NS) && \
|
|
export LDFLAGS="-L$(ICONV)/lib" && \
|
|
export CFLAGS="-I$(ICONV)/include" && \
|
|
printf "\e[33mInstalling libwapcaplet...\e[0m\n" && \
|
|
cd vendor/netsurf/libwapcaplet && \
|
|
BUILDDIR=$(BC_NS)/build/libwapcaplet make install && \
|
|
cd ../libparserutils && \
|
|
printf "\e[33mInstalling libparserutils...\e[0m\n" && \
|
|
BUILDDIR=$(BC_NS)/build/libparserutils make install && \
|
|
cd ../libhubbub && \
|
|
printf "\e[33mInstalling libhubbub...\e[0m\n" && \
|
|
BUILDDIR=$(BC_NS)/build/libhubbub make install && \
|
|
rm src/treebuilder/autogenerated-element-type.c && \
|
|
cd ../libdom && \
|
|
printf "\e[33mInstalling libdom...\e[0m\n" && \
|
|
BUILDDIR=$(BC_NS)/build/libdom make install && \
|
|
printf "\e[33mRunning libdom example...\e[0m\n" && \
|
|
cd examples && \
|
|
clang \
|
|
-I$(ICONV)/include \
|
|
-I$(BC_NS)/include \
|
|
-L$(ICONV)/lib \
|
|
-L$(BC_NS)/lib \
|
|
-liconv \
|
|
-ldom \
|
|
-lhubbub \
|
|
-lparserutils \
|
|
-lwapcaplet \
|
|
dom-structure-dump.c && \
|
|
./a.out > /dev/null && \
|
|
rm a.out && \
|
|
printf "\e[36mDone NetSurf $(OS)\e[0m\n"
|
|
|
|
|
|
install-lexbor:
|
|
@mkdir -p vendor/lexbor
|
|
@cd vendor/lexbor && \
|
|
cmake ../lexbor-src -DLEXBOR_BUILD_SHARED=OFF && \
|
|
make
|
|
|
|
install-jsruntime-dev:
|
|
@cd vendor/jsruntime-lib && \
|
|
make install-dev
|
|
|
|
install-jsruntime:
|
|
@cd vendor/jsruntime-lib && \
|
|
make install
|
|
|
|
## Init and update git submodule
|
|
install-submodule:
|
|
@git submodule init && \
|
|
git submodule update
|