From afed7a0ecb5ef6d3fe866d4759d2358e6a58a948 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Mon, 15 Apr 2024 08:49:16 +0800 Subject: [PATCH] Make SDF/SKF optional in CMake --- CMakeLists.txt | 59 +++++++++++++++++++++++++++++++------------------- tools/gmssl.c | 15 ++++++++++--- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ba582043..da755e06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,17 +72,6 @@ set(src src/x509_crl.c src/x509_new.c src/cms.c - src/sdf/sdf.c - src/sdf/sdf_lib.c - src/sdf/sdf_meth.c - src/sdf/sdf_ext.c - src/sdf/sdf_sansec.c - src/skf/skf.c - src/skf/skf_lib.c - src/skf/skf_meth.c - src/skf/skf_ext.c - src/skf/skf_prn.c - src/skf/skf_wisec.c src/socket.c src/tls.c src/tls_ext.c @@ -130,8 +119,6 @@ set(tools tools/cmsencrypt.c tools/cmsdecrypt.c tools/cmsparse.c - tools/sdfutil.c - tools/skfutil.c tools/tlcp_client.c tools/tlcp_server.c tools/tls12_client.c @@ -529,7 +516,9 @@ add_library(gmssl ${src}) if (WIN32) target_link_libraries(gmssl -lws2_32) elseif (APPLE) - target_link_libraries(gmssl dl) + if (ENABLE_SDF) + target_link_libraries(gmssl dl) + endif() target_link_libraries(gmssl "-framework Security") if (ENABLE_SM4_CL) # FIXME: different rules for cl and OpenCL framework @@ -539,7 +528,9 @@ elseif (APPLE) elseif (MINGW) target_link_libraries(gmssl PRIVATE wsock32) else() - target_link_libraries(gmssl dl) + if (ENABLE_SDF) + target_link_libraries(gmssl dl) + endif() endif() @@ -552,6 +543,37 @@ install(TARGETS gmssl ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DE install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/gmssl DESTINATION include) +option(ENABLE_SDF "Enable SDF module" OFF) +if (ENABLE_SDF) + message(STATUS "ENABLE_SDF is ON") + list(APPEND src + src/sdf/sdf.c + src/sdf/sdf_lib.c + src/sdf/sdf_meth.c + src/sdf/sdf_ext.c + src/sdf/sdf_sansec.c) + list(APPEND tools tools/sdfutil.c) + add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c) + set_target_properties(sdf_dummy PROPERTIES VERSION 3.1 SOVERSION 3) +endif() + + +option(ENABLE_SKF "Enable SKF module" OFF) +if (ENABLE_SKF) + message(STATUS "ENABLE_SKF is ON") + list(APPEND src + src/skf/skf.c + src/skf/skf_lib.c + src/skf/skf_meth.c + src/skf/skf_ext.c + src/skf/skf_prn.c + src/skf/skf_wisec.c) + list(APPEND tools tools/skfutil.c) + add_library(skf_dummy SHARED src/skf/skf_dummy.c) + set_target_properties(skf_dummy PROPERTIES VERSION 3.1 SOVERSION 3) +endif() + + option(ENABLE_SOFT_SDF "Enable Software SDF Implementation" OFF) if (ENABLE_SOFT_SDF) message(STATUS "ENABLE_SOFT_SDF is ON") @@ -563,13 +585,6 @@ endif() if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS") - - add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c) - set_target_properties(sdf_dummy PROPERTIES VERSION 3.1 SOVERSION 3) - - add_library(skf_dummy SHARED src/skf/skf_dummy.c) - set_target_properties(skf_dummy PROPERTIES VERSION 3.1 SOVERSION 3) - add_executable(gmssl-bin ${tools}) target_link_libraries(gmssl-bin LINK_PUBLIC gmssl) set_target_properties(gmssl-bin PROPERTIES RUNTIME_OUTPUT_NAME gmssl) diff --git a/tools/gmssl.c b/tools/gmssl.c index 08a88eda..b5243f83 100644 --- a/tools/gmssl.c +++ b/tools/gmssl.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2023 The GmSSL Project. All Rights Reserved. + * Copyright 2014-2024 The GmSSL Project. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the License); you may * not use this file except in compliance with the License. @@ -54,9 +54,12 @@ extern int tls12_client_main(int argc, char **argv); extern int tls12_server_main(int argc, char **argv); extern int tls13_client_main(int argc, char **argv); extern int tls13_server_main(int argc, char **argv); +#ifdef ENABLE_SDF extern int sdfutil_main(int argc, char **argv); +#endif +#ifdef ENABLE_SKF extern int skfutil_main(int argc, char **argv); - +#endif static const char *options = "command [options]\n" @@ -99,8 +102,12 @@ static const char *options = " cmsdecrypt Decrypt CMS EnvelopedData\n" " cmssign Generate CMS SignedData\n" " cmsverify Verify CMS SignedData\n" +#ifdef ENABLE_SDF " sdfutil SDF crypto device utility\n" +#endif +#ifdef ENABLE_SKF " skfutil SKF crypto device utility\n" +#endif " tlcp_client TLCP client\n" " tlcp_server TLCP server\n" " tls12_client TLS 1.2 client\n" @@ -211,9 +218,11 @@ int main(int argc, char **argv) return tls13_client_main(argc, argv); } else if (!strcmp(*argv, "tls13_server")) { return tls13_server_main(argc, argv); -#ifndef WIN32 +#ifdef ENABLE_SDF } else if (!strcmp(*argv, "sdfutil")) { return sdfutil_main(argc, argv); +#endif +#ifdef ENABLE_SKF } else if (!strcmp(*argv, "skfutil")) { return skfutil_main(argc, argv); #endif