[Chapel Merge] responsive compiler prototype: build system change

Branch: refs/heads/master
Revision: f561755
Author: mppf
Log Message:

Merge pull request #17585 from mppf/new-ast-build-changes

responsive compiler prototype: build system changes

This PR contains build changes for the prototype compiler library effort.
The Makefile targets are not run yet and refer to files that will be
added in other PRs (#17586, #17587, #17588, #17589).

This PR is split out from PR #17583, which is a start at the compiler
revamp effort described in the 1.24 release notes ongoing
efforts
.

  • The new effort uses cmake
  • The new code includes docs comments with doxygen+breathe+sphinx. As
    such, it adds breathe as a Python requirement for chpldoc. (These
    requirements are normally automatically installed). For now, make docs will continue to work if doxygen is not installed and has not
    been run on the compiler sources. To support that, there are actually
    two index.rst files for compiler-internals in the doc/templates
    directory. The Makefiles will use one or the other based upon whether
    or not the doxygen materials are found. In the future we might want to
    simplify the situation by requiring doxygen in order for make docs
    to succeed.
  • The new effort uses a different directory structure from the old
    effort. For now it is stored in compiler/next but the expectation
    is that eventually we will move all of the compiler code into this
    directory structure. The change in directory structure is described a
    bit in
    compiler/next/README.
  • There are now C++ tests of portions of the compiler but since this PR
    doesn't add any C++ sources they can't run yet. When they are present
    though they can be built and run with make test-libchplcomp.
  • I was having trouble debugging the tests linked with a dynamic
    library. So, the tests to using a CMake object library for these
    tests. That just means that the test source code is compiled and
    linked with the .o files in the library (rather than a library .a
    or .so). The object library is also useful because it allows one to create both a .aand a.so` for the same library. Anyway, the
    library itself builds with the default of shared/static for the build
    library (and the default depends on the BUILD_SHARED_LIBS setting).
  • While there, updated make test to run only the tests in examples/
    because what it had would run all of the tests (which takes something
    like a day). Note that make test is only available in source
    checkouts and not included in releases.
  • [x] full local testing

Reviewed by @lydia-duncan @gbtitus @dlongnecke-cray - thanks!

Modified Files:
A compiler/next/CMakeLists.txt

A compiler/next/Makefile.help
A compiler/next/README
A compiler/next/doc/CMakeLists.txt
A compiler/next/include/chpl/CMakeLists.txt
A compiler/next/include/chpl/Config/config.h.cmake
A compiler/next/lib/AST/CMakeLists.txt
A compiler/next/lib/CMakeLists.txt
A compiler/next/lib/Frontend/CMakeLists.txt
A compiler/next/lib/Frontend/Parser/CMakeLists.txt
A compiler/next/lib/Queries/CMakeLists.txt
A compiler/next/lib/Util/CMakeLists.txt
A compiler/next/test/AST/CMakeLists.txt
A compiler/next/test/CMakeLists.txt
A compiler/next/test/Frontend/CMakeLists.txt
A doc/templates/compiler-internals-doxygen/index.rst
A doc/templates/compiler-internals-no-doxygen/index.rst
M Makefile
M Makefile.devel
M doc/.gitignore
M doc/Makefile
M doc/Makefile.sphinx
M doc/rst/conf.py
M doc/rst/index.rst
M doc/util/nitpick_ignore
M third-party/chpl-venv/chpldoc-requirements.txt
M util/buildRelease/add_license_to_sources.py

Compare: https://github.com/chapel-lang/chapel/compare/913c0a3eeae3...f561755541de