@@ -915,6 +915,8 @@ REFTABLE_TEST_LIB = reftable/libreftable_test.a
915
915
GENERATED_H += command-list.h
916
916
GENERATED_H += config-list.h
917
917
GENERATED_H += hook-list.h
918
+ GENERATED_H += $(UNIT_TEST_DIR ) /clar-decls.h
919
+ GENERATED_H += $(UNIT_TEST_DIR ) /clar.suite
918
920
919
921
.PHONY : generated-hdrs
920
922
generated-hdrs : $(GENERATED_H )
@@ -1334,9 +1336,17 @@ THIRD_PARTY_SOURCES += compat/poll/%
1334
1336
THIRD_PARTY_SOURCES += compat/regex/%
1335
1337
THIRD_PARTY_SOURCES += sha1collisiondetection/%
1336
1338
THIRD_PARTY_SOURCES += sha1dc/%
1339
+ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR ) /clar/%
1340
+ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR ) /clar/clar/%
1341
+
1342
+ UNIT_TESTS_SUITES += ctype
1343
+ UNIT_TESTS_SUITES += strvec
1344
+ UNIT_TESTS_PROG = $(UNIT_TEST_BIN ) /unit-tests$(X )
1345
+ UNIT_TESTS_OBJS = $(patsubst % ,$(UNIT_TEST_DIR ) /% .o,$(UNIT_TESTS_SUITES ) )
1346
+ UNIT_TESTS_OBJS += $(UNIT_TEST_DIR ) /clar/clar.o
1347
+ UNIT_TESTS_OBJS += $(UNIT_TEST_DIR ) /unit-test.o
1337
1348
1338
1349
UNIT_TEST_PROGRAMS += t-apply
1339
- UNIT_TEST_PROGRAMS += t-ctype
1340
1350
UNIT_TEST_PROGRAMS += t-example-decorate
1341
1351
UNIT_TEST_PROGRAMS += t-hash
1342
1352
UNIT_TEST_PROGRAMS += t-hashmap
@@ -1353,7 +1363,6 @@ UNIT_TEST_PROGRAMS += t-reftable-record
1353
1363
UNIT_TEST_PROGRAMS += t-reftable-tree
1354
1364
UNIT_TEST_PROGRAMS += t-strbuf
1355
1365
UNIT_TEST_PROGRAMS += t-strcmp-offset
1356
- UNIT_TEST_PROGRAMS += t-strvec
1357
1366
UNIT_TEST_PROGRAMS += t-trailer
1358
1367
UNIT_TEST_PROGRAMS += t-urlmatch-normalization
1359
1368
UNIT_TEST_PROGS = $(patsubst % ,$(UNIT_TEST_BIN ) /% $X,$(UNIT_TEST_PROGRAMS ) )
@@ -2719,6 +2728,7 @@ OBJECTS += $(FUZZ_OBJS)
2719
2728
OBJECTS += $(REFTABLE_OBJS ) $(REFTABLE_TEST_OBJS )
2720
2729
OBJECTS += $(UNIT_TEST_OBJS )
2721
2730
OBJECTS += contrib/cgit-rs/cgit-sys/public_symbol_export.o
2731
+ OBJECTS += $(UNIT_TESTS_OBJS )
2722
2732
2723
2733
ifndef NO_CURL
2724
2734
OBJECTS += http.o http-walker.o remote-curl.o
@@ -3221,7 +3231,7 @@ endif
3221
3231
3222
3232
test_bindir_programs := $(patsubst % ,bin-wrappers/% ,$(BINDIR_PROGRAMS_NEED_X ) $(BINDIR_PROGRAMS_NO_X ) $(TEST_PROGRAMS_NEED_X ) )
3223
3233
3224
- all :: $(TEST_PROGRAMS ) $(test_bindir_programs ) $(UNIT_TEST_PROGS )
3234
+ all :: $(TEST_PROGRAMS ) $(test_bindir_programs ) $(UNIT_TEST_PROGS ) $( UNIT_TESTS_PROG )
3225
3235
3226
3236
bin-wrappers/% : wrap-for-bin.sh
3227
3237
$(call mkdir_p_parent_template)
@@ -3257,9 +3267,10 @@ t/helper/test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS) $(REFTABLE_TEST_LIB)
3257
3267
check-sha1 :: t/helper/test-tool$X
3258
3268
t/helper/test-sha1.sh
3259
3269
3260
- SP_OBJ = $(patsubst % .o,% .sp,$(OBJECTS ) )
3270
+ SP_SRC = $(filter-out $(THIRD_PARTY_SOURCES ) ,$(patsubst % .o,% .c,$(OBJECTS ) ) )
3271
+ SP_OBJ = $(patsubst % .c,% .sp,$(SP_SRC ) )
3261
3272
3262
- $(SP_OBJ ) : % .sp: % .c % .o
3273
+ $(SP_OBJ ) : % .sp: % .c % .o $( GENERATED_H )
3263
3274
$(QUIET_SP ) cgcc -no-compile $(ALL_CFLAGS ) $(EXTRA_CPPFLAGS ) \
3264
3275
-Wsparse-error \
3265
3276
$(SPARSE_FLAGS ) $(SP_EXTRA_FLAGS ) $< && \
@@ -3268,7 +3279,7 @@ $(SP_OBJ): %.sp: %.c %.o
3268
3279
.PHONY : sparse
3269
3280
sparse : $(SP_OBJ )
3270
3281
3271
- EXCEPT_HDRS := $(GENERATED_H ) unicode-width.h compat/% xdiff/%
3282
+ EXCEPT_HDRS := $(GENERATED_H ) unicode-width.h compat/% xdiff/% $( UNIT_TEST_DIR ) /clar/% $( UNIT_TEST_DIR ) /clar/clar/%
3272
3283
ifndef OPENSSL_SHA1
3273
3284
EXCEPT_HDRS += sha1/openssl.h
3274
3285
endif
@@ -3289,7 +3300,7 @@ HCC = $(HCO:hco=hcc)
3289
3300
@echo ' #include "git-compat-util.h"' > $@
3290
3301
@echo ' #include "$<"' >> $@
3291
3302
3292
- $(HCO ) : % .hco: % .hcc FORCE
3303
+ $(HCO ) : % .hco: % .hcc $( GENERATED_H ) FORCE
3293
3304
$(QUIET_HDR )$(CC ) $(ALL_CFLAGS ) -o /dev/null -c -xc $<
3294
3305
3295
3306
.PHONY : hdr-check $(HCO )
@@ -3300,7 +3311,7 @@ style:
3300
3311
git clang-format --style file --diff --extensions c,h
3301
3312
3302
3313
.PHONY : check
3303
- check : $( GENERATED_H )
3314
+ check :
3304
3315
@if sparse; \
3305
3316
then \
3306
3317
echo >&2 " Use 'make sparse' instead" ; \
@@ -3652,7 +3663,7 @@ endif
3652
3663
3653
3664
artifacts-tar :: $(ALL_COMMANDS_TO_INSTALL ) $(SCRIPT_LIB ) $(OTHER_PROGRAMS ) \
3654
3665
GIT-BUILD-OPTIONS $(TEST_PROGRAMS ) $(test_bindir_programs ) \
3655
- $(UNIT_TEST_PROGS ) $(MOFILES )
3666
+ $(UNIT_TEST_PROGS ) $(UNIT_TESTS_PROG ) $( MOFILES )
3656
3667
$(QUIET_SUBDIR0 ) templates $(QUIET_SUBDIR1 ) \
3657
3668
SHELL_PATH=' $(SHELL_PATH_SQ)' PERL_PATH=' $(PERL_PATH_SQ)'
3658
3669
test -n " $( ARTIFACTS_DIRECTORY) "
@@ -3708,6 +3719,7 @@ cocciclean:
3708
3719
3709
3720
clean : profile-clean coverage-clean cocciclean
3710
3721
$(RM ) -r .build $(UNIT_TEST_BIN )
3722
+ $(RM ) GIT-TEST-SUITES
3711
3723
$(RM ) po/git.pot po/git-core.pot
3712
3724
$(RM ) git.res
3713
3725
$(RM ) $(OBJECTS )
@@ -3868,9 +3880,28 @@ $(UNIT_TEST_PROGS): $(UNIT_TEST_BIN)/%$X: $(UNIT_TEST_DIR)/%.o \
3868
3880
$(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
3869
3881
$(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS )
3870
3882
3883
+ GIT-TEST-SUITES : FORCE
3884
+ @FLAGS=' $(UNIT_TESTS_SUITES)' ; \
3885
+ if test x" $$ FLAGS" ! = x" ` cat GIT-TEST-SUITES 2> /dev/null` " ; then \
3886
+ echo >&2 " * new test suites" ; \
3887
+ echo " $$ FLAGS" > GIT-TEST-SUITES; \
3888
+ fi
3889
+
3890
+ $(UNIT_TEST_DIR ) /clar-decls.h : $(patsubst % ,$(UNIT_TEST_DIR ) /% .c,$(UNIT_TESTS_SUITES ) ) GIT-TEST-SUITES
3891
+ $(QUIET_GEN ) for suite in $(UNIT_TESTS_SUITES ) ; do \
3892
+ sed -ne " s/^\(void test_$$ {suite}__[a-zA-Z_0-9][a-zA-Z_0-9]*(void)$$ \)/extern \1;/p" $(UNIT_TEST_DIR ) /$$ suite.c; \
3893
+ done > $@
3894
+ $(UNIT_TEST_DIR ) /clar.suite : $(UNIT_TEST_DIR ) /clar-decls.h
3895
+ $(QUIET_GEN ) awk -f $(UNIT_TEST_DIR ) /clar-generate.awk $< > $(UNIT_TEST_DIR ) /clar.suite
3896
+ $(UNIT_TESTS_OBJS ) : $(UNIT_TEST_DIR ) /clar-decls.h
3897
+ $(UNIT_TESTS_OBJS ) : EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR )
3898
+ $(UNIT_TESTS_PROG ) : $(UNIT_TEST_DIR ) /clar.suite $(UNIT_TESTS_OBJS ) $(GITLIBS ) GIT-LDFLAGS
3899
+ $(call mkdir_p_parent_template)
3900
+ $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) $(LIBS )
3901
+
3871
3902
.PHONY : build-unit-tests unit-tests
3872
- build-unit-tests : $(UNIT_TEST_PROGS )
3873
- unit-tests : $(UNIT_TEST_PROGS ) t/helper/test-tool$X
3903
+ build-unit-tests : $(UNIT_TEST_PROGS ) $( UNIT_TESTS_PROG )
3904
+ unit-tests : $(UNIT_TEST_PROGS ) $( UNIT_TESTS_PROG ) t/helper/test-tool$X
3874
3905
$(MAKE ) -C t/ unit-tests
3875
3906
3876
3907
contrib/cgit-rs/cgit-sys/partial_symbol_export.o : contrib/cgit-rs/cgit-sys/public_symbol_export.o libgit.a reftable/libreftable.a xdiff/lib.a
0 commit comments