You've already forked ada_language_server
mirror of
https://github.com/AdaCore/ada_language_server.git
synced 2026-02-12 12:45:50 -08:00
This allows to build the vscode extension in the environment development that has the gtk3 closure, avoiding an issue with zlib versions mismatch.
152 lines
4.1 KiB
Makefile
152 lines
4.1 KiB
Makefile
# Server executable file:
|
|
ROOTDIR=$(shell pwd)
|
|
|
|
# Location of home dir for tests
|
|
export ALS_HOME=$(ROOTDIR)/testsuite
|
|
|
|
# Command to run for tests
|
|
export ALS=$(ROOTDIR)/.obj/server/ada_language_server
|
|
|
|
# Tester files
|
|
TESTER=$(ROOTDIR)/.obj/tester/tester-run
|
|
CODEC_TEST=.obj/codec_test/codec_test
|
|
|
|
# Testsuite directory
|
|
TD=testsuite/ada_lsp
|
|
|
|
GPRBUILD=gprbuild -j0 -XSUPERPROJECT=
|
|
GPRCLEAN=gprclean -XSUPERPROJECT=
|
|
|
|
# Installation directory
|
|
prefix ?= /usr/local
|
|
ifeq ($(DESTDIR),)
|
|
DESTDIR=$(prefix)
|
|
endif
|
|
|
|
# Library type
|
|
LIBRARY_TYPE?=relocatable
|
|
|
|
# Build mode (dev or prod)
|
|
BUILD_MODE=dev
|
|
|
|
# Whether to enable coverage (empty for no, any other value for yes)
|
|
COVERAGE=
|
|
COVERAGE_INSTR=gnatcov instrument --level stmt $(LIBRARY_FLAGS) \
|
|
--dump-trigger=atexit --no-subprojects
|
|
|
|
# Target platform as nodejs reports it
|
|
ifeq ($(OS),Windows_NT)
|
|
PLATFORM=win32
|
|
PYTHON=python.exe
|
|
EXE=.exe
|
|
else
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
PLATFORM=linux
|
|
OS=unix
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
PLATFORM=darwin
|
|
OS=osx
|
|
endif
|
|
PYTHON=python3
|
|
EXE=
|
|
endif
|
|
|
|
LIBRARY_FLAGS=-XBUILD_MODE=$(BUILD_MODE) \
|
|
-XOS=$(OS) \
|
|
-XLIBRARY_TYPE=$(LIBRARY_TYPE) \
|
|
-XXMLADA_BUILD=$(LIBRARY_TYPE) \
|
|
-XGPR_BUILD=$(LIBRARY_TYPE)
|
|
|
|
BUILD_FLAGS=$(LIBRARY_FLAGS)
|
|
|
|
ifeq ($(COVERAGE),)
|
|
COVERAGE_BUILD_FLAGS= $(LIBRARY_FLAGS)
|
|
else
|
|
COVERAGE_BUILD_FLAGS= $(LIBRARY_FLAGS) \
|
|
--implicit-with=gnatcov_rts_full \
|
|
--src-subdirs=gnatcov-instr \
|
|
-XALS_WARN_ERRORS=false \
|
|
-XSPAWN_WARN_ERRORS=false \
|
|
-gnatyN
|
|
endif
|
|
|
|
all: coverage-instrument
|
|
$(GPRBUILD) -P gnat/tester.gpr -p $(BUILD_FLAGS)
|
|
$(GPRBUILD) -d -ws -c -u -P gnat/lsp_server.gpr -p $(BUILD_FLAGS) s-memory.adb
|
|
$(GPRBUILD) -P gnat/lsp_server.gpr -p $(COVERAGE_BUILD_FLAGS) \
|
|
-XVERSION=$(TRAVIS_TAG)
|
|
$(GPRBUILD) -P gnat/codec_test.gpr -p $(COVERAGE_BUILD_FLAGS)
|
|
$(GPRBUILD) -P gnat/lsp_client.gpr -p $(COVERAGE_BUILD_FLAGS) \
|
|
-XVERSION=$(TRAVIS_TAG)
|
|
mkdir -p integration/vscode/ada/$(PLATFORM)
|
|
cp -f $(ALS)$(EXE) integration/vscode/ada/$(PLATFORM)
|
|
|
|
generate:
|
|
python scripts/generate.py
|
|
|
|
generate_io:
|
|
python scripts/io_gen.py
|
|
|
|
coverage-instrument:
|
|
ifneq ($(COVERAGE),)
|
|
# Remove artifacts from previous instrumentations, so that stale units that
|
|
# are not overriden by new ones don't get in our way.
|
|
rm -rf .obj/*/gnatcov-instr
|
|
$(COVERAGE_INSTR) -XVERSION=$(TRAVIS_TAG) \
|
|
-Pgnat/lsp_server.gpr --projects lsp_server --projects lsp
|
|
$(COVERAGE_INSTR) -Pgnat/tester.gpr --projects lsp
|
|
$(COVERAGE_INSTR) -Pgnat/codec_test.gpr --projects lsp
|
|
endif
|
|
|
|
install:
|
|
gprinstall -f -P gnat/lsp_server.gpr -p -r --mode=usage \
|
|
--prefix=$(DESTDIR) $(LIBRARY_FLAGS)
|
|
gprinstall -f -P gnat/tester.gpr -p --prefix=$(DESTDIR) $(LIBRARY_FLAGS)
|
|
gprinstall -f -P gnat/codec_test.gpr -p --prefix=$(DESTDIR) $(LIBRARY_FLAGS)
|
|
gprinstall -f -P gnat/lsp_client.gpr -p -r \
|
|
--mode=dev \
|
|
--prefix=$(DESTDIR) \
|
|
$(LIBRARY_FLAGS)
|
|
ifneq ($(COVERAGE),)
|
|
mkdir -p $(DESTDIR)/share/als/sids || true
|
|
cp .obj/*/*.sid $(DESTDIR)/share/als/sids/
|
|
endif
|
|
|
|
clean:
|
|
$(GPRCLEAN) -P gnat/lsp.gpr $(LIBRARY_FLAGS)
|
|
$(GPRCLEAN) -P gnat/lsp_server.gpr $(LIBRARY_FLAGS)
|
|
$(GPRCLEAN) -P gnat/tester.gpr $(LIBRARY_FLAGS)
|
|
$(GPRCLEAN) -P gnat/codec_test.gpr $(LIBRARY_FLAGS)
|
|
rm -rf integration/vscode/ada/$(PLATFORM)
|
|
|
|
vscode:
|
|
cd integration/vscode/ada; LD_LIBRARY_PATH= npm install && npm run compile
|
|
@echo Now run:
|
|
@echo code --extensionDevelopmentPath=`pwd`/integration/vscode/ada/ `pwd`
|
|
|
|
vscode-test:
|
|
# Run the VS Code grammar testsuite
|
|
cd integration/vscode/ada ; ./run_grammar_tests.sh
|
|
|
|
# Run the VS Code integration testsuite.
|
|
# This contains no useful test, so deactivated for now.
|
|
# cd integration/vscode/ada; npm run compile && node out/runTests.js
|
|
|
|
check: all
|
|
set -e; \
|
|
export PYTHON=$(PYTHON); \
|
|
if [ `$(PYTHON) -c "import sys;print('e3' in sys.modules)"` = "True" ]; then\
|
|
(cd testsuite ; sh run.sh ) ; \
|
|
else \
|
|
for a in $(TD)/*/*.json; do \
|
|
echo $$a ; \
|
|
(cd `dirname $$a ` ; $(TESTER) `basename $$a`) ;\
|
|
done; \
|
|
fi
|
|
${CODEC_TEST} < testsuite/codecs/index.txt
|
|
|
|
deploy: check
|
|
integration/$(USER)/deploy.sh $(PLATFORM)
|