@@ -37,6 +37,10 @@ prism_build = $(prism_path)/build
3737prism_flags = -I$(prism_include )
3838prism_ldflags = $(prism_build ) /libprism.a
3939
40+ css_parser_dir = src/css
41+ css_parser_lib = $(css_parser_dir ) /target/release/libherb_css_parser.a
42+ css_parser_flags = -I$(css_parser_dir )
43+
4044# Enable strict warnings
4145warning_flags = -Wall -Wextra -Werror -pedantic
4246
@@ -50,42 +54,44 @@ production_flags = $(warning_flags) -O3 -march=native -flto
5054shared_library_flags = -fPIC
5155
5256# Default build mode (change this as needed)
53- flags = $(warning_flags ) $(debug_flags ) $(prism_flags ) -std=c99
57+ flags = $(warning_flags ) $(debug_flags ) $(prism_flags ) $( css_parser_flags ) -std=c99
5458
5559# Separate test compilation flags
56- test_flags = $(debug_flags ) $(prism_flags ) -std=gnu99
60+ test_flags = $(debug_flags ) $(prism_flags ) $( css_parser_flags ) -std=gnu99
5761
5862# Shared library build (if needed)
59- shared_flags = $(production_flags ) $(shared_library_flags ) $(prism_flags )
63+ shared_flags = $(production_flags ) $(shared_library_flags ) $(prism_flags ) $( css_parser_flags )
6064
6165ifeq ($(os ) ,Linux)
66+ css_parser_ldflags = $(css_parser_lib ) -ldl -lpthread -lm
6267 test_cflags = $(test_flags ) -I/usr/include/check
63- test_ldflags = -L/usr/lib/x86_64-linux-gnu -lcheck -lm -lsubunit $(prism_ldflags )
68+ test_ldflags = -L/usr/lib/x86_64-linux-gnu -lcheck -lm -lsubunit $(prism_ldflags ) $( css_parser_ldflags )
6469 cc = clang-21
6570 clang_format = clang-format-21
6671 clang_tidy = clang-tidy-21
6772endif
6873
6974ifeq ($(os ) ,Darwin)
75+ css_parser_ldflags = $(css_parser_lib ) -lresolv -framework Security -framework CoreFoundation
7076 brew_prefix := $(shell brew --prefix check)
7177 test_cflags = $(test_flags ) -I$(brew_prefix ) /include
72- test_ldflags = -L$(brew_prefix ) /lib -lcheck -lm $(prism_ldflags )
78+ test_ldflags = -L$(brew_prefix ) /lib -lcheck -lm $(prism_ldflags ) $( css_parser_ldflags )
7379 llvm_path = $(shell brew --prefix llvm@21)
7480 cc = $(llvm_path ) /bin/clang
7581 clang_format = $(llvm_path ) /bin/clang-format
7682 clang_tidy = $(llvm_path ) /bin/clang-tidy
7783endif
7884
79- all : templates prism $(exec ) $(lib_name ) $(static_lib_name ) test wasm
85+ all : templates prism css_parser $(exec ) $(lib_name ) $(static_lib_name ) test wasm
8086
81- $(exec ) : $(objects )
82- $(cc ) $(objects ) $(flags ) $(ldflags ) $(prism_ldflags ) -o $(exec )
87+ $(exec ) : $(objects ) $( css_parser_lib )
88+ $(cc ) $(objects ) $(flags ) $(ldflags ) $(prism_ldflags ) $( css_parser_ldflags ) -o $(exec )
8389
84- $(lib_name ) : $(objects )
85- $(cc ) -shared $(objects ) $(shared_flags ) $(ldflags ) $(prism_ldflags ) -o $(lib_name )
90+ $(lib_name ) : $(objects ) $( css_parser_lib )
91+ $(cc ) -shared $(objects ) $(shared_flags ) $(ldflags ) $(prism_ldflags ) $( css_parser_ldflags ) -o $(lib_name )
8692 # cp $(lib_name) $(ruby_extension)
8793
88- $(static_lib_name ) : $(objects )
94+ $(static_lib_name ) : $(objects ) $( css_parser_lib )
8995 ar rcs $(static_lib_name ) $(objects )
9096
9197src/% .o : src/% .c templates
@@ -102,6 +108,7 @@ clean:
102108 rm -rf $(objects ) $(test_objects ) $(extension_objects ) lib/herb/* .bundle tmp
103109 rm -rf $(prism_path )
104110 rake prism:clean
111+ cd $(css_parser_dir ) && cargo clean
105112
106113bundle_install :
107114 bundle install
@@ -113,6 +120,12 @@ prism: bundle_install
113120 cd $(prism_path ) && ruby templates/template.rb && make static && cd -
114121 rake prism:vendor
115122
123+ css_parser : $(css_parser_lib )
124+
125+ $(css_parser_lib ) :
126+ cd $(css_parser_dir ) && cargo build --release
127+ cbindgen --config $(css_parser_dir ) /cbindgen.toml --output src/include/css_parser.h $(css_parser_dir )
128+
116129format :
117130 $(clang_format ) -i $(project_and_extension_files )
118131
0 commit comments