2929# - mpdecimal-tvOS - build mpdecimal for tvOS
3030# - mpdecimal-watchOS - build mpdecimal for watchOS
3131# - mpdecimal-visionOS - build mpdecimal for visionOS
32+ # - zstd-iOS - build zstd for iOS
33+ # - zstd-MacCatalyst - build zstd for MacCatalyst
34+ # - zstd-tvOS - build zstd for tvOS
35+ # - zstd-watchOS - build zstd for watchOS
36+ # - zstd-visionOS - build zstd for visionOS
3237# - libFFI-iOS - build libFFI for iOS
3338# - libFFI-MacCatalyst - build libFFI for MacCatalyst
3439# - libFFI-tvOS - build libFFI for tvOS
@@ -63,6 +68,8 @@ OPENSSL_SERIES=$(shell echo $(OPENSSL_VERSION) | grep -Eo "\d+\.\d+")
6368
6469MPDECIMAL_VERSION =4.0.0
6570
71+ ZSTD_VERSION =1.5.7
72+
6673LIBFFI_VERSION =3.4.7
6774
6875CURL_FLAGS =--disable --fail --location --create-dirs --progress-bar
@@ -181,6 +188,15 @@ downloads/mpdecimal-$(MPDECIMAL_VERSION).tar.gz:
181188 curl $(CURL_FLAGS ) -o $@ \
182189 https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-$(MPDECIMAL_VERSION ) .tar.gz
183190
191+ # ##########################################################################
192+ # Setup: zstd
193+ # ##########################################################################
194+
195+ # Download original zstd source code archive.
196+ downloads/zstd-$(ZSTD_VERSION ) .tar.gz :
197+ @echo " >>> Download zstd sources"
198+ curl $(CURL_FLAGS ) -o $@ \
199+ https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION ) /zstd-$(ZSTD_VERSION ) .tar.gz
184200
185201# ##########################################################################
186202# Setup: libFFI
@@ -214,7 +230,8 @@ TARGET_TRIPLE-$(target)=$$(ARCH-$(target))-apple-$$(TRIPLE_OS-$(os))$$(VERSION_M
214230
215231SDK_ROOT-$(target ) =$$(shell xcrun --sdk $$(SDK-$(target ) ) --show-sdk-path)
216232CC-$(target ) =xcrun --sdk $$(SDK-$(target ) ) clang -target $$(TARGET_TRIPLE-$(target ) )
217- CXX-$(target ) =xcrun --sdk $$(SDK-$(target ) ) clang -target $$(TARGET_TRIPLE-$(target ) )
233+ AS-$(target ) =xcrun --sdk $$(SDK-$(target ) ) as -target $$(TARGET_TRIPLE-$(target ) )
234+ CXX-$(target ) =xcrun --sdk $$(SDK-$(target ) ) clang++ -target $$(TARGET_TRIPLE-$(target ) )
218235CFLAGS-$(target ) =\
219236 --sysroot=$$(SDK_ROOT-$(target ) ) \
220237 $$(CFLAGS-$(os ) )
@@ -418,14 +435,14 @@ $$(MPDECIMAL_SRCDIR-$(target))/Makefile: $$(MPDECIMAL_SRCDIR-$(target))/configur
418435 --host=$$(TARGET_TRIPLE-$(target ) ) \
419436 --build=$(HOST_ARCH ) -apple-darwin \
420437 --prefix="$$(MPDECIMAL_INSTALL-$(target ) ) " \
421- 2>&1 | tee -a ../xz -$(MPDECIMAL_VERSION ) .config.log
438+ 2>&1 | tee -a ../mpdecimal -$(MPDECIMAL_VERSION ) .config.log
422439
423440$$(MPDECIMAL_LIB-$(target ) ) : $$(MPDECIMAL_SRCDIR-$(target ) ) /Makefile
424- @echo ">>> Build and install MPDECIMAL for $(target ) "
441+ @echo ">>> Build and install mpdecimal for $(target ) "
425442 cd $$(MPDECIMAL_SRCDIR-$(target ) ) && \
426443 PATH="$(PROJECT_DIR ) /install/$(os ) /bin:$(PATH ) " \
427444 make install \
428- 2>&1 | tee -a ../xz -$(MPDECIMAL_VERSION ) .build.log
445+ 2>&1 | tee -a ../mpdecimal -$(MPDECIMAL_VERSION ) .build.log
429446
430447$$(MPDECIMAL_DIST-$(target ) ) : $$(MPDECIMAL_LIB-$(target ) )
431448 @echo ">>> Build MPDECIMAL distribution for $(target ) "
@@ -436,6 +453,42 @@ $$(MPDECIMAL_DIST-$(target)): $$(MPDECIMAL_LIB-$(target))
436453.PHONY: mpdecimal-$(target )
437454mpdecimal-$(target ) : $$(MPDECIMAL_DIST-$(target ) )
438455
456+ # ##########################################################################
457+ # Target: zstd
458+ # ##########################################################################
459+
460+ ZSTD_SRCDIR-$(target ) =build/$(os ) /$(target ) /zstd-$(ZSTD_VERSION )
461+ ZSTD_INSTALL-$(target ) =$(PROJECT_DIR ) /install/$(os ) /$(target ) /zstd-$(ZSTD_VERSION )
462+ ZSTD_LIB-$(target ) =$$(ZSTD_INSTALL-$(target ) ) /lib/libzstd.a
463+ ZSTD_DIST-$(target ) =dist/zstd-$(ZSTD_VERSION ) -$(BUILD_NUMBER ) -$(target ) .tar.gz
464+
465+ $$(ZSTD_SRCDIR-$(target ) ) /Makefile: downloads/zstd-$(ZSTD_VERSION ) .tar.gz
466+ @echo ">>> Unpack zstd sources for $(target ) "
467+ mkdir -p $$(ZSTD_SRCDIR-$(target ) )
468+ tar zxf $$< --strip-components 1 -C $$(ZSTD_SRCDIR-$(target ) )
469+ # Touch the Makefile script to ensure that Make identifies it as up to date.
470+ touch $$(ZSTD_SRCDIR-$(target ) ) /Makefile
471+
472+ $$(ZSTD_LIB-$(target ) ) : $$(ZSTD_SRCDIR-$(target ) ) /Makefile
473+ @echo ">>> Build and install zstd for $(target ) "
474+ cd $$(ZSTD_SRCDIR-$(target ) ) && \
475+ PATH="$(PROJECT_DIR ) /install/$(os ) /bin:$(PATH ) " \
476+ CC="$$(CC-$(target ) ) " \
477+ AS="$$(AS-$(target ) ) " \
478+ CFLAGS="$$(CFLAGS-$(target ) ) " \
479+ LDFLAGS="$$(LDFLAGS-$(target ) ) " \
480+ make -C lib install-static install-includes PREFIX=$$(ZSTD_INSTALL-$(target ) ) \
481+ 2>&1 | tee -a ../zstd-$(ZSTD_VERSION ) .build.log
482+
483+ $$(ZSTD_DIST-$(target ) ) : $$(ZSTD_LIB-$(target ) )
484+ @echo ">>> Build zstd distribution for $(target ) "
485+ mkdir -p dist
486+
487+ cd $$(ZSTD_INSTALL-$(target ) ) && tar zcvf $(PROJECT_DIR ) /$$(ZSTD_DIST-$(target ) ) lib include
488+
489+ .PHONY: zstd-$(target )
490+ zstd-$(target ) : $$(ZSTD_DIST-$(target ) )
491+
439492# ##########################################################################
440493# Target: libFFI
441494# ##########################################################################
@@ -488,6 +541,7 @@ vars-$(target):
488541 @echo "TARGET_TRIPLE-$(target ) : $$(TARGET_TRIPLE-$(target ) ) "
489542 @echo "SDK_ROOT-$(target ) : $$(SDK_ROOT-$(target ) ) "
490543 @echo "CC-$(target ) : $$(CC-$(target ) ) "
544+ @echo "AS-$(target ) : $$(AS-$(target ) ) "
491545 @echo "CFLAGS-$(target ) : $$(CFLAGS-$(target ) ) "
492546 @echo "LDFLAGS-$(target ) : $$(LDFLAGS-$(target ) ) "
493547 @echo "BZIP2_SRCDIR-$(target ) : $$(BZIP2_SRCDIR-$(target ) ) "
@@ -543,6 +597,7 @@ BZip2-$(sdk): $$(foreach target,$$(SDK_TARGETS-$(sdk)),BZip2-$$(target))
543597XZ-$(sdk ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,XZ-$$(target ) )
544598OpenSSL-$(sdk ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,OpenSSL-$$(target ) )
545599mpdecimal-$(sdk ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,mpdecimal-$$(target ) )
600+ zstd-$(sdk ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,zstd-$$(target ) )
546601libFFI-$(sdk ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,libFFI-$$(target ) )
547602
548603# ##########################################################################
@@ -597,9 +652,10 @@ BZip2-$(os): $$(foreach sdk,$$(SDKS-$(os)),BZip2-$$(sdk))
597652XZ-$(os ) : $$(foreach sdk,$$(SDKS-$(os ) ) ,XZ-$$(sdk ) )
598653OpenSSL-$(os ) : $$(foreach sdk,$$(SDKS-$(os ) ) ,OpenSSL-$$(sdk ) )
599654mpdecimal-$(os ) : $$(foreach sdk,$$(SDKS-$(os ) ) ,mpdecimal-$$(sdk ) )
655+ zstd-$(os ) : $$(foreach sdk,$$(SDKS-$(os ) ) ,zstd-$$(sdk ) )
600656libFFI-$(os ) : $$(foreach sdk,$$(SDKS-$(os ) ) ,libFFI-$$(sdk ) )
601657
602- .PHONY: clean-BZip2-$(os ) clean-XZ-$(os ) clean-OpenSSL-$(os ) clean-mpdecimal-$(os ) clean-libFFI-$(os )
658+ .PHONY: clean-BZip2-$(os ) clean-XZ-$(os ) clean-OpenSSL-$(os ) clean-mpdecimal-$(os ) clean-zstd- $( os ) clean- libFFI-$(os )
603659clean-BZip2-$(os ) :
604660 @echo ">>> Clean BZip2 build products on $(os ) "
605661 rm -rf \
@@ -636,6 +692,15 @@ clean-mpdecimal-$(os):
636692 install/$(os ) /*/mpdecimal-$(MPDECIMAL_VERSION ) .*.log \
637693 dist/mpdecimal-$(MPDECIMAL_VERSION ) -*
638694
695+ clean-zstd-$(os ) :
696+ @echo ">>> Clean zstd build products on $(os ) "
697+ rm -rf \
698+ build/$(os ) /*/zstd-$(ZSTD_VERSION ) \
699+ build/$(os ) /*/zstd-$(ZSTD_VERSION ) .*.log \
700+ install/$(os ) /*/zstd-$(ZSTD_VERSION ) \
701+ install/$(os ) /*/zstd-$(ZSTD_VERSION ) .*.log \
702+ dist/zstd-$(ZSTD_VERSION ) -*
703+
639704clean-libFFI-$(os ) :
640705 @echo ">>> Clean libFFI build products on $(os ) "
641706 rm -rf \
@@ -646,7 +711,7 @@ clean-libFFI-$(os):
646711 dist/libffi-$(LIBFFI_VERSION ) -*
647712
648713.PHONY: $(os )
649- $(os ) : BZip2-$(os ) XZ-$(os ) OpenSSL-$(os ) mpdecimal-$(os ) libFFI-$(os )
714+ $(os ) : BZip2-$(os ) XZ-$(os ) OpenSSL-$(os ) mpdecimal-$(os ) zstd- $( os ) libFFI-$(os )
650715
651716# ##########################################################################
652717# Build: Debug
@@ -666,17 +731,19 @@ endef # build
666731vars : $(foreach os,$(OS_LIST ) ,vars-$(os ) )
667732
668733# Expand the targets for each product
669- .PHONY : BZip2 XZ OpenSSL mpdecimal libFFI
734+ .PHONY : BZip2 XZ OpenSSL mpdecimal zstd libFFI
670735BZip2 : $(foreach os,$(OS_LIST ) ,BZip2-$(os ) )
671736XZ : $(foreach os,$(OS_LIST ) ,XZ-$(os ) )
672737OpenSSL : $(foreach os,$(OS_LIST ) ,OpenSSL-$(os ) )
673738mpdecimal : $(foreach os,$(OS_LIST ) ,mpdecimal-$(os ) )
739+ zstd : $(foreach os,$(OS_LIST ) ,zstd-$(os ) )
674740libFFI : $(foreach os,$(OS_LIST ) ,libFFI-$(os ) )
675741
676742clean-BZip2 : $(foreach os,$(OS_LIST ) ,clean-BZip2-$(os ) )
677743clean-XZ : $(foreach os,$(OS_LIST ) ,clean-XZ-$(os ) )
678744clean-OpenSSL : $(foreach os,$(OS_LIST ) ,clean-OpenSSL-$(os ) )
679745clean-mpdecimal : $(foreach os,$(OS_LIST ) ,clean-mpdecimal-$(os ) )
746+ clean-zstd : $(foreach os,$(OS_LIST ) ,clean-zstd-$(os ) )
680747clean-libFFI : $(foreach os,$(OS_LIST ) ,clean-libFFI-$(os ) )
681748
682749# Expand the build macro for every OS
0 commit comments