@@ -915,6 +915,8 @@ REFTABLE_LIB = reftable/libreftable.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 )
@@ -1332,8 +1334,16 @@ THIRD_PARTY_SOURCES += compat/poll/%
1332
1334
THIRD_PARTY_SOURCES += compat/regex/%
1333
1335
THIRD_PARTY_SOURCES += sha1collisiondetection/%
1334
1336
THIRD_PARTY_SOURCES += sha1dc/%
1337
+ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR ) /clar/%
1338
+ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR ) /clar/clar/%
1339
+
1340
+ CLAR_TEST_SUITES += ctype
1341
+ CLAR_TEST_SUITES += strvec
1342
+ CLAR_TEST_PROG = $(UNIT_TEST_BIN ) /unit-tests$(X )
1343
+ CLAR_TEST_OBJS = $(patsubst % ,$(UNIT_TEST_DIR ) /% .o,$(CLAR_TEST_SUITES ) )
1344
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR ) /clar/clar.o
1345
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR ) /unit-test.o
1335
1346
1336
- UNIT_TEST_PROGRAMS += t-ctype
1337
1347
UNIT_TEST_PROGRAMS += t-example-decorate
1338
1348
UNIT_TEST_PROGRAMS += t-hash
1339
1349
UNIT_TEST_PROGRAMS += t-hashmap
@@ -1352,7 +1362,6 @@ UNIT_TEST_PROGRAMS += t-reftable-stack
1352
1362
UNIT_TEST_PROGRAMS += t-reftable-tree
1353
1363
UNIT_TEST_PROGRAMS += t-strbuf
1354
1364
UNIT_TEST_PROGRAMS += t-strcmp-offset
1355
- UNIT_TEST_PROGRAMS += t-strvec
1356
1365
UNIT_TEST_PROGRAMS += t-trailer
1357
1366
UNIT_TEST_PROGRAMS += t-urlmatch-normalization
1358
1367
UNIT_TEST_PROGS = $(patsubst % ,$(UNIT_TEST_BIN ) /% $X,$(UNIT_TEST_PROGRAMS ) )
@@ -2715,6 +2724,7 @@ OBJECTS += $(XDIFF_OBJS)
2715
2724
OBJECTS += $(FUZZ_OBJS )
2716
2725
OBJECTS += $(REFTABLE_OBJS ) $(REFTABLE_TEST_OBJS )
2717
2726
OBJECTS += $(UNIT_TEST_OBJS )
2727
+ OBJECTS += $(CLAR_TEST_OBJS )
2718
2728
2719
2729
ifndef NO_CURL
2720
2730
OBJECTS += http.o http-walker.o remote-curl.o
@@ -3214,7 +3224,7 @@ endif
3214
3224
3215
3225
test_bindir_programs := $(patsubst % ,bin-wrappers/% ,$(BINDIR_PROGRAMS_NEED_X ) $(BINDIR_PROGRAMS_NO_X ) $(TEST_PROGRAMS_NEED_X ) )
3216
3226
3217
- all :: $(TEST_PROGRAMS ) $(test_bindir_programs ) $(UNIT_TEST_PROGS )
3227
+ all :: $(TEST_PROGRAMS ) $(test_bindir_programs ) $(UNIT_TEST_PROGS ) $( CLAR_TEST_PROG )
3218
3228
3219
3229
bin-wrappers/% : wrap-for-bin.sh
3220
3230
$(call mkdir_p_parent_template)
@@ -3250,9 +3260,10 @@ t/helper/test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS)
3250
3260
check-sha1 :: t/helper/test-tool$X
3251
3261
t/helper/test-sha1.sh
3252
3262
3253
- SP_OBJ = $(patsubst % .o,% .sp,$(OBJECTS ) )
3263
+ SP_SRC = $(filter-out $(THIRD_PARTY_SOURCES ) ,$(patsubst % .o,% .c,$(OBJECTS ) ) )
3264
+ SP_OBJ = $(patsubst % .c,% .sp,$(SP_SRC ) )
3254
3265
3255
- $(SP_OBJ ) : % .sp: % .c % .o
3266
+ $(SP_OBJ ) : % .sp: % .c % .o $( GENERATED_H )
3256
3267
$(QUIET_SP ) cgcc -no-compile $(ALL_CFLAGS ) $(EXTRA_CPPFLAGS ) \
3257
3268
-Wsparse-error \
3258
3269
$(SPARSE_FLAGS ) $(SP_EXTRA_FLAGS ) $< && \
@@ -3261,7 +3272,7 @@ $(SP_OBJ): %.sp: %.c %.o
3261
3272
.PHONY : sparse
3262
3273
sparse : $(SP_OBJ )
3263
3274
3264
- EXCEPT_HDRS := $(GENERATED_H ) unicode-width.h compat/% xdiff/%
3275
+ EXCEPT_HDRS := $(GENERATED_H ) unicode-width.h compat/% xdiff/% $( UNIT_TEST_DIR ) /clar/% $( UNIT_TEST_DIR ) /clar/clar/%
3265
3276
ifndef OPENSSL_SHA1
3266
3277
EXCEPT_HDRS += sha1/openssl.h
3267
3278
endif
@@ -3282,7 +3293,7 @@ HCC = $(HCO:hco=hcc)
3282
3293
@echo ' #include "git-compat-util.h"' > $@
3283
3294
@echo ' #include "$<"' >> $@
3284
3295
3285
- $(HCO ) : % .hco: % .hcc FORCE
3296
+ $(HCO ) : % .hco: % .hcc $( GENERATED_H ) FORCE
3286
3297
$(QUIET_HDR )$(CC ) $(ALL_CFLAGS ) -o /dev/null -c -xc $<
3287
3298
3288
3299
.PHONY : hdr-check $(HCO )
@@ -3293,7 +3304,7 @@ style:
3293
3304
git clang-format --style file --diff --extensions c,h
3294
3305
3295
3306
.PHONY : check
3296
- check : $( GENERATED_H )
3307
+ check :
3297
3308
@if sparse; \
3298
3309
then \
3299
3310
echo >&2 " Use 'make sparse' instead" ; \
@@ -3645,7 +3656,7 @@ endif
3645
3656
3646
3657
artifacts-tar :: $(ALL_COMMANDS_TO_INSTALL ) $(SCRIPT_LIB ) $(OTHER_PROGRAMS ) \
3647
3658
GIT-BUILD-OPTIONS $(TEST_PROGRAMS ) $(test_bindir_programs ) \
3648
- $(UNIT_TEST_PROGS ) $(MOFILES )
3659
+ $(UNIT_TEST_PROGS ) $(CLAR_TEST_PROG ) $( MOFILES )
3649
3660
$(QUIET_SUBDIR0 ) templates $(QUIET_SUBDIR1 ) \
3650
3661
SHELL_PATH=' $(SHELL_PATH_SQ)' PERL_PATH=' $(PERL_PATH_SQ)'
3651
3662
test -n " $( ARTIFACTS_DIRECTORY) "
@@ -3701,6 +3712,7 @@ cocciclean:
3701
3712
3702
3713
clean : profile-clean coverage-clean cocciclean
3703
3714
$(RM ) -r .build $(UNIT_TEST_BIN )
3715
+ $(RM ) GIT-TEST-SUITES
3704
3716
$(RM ) po/git.pot po/git-core.pot
3705
3717
$(RM ) git.res
3706
3718
$(RM ) $(OBJECTS )
@@ -3860,7 +3872,26 @@ $(UNIT_TEST_PROGS): $(UNIT_TEST_BIN)/%$X: $(UNIT_TEST_DIR)/%.o \
3860
3872
$(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
3861
3873
$(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS )
3862
3874
3875
+ GIT-TEST-SUITES : FORCE
3876
+ @FLAGS=' $(CLAR_TEST_SUITES)' ; \
3877
+ if test x" $$ FLAGS" ! = x" ` cat GIT-TEST-SUITES 2> /dev/null` " ; then \
3878
+ echo >&2 " * new test suites" ; \
3879
+ echo " $$ FLAGS" > GIT-TEST-SUITES; \
3880
+ fi
3881
+
3882
+ $(UNIT_TEST_DIR ) /clar-decls.h : $(patsubst % ,$(UNIT_TEST_DIR ) /% .c,$(CLAR_TEST_SUITES ) ) GIT-TEST-SUITES
3883
+ $(QUIET_GEN ) for suite in $(CLAR_TEST_SUITES ) ; do \
3884
+ 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; \
3885
+ done > $@
3886
+ $(UNIT_TEST_DIR ) /clar.suite : $(UNIT_TEST_DIR ) /clar-decls.h
3887
+ $(QUIET_GEN ) awk -f $(UNIT_TEST_DIR ) /clar-generate.awk $< > $(UNIT_TEST_DIR ) /clar.suite
3888
+ $(CLAR_TEST_OBJS ) : $(UNIT_TEST_DIR ) /clar-decls.h
3889
+ $(CLAR_TEST_OBJS ) : EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR )
3890
+ $(CLAR_TEST_PROG ) : $(UNIT_TEST_DIR ) /clar.suite $(CLAR_TEST_OBJS ) $(GITLIBS ) GIT-LDFLAGS
3891
+ $(call mkdir_p_parent_template)
3892
+ $(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) $(filter % .o,$^ ) $(LIBS )
3893
+
3863
3894
.PHONY : build-unit-tests unit-tests
3864
- build-unit-tests : $(UNIT_TEST_PROGS )
3865
- unit-tests : $(UNIT_TEST_PROGS ) t/helper/test-tool$X
3895
+ build-unit-tests : $(UNIT_TEST_PROGS ) $( CLAR_TEST_PROG )
3896
+ unit-tests : $(UNIT_TEST_PROGS ) $( CLAR_TEST_PROG ) t/helper/test-tool$X
3866
3897
$(MAKE ) -C t/ unit-tests
0 commit comments