summaryrefslogtreecommitdiff
path: root/Makefile
blob: e6e47be217e3920ff46e860e716d61f79e781901 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# tooling
CXX	= c++
CXXFLAGS = -std=c++23 -Os -Wall -Wextra
PKG_CONFIG = pkg-config

# CHANGE THIS: ladybird source tree
LADYBIRD = $(HOME)/clones/ladybird
#          ^^^^^^^^^^^^^^^^^^^^^^^
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)

# for patch
ROOT = $(PWD)

# 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

# external libs
EXT_LIBS = $$($(PKG_CONFIG) --libs sdl3 sdl3-ttf 2>/dev/null) \
			-L$(BUILD)/vcpkg_installed/x64-linux-dynamic/lib \
			-lfontconfig

# main() wrapper (static)
MAIN_LIB = $(BUILD)/lib/liblagom-main.a
LIBS = $(MAIN_LIB) $(LAGOM_LIBS) $(EXT_LIBS) -lpthread

# 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 $(OBJ) $(BIN)

install: $(BIN)
	cp $(BIN) $(BUILD)/bin/

run: install
	cd $(BUILD)/bin && \
	LD_LIBRARY_PATH=$(BUILD)/lib:$(BUILD)/vcpkg_installed/x64-linux-dynamic/lib \
	./quartz

patch:
	cd $(LADYBIRD) && \
	git apply $(ROOT)/build_patches/CMakeLists.txt.patch && \
	git apply $(ROOT)/build_patches/Meta_CMake_lagom_options.cmake.patch && \
	git apply $(ROOT)/build_patches/vcpkg.json.patch && \
	git apply $(ROOT)/build_patches/UI_CMakeLists.txt.patch && \
	rm -f $(LADYBIRD)/UI/quartz && \
	ln -sf $(ROOT)/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 $(CXXFLAGS) $(INCS); do echo $$f >> compile_flags.txt; done