{"id":15286146,"url":"https://github.com/perl-openmp/p5-alien-openmp","last_synced_at":"2025-04-13T03:09:51.500Z","repository":{"id":40314053,"uuid":"358728399","full_name":"Perl-OpenMP/p5-Alien-OpenMP","owner":"Perl-OpenMP","description":"Portable buildopt interface to OpenMP enabled compiler flags and other things.","archived":false,"fork":false,"pushed_at":"2025-04-02T05:02:33.000Z","size":109,"stargazers_count":1,"open_issues_count":4,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-13T03:09:44.826Z","etag":null,"topics":["compiler","gcc","hpc","openmp","perl"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Perl-OpenMP.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":"CONTRIBUTING.md","funding":null,"license":null,"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":"2021-04-16T21:55:40.000Z","updated_at":"2025-04-02T05:02:08.000Z","dependencies_parsed_at":"2025-04-02T05:35:09.384Z","dependency_job_id":null,"html_url":"https://github.com/Perl-OpenMP/p5-Alien-OpenMP","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Perl-OpenMP%2Fp5-Alien-OpenMP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Perl-OpenMP%2Fp5-Alien-OpenMP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Perl-OpenMP%2Fp5-Alien-OpenMP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Perl-OpenMP%2Fp5-Alien-OpenMP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Perl-OpenMP","download_url":"https://codeload.github.com/Perl-OpenMP/p5-Alien-OpenMP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248657917,"owners_count":21140846,"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":["compiler","gcc","hpc","openmp","perl"],"created_at":"2024-09-30T15:10:46.253Z","updated_at":"2025-04-13T03:09:51.481Z","avatar_url":"https://github.com/Perl-OpenMP.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nAlien::OpenMP - Encapsulate system info for OpenMP\n\n# SYNOPSIS\n\n    use Alien::OpenMP;\n    say Alien::OpenMP-\u003ecflags;       # e.g. '-fopenmp' if gcc\n    say Alien::OpenMP-\u003elddlflags;    # e.g. '-fopenmp' if gcc\n    say Alien::OpenMP-\u003eauto_include; # e.g. '#include \u003comp.h\u003e' if gcc\n\n# DESCRIPTION\n\nThis module encapsulates the knowledge required to compile OpenMP programs\n`$Config{ccname}`. `C`, `Fortran`, and `C++` programs annotated\nwith declarative OpenMP pragmas will still compile if the compiler (and\nlinker if this is a separate process) is not passed the appropriate flag\nto enable OpenMP support. This is because all pragmas are hidden behind\nfull line comments (with the addition of OpenMP specific `sentinels`,\nas they are called).\n\nAll compilers require OpenMP to be explicitly activated during compilation;\nfor example, GCC's implementation, `GOMP`, is invoked by the `-fopenmp`\nflag.\n\nMost major compilers support OpenMP, including: GCC, Intel, IBM,\nPortland Group, NAG, and those compilers created using LLVM. GCC's OpenMP\nimplementation, `GOMP`, is available in all modern versions. Unfortunately,\nwhile OpenMP is a well supported standard; compilers are not required to\nuse the same commandline switch to activate support. All compilers that\nsupport OpenMP use slightly different ways of invoking it.\n\n## Compilers Supported by this module\n\nAt this time, the following compilers are supported:\n\n- `gcc`\n\n    `-fopenmp` enables OpenMP support in via compiler and linker:\n\n        gcc -fopenmp ./my-openmp.c -o my-openmp.x\n\n- `clang` EXPERIMENTAL\n\n    `-fopenmp` enables OpenMP support via compiler and linker in recent\n    versions of `clang`. MacOS shipped versions are missing the library\n    which needs installing either with [Homebrew](https://brew.sh) or\n    [Macports](https://www.macports.org).\n\n## Note On Compiler Support\n\nIf used for an unsupported compiler, `ExtUtils::MakeMaker::os_unsupported`\nis invoked, which results an exception propagating from this method being\nraised with the value of `qq{OS unsupported\\n}` (note the new line).\n\nThis module assumes that the compiler in question is the same one used to\nbuild `perl`. Since the vast majority of `perl`s are building using\n`gcc`, initial support is targeting it. However, like `perl`, many\nother compilers may be used.\n\nAdding support for a new compiler should be straightforward; please\nsection on contributing, below.\n\n## Contributing\n\nThe biggest need is to support additional compilers. OpenMP is a well\nestablished standard across compilers, but there is no guarantee that\nall compilers will use the same flags, library names, or header files. It\nshould also be easy to contribute a patch to add this information, which\nis effectively its purpose. At the very least, please create an issue\nat the official issue tracker to request this support, and be sure to\ninclude the relevant information. Chances are the maintainers of this\nmodule do not have access to an unsupported compiler.\n\n# METHODS\n\n- `cflags`\n\n    Returns flag used by a supported compiler to enable OpenMP. If not support,\n    an empty string is provided since by definition all OpenMP programs\n    must compile because OpenMP pragmas are annotations hidden behind source\n    code comments.\n\n    Example, GCC uses, `-fopenmp`.\n\n- `lddlflags`\n\n    Returns the flag used by the linker to enable OpenMP. This is usually\n    the same as what is returned by `cflags`.\n\n    Example, GCC uses, `-fopenmp`, for this as well.\n\n- `Inline`\n\n    Used in support of [Inline::C](https://metacpan.org/pod/Inline%3A%3AC)'s `with` method (inherited from\n    [Inline](https://metacpan.org/pod/Inline)). This method is not called directly, but used when compiling\n    OpenMP programs with `Inline::C`:\n\n        use Alien::OpenMP; use Inline C =\u003e 'DATA', with =\u003e q/Alien::OpenMP/;\n\n    The nice, compact form above replaces this mess:\n\n        use Alien::OpenMP; use Inline (\n            C             =\u003e 'DATA',\n            ccflagsex     =\u003e Alien::OpenMP-\u003ecflags(),\n            lddlflags     =\u003e join( q{ }, $Config::Config{lddlflags}, Alien::OpenMP::lddlflags() ),\n            auto_include =\u003e Alien::OpenMP-\u003eauto_include(),\n        );\n\n    It also means that the standard _include_ for OpenMP is not required in\n    the `C` code, i.e., `#include \u003comp.h\u003e`.\n\n# AUTHOR\n\nOODLER 577 \u003coodler@cpan.org\u003e\n\n# COPYRIGHT AND LICENSE\n\nCopyright (C) 2021 by oodler577\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself, either Perl version 5.30.0 or,\nat your option, any later version of Perl 5 you may have available.\n\n# SEE ALSO\n\n[PDL](https://metacpan.org/pod/PDL), [OpenMP::Environment](https://metacpan.org/pod/OpenMP%3A%3AEnvironment),\n[https://gcc.gnu.org/onlinedocs/libgomp/index.html](https://gcc.gnu.org/onlinedocs/libgomp/index.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperl-openmp%2Fp5-alien-openmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperl-openmp%2Fp5-alien-openmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperl-openmp%2Fp5-alien-openmp/lists"}