Mercurial > hg > orthanc-object-storage
diff Common/CryptoPPConfiguration.cmake @ 38:9c0dfd10d5d0
statically link against libcrypto++
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 20 Jan 2021 12:35:23 +0100 |
parents | |
children | a360eb28089d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Common/CryptoPPConfiguration.cmake Wed Jan 20 12:35:23 2021 +0100 @@ -0,0 +1,254 @@ +# Cloud storage plugins for Orthanc +# Copyright (C) 2020-2021 Osimis S.A., Belgium +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +if (STATIC_BUILD OR NOT USE_SYSTEM_CRYPTOPP) + # The .tar.gz package was created by "./CryptoPPPackage.sh" + SET(CRYPTOPP_SOURCES_DIR ${CMAKE_BINARY_DIR}/cryptopp-840) + SET(CRYPTOPP_URL "http://orthanc.osimis.io/ThirdPartyDownloads/cryptopp-840.tar.gz") + SET(CRYPTOPP_MD5 "d42363e8a12c06a000720335a4da70d3") + + DownloadPackage(${CRYPTOPP_MD5} ${CRYPTOPP_URL} "${CRYPTOPP_SOURCES_DIR}") + + include_directories( + ${CRYPTOPP_SOURCES_DIR} + ) + + # TODO - Consider adding SIMD support + add_definitions( + -DCRYPTOPP_DISABLE_ASM + ) + + set(CRYPTOPP_SOURCES + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/aria_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/bench1.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/bench2.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/bench3.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/blake2b_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/blake2s_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/chacha_avx.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/chacha_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/cham_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/crc_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/datatest.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/dlltest.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/fipsalgt.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/fipstest.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/gcm_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/gf2n_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/keccak_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/lea_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/neon_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/ppc_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/regtest1.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/regtest2.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/regtest3.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/regtest4.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/rijndael_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/sha_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/shacal2_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/simon128_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/sm4_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/speck128_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/sse_simd.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/test.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat0.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat1.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat10.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat2.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat3.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat4.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat5.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat6.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat7.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat8.cpp + # ${CRYPTOPP_SOURCES_DIR}/cryptopp/validat9.cpp + + ${CRYPTOPP_SOURCES_DIR}/cryptopp/3way.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/adler32.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/algebra.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/algparam.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/allocate.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/arc4.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/aria.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ariatab.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/asn.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/authenc.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/base32.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/base64.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/basecode.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/bfinit.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/blake2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/blowfish.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/blumshub.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/camellia.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cast.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/casts.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cbcmac.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ccm.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/chacha.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/chachapoly.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cham.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/channels.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cmac.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cpu.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/crc.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/cryptlib.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/darn.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/default.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/des.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/dessp.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/dh.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/dh2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/dll.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/donna_32.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/donna_64.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/donna_sse.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/dsa.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/eax.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ec2n.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/eccrypto.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ecp.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/elgamal.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/emsa2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/eprecomp.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/esign.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/files.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/filters.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/fips140.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gcm.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gf256.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gf2_32.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gf2n.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gfpcrypt.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gost.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/gzip.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hc128.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hc256.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hex.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hight.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hmac.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/hrtimer.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ida.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/idea.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/integer.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/iterhash.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/kalyna.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/kalynatab.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/keccak.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/keccak_core.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/lea.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/luc.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/mars.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/marss.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/md2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/md4.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/md5.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/misc.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/modes.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/mqueue.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/mqv.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/nbtheory.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/oaep.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/osrng.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/padlkrng.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/panama.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/pch.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/pkcspad.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/poly1305.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/polynomi.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ppc_power7.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ppc_power8.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ppc_power9.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/pssr.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/pubkey.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/queue.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rabbit.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rabin.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/randpool.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rc2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rc5.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rc6.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rdrand.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rdtables.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rijndael.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ripemd.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rng.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rsa.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/rw.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/safer.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/salsa.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/scrypt.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/seal.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/seed.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/serpent.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sha.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sha3.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/shacal2.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/shake.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/shark.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sharkbox.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/simeck.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/simon.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/simple.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/skipjack.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sm3.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sm4.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/sosemanuk.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/speck.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/square.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/squaretb.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/strciphr.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/tea.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/tftables.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/threefish.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/tiger.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/tigertab.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/ttmac.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/tweetnacl.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/twofish.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/vmac.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/wake.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/whrlpool.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/xed25519.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/xtr.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/xtrcrypt.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/xts.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/zdeflate.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/zinflate.cpp + ${CRYPTOPP_SOURCES_DIR}/cryptopp/zlib.cpp + ) + + source_group(ThirdParty\\cryptopp REGULAR_EXPRESSION ${CRYPTOPP_SOURCES_DIR}/.*) + +else() + ## + ## Inclusion of system-wide crypto++ + ## + check_include_file_cxx(cryptopp/cryptlib.h HAVE_CRYPTOPP_H) + if (NOT HAVE_CRYPTOPP_H) + message(FATAL_ERROR "Please install the libcrypto++-dev package") + endif() + + include(CheckCXXSymbolExists) + set(CMAKE_REQUIRED_LIBRARIES cryptopp) + check_cxx_symbol_exists("CryptoPP::SHA1::InitState" cryptopp/sha.h HAVE_LIBCRYPTOPP) + if (NOT HAVE_LIBCRYPTOPP) + message(FATAL_ERROR "Unable to find the cryptopp library") + endif() + + set(CRYPTOPP_LIBRARIES cryptopp) +endif()