|
| 1 | +# TODO: Support Windows? x86? Other platforms and architectures? |
| 2 | + |
| 3 | +BUILD_CROSS = cross build --release |
| 4 | +BUILD_CARGO = cargo build --release |
| 5 | + |
| 6 | +TARGET_LINUX_X86_64 = --target=x86_64-unknown-linux-gnu |
| 7 | +TARGET_LINUX_ARM64 = --target=aarch64-unknown-linux-gnu |
| 8 | +TARGET_DARWIN = --target=aarch64-apple-darwin |
| 9 | + |
| 10 | +# default is just to use cross-rs to cross-compile for all targets |
| 11 | +# https://github.com/cross-rs/cross |
| 12 | +BUILD_LINUX_X86_64_TARGET = $(BUILD_CROSS) $(TARGET_LINUX_X86_64) |
| 13 | +BUILD_LINUX_ARM64_TARGET = $(BUILD_CROSS) $(TARGET_LINUX_ARM64) |
| 14 | +BUILD_DARWIN_TARGET = $(BUILD_CROSS) $(TARGET_DARWIN) |
| 15 | + |
| 16 | +# then override to use cargo for the native platform |
| 17 | +UNAME_S := $(shell uname -s) |
| 18 | +ifeq ($(UNAME_S),Linux) |
| 19 | + UNAME_P := $(shell uname -p) |
| 20 | + ifeq ($(UNAME_P),x86_64) |
| 21 | + BUILD_LINUX_X86_64_TARGET = $(BUILD_CARGO) $(TARGET_LINUX_X86_64) |
| 22 | + BUILD_DEFAULT_TARGET = $(BUILD_LINUX_X86_64_TARGET) |
| 23 | + endif |
| 24 | + ifneq ($(filter aarch64%,$(UNAME_P)),) |
| 25 | + BUILD_LINUX_ARM64_TARGET = $(BUILD_CARGO) $(TARGET_LINUX_ARM64) |
| 26 | + BUILD_DEFAULT_TARGET = $(BUILD_LINUX_ARM64_TARGET) |
| 27 | + endif |
| 28 | +endif |
| 29 | +ifeq ($(UNAME_S),Darwin) |
| 30 | + BUILD_DARWIN_TARGET = $(BUILD_CARGO) $(TARGET_DARWIN) |
| 31 | + BUILD_DEFAULT_TARGET = $(BUILD_DARWIN_TARGET) |
| 32 | +endif |
| 33 | + |
| 34 | +.PHONY: build |
| 35 | +build: build-crc64nvme build-crc32isohdlc |
| 36 | + |
| 37 | +.PHONY: build-all |
| 38 | +build-all: build-crc64nvme-all build-crc32isohdlc-all |
| 39 | + |
| 40 | +.PHONY: build-crc64nvme |
| 41 | +build-crc64nvme: checkout-crc64nvme |
| 42 | + @cd crc64fast-nvme && $(BUILD_DEFAULT_TARGET) |
| 43 | + |
| 44 | +.PHONY: build-crc32isohdlc |
| 45 | +build-crc32isohdlc: checkout-crc32isohdlc |
| 46 | + @cd crc32fast-lib-rust && $(BUILD_DEFAULT_TARGET) |
| 47 | + |
| 48 | +.PHONY: build-crc64nvme-all |
| 49 | +build-crc64nvme-all: checkout-crc32isohdlc |
| 50 | + @cd crc64fast-nvme && $(BUILD_LINUX_X86_64_TARGET) |
| 51 | + @cd crc64fast-nvme && $(BUILD_LINUX_ARM64_TARGET) |
| 52 | + @cd crc64fast-nvme && $(BUILD_DARWIN_TARGET) |
| 53 | + |
| 54 | +.PHONY: build-crc32isohdlc-all |
| 55 | +build-crc32isohdlc-all: checkout-crc32isohdlc |
| 56 | + @cd crc32fast-lib-rust && $(BUILD_LINUX_X86_64_TARGET) |
| 57 | + @cd crc32fast-lib-rust && $(BUILD_LINUX_ARM64_TARGET) |
| 58 | + @cd crc32fast-lib-rust && $(BUILD_DARWIN_TARGET) |
| 59 | + |
| 60 | +.PHONY: checkout-crc64nvme |
| 61 | +checkout-crc64nvme: |
| 62 | + @if [ ! -d "./crc64fast-nvme" ]; then git clone https://github.com/awesomized/crc64fast-nvme.git; fi || true |
| 63 | + @cd crc64fast-nvme && git fetch && git checkout 1.1.0 |
| 64 | + |
| 65 | +.PHONY: checkout-crc32isohdlc |
| 66 | +checkout-crc32isohdlc: |
| 67 | + @if [ ! -d "./crc32fast-lib-rust" ]; then git clone https://github.com/awesomized/crc32fast-lib-rust.git; fi || true |
| 68 | + @cd crc32fast-lib-rust && git fetch && git checkout 1.0.0 |
| 69 | + |
| 70 | +.PHONY: clean |
| 71 | +clean: |
| 72 | + rm -rf crc32fast-lib-rust crc64fast-nvme |
0 commit comments