add makefile for static compilation
This commit is contained in:
parent
368e3b2b30
commit
602ff3595d
12 changed files with 100 additions and 9 deletions
55
Makefile
Normal file
55
Makefile
Normal file
|
@ -0,0 +1,55 @@
|
|||
LINUX_X86_64_MUSL_TARGET = x86_64-unknown-linux-musl
|
||||
LINUX_AARCH64_MUSL_TARGET = aarch64-unknown-linux-musl
|
||||
WINDOWS_GNU_TARGET = x86_64-pc-windows-gnu
|
||||
|
||||
x86_64-unknown-linux-musl_strip = strip
|
||||
aarch64-unknown-linux-musl_strip = aarch64-linux-musl-strip
|
||||
x86_64-pc-windows-gnu_strip = strip
|
||||
|
||||
BINARIES = socket-server http-server
|
||||
|
||||
RELEASE_DIR = release
|
||||
|
||||
.PHONY: audit clean test linux-x86_64-musl linux-aarch64-musl windows-gnu http-client $(RELEASE_DIR) all default
|
||||
|
||||
TARGETS = $(LINUX_X86_64_MUSL_TARGET) $(LINUX_AARCH64_MUSL_TARGET) $(WINDOWS_GNU_TARGET)
|
||||
|
||||
default: all
|
||||
all: linux-x86_64-musl linux-aarch64-musl windows-gnu http-client
|
||||
|
||||
define BUILDER
|
||||
target/$(TARGET)/release/%:
|
||||
RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target $(TARGET) --package $$(basename $$(@F))
|
||||
$($(TARGET)_strip) $$@
|
||||
|
||||
$(RELEASE_DIR)/$(TARGET)/%: target/$(TARGET)/release/% $(RELEASE_DIR)
|
||||
mkdir -p $$(dir $$@)
|
||||
cp $$< $$@
|
||||
endef
|
||||
$(foreach TARGET,$(TARGETS),$(eval $(BUILDER)))
|
||||
|
||||
define BINARY_TARGETS
|
||||
linux-x86_64-musl: $(RELEASE_DIR)/$(LINUX_X86_64_MUSL_TARGET)/$(BINARY)
|
||||
linux-aarch64-musl: $(RELEASE_DIR)/$(LINUX_AARCH64_MUSL_TARGET)/$(BINARY)
|
||||
windows-gnu: $(RELEASE_DIR)/$(WINDOWS_GNU_TARGET)/$(BINARY).exe
|
||||
endef
|
||||
$(foreach BINARY,$(BINARIES),$(eval $(BINARY_TARGETS)))
|
||||
|
||||
http-client:
|
||||
cd http-client && trunk build --release
|
||||
rm -rf $(RELEASE_DIR)/$@
|
||||
mkdir -p $(RELEASE_DIR)/$@
|
||||
cp -r http-client/dist/* $(RELEASE_DIR)/$@
|
||||
|
||||
$(RELEASE_DIR):
|
||||
mkdir -p $(RELEASE_DIR)
|
||||
|
||||
test:
|
||||
cargo test
|
||||
|
||||
audit:
|
||||
cargo audit
|
||||
|
||||
clean:
|
||||
-rm -rf target $(RELEASE_DIR)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue