mirror of
https://github.com/AdaCore/vss-extra.git
synced 2026-02-12 13:53:04 -08:00
182 lines
7.5 KiB
Makefile
182 lines
7.5 KiB
Makefile
|
||
# Common scenario variables of the GPR files:
|
||
#
|
||
# VSS_BUILD_PROFILE | BUILD_PROFILE = release | validation | development
|
||
#
|
||
# VSS_COVERAGE_MODE | COVERAGE_MODE = none | gcov
|
||
#
|
||
# VSS_CI_MODE | CI_MODE = none | on
|
||
#
|
||
# ADAFLAGS = ...
|
||
# GPRFLAGS = ...
|
||
|
||
PREFIX ?= /usr
|
||
GPRDIR ?= $(PREFIX)/share/gpr
|
||
LIBDIR ?= $(PREFIX)/lib
|
||
BINDIR ?= $(PREFIX)/bin
|
||
INSTALL_PROJECT_DIR ?= $(DESTDIR)$(GPRDIR)
|
||
INSTALL_INCLUDE_DIR ?= $(DESTDIR)$(PREFIX)/include/vss
|
||
INSTALL_EXEC_DIR ?= $(DESTDIR)$(BINDIR)
|
||
INSTALL_LIBRARY_DIR ?= $(DESTDIR)$(LIBDIR)
|
||
INSTALL_ALI_DIR ?= $(INSTALL_LIBRARY_DIR)/vss/$(word 2, $(subst _, ,$*))
|
||
|
||
GPRBUILD_FLAGS = -p -j0 $(GPRFLAGS) \
|
||
-XVSS_BUILD_PROFILE=$(word 1, $(subst _, ,$*)) \
|
||
-XVSS_LIBRARY_TYPE=$(word 2, $(subst _, ,$*))
|
||
GPRINSTALL_FLAGS = $(GPRFLAGS) \
|
||
-XVSS_BUILD_PROFILE=$(word 1, $(subst _, ,$*)) \
|
||
-XVSS_LIBRARY_TYPE=$(word 2, $(subst _, ,$*)) \
|
||
--build-name=$(word 2, $(subst _, ,$*)) \
|
||
--build-var=LIBRARY_TYPE --build-var=VSS_LIBRARY_TYPE \
|
||
--prefix=$(PREFIX) --exec-subdir=$(INSTALL_EXEC_DIR) \
|
||
--lib-subdir=$(INSTALL_ALI_DIR) --project-subdir=$(INSTALL_PROJECT_DIR) \
|
||
--link-lib-subdir=$(INSTALL_LIBRARY_DIR) --sources-subdir=$(INSTALL_INCLUDE_DIR)
|
||
|
||
OK_RE_TESTS := 615 # Number of re_tests to be passed
|
||
|
||
ifeq ($(OS),Windows_NT)
|
||
VSS_PS=;
|
||
else
|
||
VSS_PS=:
|
||
endif
|
||
|
||
.PHONY: docs
|
||
|
||
.NOTPARALLEL:
|
||
|
||
all: build-libs-development_relocatable
|
||
|
||
build-all-libs: \
|
||
build-libs-release_relocatable build-libs-release_static build-libs-release_static-pic \
|
||
build-libs-validation_relocatable build-libs-validation_static build-libs-validation_static-pic
|
||
|
||
build-libs-%:
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/vss_os.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/vss_json.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/vss_regexp.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/vss_xml.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/vss_xml_templates.gpr
|
||
gprbuild -XXMLADA_BUILD=$(word 2, $(subst _, ,$*)) $(GPRBUILD_FLAGS) gnat/vss_xml_xmlada.gpr
|
||
|
||
install: install-libs-development_relocatable
|
||
|
||
install-all-libs: install-libs-release_static install-libs-release_static-pic install-libs-release_relocatable
|
||
|
||
install-libs-%:
|
||
gprinstall $(GPRINSTALL_FLAGS)/os -f -p -P gnat/vss_os.gpr --install-name=vss_os
|
||
gprinstall $(GPRINSTALL_FLAGS)/json -f -p -P gnat/vss_json.gpr --install-name=vss_json
|
||
gprinstall $(GPRINSTALL_FLAGS)/regexp -f -p -P gnat/vss_regexp.gpr --install-name=vss_regexp
|
||
gprinstall $(GPRINSTALL_FLAGS)/xml -f -p -P gnat/vss_xml.gpr --install-name=vss_xml
|
||
gprinstall $(GPRINSTALL_FLAGS)/xml_templates -f -p -P gnat/vss_xml_templates.gpr --install-name=vss_xml_templates
|
||
gprinstall -XXMLADA_BUILD=$(word 2, $(subst _, ,$*)) $(GPRINSTALL_FLAGS)/xml_xmlada -f -p -P gnat/vss_xml_xmlada.gpr --install-name=vss_xml_xmlada
|
||
|
||
misc: misc-validation_static
|
||
|
||
misc-%: # Check compilation of other projects
|
||
gprbuild $(GPRBUILD_FLAGS) -aPgnat gnat/tools/json_schema.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) -aPgnat examples/regexp/grep.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) -aPgnat examples/blogs/json_1/blog_1.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) -aPgnat examples/command_line/command/command_line_command.gpr
|
||
|
||
build-tests: build-tests-validation_static
|
||
|
||
build-tests-%:
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/tests/vss_os_tests.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/tests/vss_json_tests.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/tests/vss_regexp_tests.gpr
|
||
gprbuild $(GPRBUILD_FLAGS) gnat/tests/vss_html_tests.gpr
|
||
|
||
check: build-tests check_text check_json check_regexp check_html
|
||
|
||
check_text:
|
||
.objs/validation/tests/test_file_text_streams testsuite/os/test_file_text_stream/vss.197.in.txt /tmp/vss.197.out.txt && diff -u --strip-trailing-cr /tmp/vss.197.out.txt testsuite/os/test_file_text_stream/vss.197.out.txt
|
||
.objs/validation/tests/test_standard_paths
|
||
ifeq ($(OS),Windows_NT)
|
||
cmd.exe \/c "testsuite\\run_test_application_arguments.bat"
|
||
else
|
||
.objs/validation/tests/test_application_arguments hello привет გამარჯობა 👋
|
||
endif
|
||
VSS_ENV1="A$(VSS_PS)B$(VSS_PS)C" .objs/validation/tests/test_environment
|
||
.objs/validation/tests/test_command_line_parser
|
||
|
||
check_json:
|
||
.objs/validation/tests/test_json_content_handler
|
||
.objs/validation/tests/test_json_buffered_pull_reader
|
||
rm -f .objs/validation/tests/.fails
|
||
for f in `find data/json5-tests -name '*.json'` \
|
||
`find data/json5-tests -name '*.json5'` \
|
||
`find data/json5-tests -name '*.js'` \
|
||
`find data/json5-tests -name '*.txt'` \
|
||
testsuite/json/JSONTestSuite/test_parsing/*.json \
|
||
testsuite/json/JSON_checker/test/*.json \
|
||
testsuite/json/AdaCore/test/*.json; \
|
||
do echo -n "`basename $$f` (JSON): "; \
|
||
testsuite/run_json_reader_test $$f || touch .objs/validation/tests/.fails; \
|
||
echo -n "`basename $$f` (JSON5): "; \
|
||
testsuite/run_json_reader_test $$f --json5 || touch .objs/validation/tests/.fails; \
|
||
done
|
||
test ! -e .objs/validation/tests/.fails
|
||
.objs/validation/tests/test_json_writer testsuite/json/test_json_writer.expected
|
||
|
||
check_regexp:
|
||
.objs/validation/tests/test_regexp
|
||
.objs/validation/tests/test_regexp_re_tests $(OK_RE_TESTS) < data/re_tests
|
||
|
||
check_html:
|
||
rm -f .objs/validation/tests/.fails
|
||
for f in testsuite/html/test_data/*.xhtml; do \
|
||
echo -n "$$f: "; if .objs/validation/tests/test_html_writer $$f 1>.objs/out 2>.objs/err; (cat .objs/out; sed 's/.*[\/\\]\(.*:\)/\1/' .objs/err) | diff --strip-trailing-cr -u -- $${f%xhtml}out - ; then echo "PASS"; else echo "FAIL"; touch .objs/validation/tests/.fails; fi ; \
|
||
done
|
||
test ! -e .objs/validation/tests/.fails
|
||
|
||
check_install:
|
||
echo 'with "vss_text.gpr";' > example.gpr
|
||
echo 'with "vss_json.gpr";' >> example.gpr
|
||
echo 'with "vss_regexp.gpr";' >> example.gpr
|
||
echo 'project Example is' >> example.gpr
|
||
echo ' for Main use ("example.adb");' >> example.gpr
|
||
echo ' package Compiler is' >> example.gpr
|
||
echo ' for Switches ("Ada") use ("-gnat2022");' >> example.gpr
|
||
echo ' end Compiler;' >> example.gpr
|
||
echo 'end Example;' >> example.gpr
|
||
echo 'with VSS.Strings;' > example.adb
|
||
echo 'with VSS.JSON;' >> example.adb
|
||
echo 'with VSS.Regular_Expressions;' >> example.adb
|
||
echo 'procedure Example is' >> example.adb
|
||
echo 'begin null; end;' >> example.adb
|
||
gprbuild -aP $(INSTALL_PROJECT_DIR) -P example.gpr
|
||
gprclean -aP $(INSTALL_PROJECT_DIR) -P example.gpr
|
||
rm -f example.*
|
||
|
||
coverage:
|
||
find .objs/ -name *.o | xargs -s 512 gcov || true
|
||
|
||
docs:
|
||
make -C docs
|
||
|
||
clean:
|
||
rm -rf .objs .libs
|
||
|
||
spellcheck:
|
||
@STATUS=0; \
|
||
for J in source/*/*.ads; do \
|
||
sed -e 's/#[^#]*#//g' -e "s/'\([A-Z]\)/ \1/g" $$J | \
|
||
aspell list --lang=en --home-dir=./data/ --ignore-case > /tmp/spell.txt; \
|
||
if [ -s /tmp/spell.txt ] ; then \
|
||
echo "\n$$J:"; sort -u -f /tmp/spell.txt; STATUS=1; \
|
||
fi \
|
||
done; \
|
||
if [ $$STATUS != 0 ] ; then \
|
||
echo "\n\nFIX SPELLING or append exceptions to data/.aspell.en.pws !!!" ; \
|
||
exit 1 ; \
|
||
fi
|
||
|
||
spellcheck_json:
|
||
for J in source/*/*.ads; do \
|
||
sed -e 's/#[^#]*#//g' -e "s/'\([A-Z]\)/ \1/g" $$J | \
|
||
aspell list --lang=en --home-dir=./data/ --ignore-case > /tmp/spell.txt; \
|
||
if [ -s /tmp/spell.txt ] ; then \
|
||
sort -u -f /tmp/spell.txt | jq -R --arg file "$$J" '{description: "Wrong spelling: \(.)", fingerprint: ., severity: "major", location: {path: $$file, lines: {begin: 1} }}' ; \
|
||
fi \
|
||
done | jq -s 'reduce inputs as $$in (.; . + $$in)' > spellcheck.json
|