-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathMakefile
More file actions
77 lines (62 loc) · 2.56 KB
/
Makefile
File metadata and controls
77 lines (62 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
UNAME_S := $(shell uname -s)
SWIFT_FLAGS ?= --disable-sandbox
PACKAGE_SWIFT_VERSION := $(shell grep "swift-tools-version" Package.swift | head -n 1 | cut -d ":" -f 2 | xargs)
# Repository name on GitHub Pages
REPO_NAME ?= math
# Subdirectory for versioned documentation (e.g., main, 1.0.0)
DOCS_VERSION_PATH ?= main
# The full base path for hosting
HOSTING_BASE_PATH ?= $(REPO_NAME)/$(DOCS_VERSION_PATH)
# Targets
.PHONY: setup lint lint-fix test test-coverage clean pre-commit docs docs-preview docs-generate docs-coverage
setup:
@echo "Detected Package Swift Version: $(PACKAGE_SWIFT_VERSION)"
@which mint > /dev/null || (echo "Mint not found. Installing via Homebrew..." && brew install mint)
mint bootstrap
swift package resolve $(SWIFT_FLAGS)
docs: docs-generate
docs-preview:
swift package --disable-sandbox preview-documentation --target FirebladeMath
docs-generate:
mkdir -p .build/documentation/$(DOCS_VERSION_PATH)
swift package --disable-sandbox \
--allow-writing-to-directory .build/documentation \
generate-documentation --target FirebladeMath \
--disable-indexing \
--transform-for-static-hosting \
--hosting-base-path $(HOSTING_BASE_PATH) \
--output-path .build/documentation/$(DOCS_VERSION_PATH)
docs-coverage: docs-check-coverage
docs-check-coverage:
swift package --disable-sandbox generate-documentation --target FirebladeMath --experimental-documentation-coverage --coverage-summary-level brief
docs-check-links:
swift package --disable-sandbox generate-documentation --target FirebladeMath --analyze --warnings-as-errors
lint:
mint run swiftlint lint --quiet
mint run swiftformat --lint --swiftversion $(PACKAGE_SWIFT_VERSION) Sources/ Tests/
lint-fix:
mint run swiftformat --swiftversion $(PACKAGE_SWIFT_VERSION) --config .swiftformat Sources/ Tests/
mint run swiftlint --fix --config .swiftlint.yml Sources/ Tests/
test:
swift test $(SWIFT_FLAGS) --parallel --enable-code-coverage -Xswiftc -warnings-as-errors
test-coverage:
$(MAKE) test
@XCTEST_PATH=$$(find .build -name "*.xctest" | grep "FirebladeMath" | head -n 1); \
if [ -z "$$XCTEST_PATH" ]; then \
echo "Could not find .xctest bundle"; \
exit 1; \
fi; \
if [ "$(UNAME_S)" = "Darwin" ]; then \
BINARY_PATH=$$(find "$$XCTEST_PATH" -type f -perm +111 | grep -v "CodeResources" | head -n 1); \
else \
BINARY_PATH="$$XCTEST_PATH/FirebladeMathPackageTests"; \
fi; \
xcrun llvm-cov report \
"$$BINARY_PATH" \
-instr-profile=.build/debug/codecov/default.profdata \
-ignore-filename-regex=".build|Tests"
pre-commit: lint-fix test
clean:
swift package clean
rm -rf .build
rm -rf .swiftpm