Git Product home page Git Product logo

cryptopp-cmake's Introduction

Crypto++ CMake

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 officially dropped. Also see CMake on the Crypto++ wiki (https://www.cryptopp.com/wiki/CMake) for some history and how to use CMake with Crypto++.

The CMake files are a work in progress, so use it at your own risk. Please feel free to make pull requests to fix problems. Please don't expect the Crypto++ project or other users to fix problems for you.

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
git submodule add https://github.com/noloader/cryptopp-cmake.git cmake
git submodule update --remote

cp "$PWD/cmake/cryptopp-config.cmake" "$PWD"
cp "$PWD/cmake/CMakeLists.txt" "$PWD"

To update the library and the submodule perform the following. The make clean is needed because reconfigure'ing does not invalidate the previously built objects or artifacts.

cd cryptopp
git pull
git submodule update --remote

cp "$PWD/cmake/cryptopp-config.cmake" "$PWD"
cp "$PWD/cmake/CMakeLists.txt" "$PWD"

make clean

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.

cryptest-cmake.sh

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

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.

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

Future

The CMake project files are separate at the moment for several reason, like avoiding Git log pollution with Autotool branch experiments. We also need to keep a logical separation because GNUmake is the official build system, and not the CMake project files.

Eventually we would like to do two things. First, we would like to move this project from Jeff Walton's GitHub to Wei Dai's GitHub to provide stronger assurances on provenance. Second, we would like to provide an cmake.tar.gz and place it in the Crypto++ TestScripts/ directory to make it easier for folks to use CMake.

cryptopp-cmake's People

Contributors

noloader avatar abdes avatar jcfr avatar mouse07410 avatar andrearigoni avatar jar1karp avatar lenerd avatar nekto89 avatar hochphil avatar geoffbeier avatar

Watchers

James Cloos avatar Jonathan McDermott avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.