@@ -919,11 +919,29 @@ TEST_SHELL_PATH = $(SHELL_PATH)
919919
920920LIB_FILE = libgit.a
921921XDIFF_LIB = xdiff/lib.a
922+
923+ EXTLIBS =
924+
922925ifeq ($(DEBUG ) , 1)
923- RUST_LIB = rust/target/ debug/libxdiff.a
926+ RUST_BUILD_MODE = debug
924927else
925- RUST_LIB = rust/target/release/libxdiff.a
928+ RUST_BUILD_MODE = release
929+ endif
930+
931+ RUST_TARGET_DIR = rust/target/$(RUST_BUILD_MODE )
932+ RUST_FLAGS_FOR_C = -L$(RUST_TARGET_DIR )
933+
934+ .PHONY : compile_rust
935+ compile_rust :
936+ ./build_rust.sh . $(RUST_BUILD_MODE ) xdiff
937+
938+ EXTLIBS += ./$(RUST_TARGET_DIR ) /libxdiff.a
939+
940+ UNAME_S := $(shell uname -s)
941+ ifeq ($(UNAME_S ) ,Linux)
942+ EXTLIBS += -ldl
926943endif
944+
927945REFTABLE_LIB = reftable/libreftable.a
928946
929947GENERATED_H += command-list.h
@@ -1395,9 +1413,7 @@ UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
13951413
13961414# xdiff and reftable libs may in turn depend on what is in libgit.a
13971415GITLIBS = common-main.o $(LIB_FILE ) $(XDIFF_LIB ) $(REFTABLE_LIB ) $(LIB_FILE )
1398- EXTLIBS =
13991416
1400- GITLIBS += $(RUST_LIB )
14011417
14021418GIT_USER_AGENT = git/$(GIT_VERSION )
14031419
@@ -2548,7 +2564,7 @@ git.sp git.s git.o: EXTRA_CPPFLAGS = \
25482564 ' -DGIT_MAN_PATH="$(mandir_relative_SQ)"' \
25492565 ' -DGIT_INFO_PATH="$(infodir_relative_SQ)"'
25502566
2551- git$X : git.o GIT-LDFLAGS $(BUILTIN_OBJS ) $(GITLIBS )
2567+ git$X : git.o GIT-LDFLAGS $(BUILTIN_OBJS ) $(GITLIBS ) compile_rust
25522568 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
25532569 $(filter % .o,$^ ) $(LIBS )
25542570
@@ -2898,17 +2914,17 @@ headless-git.o: compat/win32/headless.c GIT-CFLAGS
28982914headless-git$X : headless-git.o git.res GIT-LDFLAGS
28992915 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) $(ALL_LDFLAGS ) -mwindows -o $@ $< git.res
29002916
2901- git-% $X : % .o GIT-LDFLAGS $(GITLIBS )
2917+ git-% $X : % .o GIT-LDFLAGS $(GITLIBS ) compile_rust
29022918 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) $(LIBS )
29032919
2904- git-imap-send$X : imap-send.o $(IMAP_SEND_BUILDDEPS ) GIT-LDFLAGS $(GITLIBS )
2920+ git-imap-send$X : imap-send.o $(IMAP_SEND_BUILDDEPS ) GIT-LDFLAGS $(GITLIBS ) compile_rust
29052921 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) \
29062922 $(IMAP_SEND_LDFLAGS ) $(LIBS )
29072923
2908- git-http-fetch$X : http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS )
2924+ git-http-fetch$X : http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS ) compile_rust
29092925 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) \
29102926 $(CURL_LIBCURL ) $(LIBS )
2911- git-http-push$X : http.o http-push.o GIT-LDFLAGS $(GITLIBS )
2927+ git-http-push$X : http.o http-push.o GIT-LDFLAGS $(GITLIBS ) compile_rust
29122928 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) \
29132929 $(CURL_LIBCURL ) $(EXPAT_LIBEXPAT ) $(LIBS )
29142930
@@ -2918,11 +2934,11 @@ $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY)
29182934 ln -s $< $@ 2> /dev/null || \
29192935 cp $< $@
29202936
2921- $(REMOTE_CURL_PRIMARY ) : remote-curl.o http.o http-walker.o GIT-LDFLAGS $(GITLIBS )
2937+ $(REMOTE_CURL_PRIMARY ) : remote-curl.o http.o http-walker.o GIT-LDFLAGS $(GITLIBS ) compile_rust
29222938 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) \
29232939 $(CURL_LIBCURL ) $(EXPAT_LIBEXPAT ) $(LIBS )
29242940
2925- scalar$X : scalar.o GIT-LDFLAGS $(GITLIBS )
2941+ scalar$X : scalar.o GIT-LDFLAGS $(GITLIBS ) compile_rust
29262942 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
29272943 $(filter % .o,$^ ) $(LIBS )
29282944
@@ -3309,7 +3325,7 @@ perf: all
33093325
33103326t/helper/test-tool$X : $(patsubst % ,t/helper/% ,$(TEST_BUILTINS_OBJS ) ) $(UNIT_TEST_DIR ) /test-lib.o
33113327
3312- t/helper/test-% $X : t/helper/test-% .o GIT-LDFLAGS $(GITLIBS )
3328+ t/helper/test-% $X : t/helper/test-% .o GIT-LDFLAGS $(GITLIBS ) compile_rust
33133329 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS )
33143330
33153331check-sha1 :: t/helper/test-tool$X
@@ -3929,13 +3945,13 @@ FUZZ_CXXFLAGS ?= $(ALL_CFLAGS)
39293945.PHONY : fuzz-all
39303946fuzz-all : $(FUZZ_PROGRAMS )
39313947
3932- $(FUZZ_PROGRAMS ) : % : % .o oss-fuzz/dummy-cmd-main.o $(GITLIBS ) GIT-LDFLAGS
3948+ $(FUZZ_PROGRAMS ) : % : % .o oss-fuzz/dummy-cmd-main.o $(GITLIBS ) GIT-LDFLAGS compile_rust
39333949 $(QUIET_LINK )$(FUZZ_CXX ) $(FUZZ_CXXFLAGS ) -o $@ $(ALL_LDFLAGS ) \
39343950 -Wl,--allow-multiple-definition \
39353951 $(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS ) $(LIB_FUZZING_ENGINE )
39363952
39373953$(UNIT_TEST_PROGS ) : $(UNIT_TEST_BIN ) /% $X: $(UNIT_TEST_DIR ) /% .o $(UNIT_TEST_OBJS ) \
3938- $(GITLIBS ) GIT-LDFLAGS
3954+ $(GITLIBS ) GIT-LDFLAGS compile_rust
39393955 $(call mkdir_p_parent_template)
39403956 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
39413957 $(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS )
@@ -3954,7 +3970,7 @@ $(UNIT_TEST_DIR)/clar.suite: $(UNIT_TEST_DIR)/clar-decls.h $(UNIT_TEST_DIR)/gene
39543970$(UNIT_TEST_DIR ) /clar/clar.o : $(UNIT_TEST_DIR ) /clar.suite
39553971$(CLAR_TEST_OBJS ) : $(UNIT_TEST_DIR ) /clar-decls.h
39563972$(CLAR_TEST_OBJS ) : EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR )
3957- $(CLAR_TEST_PROG ) : $(UNIT_TEST_DIR ) /clar.suite $(CLAR_TEST_OBJS ) $(GITLIBS ) GIT-LDFLAGS
3973+ $(CLAR_TEST_PROG ) : $(UNIT_TEST_DIR ) /clar.suite $(CLAR_TEST_OBJS ) $(GITLIBS ) GIT-LDFLAGS compile_rust
39583974 $(call mkdir_p_parent_template)
39593975 $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) $(LIBS )
39603976
0 commit comments