mirror of https://github.com/bol-van/zapret/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.4 KiB
156 lines
5.4 KiB
DIRS := nfq tpws ip2net mdig
|
|
DIRS_MAC := tpws ip2net mdig
|
|
TGT := binaries/my
|
|
|
|
# MacOS target detection with improved compatibility
|
|
MACOS_TARGET ?= $(shell uname -m | sed 's/x86_64/x86_64-apple-macos10.8/;s/arm64/arm64-apple-macos10.8/')
|
|
|
|
# Detect MacOS version for better compatibility
|
|
MACOS_VERSION ?= $(shell sw_vers -productVersion 2>/dev/null | cut -d. -f1,2 || echo "10.8")
|
|
|
|
# Check if we're on MacOS (Darwin)
|
|
IS_MACOS := $(shell [ "$(shell uname)" = "Darwin" ] && echo "1" || echo "0")
|
|
|
|
all: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
for dir in $(DIRS); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
$(MAKE) -C "$$dir" || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
systemd: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
for dir in $(DIRS); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
$(MAKE) -C "$$dir" systemd || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
android: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
for dir in $(DIRS); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
$(MAKE) -C "$$dir" android || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
bsd: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
for dir in $(DIRS); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
$(MAKE) -C "$$dir" bsd || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
mac: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
echo "Building for MacOS (Darwin) with target: $(MACOS_TARGET)"; \
|
|
echo "MacOS version: $(MACOS_VERSION)"; \
|
|
echo "Note: MacOS is NOT BSD - it's a hybrid system with unique characteristics"; \
|
|
# Check if nfq is available (it's not supported on MacOS) \
|
|
if [ "$(IS_MACOS)" = "1" ]; then \
|
|
echo "Note: nfq component is not supported on MacOS (no NFQUEUE support)"; \
|
|
echo "Building only: $(DIRS_MAC)"; \
|
|
fi; \
|
|
for dir in $(DIRS_MAC); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
MACOS_TARGET="$(MACOS_TARGET)" MACOS_VERSION="$(MACOS_VERSION)" $(MAKE) -C "$$dir" mac || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
# Universal binary build for MacOS (both architectures)
|
|
mac-universal: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
echo "Building universal binary for MacOS (Darwin) (x86_64 + arm64)"; \
|
|
echo "MacOS version: $(MACOS_VERSION)"; \
|
|
echo "Note: MacOS is NOT BSD - it's a hybrid system with unique characteristics"; \
|
|
# Check if nfq is available (it's not supported on MacOS) \
|
|
if [ "$(IS_MACOS)" = "1" ]; then \
|
|
echo "Note: nfq component is not supported on MacOS (no NFQUEUE support)"; \
|
|
echo "Building only: $(DIRS_MAC)"; \
|
|
fi; \
|
|
for dir in $(DIRS_MAC); do \
|
|
find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \
|
|
MACOS_TARGET="$(MACOS_TARGET)" MACOS_VERSION="$(MACOS_VERSION)" $(MAKE) -C "$$dir" mac-universal || exit; \
|
|
for exe in "$$dir/"*; do \
|
|
if [ -f "$$exe" ] && [ -x "$$exe" ]; then \
|
|
mv -f "$$exe" "${TGT}" ; \
|
|
ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \
|
|
fi \
|
|
done \
|
|
done
|
|
|
|
# MacOS specific build with architecture detection
|
|
mac-auto: clean
|
|
@mkdir -p "$(TGT)"; \
|
|
echo "Auto-detecting MacOS (Darwin) architecture and building..."; \
|
|
if [ "$(IS_MACOS)" = "1" ]; then \
|
|
MACOS_TARGET="$(MACOS_TARGET)" MACOS_VERSION="$(MACOS_VERSION)" $(MAKE) mac; \
|
|
else \
|
|
echo "Error: This target is only available on MacOS (Darwin)"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
clean:
|
|
@[ -d "$(TGT)" ] && rm -rf "$(TGT)" ; \
|
|
for dir in $(DIRS); do \
|
|
$(MAKE) -C "$$dir" clean; \
|
|
done
|
|
|
|
# MacOS specific clean
|
|
mac-clean:
|
|
@[ -d "$(TGT)" ] && rm -rf "$(TGT)" ; \
|
|
for dir in $(DIRS_MAC); do \
|
|
$(MAKE) -C "$$dir" clean; \
|
|
done
|
|
|
|
# Show MacOS build information
|
|
mac-info:
|
|
@echo "MacOS (Darwin) Build Information:"
|
|
@echo "=================================="
|
|
@echo "System: $(shell uname)"
|
|
@echo "Architecture: $(shell uname -m)"
|
|
@echo "MacOS version: $(MACOS_VERSION)"
|
|
@echo "Target: $(MACOS_TARGET)"
|
|
@echo "Is MacOS (Darwin): $(IS_MACOS)"
|
|
@echo "Supported components: $(DIRS_MAC)"
|
|
@echo "Unsupported components: nfq (no NFQUEUE support)"
|
|
@echo ""
|
|
@echo "IMPORTANT: MacOS is NOT BSD - it's a hybrid system with:"
|
|
@echo " - XNU kernel (Mach + BSD-like layer + Apple components)"
|
|
@echo " - Unique networking stack and system calls"
|
|
@echo " - Apple-specific security features (SIP, code signing)"
|
|
@echo " - Different firewall (PF) and service management (launchd)"
|
|
@echo ""
|
|
@echo "Available targets:"
|
|
@echo " make mac - Build for current architecture"
|
|
@echo " make mac-universal - Build universal binary (x86_64 + arm64)"
|
|
@echo " make mac-auto - Auto-detect and build"
|
|
@echo " make mac-clean - Clean MacOS builds only"
|
|
@echo " make mac-info - Show this information"
|
|
|