From 4a76f9fbda1c00a6d957e666834ec98a70c85617 Mon Sep 17 00:00:00 2001 From: uint Date: Thu, 18 Dec 2025 19:03:10 +0000 Subject: revamp browser, now using sdl3 + ladybird engine the browser now draws a box with some fairly simple c++ code SDL3 because its a much clearer API than SDL2 . . --- Makefile | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 17 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 7151105..443c894 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,97 @@ -CC = cc +# tooling +CXX = c++ +CXXFLAGS = -std=c++23 -Os -Wall -Wextra +PKG_CONFIG = pkg-config -DEPS = -lSDL2 -lGLESv2 -INCLUDE = -Iinclude -CFLAGS = -std=c99 -O2 -Wall -Wextra $(INCLUDE) -LDFLAGS = $(DEPS) +# CHANGE THIS: ladybird source tree +LADYBIRD = $(HOME)/clones/ladybird-test +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +BUILD = $(LADYBIRD)/Build/release +INCS = -I$(LADYBIRD) -I$(LADYBIRD)/Services -I$(LADYBIRD)/Libraries \ + -I$(BUILD)/Lagom -I$(BUILD)/Lagom/Services -I$(BUILD)/Lagom/Libraries \ + -I$(BUILD)/vcpkg_installed/x64-linux-dynamic/include \ + $$($(PKG_CONFIG) --cflags sdl3 2>/dev/null) -SRC = src/quartz.c src/sdl.c src/render.c src/engine.c -OBJ = build/quartz.o build/sdl.o build/render.o build/engine.o +# ladybird libs +LAGOM_LIBS = -L$(BUILD)/lib \ + -llagom-webview \ + -llagom-web \ + -llagom-js \ + -llagom-gfx \ + -llagom-url \ + -llagom-core \ + -llagom-coreminimal \ + -llagom-ak \ + -llagom-ipc \ + -llagom-unicode \ + -llagom-textcodec \ + -llagom-gc \ + -llagom-requests \ + -llagom-http \ + -llagom-crypto \ + -llagom-tls \ + -llagom-compress \ + -llagom-xml \ + -llagom-wasm \ + -llagom-media \ + -llagom-imagedecoderclient \ + -llagom-devtools \ + -llagom-database \ + -llagom-filesystem \ + -llagom-syntax \ + -llagom-idl -all: quartz +# external libs +EXT_LIBS = $$($(PKG_CONFIG) --libs sdl3 sdl3-ttf 2>/dev/null) \ + -L$(BUILD)/vcpkg_installed/x64-linux-dynamic/lib \ + -lfontconfig -quartz: $(OBJ) - $(CC) -o quartz $(OBJ) $(LDFLAGS) +# main() wrapper (static) +MAIN_LIB = $(BUILD)/lib/liblagom-main.a +LIBS = $(MAIN_LIB) $(LAGOM_LIBS) $(EXT_LIBS) -lpthread -build/%.o: src/%.c - mkdir -p build - $(CC) $(CFLAGS) -c $< -o $@ +# rpath +LDFLAGS = -Wl,-rpath,$(BUILD)/lib -Wl,-rpath,$(BUILD)/vcpkg_installed/x64-linux-dynamic/lib + +# sources +SRCDIR = quartz +SRC = $(SRCDIR)/quartz.cpp +OBJ = $(SRC:.cpp=.o) +BIN = quartz/quartz + +all: $(BIN) + +$(BIN): $(OBJ) + $(CXX) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) + +$(SRCDIR)/%.o: $(SRCDIR)/%.cpp + $(CXX) $(CXXFLAGS) $(INCS) -c $< -o $@ clean: - rm -f quartz $(OBJ) + rm -f $(OBJ) $(BIN) -run: +install: $(BIN) + cp $(BIN) $(BUILD)/bin/ + +run: install + cd $(BUILD)/bin && \ + LD_LIBRARY_PATH=$(BUILD)/lib:$(BUILD)/vcpkg_installed/x64-linux-dynamic/lib \ ./quartz -compile_flags: +patch: + cd $(LADYBIRD) && \ + git apply $$PWD/build_patches/cmake.patch && \ + git apply $$PWD/build_patches/lagom_options.patch && \ + git apply $$PWD/build_patches/vcpkg.patch && \ + git apply $$PWD/build_patches/ui_cmake.patch && \ + rm -f $(LADYBIRD)/UI/quartz && \ + ln -sf $$PWD/quartz $(LADYBIRD)/UI/quartz + +ladybird: + cd $(LADYBIRD) && \ + cmake --preset Release -DENABLE_QT=OFF -DENABLE_QUARTZ=ON && \ + ninja -C Build/release + +clangd: rm -f compile_flags.txt - for f in ${CFLAGS}; do echo $$f >> compile_flags.txt; done + for f in $(CXXFLAGS) $(INCS); do echo $$f >> compile_flags.txt; done -- cgit v1.2.3