{"id":13408778,"url":"https://github.com/AdaCore/gnatcoll-core","last_synced_at":"2025-03-14T13:32:06.577Z","repository":{"id":41279216,"uuid":"109814953","full_name":"AdaCore/gnatcoll-core","owner":"AdaCore","description":"GNAT Components Collection – Core packages","archived":false,"fork":false,"pushed_at":"2024-05-22T13:27:26.000Z","size":14538,"stargazers_count":43,"open_issues_count":8,"forks_count":28,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-05-22T14:44:43.971Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdaCore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.RUNTIME","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-07T09:35:10.000Z","updated_at":"2024-05-31T10:05:16.460Z","dependencies_parsed_at":"2024-03-07T10:51:36.906Z","dependency_job_id":"96585716-8457-48f2-9cd5-4659fe389e90","html_url":"https://github.com/AdaCore/gnatcoll-core","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fgnatcoll-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fgnatcoll-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fgnatcoll-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fgnatcoll-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdaCore","download_url":"https://codeload.github.com/AdaCore/gnatcoll-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243584457,"owners_count":20314765,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:00:55.184Z","updated_at":"2025-03-14T13:32:06.566Z","avatar_url":"https://github.com/AdaCore.png","language":"Ada","funding_links":[],"categories":["Frameworks"],"sub_categories":["Components"],"readme":"# The GNAT Components Collection (GNATcoll) - Core packages\n\nThis is the core module of the GNAT Components Collection. Please refer to the\ndocumentation in the `docs/` directory.\n\n## Structure\n\nThe repository contains three projects:\n\n* `minimal/gnatcoll_minimal.gpr`: packages that may work on more restrictive cross\n  environments.\n* `core/gnatcoll_core.gpr`: packages that can be used in POSIX or Win32\n  environments.\n* `projects/gnatcoll_projects.gpr`: high level binding to libgpr project\n\nFor backward compatibility a project called `gnatcoll.gpr` is also provided\n\n## Dependencies\n\nGNATCOLL requires:\n\n* A recent GNAT compiler\n* Gprbuild tools\n* (optional) LIBGPR library (only if using `gnatcoll_project.gpr`)\n* (optional) Python (\u003e3.8) to easily configure, build, install each projects.\n* (optional) GNU Make to use the legacy makefile that builds the three projects.\n\n## Building and Installing\n\nEach project has a helper Python script to handle automatic configuration\nand launch of gpr tools. The script is located next to each project and\ncalled `PROJECT_NAME.gpr.py`.\n\n## Building\n\nThe simplest way to build a given project is to use the Python helper script.\n\nFor example to build gnatcoll_core.gpr project:\n\n```sh\n$ ./gnatcoll_core.gpr.py build\n```\n\nFor each project the script provides the following commands:\n\n* `build`: to build and configure the project\n* `install`': to install the built project (gprinstall step)\n* `clean`': to clean all object files (gprclean step)\n* `uninstall`': to uninstall the project (gprinstall --uninstall step)\n\n### Build Command\n\nUse `--help` switch to get the full help on a command. For the build command\nthe results is:\n\n```sh\n$ ./gnatcoll_core.gpr.py build --help\nusage: gnatcoll_core.gpr.py build [-h] [--gpr-opts ...] [--add-gpr-path ADD_GPR_PATH] [--jobs JOBS]\n                                  [--target TARGET] [--prefix PREFIX] [--integrated] [--install]\n                                  [--gnatcov | --symcc] [--configure-only] [--enable-constant-updates]\n                                  [--build {DEBUG,PROD}] [--enable-shared {yes,no}]\n\noptions:\n  -h, --help            show this help message and exit\n  --gpr-opts ...        pass remaining arguments to gprbuild\n  --add-gpr-path ADD_GPR_PATH\n                        prepend a path to look for GPR files\n  --jobs JOBS, -j JOBS  gprbuild parallelism\n  --target TARGET       target\n  --prefix PREFIX       installation prefix\n  --integrated          installation in platform specific subdir\n  --install             proceed with install automatically after the build\n  --gnatcov             build project with gnatcov instrumentation\n  --symcc               build project with symcc intrumentation (works only with LLVM)\n  --configure-only      only perform configuration (i.e: update of project constants and creation of\n                        json file). Can be used to integrate with Alire\n  --enable-constant-updates\n                        Update constants in GPR files in order to pass conviently the result of the\n                        configuration to tools such as IDE and Alire.\n\nproject specific options:\n  --build {DEBUG,PROD}\n  --enable-shared {yes,no}\n```\n\nThe first set of options is generic, and the second set under `project specific options`\nis usually connected to some scenario variables in the project.\n\nOn call to the build command a JSON file is generated containing all the complete\nconfiguration of the project. For example for `gnatcoll_minimal.gpr`, if you call from a\ndirectory called `OBJ_DIR` the following command:\n\n```sh\n$ SOURCE_DIR/minimal/gnatcoll_minimal.gpr.py build\n...\n```\n\nThis will generate in `OBJ_DIR` the file called `gnatcoll_minimal.json`:\n\n```json\n{\n  \"project_file\": \"SOURCE_DIR/minimal/gnatcoll_minimal.gpr\",\n  \"object_dir\": \"OBJ_DIR\",\n  \"target\": null,\n  \"integrated\": false,\n  \"variables\": {\n    \"GNATCOLL_BUILD_MODE\": \"PROD\",\n    \"GNATCOLL_VERSION\": \"25.0\",\n    \"GNATCOLL_OS\": \"unix\"\n  },\n  \"jobs\": \"0\",\n  \"variants_var\": \"LIBRARY_TYPE\",\n  \"variants_values\": [\n    \"static\",\n    \"relocatable\",\n    \"static-pic\"\n  ],\n  \"gnatcov\": false,\n  \"prefix\": \"COMPILER_PREFIX\",\n  \"gpr_paths\": []\n}\n```\n\nIn addition, to the generated JSON file a project file might be updated to\nupdate the default values for the managed scenario variables. In the\ncontext of `gnatcoll_minimal.gpr` the project is located in\n`config/gnatcoll_minimal_constants.gpr` and contains the following:\n\n```\nabstract project GNATCOLL_Minimal_Constants is\n    GNATCOLL_VERSION_DEFAULT     := \"25.0\";\n    GNATCOLL_BUILD_MODE_DEFAULT  := \"PROD\";\n    GNATCOLL_OS_DEFAULT          := \"unix\";\nend GNATCOLL_Minimal_Constants;\n```\n\nThis update can be enabled by passing `--enable-constant-updates`.\n\nHaving a project with the updated defaults ease work with:\n\n* `Alire`: You can use `build --configure-only --enable-constant-update`\n  command to as a pre-build step in the `Alire` configuration to generate\n  the right values for the scenario variables\n* `IDE`: When opening the project the right value is automatically selected\n  for all the scenario variables\n\n\n## Bug reports\n\nPlease send questions and bug reports to support@adacore.com following\nthe same procedures used to submit reports with the GNAT toolset itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdaCore%2Fgnatcoll-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdaCore%2Fgnatcoll-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdaCore%2Fgnatcoll-core/lists"}