-
Notifications
You must be signed in to change notification settings - Fork 352
Expand file tree
/
Copy pathMakefile
More file actions
148 lines (117 loc) · 6.05 KB
/
Makefile
File metadata and controls
148 lines (117 loc) · 6.05 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.PHONY: docs docs-install docs-xml docs-api-md docs-site docs-check docs-dev docs-docker clean-docs package-conan package-vcpkg package-arch package-homebrew package-debian-source package-nix package-rpm-srpm package-fedora-srpm package-alpine-apkbuild release release-check release-pin release-finalize release-pin-conan release-pin-vcpkg release-pin-arch release-pin-homebrew release-pin-alpine release-pin-macports release-pin-spack release-pin-conda
DOCS_NPM = npm --prefix docs
DOCS_RUN = $(DOCS_NPM) run
CONAN ?= conan
VCPKG ?= vcpkg
MAKEPKG ?= makepkg
BREW ?= brew
DPKG_BUILDPACKAGE ?= dpkg-buildpackage
NIX ?= nix
NIX_BUILD_FLAGS ?=
RPMBUILD ?= rpmbuild
VCPKG_MAX_CONCURRENCY ?= 1
ICEY_VCPKG_SOURCE_PATH ?= $(CURDIR)
ICEY_DEBIAN_STAGE_DIR ?= $(CURDIR)/build/package/debian
ICEY_RPM_STAGE_DIR ?= $(CURDIR)/build/package/rpm
## Build the Sourcey site from prose docs + Doxygen XML
docs: docs-site
## Install pinned docs toolchain
docs-install:
$(DOCS_NPM) install
## Generate Doxygen XML only
docs-xml:
mkdir -p build/doxygen
doxygen Doxyfile
## Regenerate the optional docs/api markdown mirror from Doxygen XML
docs-api-md: docs-install docs-xml
find docs/api -maxdepth 1 -type f -name '*.md' -delete
$(DOCS_NPM) exec -- moxygen "$(CURDIR)/build/doxygen/xml" -g -o "$(CURDIR)/docs/api/%s.md" -n -a -l cpp -q --source-root "$(CURDIR)"
node docs/scripts/sanitize-api-markdown.mjs
## Build Sourcey static site
docs-site: docs-install docs-xml
$(DOCS_RUN) site:build
## Regenerate markdown, build the site, and validate overview quality
docs-check: docs-api-md
$(DOCS_RUN) site:build
node docs/scripts/check-api-quality.mjs
## Dev server with live reload
docs-dev: docs-install docs-xml
$(DOCS_RUN) site:dev
## Rebuild docs inside the dedicated docs container
docs-docker:
docker build -f Dockerfile.docs -t icey-docs .
docker run --rm -u "$$(id -u):$$(id -g)" -v "$$(pwd):/workspace" -w /workspace icey-docs make docs
## Clean generated docs artifacts
clean-docs:
rm -rf build/doxygen dist
## Build the local Conan package from packaging/conan
package-conan:
$(CONAN) create packaging/conan --build=missing -s compiler.cppstd=20
## Install icey through the local vcpkg overlay port
package-vcpkg:
ICEY_VCPKG_SOURCE_PATH="$(ICEY_VCPKG_SOURCE_PATH)" VCPKG_MAX_CONCURRENCY="$(VCPKG_MAX_CONCURRENCY)" $(VCPKG) install icey --overlay-ports="$(CURDIR)/packaging/vcpkg"
## Build the local Arch package from packaging/arch
package-arch:
cd packaging/arch && $(MAKEPKG) --force --cleanbuild --syncdeps
## Install the tap-local Homebrew formulae from packaging/homebrew
package-homebrew:
$(BREW) install --formula ./packaging/homebrew/Formula/libdatachannel.rb
$(BREW) install --formula ./packaging/homebrew/Formula/icey.rb
## Build a Debian source package / PPA seed under build/package/debian
package-debian-source:
ICEY_DEBIAN_STAGE_DIR="$(ICEY_DEBIAN_STAGE_DIR)" DPKG_BUILDPACKAGE="$(DPKG_BUILDPACKAGE)" ./scripts/package-debian-source.sh
## Build the repo-root Nix flake package
package-nix:
$(NIX) build $(NIX_BUILD_FLAGS) .#icey
## Build an SRPM staging tree under build/package/rpm
package-rpm-srpm:
ICEY_RPM_STAGE_DIR="$(ICEY_RPM_STAGE_DIR)" RPMBUILD="$(RPMBUILD)" ./scripts/package-rpm-srpm.sh
## Validate the RPM SRPM flow inside a Fedora container
package-fedora-srpm:
CMAKE_BUILD_PARALLEL_LEVEL="$(CMAKE_BUILD_PARALLEL_LEVEL)" ./scripts/package-fedora-srpm.sh
## Validate the Alpine APKBUILD inside an Alpine container
package-alpine-apkbuild:
CMAKE_BUILD_PARALLEL_LEVEL="$(CMAKE_BUILD_PARALLEL_LEVEL)" ./scripts/package-alpine-apkbuild.sh
## Sync release metadata for VERSION, package recipes, and FetchContent examples
release:
@if [ -z "$(VERSION)" ]; then echo "usage: make release VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-sync.sh "$(VERSION)"
## Verify release metadata is internally consistent
release-check:
@if [ -n "$(VERSION)" ]; then ./scripts/release-check.sh "$(VERSION)"; else ./scripts/release-check.sh; fi
## Pin release archive hashes for all package-manager recipes
release-pin: release-pin-conan release-pin-vcpkg release-pin-arch release-pin-homebrew release-pin-alpine release-pin-macports release-pin-spack release-pin-conda
## After pushing a git tag, pin archive hashes and verify the release metadata
release-finalize: release-pin release-check
## After pushing a git tag, pin the Conan source URL and sha256
release-pin-conan:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-conan VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-conan.sh "$(VERSION)"
## After pushing a git tag, pin the vcpkg fallback archive ref and sha512
release-pin-vcpkg:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-vcpkg VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-vcpkg.sh "$(VERSION)"
## After pushing a git tag, pin the Arch release archive sha256 and SRCINFO
release-pin-arch:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-arch VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-arch.sh "$(VERSION)"
## After pushing a git tag, pin the Homebrew formula source sha256
release-pin-homebrew:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-homebrew VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-homebrew.sh "$(VERSION)"
## After pushing a git tag, pin the Alpine archive sha512
release-pin-alpine:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-alpine VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-alpine.sh "$(VERSION)"
## After pushing a git tag, pin the MacPorts archive checksums and size
release-pin-macports:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-macports VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-macports.sh "$(VERSION)"
## After pushing a git tag, pin the Spack recipe version sha256
release-pin-spack:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-spack VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-spack.sh "$(VERSION)"
## After pushing a git tag, pin the conda-forge recipe sha256
release-pin-conda:
@if [ -z "$(VERSION)" ]; then echo "usage: make release-pin-conda VERSION=2.4.0" >&2; exit 1; fi
./scripts/release-pin-conda.sh "$(VERSION)"