]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | vcpkg_fail_port_install(ON_ARCH "arm" "arm64" ON_TARGET "UWP") |
2 | ||
3 | set(PBC_VERSION 0.5.14) | |
4 | ||
5 | if(NOT VCPKG_TARGET_IS_WINDOWS) | |
6 | vcpkg_download_distfile( | |
7 | ARCHIVE | |
8 | URLS "https://crypto.stanford.edu/pbc/files/pbc-${PBC_VERSION}.tar.gz" | |
9 | FILENAME pbc-${PBC_VERSION}.tar.gz | |
10 | SHA512 d75d4ceb3f67ee62c7ca41e2a91ee914fbffaeb70256675aed6734d586950ea8e64e2f16dc069d71481eddb703624df8d46497005fb58e75cf098dd7e7961333 | |
11 | ) | |
12 | ||
13 | vcpkg_extract_source_archive_ex( | |
14 | OUT_SOURCE_PATH SOURCE_PATH | |
15 | ARCHIVE ${ARCHIVE} | |
16 | REF ${PBC_VERSION} | |
17 | PATCHES linux.patch | |
18 | ) | |
19 | ||
20 | vcpkg_find_acquire_program(BISON) | |
21 | vcpkg_find_acquire_program(FLEX) | |
22 | ||
23 | if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") | |
24 | set(SHARED_STATIC --enable-static --disable-shared) | |
25 | else() | |
26 | set(SHARED_STATIC --disable-static --enable-shared) | |
27 | endif() | |
28 | ||
29 | set(OPTIONS ${SHARED_STATIC} LEX=${FLEX} YACC=${BISON}\ -y) | |
30 | ||
31 | vcpkg_configure_make( | |
32 | SOURCE_PATH ${SOURCE_PATH} | |
33 | AUTOCONFIG | |
34 | COPY_SOURCE | |
35 | OPTIONS | |
36 | ${OPTIONS} | |
37 | ) | |
38 | ||
39 | vcpkg_install_make() | |
40 | ||
41 | file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share ${CURRENT_PACKAGES_DIR}/share/info) | |
42 | file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) | |
43 | else() | |
44 | vcpkg_check_linkage(ONLY_STATIC_LIBRARY) | |
45 | vcpkg_from_github( | |
46 | OUT_SOURCE_PATH SOURCE_PATH | |
47 | REPO blynn/pbc | |
48 | REF fbf4589036ce4f662e2d06905862c9e816cf9d08 | |
49 | SHA512 9348afd3866090b9fca189ae3a6bbb86c842b5f6ee7e1972f1a579993e589952c5926cb0795d4db1e647e3af263827e22c7602314c39bd97e03ffe9ad0fb48ab | |
50 | HEAD_REF master | |
51 | PATCHES windows.patch | |
52 | ) | |
53 | ||
54 | set(CMAKE_FIND_LIBRARY_PREFIXES "") | |
55 | set(CMAKE_FIND_LIBRARY_SUFFIXES "") | |
56 | ||
57 | find_path(MPIR_INCLUDE_DIR "gmp.h" HINTS ${CURRENT_INSTALLED_DIR} PATH_SUFFIXES include) | |
58 | if(NOT MPIR_INCLUDE_DIR) | |
59 | message(FATAL_ERROR "GMP includes not found") | |
60 | endif() | |
61 | ||
62 | find_library(MPIR_LIBRARIES_REL NAMES "mpir.lib" HINTS ${CURRENT_INSTALLED_DIR} PATH_SUFFIXES lib) | |
63 | if(NOT MPIR_LIBRARIES_REL) | |
64 | message(FATAL_ERROR "mpir library not found") | |
65 | endif() | |
66 | ||
67 | find_library(MPIR_LIBRARIES_DBG NAMES "mpir.lib" HINTS ${CURRENT_INSTALLED_DIR} PATH_SUFFIXES debug/lib) | |
68 | if(NOT MPIR_LIBRARIES_DBG) | |
69 | message(FATAL_ERROR "mpir debug library not found") | |
70 | endif() | |
71 | ||
72 | if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") | |
73 | set(LibrarySuffix "lib") | |
74 | set(ConfigurationSuffix "") | |
75 | else() | |
76 | set(LibrarySuffix "dll") | |
77 | set(ConfigurationSuffix " DLL") | |
78 | endif() | |
79 | ||
80 | if(VCPKG_CRT_LINKAGE STREQUAL "static") | |
81 | set(RuntimeLibraryExt "") | |
82 | else() | |
83 | set(RuntimeLibraryExt "DLL") | |
84 | endif() | |
85 | ||
86 | if(TRIPLET_SYSTEM_ARCH STREQUAL "x86") | |
87 | set(Platform "Win32") | |
88 | else() | |
89 | set(Platform ${TRIPLET_SYSTEM_ARCH}) | |
90 | endif() | |
91 | ||
92 | # PBC expects mpir directory in build root | |
93 | get_filename_component(SOURCE_PATH_PARENT ${SOURCE_PATH} DIRECTORY) | |
94 | file(REMOVE_RECURSE ${SOURCE_PATH_PARENT}/mpir) | |
95 | file(MAKE_DIRECTORY ${SOURCE_PATH_PARENT}/mpir) | |
96 | file(GLOB FILES ${MPIR_INCLUDE_DIR}/gmp*.h) | |
97 | file(COPY ${FILES} ${MPIR_LIBRARIES_REL} DESTINATION "${SOURCE_PATH_PARENT}/mpir/${LibrarySuffix}/${Platform}/Release") | |
98 | file(COPY ${FILES} ${MPIR_LIBRARIES_DBG} DESTINATION "${SOURCE_PATH_PARENT}/mpir/${LibrarySuffix}/${Platform}/Debug") | |
99 | ||
100 | get_filename_component(SOURCE_PATH_SUFFIX ${SOURCE_PATH} NAME) | |
101 | vcpkg_install_msbuild(SOURCE_PATH ${SOURCE_PATH_PARENT} | |
102 | PROJECT_SUBPATH ${SOURCE_PATH_SUFFIX}/pbcwin/projects/pbclib.vcxproj | |
103 | INCLUDES_SUBPATH ${SOURCE_PATH_SUFFIX}/include | |
104 | LICENSE_SUBPATH ${SOURCE_PATH_SUFFIX}/COPYING | |
105 | RELEASE_CONFIGURATION "Release${ConfigurationSuffix}" | |
106 | DEBUG_CONFIGURATION "Debug${ConfigurationSuffix}" | |
107 | OPTIONS_DEBUG "/p:RuntimeLibrary=MultiThreadedDebug${RuntimeLibraryExt}" | |
108 | OPTIONS_RELEASE "/p:RuntimeLibrary=MultiThreaded${RuntimeLibraryExt}" | |
109 | OPTIONS /p:SolutionDir=../ | |
110 | ALLOW_ROOT_INCLUDES ON | |
111 | ) | |
112 | ||
113 | # clean up mpir stuff | |
114 | file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/mpir.lib ${CURRENT_PACKAGES_DIR}/debug/lib/mpir.lib) | |
115 | endif() |