@@ -150,30 +150,44 @@ FUSE_LDFLAGS := $(shell $(PKG_CONFIG) fuse --libs)
150150$(TARGET ) : sparsebundlefs.o
151151 $(CXX ) $< -o $@ $(LDFLAGS ) $(ARCH_FLAGS ) $(FUSE_LDFLAGS )
152152
153+ HFSFUSE_DIR := $(SRC_DIR ) /src/3rdparty/hfsfuse
154+ HFSFUSE_DEPS := $(shell find $(HFSFUSE_DIR ) )
155+ export HFSFUSE_DIR
156+
157+ hfsfuse : $(HFSFUSE_DEPS )
158+ $(if $(wildcard $(HFSFUSE_DIR ) /.git) ,,$(error Please init and update git submodules) )
159+ $(call ensure_binary,git)
160+ @printf " Building hfsfuse... "
161+ @tmpdir=$$(mktemp -d ) ; GIT_DIR=$(HFSFUSE_DIR ) /.git GIT_WORK_TREE=$$ tmpdir git checkout . \
162+ && make -C $$ tmpdir CFLAGS=" $( ARCH_FLAGS) -D_FILE_OFFSET_BITS=64" LDFLAGS=$(ARCH_FLAGS ) > /dev/null 2>&1 \
163+ && cp $$ tmpdir/hfsfuse $(CURDIR ) && cp $$ tmpdir/hfsdump $(CURDIR ) \
164+ && printf " OK\n" && rm -Rf $$ tmpdir
165+
153166TESTS_DIR =$(SRC_DIR ) /tests
154167TESTDATA_DIR := $(TESTS_DIR ) /data
155- TEST_BUNDLE := $(TESTDATA_DIR ) /test.sparsebundle
156- export TEST_BUNDLE
168+ $(TESTDATA_DIR ) :
169+ @mkdir $( TESTDATA_DIR )
157170
158- ifneq ($(filter testdata,$(ACTUAL_GOALS ) ) ,)
159- .PHONY :: testdata
160- endif
171+ TEST_BUNDLE := $(TESTDATA_DIR ) /basic.sparsebundle
172+ export TEST_BUNDLE
161173
162- vpath $(TESTDATA_DIR ) $(SRC_DIR )
163- $(TESTDATA_DIR ) :
174+ $(TEST_BUNDLE ) : $(TESTDATA_DIR ) $(HFSFUSE_DEPS )
164175 $(call ensure_binary,hdiutil)
165- @rm -Rf $(TESTDATA_DIR ) && mkdir $(TESTDATA_DIR )
166- hdiutil create -size 1TB -type SPARSEBUNDLE -layout NONE -fs HFS+ $(TEST_BUNDLE )
176+ @test ! -e $@ || rm -Rf $@
177+ @printf " Creating testdata..." \
178+ && hdiutil create -size 1TB -format SPARSEBUNDLE -layout NONE \
179+ -fs HFS+ -srcfolder $(HFSFUSE_DIR ) $@
167180
168181check_% : check ; @:
169- check : $(TARGET ) $(TESTDATA_DIR )
182+ check : $(TARGET ) $(TEST_BUNDLE ) hfsfuse
170183 @echo " ============== $( PLATFORMS) =============="
171184 @PATH=" $( CURDIR) :$( PATH) " $(SRC_DIR ) /tests/testrunner.sh $(TESTS_DIR ) /* .tst \
172185 $(subst check_,test_,$(filter check_% ,$(ACTUAL_GOALS ) ) )
173186
174187clean :
175188 rm -f $(TARGET )
176189 rm -Rf $(TARGET ) .dSYM
190+ rm -f hfsfuse hfsdump
177191 rm -f * .o
178192
179193distclean : clean
0 commit comments