aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkinichiro <kinichiro.inoguchi@gmail.com>2017-01-18 20:26:49 +0900
committerkinichiro <kinichiro.inoguchi@gmail.com>2017-01-18 21:05:28 +0900
commit3276be122f6c5d3912bbfb266227335b65c9d851 (patch)
tree6f9e7e18c03171c9f699833ffbe78bcad6f381f3
parent3b8cf47307c65f6adfe20e13e85e074a8e5cc044 (diff)
downloadportable-3276be122f6c5d3912bbfb266227335b65c9d851.tar.gz
portable-3276be122f6c5d3912bbfb266227335b65c9d851.tar.bz2
portable-3276be122f6c5d3912bbfb266227335b65c9d851.zip
Add export symbol support to CMake for libcrypto
Diffstat (limited to '')
-rw-r--r--cmake_export_symbol.cmake3
-rw-r--r--crypto/CMakeLists.txt44
2 files changed, 45 insertions, 2 deletions
diff --git a/cmake_export_symbol.cmake b/cmake_export_symbol.cmake
index 7dde938..2928c6b 100644
--- a/cmake_export_symbol.cmake
+++ b/cmake_export_symbol.cmake
@@ -4,6 +4,9 @@ macro(export_symbol TARGET FILENAME)
4 4
5 if(WIN32) 5 if(WIN32)
6 string(REPLACE ".sym" ".def" DEF_FILENAME ${FILENAME}) 6 string(REPLACE ".sym" ".def" DEF_FILENAME ${FILENAME})
7 file(WRITE ${DEF_FILENAME} "EXPORTS\n")
8 file(READ ${FILENAME} SYMBOLS)
9 file(APPEND ${DEF_FILENAME} "${SYMBOLS}")
7 target_sources(${TARGET} PRIVATE ${DEF_FILENAME}) 10 target_sources(${TARGET} PRIVATE ${DEF_FILENAME})
8 11
9 elseif(APPLE) 12 elseif(APPLE)
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index dd0e569..45765d4 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -648,46 +648,70 @@ endif()
648 648
649if(CMAKE_HOST_WIN32) 649if(CMAKE_HOST_WIN32)
650 set(CRYPTO_SRC ${CRYPTO_SRC} bio/b_win.c) 650 set(CRYPTO_SRC ${CRYPTO_SRC} bio/b_win.c)
651 set(CRYPTO_UNEXPORT ${CRYPTO_UNEXPORT} BIO_s_log)
651 set(CRYPTO_SRC ${CRYPTO_SRC} ui/ui_openssl_win.c) 652 set(CRYPTO_SRC ${CRYPTO_SRC} ui/ui_openssl_win.c)
652endif() 653endif()
653 654
654if(CMAKE_HOST_WIN32) 655if(CMAKE_HOST_WIN32)
655 set(CRYPTO_SRC ${CRYPTO_SRC} compat/posix_win.c) 656 set(CRYPTO_SRC ${CRYPTO_SRC} compat/posix_win.c)
657 set(EXTRA_EXPORT ${EXTRA_EXPORT} gettimeofday)
658 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_perror)
659 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_fopen)
660 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_fgets)
661 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_open)
662 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_rename)
663 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_connect)
664 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_close)
665 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_read)
666 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_write)
667 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_getsockopt)
668 set(EXTRA_EXPORT ${EXTRA_EXPORT} posix_setsockopt)
669 set(EXTRA_EXPORT ${EXTRA_EXPORT} sleep)
656endif() 670endif()
657 671
658if(NOT HAVE_ASPRINTF) 672if(NOT HAVE_ASPRINTF)
659 set(CRYPTO_SRC ${CRYPTO_SRC} compat/bsd-asprintf.c) 673 set(CRYPTO_SRC ${CRYPTO_SRC} compat/bsd-asprintf.c)
674 set(EXTRA_EXPORT ${EXTRA_EXPORT} asprintf)
675 set(EXTRA_EXPORT ${EXTRA_EXPORT} vasprintf)
660endif() 676endif()
661 677
662if(NOT HAVE_INET_PTON) 678if(NOT HAVE_INET_PTON)
663 set(CRYPTO_SRC ${CRYPTO_SRC} compat/inet_pton.c) 679 set(CRYPTO_SRC ${CRYPTO_SRC} compat/inet_pton.c)
680 set(EXTRA_EXPORT ${EXTRA_EXPORT} inet_pton)
664endif() 681endif()
665 682
666if(NOT HAVE_REALLOCARRAY) 683if(NOT HAVE_REALLOCARRAY)
667 set(CRYPTO_SRC ${CRYPTO_SRC} compat/reallocarray.c) 684 set(CRYPTO_SRC ${CRYPTO_SRC} compat/reallocarray.c)
685 set(EXTRA_EXPORT ${EXTRA_EXPORT} reallocarray)
668endif() 686endif()
669 687
670if(NOT HAVE_STRCASECMP) 688if(NOT HAVE_STRCASECMP)
671 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strcasecmp.c) 689 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strcasecmp.c)
690 set(EXTRA_EXPORT ${EXTRA_EXPORT} strcasecmp)
672endif() 691endif()
673 692
674if(NOT HAVE_STRLCAT) 693if(NOT HAVE_STRLCAT)
675 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcat.c) 694 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcat.c)
695 set(EXTRA_EXPORT ${EXTRA_EXPORT} strlcat)
676endif() 696endif()
677 697
678if(NOT HAVE_STRLCPY) 698if(NOT HAVE_STRLCPY)
679 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcpy.c) 699 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcpy.c)
700 set(EXTRA_EXPORT ${EXTRA_EXPORT} strlcpy)
680endif() 701endif()
681 702
682if(NOT HAVE_STRNDUP) 703if(NOT HAVE_STRNDUP)
683 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strndup.c) 704 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strndup.c)
705 set(EXTRA_EXPORT ${EXTRA_EXPORT} strndup)
684 if(NOT HAVE_STRNLEN) 706 if(NOT HAVE_STRNLEN)
685 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strnlen.c) 707 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strnlen.c)
708 set(EXTRA_EXPORT ${EXTRA_EXPORT} strnlen)
686 endif() 709 endif()
687endif() 710endif()
688 711
689if(NOT HAVE_TIMEGM) 712if(NOT HAVE_TIMEGM)
690 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timegm.c) 713 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timegm.c)
714 set(EXTRA_EXPORT ${EXTRA_EXPORT} timegm)
691endif() 715endif()
692 716
693if(NOT HAVE_EXPLICIT_BZERO) 717if(NOT HAVE_EXPLICIT_BZERO)
@@ -697,10 +721,13 @@ if(NOT HAVE_EXPLICIT_BZERO)
697 set(CRYPTO_SRC ${CRYPTO_SRC} compat/explicit_bzero.c) 721 set(CRYPTO_SRC ${CRYPTO_SRC} compat/explicit_bzero.c)
698 set_source_files_properties(compat/explicit_bzero.c PROPERTIES COMPILE_FLAGS -O0) 722 set_source_files_properties(compat/explicit_bzero.c PROPERTIES COMPILE_FLAGS -O0)
699 endif() 723 endif()
724 set(EXTRA_EXPORT ${EXTRA_EXPORT} explicit_bzero)
700endif() 725endif()
701 726
702if(NOT HAVE_ARC4RANDOM_BUF) 727if(NOT HAVE_ARC4RANDOM_BUF)
703 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random.c) 728 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random.c)
729 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random)
730 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random_buf)
704 731
705 if(NOT HAVE_GETENTROPY) 732 if(NOT HAVE_GETENTROPY)
706 if(CMAKE_HOST_WIN32) 733 if(CMAKE_HOST_WIN32)
@@ -720,19 +747,23 @@ if(NOT HAVE_ARC4RANDOM_BUF)
720 elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") 747 elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS")
721 set(CRYPTO_SRC ${CRYPTO_SRC} compat/getentropy_solaris.c) 748 set(CRYPTO_SRC ${CRYPTO_SRC} compat/getentropy_solaris.c)
722 endif() 749 endif()
750 set(EXTRA_EXPORT ${EXTRA_EXPORT} getentropy)
723 endif() 751 endif()
724endif() 752endif()
725 753
726if(NOT HAVE_ARC4RANDOM_UNIFORM) 754if(NOT HAVE_ARC4RANDOM_UNIFORM)
727 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random_uniform.c) 755 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random_uniform.c)
756 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random_uniform)
728endif() 757endif()
729 758
730if(NOT HAVE_TIMINGSAFE_BCMP) 759if(NOT HAVE_TIMINGSAFE_BCMP)
731 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_bcmp.c) 760 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_bcmp.c)
761 set(EXTRA_EXPORT ${EXTRA_EXPORT} timingsafe_bcmp)
732endif() 762endif()
733 763
734if(NOT HAVE_TIMINGSAFE_MEMCMP) 764if(NOT HAVE_TIMINGSAFE_MEMCMP)
735 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_memcmp.c) 765 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_memcmp.c)
766 set(EXTRA_EXPORT ${EXTRA_EXPORT} timingsafe_memcmp)
736endif() 767endif()
737 768
738if(NOT ENABLE_ASM) 769if(NOT ENABLE_ASM)
@@ -749,13 +780,22 @@ else()
749 add_definitions(-DOPENSSLDIR=\"${CMAKE_INSTALL_PREFIX}/etc/ssl\") 780 add_definitions(-DOPENSSLDIR=\"${CMAKE_INSTALL_PREFIX}/etc/ssl\")
750endif() 781endif()
751 782
783file(READ ${CMAKE_CURRENT_SOURCE_DIR}/crypto.sym SYMS)
784foreach(SYM IN LISTS CRYPTO_UNEXPORT)
785 string(REPLACE "${SYM}\n" "" SYMS ${SYMS})
786endforeach()
787file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym ${SYMS})
788list(SORT EXTRA_EXPORT)
789foreach(SYM IN LISTS EXTRA_EXPORT)
790 file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym "${SYM}\n")
791endforeach()
792
752add_library(crypto-objects OBJECT ${CRYPTO_SRC}) 793add_library(crypto-objects OBJECT ${CRYPTO_SRC})
753if (BUILD_SHARED) 794if (BUILD_SHARED)
754 add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>) 795 add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>)
755 add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>) 796 add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>)
797 export_symbol(crypto-shared ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym)
756 if (WIN32) 798 if (WIN32)
757 target_sources(crypto-shared PRIVATE
758 ${CMAKE_CURRENT_SOURCE_DIR}/crypto.def)
759 target_link_libraries(crypto-shared Ws2_32.lib) 799 target_link_libraries(crypto-shared Ws2_32.lib)
760 set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION}) 800 set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION})
761 endif() 801 endif()