| 27   iterator.c linked_list.c list.c map.c mempool.c printf.c string.c tree.c \ | 27   iterator.c linked_list.c list.c map.c mempool.c printf.c string.c tree.c \ | 
| 28   streams.c szmul.c properties.c json.c | 28   streams.c szmul.c properties.c json.c | 
| 29 | 29 | 
| 30 OBJ_EXT=.o | 30 OBJ_EXT=.o | 
| 31 OBJ=$(SRC:%.c=$(build_dir)/%$(OBJ_EXT)) | 31 OBJ=$(SRC:%.c=$(build_dir)/%$(OBJ_EXT)) | 
| 32 GCOV=$(SRC:%.c=%.c.gcov) |  | 
| 33 | 32 | 
| 34 static: $(build_dir)/libucx_static$(STLIB_EXT) | 33 static: $(build_dir)/libucx_static$(STLIB_EXT) | 
| 35 | 34 | 
| 36 shared: $(build_dir)/libucx$(SHLIB_EXT) | 35 shared: $(build_dir)/libucx$(SHLIB_EXT) | 
| 37 | 36 | 
| 38 check-coverage: $(GCOV) | 37 check-coverage: $(SRC:%.c=$(build_dir)/%.gcda) | 
| 39 	mv *.gcov "$(build_dir)" | 38 	gcovr --html-details $(build_dir)/coverage.html \ | 
|  | 39 		  --object-directory $(build_dir) \ | 
|  | 40 		  --root $(root_dir)/src \ | 
|  | 41 		  --exclude-directories $(build_dir)/tests \ | 
|  | 42 		  $(build_dir) | 
| 40 | 43 | 
| 41 %.c.gcov: %.c $(build_dir)/%.gcno | 44 $(build_dir)/%.gcda: | 
| 42 	@tabs 22 |  | 
| 43 	@gcov -Ho "$(build_dir)" $< | grep -A1 'File' | grep -v '\--' \ |  | 
| 44 		| sed 's/File /  /' | sed 's/Lines executed:/\t/' | tr -d '\n'"'" \ |  | 
| 45 		| sed -E 's/(of [0-9]+)/\1\n/g' |  | 
| 46 	@tabs -8 |  | 
| 47 |  | 
| 48 $(build_dir)/%.gcno: |  | 
| 49 	test -f "$@" | 45 	test -f "$@" | 
| 50 | 46 | 
| 51 $(build_dir)/libucx_static$(STLIB_EXT): $(OBJ) | 47 $(build_dir)/libucx_static$(STLIB_EXT): $(OBJ) | 
| 52 	$(AR) $(ARFLAGS) $@ $^ | 48 	$(AR) $(ARFLAGS) $@ $^ | 
| 53 | 49 | 
| 58 	$(MKDIR) $(libdir) $(includedir)/cx | 54 	$(MKDIR) $(libdir) $(includedir)/cx | 
| 59 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) | 55 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) | 
| 60 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT) | 56 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT) | 
| 61 	$(COPYFILE) $(build_dir)/libucx_static$(STLIB_EXT) $(libdir)/libucx_static$(STLIB_EXT) | 57 	$(COPYFILE) $(build_dir)/libucx_static$(STLIB_EXT) $(libdir)/libucx_static$(STLIB_EXT) | 
| 62 	$(COPYFILE) $(build_dir)/libucx$(SHLIB_EXT) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION) | 58 	$(COPYFILE) $(build_dir)/libucx$(SHLIB_EXT) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION) | 
| 63 	$(COPYALL) $(src_dir)/src/cx $(includedir) | 59 	$(COPYALL) $(root_dir)/src/cx $(includedir) | 
| 64 	$(SYMLINK) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) | 60 	$(SYMLINK) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) | 
| 65 	$(SYMLINK) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) $(libdir)/libucx$(SHLIB_EXT) | 61 	$(SYMLINK) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) $(libdir)/libucx$(SHLIB_EXT) | 
| 66 | 62 | 
| 67 FORCE: | 63 FORCE: | 
| 68 | 64 |