@@ -9,8 +9,6 @@ extension_sources = $(wildcard ext/**/*.c)
99extension_headers = $(wildcard ext/** /* .h)
1010extension_objects = $(extension_sources:.o )
1111
12- prism_objects = $(filter-out src/main.c, $(sources ) )
13-
1412project_files = $(sources ) $(headers )
1513extension_files = $(extension_sources ) $(extension_headers )
1614nodejs_extension_files = $(wildcard node/** /* .cpp) $(wildcard node/** /* .h) $(wildcard node/** /* .hpp)
@@ -30,12 +28,15 @@ $(shell mkdir -p $(build_dir))
3028
3129os := $(shell uname -s)
3230
33- prism_path = $(shell bundle show prism)
34- prism_include = $(prism_path ) /include
35- prism_build = $(prism_path ) /build
31+ prism_vendor_path = vendor/prism
32+ prism_include = $(prism_vendor_path ) /include
33+ prism_src = $(prism_vendor_path ) /src
34+
35+ prism_sources = $(wildcard $(prism_src ) /* .c) $(wildcard $(prism_src ) /util/* .c)
36+ prism_objects = $(prism_sources:.c=.o )
37+ prism_static_lib = $(build_dir ) /libprism.a
3638
37- prism_flags = -I$(prism_include )
38- prism_ldflags = $(prism_build ) /libprism.a
39+ prism_flags = -I$(prism_include ) -I$(prism_src )
3940
4041# Enable strict warnings
4142warning_flags = -Wall -Wextra -Werror -pedantic
@@ -60,7 +61,7 @@ shared_flags = $(production_flags) $(shared_library_flags) $(prism_flags)
6061
6162ifeq ($(os ) ,Linux)
6263 test_cflags = $(test_flags ) -I/usr/include/check
63- test_ldflags = -L/usr/lib/x86_64-linux-gnu -lcheck -lm -lsubunit $( prism_ldflags )
64+ test_ldflags = -L/usr/lib/x86_64-linux-gnu -lcheck -lm -lsubunit
6465 cc = clang-21
6566 clang_format = clang-format-21
6667 clang_tidy = clang-tidy-21
6970ifeq ($(os ) ,Darwin)
7071 brew_prefix := $(shell brew --prefix check)
7172 test_cflags = $(test_flags ) -I$(brew_prefix ) /include
72- test_ldflags = -L$(brew_prefix ) /lib -lcheck -lm $( prism_ldflags )
73+ test_ldflags = -L$(brew_prefix ) /lib -lcheck -lm
7374 llvm_path = $(shell brew --prefix llvm@21)
7475 cc = $(llvm_path ) /bin/clang
7576 clang_format = $(llvm_path ) /bin/clang-format
@@ -78,30 +79,40 @@ endif
7879
7980all : templates prism $(exec ) $(lib_name ) $(static_lib_name ) test wasm clangd_config
8081
81- $(exec ) : $(objects )
82- $(cc ) $(objects ) $(flags ) $(ldflags ) $(prism_ldflags ) -o $(exec )
82+ $(exec ) : $(objects ) $( prism_objects )
83+ $(cc ) $(objects ) $(prism_objects ) $(flags ) $(ldflags ) -o $(exec )
8384
84- $(lib_name ) : $(objects )
85- $(cc ) -shared $(objects ) $(shared_flags ) $(ldflags ) $(prism_ldflags ) -o $(lib_name )
85+ $(lib_name ) : $(objects ) $( prism_objects )
86+ $(cc ) -shared $(objects ) $(prism_objects ) $(shared_flags ) $(ldflags ) -o $(lib_name )
8687 # cp $(lib_name) $(ruby_extension)
8788
8889$(static_lib_name ) : $(objects )
8990 ar rcs $(static_lib_name ) $(objects )
9091
92+ $(prism_static_lib ) : $(prism_objects )
93+ ar rcs $(prism_static_lib ) $(prism_objects )
94+
95+ prism_lib : prism $(prism_static_lib )
96+
9197src/% .o : src/% .c templates
9298 $(cc ) -c $(flags ) -fPIC $< -o $@
9399
100+ $(prism_src ) /% .o : $(prism_src ) /% .c prism
101+ $(cc ) -c $(flags ) -fPIC $(prism_flags ) $< -o $@
102+
103+ $(prism_src ) /util/% .o : $(prism_src ) /util/% .c prism
104+ $(cc ) -c $(flags ) -fPIC $(prism_flags ) $< -o $@
105+
94106test/% .o : test/% .c templates
95107 $(cc ) -c $(test_cflags ) $(test_flags ) $(prism_flags ) $< -o $@
96108
97- test : $(test_objects ) $(non_main_objects )
98- $(cc ) $(test_objects ) $(non_main_objects ) $(test_cflags ) $(test_ldflags ) -o $(test_exec )
109+ test : $(test_objects ) $(non_main_objects ) $( prism_objects )
110+ $(cc ) $(test_objects ) $(non_main_objects ) $(prism_objects ) $( test_cflags ) $(test_ldflags ) -o $(test_exec )
99111
100112clean :
101- rm -f $(exec ) $(test_exec ) $(lib_name ) $(shared_lib_name ) $(ruby_extension )
102- rm -rf $(objects ) $(test_objects ) $(extension_objects ) lib/herb/* .bundle tmp
103- rm -rf $(prism_path )
104- rake prism:clean
113+ rm -f $(exec ) $(test_exec ) $(lib_name ) $(shared_lib_name ) $(prism_static_lib ) $(ruby_extension )
114+ rm -rf $(objects ) $(test_objects ) $(prism_objects ) $(extension_objects ) lib/herb/* .bundle tmp
115+ bundle exec rake prism:clean
105116
106117bundle_install :
107118 bundle install
@@ -110,8 +121,7 @@ templates: bundle_install
110121 bundle exec rake templates
111122
112123prism : bundle_install
113- cd $(prism_path ) && ruby templates/template.rb && make static && cd -
114- rake prism:vendor
124+ bundle exec rake prism:vendor
115125
116126format :
117127 $(clang_format ) -i $(project_and_extension_files )
0 commit comments