aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmysql/portfile.cmake
blob: f25c1e0066e3a45604fd8c36a4bb4be2976e080a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
if (EXISTS "${CURRENT_INSTALLED_DIR}/include/mysql/mysql.h")
    message(FATAL_ERROR "FATAL ERROR: ${PORT} and libmariadb are incompatible.")
endif()

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO mysql/mysql-server
    REF "mysql-${VERSION}"
    SHA512 f0591d263de557877a618b04871d332dc227e26c7e9b61994093dc9af29971ea6332761de5391bb8da955bd58b3b98da90722bafdbf86f36764995a70f94ae62
    HEAD_REF master
    PATCHES
        dependencies.patch
        install-exports.patch
        fix_dup_symbols.patch
        cross-build.patch
        fix-pdb-install-path.patch
)

file(GLOB third_party "${SOURCE_PATH}/extra/*" "${SOURCE_PATH}/include/boost_1_*")
list(REMOVE_ITEM third_party "${SOURCE_PATH}/extra/libedit")
if (third_party)
    file(REMOVE_RECURSE ${third_party})
endif()

#Skip the version check for Visual Studio
set(FORCE_UNSUPPORTED_COMPILER "")
if(VCPKG_TARGET_IS_WINDOWS)
    set(FORCE_UNSUPPORTED_COMPILER 1)
endif()

string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static"  BUILD_STATIC_LIBS)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static"  STATIC_CRT_LINKAGE)

set(cross_options "")
if(VCPKG_CROSSCOMPILING)
    list(APPEND cross_options
        -DCMAKE_CROSSCOMPILING=1
        -DVCPKG_HOST_TRIPLET=${HOST_TRIPLET}
        # required, skip try_run
        -DHAVE_RAPIDJSON_WITH_STD_REGEX=1
    )
    if(NOT VCPKG_TARGET_IS_WINDOWS)
        list(APPEND cross_options
            # optimistic, skip try_run
            -DHAVE_CLOCK_GETTIME=1
            -DHAVE_CLOCK_REALTIME=1
            # pessimistic, skip try_run
            -DHAVE_C_FLOATING_POINT_FUSED_MADD=1
            -DHAVE_CXX_FLOATING_POINT_FUSED_MADD=1
            -DHAVE_SETNS=0
        )
    endif()
endif()

vcpkg_cmake_configure(
    SOURCE_PATH "${SOURCE_PATH}"
    OPTIONS
        ${cross_options}
        -DINSTALL_INCLUDEDIR=include/mysql
        -DINSTALL_DOCDIR=share/${PORT}/doc
        -DINSTALL_MANDIR=share/${PORT}/doc
        -DINSTALL_INFODIR=share/${PORT}/doc
        -DINSTALL_DOCREADMEDIR=share/${PORT}
        -DINSTALL_SHAREDIR=share
        -DINSTALL_MYSQLSHAREDIR=share/${PORT}
        -DWITHOUT_SERVER=ON
        -DWITH_BUILD_ID=OFF
        -DWITH_UNIT_TESTS=OFF
        -DENABLED_PROFILING=OFF
        -DWIX_DIR=OFF
        -DIGNORE_BOOST_VERSION=ON
        -DWITH_TEST_TRACE_PLUGIN=OFF
        -DMYSQL_MAINTAINER_MODE=OFF
        -DBUNDLE_RUNTIME_LIBRARIES=OFF
        -DDOWNLOAD_BOOST=OFF
        -DWITH_AUTHENTICATION_KERBEROS=OFF
        -DWITH_AUTHENTICATION_LDAP_DEFAULT=OFF
        -DWITH_CURL=none
        -DWITH_EDITLINE=bundled # not in vcpkg
        -DWITH_LZ4=system
        -DWITH_RAPIDJSON=system
        -DWITH_SSL=system
        -DWITH_SYSTEMD=OFF
        -DWITH_ZLIB=system
        -DWITH_ZSTD=system
        -DFORCE_UNSUPPORTED_COMPILER=${FORCE_UNSUPPORTED_COMPILER}
        -DINSTALL_STATIC_LIBRARIES=${BUILD_STATIC_LIBS}
        -DLINK_STATIC_RUNTIME_LIBRARIES=${STATIC_CRT_LINKAGE}
    MAYBE_UNUSED_VARIABLES
        BUNDLE_RUNTIME_LIBRARIES # only on windows
        LINK_STATIC_RUNTIME_LIBRARIES # only on windows
        WIX_DIR # only on windows
        WITH_BUILD_ID # only on windows
)

vcpkg_cmake_install(ADD_BIN_TO_PATH)
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-libmysql)
vcpkg_fixup_pkgconfig()

set(MYSQL_TOOLS
    my_print_defaults
    mysql
    mysql_config_editor
    mysql_migrate_keyring
    mysql_secure_installation
    mysql_ssl_rsa_setup
    mysqladmin
    mysqlbinlog
    mysqlcheck
    mysqldump
    mysqlimport
    mysqlpump
    mysqlshow
    mysqlslap
    mysqltest
    perror
    zlib_decompress
)
if (NOT VCPKG_CROSSCOMPILING)
    list(APPEND MYSQL_TOOLS
        comp_err
    )
endif()
if (VCPKG_TARGET_IS_WINDOWS)
    list(APPEND MYSQL_TOOLS
        echo
    )
else()
    list(APPEND MYSQL_TOOLS
        mysql_config
    )
endif()

vcpkg_copy_tools(TOOL_NAMES ${MYSQL_TOOLS} AUTO_CLEAN)

file(REMOVE_RECURSE
    "${CURRENT_PACKAGES_DIR}/debug/include"
    "${CURRENT_PACKAGES_DIR}/debug/share"
    "${CURRENT_PACKAGES_DIR}/lib/debug"
)

if (NOT VCPKG_TARGET_IS_WINDOWS)
    set(MYSQL_CONFIG_FILE "${CURRENT_PACKAGES_DIR}/tools/libmysql/mysql_config")
    vcpkg_replace_string("${MYSQL_CONFIG_FILE}" "/bin/mysql_.*config" "/tools/libmysql/mysql_.*config")
    vcpkg_replace_string("${MYSQL_CONFIG_FILE}" "'${CURRENT_PACKAGES_DIR}" "\"\$basedir\"\'")
endif()

file(INSTALL "${CURRENT_PORT_DIR}/libmysql-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")

set(libedit_copying "${SOURCE_PATH}/COPYING for libedit")
file(GLOB libedit_copying_infile "${SOURCE_PATH}/extra/libedit/libedit-*/COPYING")
file(COPY_FILE "${libedit_copying_infile}" "${libedit_copying}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" "${libedit_copying}")