{"id":20245569,"url":"https://github.com/noloader/cryptopp-autotools","last_synced_at":"2025-04-10T20:55:09.475Z","repository":{"id":76997004,"uuid":"109142232","full_name":"noloader/cryptopp-autotools","owner":"noloader","description":"Autotools files for Crypto++ project","archived":false,"fork":false,"pushed_at":"2023-10-02T07:19:42.000Z","size":685,"stargazers_count":9,"open_issues_count":5,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-24T18:45:23.378Z","etag":null,"topics":["autotools","c-plus-plus","wei-dai-crypto"],"latest_commit_sha":null,"homepage":null,"language":"M4","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/noloader.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-11-01T14:33:38.000Z","updated_at":"2023-02-17T16:56:14.000Z","dependencies_parsed_at":"2023-10-02T08:45:49.773Z","dependency_job_id":null,"html_url":"https://github.com/noloader/cryptopp-autotools","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noloader%2Fcryptopp-autotools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noloader%2Fcryptopp-autotools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noloader%2Fcryptopp-autotools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noloader%2Fcryptopp-autotools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noloader","download_url":"https://codeload.github.com/noloader/cryptopp-autotools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248298091,"owners_count":21080313,"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":["autotools","c-plus-plus","wei-dai-crypto"],"created_at":"2024-11-14T09:22:08.977Z","updated_at":"2025-04-10T20:55:09.442Z","avatar_url":"https://github.com/noloader.png","language":"M4","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Crypto++ Autotools\n\n[![Build Status](https://travis-ci.org/noloader/cryptopp-autotools.svg?branch=master)](https://travis-ci.org/noloader/cryptopp-autotools)\n[![Build status](https://ci.appveyor.com/api/projects/status/3de2dlmwv9fxeyp8?svg=true)](https://ci.appveyor.com/project/noloader/cryptopp-autotools)\n\nThis repository contains Autotools files for Wei Dai's Crypto++ (https://github.com/weidai11/cryptopp). It supplies `configure.ac`, `makefile.am` and `libcryptopp.pc.in`. Autotools is officialy unsupported, so use it at your own risk.\n\nThe purpose of Crypto++ Autotools is three-fold:\n\n1. better support Linux distributions, like Debain, Fedora and openSUSE\n2. supplement the GNUmakefile which is reaching its limits with repsect to GNUmake-based configuration\n3. utilize compiler feature probes that produce better results on ARM, MIPS and Power8 architectures\n\nThe initial `Makefile.am` and `configure.ac` were shamelessly ripped from Debian. Many thanks to László Böszörményi for his work on the files and allowing us to use them as a starting point. Nick Bowler and Mathieu Lirzin from the Automake mailing list were extremely helpful in porting our requirements to Automake.\n\nThere is a wiki page available that discusses Autotools and the Crypto++ project files in more detail at [Autotools](https://www.cryptopp.com/wiki/Autotools).\n\n## Documentation\n\nThe Autotools project files are documented on the [Crypto++ wiki | Autotools](https://www.cryptopp.com/wiki/Autotools). If there is an error or ommission in the wiki article, then please fix it or open a bug report.\n\n## Testing\n\nThe Autotools files are officialy unsupported, so use them at your own risk. With that said, the Autotools source files are tested with Crypto++ on Linux and OS X using [Travis CI](https://github.com/weidai11/cryptopp/blob/master/.travis.yml).\n\nIn June 2018 the library added `cryptest-autotools.sh` to help test the Autotools gear. The script is located in Crypto++'s `TestScripts` directory. The script downloads the Autotools project files, builds the library and then runs the self tests.\n\nIf you want to use `cryptest-autotools.sh` to drive things then perform the following steps.\n\n    cd cryptopp\n    cp TestScripts/cryptest-autotools.sh .\n    ./cryptest-autotools.sh\n\n## Workflow\n\nThe general workflow is clone Wei Dai's Crypto++, fetch the Autotools files, and then `autoreconf`:\n\n    git clone https://github.com/weidai11/cryptopp.git\n    cd cryptopp\n\n    wget -O configure.ac https://raw.githubusercontent.com/noloader/cryptopp-autotools/master/bootstrap.sh\n    wget -O configure.ac https://raw.githubusercontent.com/noloader/cryptopp-autotools/master/configure.ac\n    wget -O Makefile.am https://raw.githubusercontent.com/noloader/cryptopp-autotools/master/Makefile.am\n    wget -O libcryptopp.pc.in https://raw.githubusercontent.com/noloader/cryptopp-autotools/master/libcryptopp.pc.in\n\n    mkdir -p \"$PWD/m4/\"\n\nOnce you have the files you can run `bootstrap.sh`. `bootstrap.sh` performs the necessary preamble and also runs `autoupdate`. Our testing showed `autoupdate` produced bad results on some versions of Autotools, so it is hit or miss whether it should be run.\n\n    ./bootstrap.sh\n\n    ./configure \u003coptions\u003e\n\n    make\n    make test\n    sudo make install \u003coptions\u003e\n\nBest performance is obtained with `-O3` because GCC (and other compiler) apply vectorization optimizations. If you are not forced to `-O2` by policy (like Debian or Fedora), then you should configure with a higher optimization enabled:\n\n    CPPFLAGS=\"-DNDEBUG\" CXXFLAGS=\"-g2 -O3\" ./configure \u003cother options\u003e\n\nDespite our efforts we have not been able to add the submodule to Crypto++ for seamless integration. If anyone knows how to add a submodule directly to the Crypto++ directory, then please provide the instructions.\n\n## ZIP Files\n\nIf you are working from a Crypto++ release zip file, then you should download the same cryptopp-autotools release zip file. Both Crypto++ and this project use the same release tags, such as CRYPTOPP_8_0_0.\n\nIf you mix and match Master with a release zip file then things may not work as expected. You may find the build project files reference a source file that is not present in the Crypto++ release.\n\n## Prerequisites\n\nBefore running the Autotools project please ensure you have the following installed:\n\n1. autoupdate\n2. autoconf and autoreconf\n3. automake\n4. libtool\n\nYou may also need `libltdl-dev` on Debian and Ubuntu; and may need `libtool-ltdl-devel` on Fedora. MinGW and family need the Autoconf and Automake *wrappers* in addition to the Autoconf and Automake binaries.\n\nIf working on the GCC Compile Farm then you may need exta steps for systems like AIX. AIX offers updated Autoconf and Automake in `/opt/freeware/bin/`; and offers Libtool in `/opt/cfarm/libtool-2.4.2/bin/`. Both `bin/` need to be on path. When running `autoreconf` you must `autoreconf --force --install --include=/opt/cfarm/libtool-2.4.2/share/aclocal/`.\n\n## Integration\nThe Autotools submodule integrates with the Crypto++ library. The submodule removes the library's `GNUmakefile` and `GNUmakefile-cross`. In the future we plan to overwrite the library's `config.h` and produce an installation specific `config.h`.\n\nThe library's `GNUmakefile` and `GNUmakefile-cross` were modified to clean the artifacts produced by Autotools. To clean the directory after running Autotools perform a `git checkout GNUmakefile` followed by a `make -f GNUmakefile distclean`.\n\n## Cross-compiles\n\nCross-compiles may work. The biggest problem seems to be libtool and shared object naming. Autotools fails to produce a shared object on platforms like Android.\n\n## Collaboration\nWe would like all distro maintainers to be collaborators on this repo. If you are a distro maintainer then please contact us so we can send you an invite.\n\nIf you are a collaborator then make changes as you see fit. You don't need to ask for permission to make a change. Noloader is not an Autotools expert so there are probably lots of opportunities for improvement.\n\nKeep in mind other distros may be using the files, so try not to break things for the other guy. We have to be mindful of lesser-used platforms and compilers, like AIX, Solaris, IBM xlC and Oracle's SunCC.\n\n## License\n\nEverything in this repo is release under Public Domain code. If the license or terms is unpalatable for you, then don't feel obligated to use it or commit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoloader%2Fcryptopp-autotools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoloader%2Fcryptopp-autotools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoloader%2Fcryptopp-autotools/lists"}