Skip to content
This repository has been archived by the owner on Aug 31, 2022. It is now read-only.
/ cryptopp-cmake Public archive

CMake files for Crypto++ project

Notifications You must be signed in to change notification settings

noloader/cryptopp-cmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto++ CMake

IMPORTANT

⚠️ This repo's last release is CRYPTOPP_8_6_0 and will no longer be maintained by its current maintainers. It will remain for people who want to use cmake < 2.8 and for whoever want to take that maintenance over.

A new repo has been created at https://github.com/abdes/cryptopp-cmake but for modern cmake users, i.e. cmake version >= 3.21. Feel free to move to that repo which will continue to be maintained and track crypto++ future releases. You are also welcome to become a contributor in that repo.

⚠️ This repo will soon be placed in read-only mode.

Old README

Build Status Build status

This repository contains CMake files for Wei Dai's Crypto++ (https://github.com/weidai11/cryptopp). It supplies CMakeLists.txt and cryptopp-config.cmake for Crypto++ for those who want to use CMake. CMake is officialy unsupported, so use it at your own risk.

The purpose of Crypto++ CMake is two-fold:

  1. better support Linux distributions, like Gentoo
  2. provide users with centrally maintained CMake project files

The initial cryptopp-config.cmake and CMakeLists.txt were taken from the library sources when CMake support was dropped. Also see CMake on the Crypto++ wiki for some history and how to use CMake with Crypto++.

Documentation

The CMake project files are documented on the Crypto++ wiki | CMake. If there is an error or ommission in the wiki article, then please fix it or open a bug report.

Testing

The CMake files are officialy unsupported, so use them at your own risk. With that said, the CMake source files are tested with Crypto++ on Linux and OS X using Travis CI.

In June 2018 the library added cryptest-cmake.sh to help test the CMake gear. The script is located in Crypto++'s TestScripts directory. The script downloads the CMake project files, builds the library and then runs the self tests.

If you want to use cryptest-cmake.sh to drive things then perform the following steps.

cd cryptopp
cp TestScripts/cryptest-cmake.sh .
./cryptest-cmake.sh

Workflow

The general workflow is clone Wei Dai's crypto++, add CMake as a submodule, and then copy the files of interest into the Crypto++ directory:

git clone https://github.com/weidai11/cryptopp.git
cd cryptopp

wget -O CMakeLists.txt https://raw.githubusercontent.com/noloader/cryptopp-cmake/master/CMakeLists.txt
wget -O cryptopp-config.cmake https://raw.githubusercontent.com/noloader/cryptopp-cmake/master/cryptopp-config.cmake

Despite our efforts we have not been able to add the submodule to Crypto++ for seamless integration. If anyone knows how to add the submodule directly to the Crypto++ directory, then please provide the instructions.

ZIP Files

If you are working from a Crypto++ release zip file, then you should download the same cryptopp-cmake release zip file. Both Crypto++ and this project use the same release tags, such as CRYPTOPP_8_0_0.

If 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.

Integration

The CMake submodule integrates with the Crypto++ library. The library's GNUmakefile and GNUmakefile-cross were modified to clean the artifacts produced by CMake. To clean the directory after running CMake perform a git checkout GNUmakefile followed by a make -f GNUmakefile distclean.

Collaboration

We 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.

If 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 CMake expert so there are probably lots of opportunities for improvement.

Keep 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.

License

Everything 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.