master > master: src - rust
This commit is contained in:
98
code/rust/Makefile
Normal file
98
code/rust/Makefile
Normal file
@@ -0,0 +1,98 @@
|
||||
SHELL:=/usr/bin/env bash
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# Makefile
|
||||
# NOTE: Do not change the contents of this file!
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
include .env
|
||||
|
||||
################################
|
||||
# VARIABLES
|
||||
################################
|
||||
|
||||
ARTEFACT_NAME:=${APPNAME}
|
||||
ifeq ($(OS),Windows_NT)
|
||||
ARTEFACT_NAME:=${APPNAME}.exe
|
||||
endif
|
||||
|
||||
################################
|
||||
# Macros
|
||||
################################
|
||||
|
||||
define create_folder_if_not_exists
|
||||
@if ! [ -d "$(1)" ]; then mkdir "$(1)"; fi
|
||||
endef
|
||||
|
||||
define create_folder_if_not_exists
|
||||
@touch "$(1)";
|
||||
endef
|
||||
|
||||
define delete_if_file_exists
|
||||
@if [ -f "$(1)" ]; then rm "$(1)"; fi
|
||||
endef
|
||||
|
||||
define delete_if_folder_exists
|
||||
@if [ -d "$(1)" ]; then rm -rf "$(1)"; fi
|
||||
endef
|
||||
|
||||
define clean_all_files
|
||||
@find . -type f -name "$(1)" -exec basename {} \;
|
||||
@find . -type f -name "$(1)" -exec rm {} \; 2> /dev/null
|
||||
endef
|
||||
|
||||
define clean_all_folders
|
||||
@find . -type d -name "$(1)" -exec basename {} \;
|
||||
@find . -type d -name "$(1)" -exec rm -rf {} \; 2> /dev/null
|
||||
endef
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# TARGETS
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
################################
|
||||
# BASIC TARGETS: setup, build, run
|
||||
################################
|
||||
setup: check-system-requirements setup-no-checks
|
||||
setup-no-checks:
|
||||
@cargo update
|
||||
build: check-system-requirements build-no-checks
|
||||
build-no-checks:
|
||||
@$(call delete_if_file_exists,"dist/${ARTEFACT_NAME}")
|
||||
@#$(call delete_if_file_exists,"Cargo.lock")
|
||||
@cargo build --release
|
||||
@cp "target/release/${ARTEFACT_NAME}" "dist/"
|
||||
run-precheck:
|
||||
@if ! [ -f "dist/${ARTEFACT_NAME}" ]; then \
|
||||
echo "No artefact found! Run `make build` first"; \
|
||||
exit 1; \
|
||||
fi
|
||||
run:
|
||||
@make run-precheck
|
||||
@dist/${ARTEFACT_NAME};
|
||||
all: setup build run
|
||||
################################
|
||||
# TARGETS: testing
|
||||
################################
|
||||
unit-test: unit-tests
|
||||
unit-tests:
|
||||
cargo test
|
||||
################################
|
||||
# AUXILIARY (INTERNAL TARGETS)
|
||||
################################
|
||||
check-system-requirements:
|
||||
@if ! ( cargo version >> /dev/null 2> /dev/null ); then \
|
||||
echo "Install Rust cargo first."; \
|
||||
exit 1; \
|
||||
fi
|
||||
@cargo version
|
||||
################################
|
||||
# TARGETS: clean
|
||||
################################
|
||||
clean:
|
||||
@echo "All system artefacts will be force removed."
|
||||
@$(call clean_all_files,.DS_Store)
|
||||
@echo "All build artefacts will be force removed."
|
||||
@$(call clean_all_folders,target)
|
||||
@$(call delete_if_file_exists,dist/${ARTEFACT_NAME})
|
||||
@cargo clean
|
||||
@exit 0
|
||||
Reference in New Issue
Block a user