mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 09:23:52 -05:00
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE IT Thanks for taking the time to improve CE. We really appreciate it. Before opening the PR, please make sure that the tests & linter pass their checks, by running `make check`. In the best case scenario, you are also adding tests to back up your changes, but don't sweat it if you don't. We can discuss them at a later date. Feel free to append your name to the CONTRIBUTORS.md file Thanks again, we really appreciate this! -->
115 lines
4.0 KiB
Makefile
115 lines
4.0 KiB
Makefile
default: run
|
|
|
|
help: # with thanks to Ben Rady
|
|
@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
# If you see "node-not-found" then you need to depend on node-installed.
|
|
NODE:=node-not-found
|
|
NPM:=npm-not-found
|
|
NODE_MODULES:=./node_modules/.npm-updated
|
|
NODE_ARGS?=
|
|
TS_NODE_ARGS:=--no-warnings=ExperimentalWarning --import=tsx
|
|
|
|
# All file paths that are not .ts files that should be watched for changes if launched with watch.
|
|
FILEWATCHER_ARGS:=--watch --include "etc/config/*"
|
|
|
|
# These 'find' scripts cache their results in a dotfile.
|
|
# Doing it this way instead of NODE:=$(shell etc/script/find-node) means
|
|
# if they fail, they stop the make process. As best I can tell there's no
|
|
# way to get make to fail if a sub-shell command fails.
|
|
.node-bin: etc/scripts/find-node
|
|
@etc/scripts/find-node .node-bin
|
|
|
|
# All targets that need node must depend on this to ensure the NODE variable
|
|
# is appropriately set, and that PATH is updated.
|
|
.PHONY: node-installed
|
|
node-installed: .node-bin
|
|
@$(eval NODE:=$(shell cat .node-bin))
|
|
@$(eval NPM:=$(shell dirname $(shell cat .node-bin))/npm)
|
|
@$(eval PATH=$(shell dirname $(realpath $(NODE))):$(PATH))
|
|
|
|
.PHONY: info
|
|
info: node-installed ## print out some useful variables
|
|
@echo Using node from $(NODE)
|
|
@echo Using npm from $(NPM)
|
|
@echo PATH is $(PATH)
|
|
|
|
# disassemblers are needed for local deploys: #4225
|
|
.PHONY: scripts
|
|
scripts:
|
|
mkdir -p out/dist/etc/scripts/disasms
|
|
rsync -r -u etc/scripts/disasms/* out/dist/etc/scripts/disasms
|
|
|
|
.PHONY: prereqs
|
|
prereqs: $(NODE_MODULES)
|
|
|
|
$(NODE_MODULES): package.json package-lock.json | node-installed
|
|
$(NPM) clean-install $(NPM_FLAGS)
|
|
@rm -rf node_modules/.cache/esm/*
|
|
@touch $@
|
|
|
|
.PHONY: lint
|
|
lint: $(NODE_MODULES) ## Checks if the source currently matches code conventions
|
|
$(NPM) run ts-check
|
|
$(NPM) run lint-check
|
|
|
|
.PHONY: lint-fix
|
|
lint-fix: $(NODE_MODULES) ## Checks if everything matches code conventions & fixes those which are trivial to do so
|
|
$(NPM) run lint
|
|
|
|
.PHONY: test
|
|
test: $(NODE_MODULES) ## Runs the tests
|
|
$(NPM) run test
|
|
@echo Tests pass
|
|
|
|
.PHONY: test-min
|
|
test-min: $(NODE_MODULES) ## Runs the minimal tests
|
|
$(NPM) run test-min
|
|
@echo Tests pass
|
|
|
|
.PHONY: check
|
|
check: $(NODE_MODULES) lint test ## Runs all checks required before committing (fixing trivial things automatically)
|
|
|
|
.PHONY: pre-commit
|
|
pre-commit: $(NODE_MODULES) test-min lint
|
|
|
|
.PHONY: clean
|
|
clean: ## Cleans up everything
|
|
rm -rf node_modules .*-updated .*-bin out
|
|
|
|
.PHONY: prebuild
|
|
prebuild: prereqs scripts
|
|
$(NPM) run webpack
|
|
$(NPM) run ts-compile
|
|
|
|
.PHONY: run-only
|
|
run-only: node-installed ## Runs the site like it runs in production without building it
|
|
env NODE_ENV=production $(NODE) $(NODE_ARGS) ./out/dist/app.js --static ./out/webpack/static $(EXTRA_ARGS)
|
|
|
|
.PHONY: run
|
|
run: ## Runs the site like it runs in production
|
|
$(MAKE) prebuild
|
|
$(MAKE) run-only
|
|
|
|
.PHONY: dev
|
|
dev: prereqs ## Runs the site as a developer; including live reload support and installation of git hooks
|
|
NODE_OPTIONS="$(TS_NODE_ARGS) $(NODE_ARGS)" ./node_modules/.bin/tsx watch $(FILEWATCHER_ARGS) ./app.ts $(EXTRA_ARGS)
|
|
|
|
.PHONY: gpu-dev
|
|
gpu-dev: prereqs ## Runs the site as a developer; including live reload support and installation of git hooks
|
|
NODE_OPTIONS="$(TS_NODE_ARGS) $(NODE_ARGS)" ./node_modules/.bin/tsx watch $(FILEWATCHER_ARGS) ./app.ts --env gpu $(EXTRA_ARGS)
|
|
|
|
.PHONY: debug
|
|
debug: prereqs ## Runs the site as a developer with full debugging; including live reload support and installation of git hooks
|
|
NODE_OPTIONS="$(TS_NODE_ARGS) $(NODE_ARGS) --inspect 9229" ./node_modules/.bin/tsx watch $(FILEWATCHER_ARGS) ./app.ts --debug $(EXTRA_ARGS)
|
|
|
|
.PHONY:
|
|
asm-docs:
|
|
$(MAKE) -C etc/scripts/docenizers || ( \
|
|
echo "==============================================================================="; \
|
|
echo "One of the docenizers failed to run, make sure you have installed the necessary"; \
|
|
echo "dependencies: pip3 install beautifulsoup4 pdfminer.six && npm install"; \
|
|
echo "==============================================================================="; \
|
|
exit 1 \
|
|
)
|