diff --git a/ports/libmysql/0001_cmake.patch b/ports/libmysql/0001_cmake.patch new file mode 100644 index 00000000000..9defe7fc19e --- /dev/null +++ b/ports/libmysql/0001_cmake.patch @@ -0,0 +1,378 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 44842d3..e89eed9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -118,7 +118,7 @@ IF(DEFINED MYSQL_PROJECT_NAME) + SET(MYSQL_PROJECT_NAME ${MYSQL_PROJECT_NAME} CACHE STRING + ${MYSQL_PROJECT_NAME_DOCSTRING} FORCE) + ELSE() +- SET(MYSQL_PROJECT_NAME "MySQL" CACHE STRING ++ SET(MYSQL_PROJECT_NAME "LibMySQL" CACHE STRING + ${MYSQL_PROJECT_NAME_DOCSTRING} FORCE) + MARK_AS_ADVANCED(MYSQL_PROJECT_NAME) + ENDIF() +@@ -132,6 +132,9 @@ IF(CMAKE_BUILD_TYPE MATCHES "Debug" OR WITH_DEBUG) + ENDIF() + ENDIF() + ++OPTION(FORCE_UNSUPPORTED_COMPILER "Disable compiler version checks" ON) ++MARK_AS_ADVANCED(FORCE_UNSUPPORTED_COMPILER) ++ + OPTION(WITH_DEFAULT_COMPILER_OPTIONS + "Use flags from cmake/build_configurations/compiler_options.cmake" + ON) +@@ -193,46 +196,30 @@ ENDIF() + INCLUDE(character_sets) + INCLUDE(cpu_info) + INCLUDE(zlib) +-INCLUDE(lz4) +-INCLUDE(libevent) + INCLUDE(ssl) +-INCLUDE(readline) +-INCLUDE(protobuf) + INCLUDE(mysql_version) + INCLUDE(libutils) + INCLUDE(dtrace) +-INCLUDE(plugin) + INCLUDE(install_macros) + INCLUDE(install_layout) + INCLUDE(mysql_add_executable) + + # Handle options +-IF(EXISTS ${CMAKE_SOURCE_DIR}/rapid) +- OPTION(WITH_RAPID +- "Build additonal code(plugins) that is located in rapid directory" ON) +-ELSE() +- OPTION(WITH_RAPID +- "Build additonal code(plugins) that is located in rapid directory" OFF) +-ENDIF() + OPTION(DISABLE_SHARED + "Don't build shared libraries, compile code as position-dependent" OFF) ++MARK_AS_ADVANCED(DISABLE_SHARED) + IF(DISABLE_SHARED) + SET(WITHOUT_DYNAMIC_PLUGINS 1) + ENDIF() + OPTION(ENABLED_PROFILING "Enable profiling" ON) +-OPTION(WITHOUT_SERVER OFF) ++SET(WITHOUT_SERVER ON) + IF(UNIX) + OPTION(WITH_VALGRIND "Valgrind instrumentation" OFF) + ENDIF() + IF(WIN32) + OPTION(WITH_MSCRT_DEBUG "MS Visual Studio Debug CRT instrumentation" OFF) + ENDIF() +-IF(NOT WITHOUT_SERVER) +- OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON) +-ENDIF() +-OPTION(FORCE_UNSUPPORTED_COMPILER "Disable compiler version checks" OFF) +-MARK_AS_ADVANCED(WITHOUT_SERVER DISABLE_SHARED FORCE_UNSUPPORTED_COMPILER) +- ++OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" OFF) + + include(CheckCSourceCompiles) + include(CheckCXXSourceCompiles) +@@ -452,18 +439,8 @@ ELSE() + SET(DEFAULT_TMPDIR "\"${TMPDIR}\"") + ENDIF() + +-INCLUDE(cmake/boost.cmake) +- +-IF (CMAKE_SYSTEM_NAME MATCHES "Linux") +- OPTION(WITH_SYSTEMD "Enable installation of systemd support files" OFF) +- IF (WITH_SYSTEMD) +- INCLUDE(cmake/systemd.cmake) +- ENDIF() +-ELSE() +- IF (WITH_SYSTEMD) +- MESSAGE(FATAL_ERROR "Installation of systemd support files not supported") +- ENDIF() +-ENDIF() ++# Boost is not needed to build libmysql (yet) ++#INCLUDE(cmake/boost.cmake) + + # Run platform tests + INCLUDE(configure.cmake) +@@ -479,76 +456,6 @@ INCLUDE_DIRECTORIES( + MYSQL_CHECK_ZLIB_WITH_COMPRESS() + # Add bundled yassl/taocrypt or system openssl. + MYSQL_CHECK_SSL() +-# Add system/bundled editline. +-MYSQL_CHECK_EDITLINE() +-# Add libevent +-MYSQL_CHECK_LIBEVENT() +-# Add lz4 library +-MYSQL_CHECK_LZ4() +-# Add protoc and libprotobuf +-IF(NOT WITHOUT_SERVER) +- MYSQL_CHECK_PROTOBUF() +-ENDIF() +- +-# Check for SYS_thread_selfid system call +-CHECK_C_SOURCE_COMPILES(" +-#include +-#include +-#include +-int main(int ac, char **av) +-{ +- unsigned long long tid = syscall(SYS_thread_selfid); +- return (tid != 0 ? 0 : 1); +-}" +-HAVE_SYS_THREAD_SELFID) +- +-# Check for gettid() system call +-CHECK_C_SOURCE_COMPILES(" +-#include +-#include +-#include +-int main(int ac, char **av) +-{ +- unsigned long long tid = syscall(SYS_gettid); +- return (tid != 0 ? 0 : 1); +-}" +-HAVE_SYS_GETTID) +- +-IF(CMAKE_SYSTEM_NAME MATCHES "Linux") +- # Check for pthread_setname_np +- CHECK_C_SOURCE_COMPILES(" +- #include +- int main(int ac, char **av) +- { +- const char *thread_name= 0; +- int ret = pthread_setname_np(pthread_self(), thread_name); +- return ret; +- }" +- HAVE_PTHREAD_SETNAME_NP) +-ENDIF() +- +-# Check for pthread_getthreadid_np() +-CHECK_C_SOURCE_COMPILES(" +-#include +-int main(int ac, char **av) +-{ +- unsigned long long tid = pthread_getthreadid_np(); +- return (tid != 0 ? 0 : 1); +-}" +-HAVE_PTHREAD_GETTHREADID_NP) +- +-# Check for pthread_self() returning an integer type +-CHECK_C_SOURCE_COMPILES(" +-#include +-#include +-int main(int ac, char **av) +-{ +- unsigned long long tid = pthread_self(); +- return (tid != 0 ? 0 : 1); +-}" +-HAVE_INTEGER_PTHREAD_SELF +-FAIL_REGEX "warning: incompatible pointer to integer conversion" +-) + + # + # Setup maintainer mode options by the end. Platform checks are +@@ -563,18 +470,15 @@ OPTION(MYSQL_MAINTAINER_MODE + + INCLUDE(maintainer) + +-IF(WITH_UNIT_TESTS) ++IF(0) #WITH_UNIT_TESTS) + ENABLE_TESTING() + ENDIF() + +-IF(NOT WITHOUT_SERVER) ++IF(0) #NOT WITHOUT_SERVER) + SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "") + SET (MYSQLD_STATIC_EMBEDDED_PLUGIN_LIBS "" CACHE INTERNAL "") + # Add storage engines and plugins. + CONFIGURE_PLUGINS() +-ELSE() +- # We may still want Cluster client libraries, use -DWITH_NDBCLUSTER=1 +- ADD_SUBDIRECTORY(storage/ndb) + ENDIF() + + ADD_SUBDIRECTORY(include) +@@ -588,61 +492,18 @@ ADD_SUBDIRECTORY(libmysql) + ADD_SUBDIRECTORY(libbinlogevents) + ADD_SUBDIRECTORY(libbinlogstandalone) + +-IF(WITH_UNIT_TESTS) +- # Visual Studio 11 needs this extra flag in order to compile gmock. +- IF(WIN32) +- ADD_DEFINITIONS( /D _VARIADIC_MAX=10 ) +- ENDIF() +- # libc++ doesn't have tuple in tr1 +- IF(HAVE_LLVM_LIBCPP) +- ADD_DEFINITIONS(-DGTEST_USE_OWN_TR1_TUPLE=1) +- ENDIF() + +- ADD_SUBDIRECTORY(unittest) +- ADD_SUBDIRECTORY(unittest/examples) +- ADD_SUBDIRECTORY(unittest/mytap) +- ADD_SUBDIRECTORY(unittest/mytap/t) +- IF(WITH_RAPID AND EXISTS ${CMAKE_SOURCE_DIR}/rapid/unittest/gunit) +- ADD_SUBDIRECTORY(rapid/unittest/gunit) +- ENDIF() +-ENDIF() + ++SET(WITH_INNOBASE_STORAGE_ENGINE 0) + ADD_SUBDIRECTORY(extra) +-ADD_SUBDIRECTORY(client) + ADD_SUBDIRECTORY(sql/share) +-ADD_SUBDIRECTORY(libservices) +- +-IF(UNIX) +- ADD_SUBDIRECTORY(man) +-ENDIF() +- +-IF(NOT WITHOUT_SERVER) +- ADD_SUBDIRECTORY(testclients) +- ADD_SUBDIRECTORY(sql) +- OPTION (WITH_EMBEDDED_SERVER "Compile MySQL with embedded server" OFF) +- IF(WITH_EMBEDDED_SERVER) +- ADD_SUBDIRECTORY(libmysqld) +- ADD_SUBDIRECTORY(libmysqld/examples) +- ENDIF(WITH_EMBEDDED_SERVER) +-ENDIF() +- +-# scripts/mysql_config depends on client and server targets loaded above. +-# It is referenced by some of the directories below, so we insert it here. + ADD_SUBDIRECTORY(scripts) ++ADD_SUBDIRECTORY(support-files) + +-IF(NOT WITHOUT_SERVER) +- ADD_SUBDIRECTORY(mysql-test) +- ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess) +- ADD_SUBDIRECTORY(support-files) +- IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt) +- ADD_SUBDIRECTORY(internal) +- ENDIF() +- ADD_SUBDIRECTORY(packaging/rpm-oel) +- ADD_SUBDIRECTORY(packaging/rpm-fedora) +- ADD_SUBDIRECTORY(packaging/rpm-sles) +- ADD_SUBDIRECTORY(packaging/rpm-docker) +- ADD_SUBDIRECTORY(packaging/deb-in) +-ENDIF() ++# ++# Directory where error message database is generated (GenError target) ++# ++FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/sql/share) + + INCLUDE(cmake/abi_check.cmake) + INCLUDE(cmake/tags.cmake) +@@ -680,11 +541,7 @@ ELSE() + SET(CPACK_GENERATOR "TGZ") + ENDIF() + ADD_SUBDIRECTORY(packaging/WiX) +-ADD_SUBDIRECTORY(packaging/solaris) + +-IF(UNIX) +- INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL COMPONENT Info) +-ENDIF() + # + # RPM installs documentation directly from the source tree + # +diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt +index 3adf988..9e0ba30 100644 +--- a/extra/CMakeLists.txt ++++ b/extra/CMakeLists.txt +@@ -70,87 +70,4 @@ ADD_DEFINITIONS(-DMUTEX_EVENT) + COPY_OPENSSL_DLLS(copy_openssl_extra) + IF (WIN32 AND WITH_SSL_PATH AND HAVE_CRYPTO_DLL) + ADD_DEPENDENCIES(GenError copy_openssl_extra) +-ENDIF() +- +- +-MYSQL_ADD_EXECUTABLE(my_print_defaults my_print_defaults.c) +-TARGET_LINK_LIBRARIES(my_print_defaults mysys mysys_ssl) +-SET_TARGET_PROPERTIES(my_print_defaults PROPERTIES LINKER_LANGUAGE CXX) +- +-MYSQL_ADD_EXECUTABLE(perror perror.c) +-ADD_DEPENDENCIES(perror GenError) +-TARGET_LINK_LIBRARIES(perror mysys mysys_ssl) +-SET_TARGET_PROPERTIES(perror PROPERTIES LINKER_LANGUAGE CXX) +- +-MYSQL_ADD_EXECUTABLE(resolveip resolveip.c) +-TARGET_LINK_LIBRARIES(resolveip mysys mysys_ssl) +-SET_TARGET_PROPERTIES(resolveip PROPERTIES LINKER_LANGUAGE CXX) +-IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS") +- INCLUDE(CheckFunctionExists) +- INCLUDE(CheckLibraryExists) +- MY_SEARCH_LIBS(inet_aton "nsl;socket;resolv" SOLARIS_NSL) +- TARGET_LINK_LIBRARIES(resolveip ${SOLARIS_NSL}) +-ENDIF() +- +- +-MYSQL_ADD_EXECUTABLE(replace replace.c) +-TARGET_LINK_LIBRARIES(replace mysys) +- +-MYSQL_ADD_EXECUTABLE(lz4_decompress lz4_decompress.cc) +-TARGET_LINK_LIBRARIES(lz4_decompress ${LZ4_LIBRARY}) +- +-MYSQL_ADD_EXECUTABLE(zlib_decompress zlib_decompress.cc) +-TARGET_LINK_LIBRARIES(zlib_decompress ${ZLIB_LIBRARY}) +- +-IF(WITH_INNOBASE_STORAGE_ENGINE) +- +- IF(LZ4_INCLUDE_DIR AND LZ4_LIBRARY) +- ADD_DEFINITIONS(-DHAVE_LZ4=1) +- INCLUDE_DIRECTORIES(${LZ4_INCLUDE_DIR}) +- ENDIF() +- +- # Add path to the InnoDB headers +- INCLUDE_DIRECTORIES( +- ${CMAKE_SOURCE_DIR}/storage/innobase/include +- ${CMAKE_SOURCE_DIR}/sql +- ) +- # We use the InnoDB code directly in case the code changes. +- ADD_DEFINITIONS("-DUNIV_INNOCHECKSUM") +- SET(INNOBASE_SOURCES +- ../storage/innobase/buf/buf0checksum.cc +- ../storage/innobase/ut/ut0crc32.cc +- ../storage/innobase/ut/ut0ut.cc +- ../storage/innobase/buf/buf0buf.cc +- ../storage/innobase/page/page0zip.cc +- ../storage/innobase/os/os0file.cc +- ) +- +- # Avoid generating Hardware Capabilities due to crc32 instructions +- IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND +- CMAKE_SYSTEM_PROCESSOR MATCHES "i386") +- INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) +- MY_CHECK_CXX_COMPILER_FLAG("-Wa,-nH" HAVE_WA_NH) +- IF(HAVE_WA_NH) +- ADD_COMPILE_FLAGS( +- ../storage/innobase/ut/ut0crc32.cc +- COMPILE_FLAGS "-Wa,-nH" +- ) +- ENDIF() +- ENDIF() +- +- MYSQL_ADD_EXECUTABLE(innochecksum innochecksum.cc ${INNOBASE_SOURCES}) +- TARGET_LINK_LIBRARIES(innochecksum mysys mysys_ssl ${LZ4_LIBRARY}) +- ADD_DEPENDENCIES(innochecksum GenError) +-ENDIF() +- +-IF(UNIX) +- MYSQL_ADD_EXECUTABLE(resolve_stack_dump resolve_stack_dump.cc) +- TARGET_LINK_LIBRARIES(resolve_stack_dump mysys mysys_ssl) +-ENDIF() +- +-# In published release builds on Solaris, we need to bundle gcc source. +-# PB2 will take care of putting it in extra/ when needed +-IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/gcc-4.8.1.tar.bz2) +- INSTALL(FILES gcc-4.8.1.tar.bz2 +- DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Development) +-ENDIF() ++ENDIF() +\ No newline at end of file +diff --git a/mysys/mysys_priv.h b/mysys/mysys_priv.h +index 8b7a554..4353037 100644 +--- a/mysys/mysys_priv.h ++++ b/mysys/mysys_priv.h +@@ -18,6 +18,7 @@ + + #include "my_global.h" + #include "mysql/psi/mysql_thread.h" ++#include "my_sys.h" + + #ifdef HAVE_PSI_INTERFACE + diff --git a/ports/libmysql/CONTROL b/ports/libmysql/CONTROL new file mode 100644 index 00000000000..504f14bbba4 --- /dev/null +++ b/ports/libmysql/CONTROL @@ -0,0 +1,3 @@ +Source: libmysql +Version: 5.7.16 +Description: A MySQL client library for C development. \ No newline at end of file diff --git a/ports/libmysql/portfile.cmake b/ports/libmysql/portfile.cmake new file mode 100644 index 00000000000..0f2c16b902c --- /dev/null +++ b/ports/libmysql/portfile.cmake @@ -0,0 +1,56 @@ +include(${CMAKE_TRIPLET_FILE}) +include(vcpkg_common_functions) +set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/mysql-server-mysql-5.7.16) + +vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/mysql/mysql-server/archive/mysql-5.7.16.tar.gz" + FILENAME "mysql-server-mysql-5.7.16.tar.gz" + SHA512 30a3c55ebb15f18ededf814b66c108f18b2ced9c39e08319cdc9559ccf38d494ad9322098f2b04418ddf557e46d9d727be0e514be0ae982ac4f5186aa295b9c6 +) +vcpkg_extract_source_archive(${ARCHIVE}) + +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES + ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} +) + +vcpkg_install_cmake() + +# delete debug headers +file(REMOVE_RECURSE + ${CURRENT_PACKAGES_DIR}/debug/include) + +# delete useless vcruntime/scripts/bin/msg file +file(REMOVE_RECURSE + ${CURRENT_PACKAGES_DIR}/share + ${CURRENT_PACKAGES_DIR}/debug/share + ${CURRENT_PACKAGES_DIR}/bin + ${CURRENT_PACKAGES_DIR}/debug/bin) + +file(MAKE_DIRECTORY + ${CURRENT_PACKAGES_DIR}/share + ${CURRENT_PACKAGES_DIR}/debug/share + ${CURRENT_PACKAGES_DIR}/bin + ${CURRENT_PACKAGES_DIR}/debug/bin) + +# remove misc files +file(REMOVE + ${CURRENT_PACKAGES_DIR}/COPYING + ${CURRENT_PACKAGES_DIR}/my-default.ini + ${CURRENT_PACKAGES_DIR}/README + ${CURRENT_PACKAGES_DIR}/debug/COPYING + ${CURRENT_PACKAGES_DIR}/debug/my-default.ini + ${CURRENT_PACKAGES_DIR}/debug/README) + +# correct the dll directory +file (RENAME ${CURRENT_PACKAGES_DIR}/lib/libmysql.dll ${CURRENT_PACKAGES_DIR}/bin/libmysql.dll) +file (RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libmysql.dll ${CURRENT_PACKAGES_DIR}/debug/libmysql.dll) + +# copy license +file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libmysql) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/libmysql/COPYING ${CURRENT_PACKAGES_DIR}/share/libmysql/copyright) \ No newline at end of file