Export stdcall decorated symbols correctly in libmariadb.dll

This commit is contained in:
Martchus 2016-05-31 23:04:16 +02:00
parent 1a2774f6a1
commit 422f2f40db
8 changed files with 205 additions and 8 deletions

View File

@ -356,7 +356,7 @@ SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} ${ZLIB_SOURCES})
ENDIF()
IF(WIN32)
SET_VERSION_INFO("TARGET:libmariadb"
SET_VERSION_INFO("TARGET:mariadb"
"FILE_TYPE:VFT_DLL"
"SOURCE_FILE:libmariadb/libmariadb.c"
"ORIGINAL_FILE_NAME:libmariadb.dll"
@ -384,7 +384,7 @@ ENDIF()
ADD_LIBRARY(mariadbclient STATIC ${mariadbclient_RC} $<TARGET_OBJECTS:mariadb_obj> ${EMPTY_FILE} ${EXPORT_LINK})
TARGET_LINK_LIBRARIES(mariadbclient ${SYSTEM_LIBS})
ADD_LIBRARY(mariadb SHARED ${libmariadb_RC} $<TARGET_OBJECTS:mariadb_obj> ${EMPTY_FILE} ${EXPORT_LINK})
ADD_LIBRARY(mariadb SHARED ${libmariadb_RC} ${LIBMARIADB_SOURCES} ${EMPTY_FILE})
TARGET_LINK_LIBRARIES(mariadb ${SYSTEM_LIBS})
IF(UNIX)
SET_TARGET_PROPERTIES(mariadb PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")

View File

@ -0,0 +1,65 @@
# Maintainer: ant32 <antreimer@gmail.com>
pkgname=mingw-w64-mariadb-connector-c
pkgver=2.1.0
pkgrel=2
pkgdesc="MariaDB Connector/C. A library for connecting to MariaDB and MySQL servers (mingw-w64)"
arch=(any)
url="https://mariadb.com/kb/en/mariadb/about-mariadb-connector-c/"
license=("LGPL")
replaces=('mingw-w64-libmariadbclient')
conflicts=('mingw-w64-libmariadbclient')
provides=("mingw-w64-libmariadbclient=$pkgver")
depends=('mingw-w64-crt' 'mingw-w64-openssl' 'mingw-w64-zlib')
makedepends=('mingw-w64-cmake')
options=('!strip' '!buildflags' 'staticlibs')
source=("http://archive.mariadb.org/connector-c-$pkgver/source-tgz/mariadb-connector-c-$pkgver-src.tar.gz"
'fix-libnames-mingw.patch'
'use_fopen_for_xp_compatibility.patch'
'fix-size-t-defined.patch'
'fix-qt5-uint-error.patch')
md5sums=('c026525ad2cec882b00070ba92fa0bc1'
'0cb013e5ec2a79be46832f462504dd88'
'f1624e949933b2a774c116d46192a4ec'
'0a202d91993cbedcc03f10fdfe2720a0'
'e493a22d3e0f6de2bdedb7974c631101')
_architectures="i686-w64-mingw32 x86_64-w64-mingw32"
prepare() {
cd "$srcdir/mariadb-connector-c-$pkgver-src/"
patch -p0 -i "$srcdir/fix-libnames-mingw.patch"
patch -p0 -i "$srcdir/use_fopen_for_xp_compatibility.patch"
patch -p0 -i "$srcdir/fix-size-t-defined.patch"
patch -p0 -i "$srcdir/fix-qt5-uint-error.patch"
}
build() {
unset LDFLAGS
cd "$srcdir/mariadb-connector-c-$pkgver-src/"
for _arch in ${_architectures}; do
mkdir -p build-${_arch} && pushd build-${_arch}
${_arch}-cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DWITH_EXTERNAL_ZLIB=ON \
-DWITH_SQLITE=OFF \
-DWITH_OPENSSL=ON \
-DWITH_MYSQLCOMPAT=ON \
..
make
popd
done
}
package() {
for _arch in ${_architectures}; do
cd "${srcdir}/mariadb-connector-c-$pkgver-src/build-${_arch}"
make DESTDIR="${pkgdir}" install
ln -s mariadb "$pkgdir"/usr/${_arch}/include/mysql
# for some reason they don't create a link for libmysql.
# Probably a couple more symlinks that should be created.
ln -s libmariadb.dll.a "$pkgdir"/usr/${_arch}/lib/libmysql.dll.a
${_arch}-strip --strip-unneeded "$pkgdir"/usr/${_arch}/bin/*.dll
${_arch}-strip -g "$pkgdir"/usr/${_arch}/lib/*.a
done
}

View File

@ -0,0 +1,74 @@
--- libmariadb/CMakeLists.txt.orig 2015-02-05 09:57:29.549448173 -0700
+++ libmariadb/CMakeLists.txt 2015-02-05 10:01:01.498040468 -0700
@@ -372,8 +372,8 @@
ADD_LIBRARY(mariadbclient STATIC $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_LINK})
TARGET_LINK_LIBRARIES(mariadbclient ${SYSTEM_LIBS})
-ADD_LIBRARY(libmariadb SHARED $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_LINK})
-TARGET_LINK_LIBRARIES(libmariadb ${SYSTEM_LIBS})
+ADD_LIBRARY(mariadb SHARED ${LIBMARIADB_SOURCES})
+TARGET_LINK_LIBRARIES(mariadb ${SYSTEM_LIBS})
IF(UNIX)
SET_TARGET_PROPERTIES(libmariadb PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
ENDIF()
@@ -385,11 +385,12 @@
TARGET_LINK_LIBRARIES (mariadbclient "-Wl,--version-script=${EXPORT_FILE}")
ENDIF()
-SET_TARGET_PROPERTIES(libmariadb PROPERTIES PREFIX "")
+SET_TARGET_PROPERTIES(mariadb PROPERTIES PREFIX "")
-SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION
+SET_TARGET_PROPERTIES(mariadb PROPERTIES VERSION
${CPACK_PACKAGE_VERSION_MAJOR}
- SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR})
+ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}
+ RUNTIME_OUTPUT_NAME libmariadb)
#
# Installation
@@ -398,7 +399,7 @@
# There are still several projects which don't make use
# of the config program. To make sure these programs can
# use mariadb client library we provide libmysql symlinks
-IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
+IF(WITH_MYSQLCOMPAT)
ADD_CUSTOM_COMMAND(OUTPUT "libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}"
"libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}"
"libmysqlclient_r${CMAKE_SHARED_LIBRARY_SUFFIX}"
@@ -412,7 +413,7 @@
COMMAND ${CMAKE_COMMAND} ARGS -E remove -f libmysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}
COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink libmariadbclient${CMAKE_STATIC_LIBRARY_SUFFIX} libmysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/libmariadb
- DEPENDS libmariadb mariadbclient)
+ DEPENDS mariadb mariadbclient)
ADD_CUSTOM_TARGET(LIBMYSQL_SYMLINKS
ALL
@@ -425,17 +426,18 @@
INSTALL(TARGETS
- libmariadb mariadbclient
- RUNTIME DESTINATION "${LIB_INSTALL_DIR}/${SUFFIX_INSTALL_DIR}"
- LIBRARY DESTINATION "${LIB_INSTALL_DIR}/${SUFFIX_INSTALL_DIR}"
- ARCHIVE DESTINATION "${LIB_INSTALL_DIR}/${SUFFIX_INSTALL_DIR}")
-
-IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
+ mariadb mariadbclient
+ RUNTIME DESTINATION "${BIN_INSTALL_DIR}"
+ LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
+ ARCHIVE DESTINATION "${LIB_INSTALL_DIR}")
+
+IF(WITH_MYSQLCOMPAT)
+ INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ DESTINATION ${LIB_INSTALL_DIR})
INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient_r${CMAKE_SHARED_LIBRARY_SUFFIX}"
- "${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}"
- DESTINATION ${LIB_INSTALL_DIR}/mariadb)
+ DESTINATION ${BIN_INSTALL_DIR})
ENDIF()
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/include/

View File

@ -0,0 +1,11 @@
--- include/mysql.h.orig 2015-02-03 12:34:33.527518619 -0700
+++ include/mysql.h 2015-02-03 12:34:41.327637274 -0700
@@ -80,7 +80,7 @@
extern unsigned int mysql_port;
extern char *mysql_unix_port;
-extern uint mariadb_deinitialize_ssl;
+extern unsigned int mariadb_deinitialize_ssl;
#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)

View File

@ -0,0 +1,11 @@
--- include/my_global.h.orig 2015-02-02 22:18:57.873440040 -0700
+++ include/my_global.h 2015-02-02 22:17:45.125574689 -0700
@@ -451,7 +451,7 @@
#define NO_PISAM /* Not needed anymore */
#define NO_MISAM /* Not needed anymore */
#define NO_HASH /* Not needed anymore */
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(__MINGW32__)
#define NO_DIR_LIBRARY /* Not standar dir-library */
#define USE_MY_STAT_STRUCT /* For my_lib */
#ifdef _SIZE_T_DEFINED

View File

@ -0,0 +1,28 @@
--- libmariadb/dbug.c 2014-04-04 04:21:01.000000000 -0600
+++ libmariadb/dbug.c 2015-01-24 16:47:13.316693150 -0700
@@ -2050,11 +2050,7 @@
}
else
{
-#ifdef _WIN32
- if (fopen_s(&fp, name, append ? "a+" : "w"))
-#else
if (!(fp= fopen(name, append ? "a+" : "w")))
-#endif
{
(void) fprintf(stderr, ERR_OPEN, cs->process, name);
perror("");
--- libmariadb/my_fopen.c 2014-04-04 04:21:01.000000000 -0600
+++ libmariadb/my_fopen.c 2015-01-24 16:46:10.735766900 -0700
@@ -36,11 +36,7 @@
FileName, Flags, MyFlags));
make_ftype(type,Flags);
-#ifdef _WIN32
- if (fopen_s(&fd, FileName, type) == 0)
-#else
if ((fd = fopen(FileName, type)) != 0)
-#endif
{
/*
The test works if MY_NFILE < 128. The problem is that fileno() is char

View File

@ -6,7 +6,7 @@
pkgname=mingw-w64-mariadb-connector-c
pkgver=2.2.3
pkgrel=1
pkgrel=2
pkgdesc="MariaDB Connector/C is used to connect applications developed in C/C++ to MariaDB and MySQL databases (mingw-w64)"
arch=('any')
url="https://mariadb.com/kb/en/mariadb/about-mariadb-connector-c"
@ -22,7 +22,7 @@ source=("https://downloads.mariadb.org/interstitial/connector-c-${pkgver}/mariad
'use_fopen_for_xp_compatibility.patch'
'fix-size-t-defined.patch')
sha1sums=('89031eeb4cf56affea30a3d66ff2c6c29462da3d'
'b0e496dc054e2a328dab17cf4de7bd169789f9d7'
'd80d94dfe46bf02cb3934ff493070f7b8cb455d9'
'dcf3d766ae6faf99aa93d1444e3b200c4f80c4f1'
'4d1b01a0f800b15ad6e44e387f2f8d8c147cdea3')
@ -33,7 +33,6 @@ prepare() {
patch -p0 -i "$srcdir/fix-libnames-mingw.patch"
patch -p0 -i "$srcdir/use_fopen_for_xp_compatibility.patch"
patch -p0 -i "$srcdir/fix-size-t-defined.patch"
#patch -p0 -i "$srcdir/fix-qt5-uint-error.patch"
}
build() {

View File

@ -1,5 +1,5 @@
--- ./libmariadb/CMakeLists.txt.orig 2016-04-12 12:34:11.000000000 +0200
+++ ./libmariadb/CMakeLists.txt 2016-05-31 01:51:37.812346400 +0200
--- libmariadb/CMakeLists.txt.orig 2016-04-12 12:34:11.000000000 +0200
+++ libmariadb/CMakeLists.txt 2016-05-31 22:48:06.757700300 +0200
@@ -1,7 +1,7 @@
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
@ -108,6 +108,15 @@
../zlib/compress.c
../zlib/crc32.c
../zlib/deflate.c
@@ -356,7 +356,7 @@
ENDIF()
IF(WIN32)
- SET_VERSION_INFO("TARGET:libmariadb"
+ SET_VERSION_INFO("TARGET:mariadb"
"FILE_TYPE:VFT_DLL"
"SOURCE_FILE:libmariadb/libmariadb.c"
"ORIGINAL_FILE_NAME:libmariadb.dll"
@@ -368,7 +368,7 @@
"FILE_DESCRIPTION:Static lib for client/server communication")
ENDIF()
@ -123,7 +132,7 @@
-ADD_LIBRARY(libmariadb SHARED ${libmariadb_RC} $<TARGET_OBJECTS:mariadb_obj> ${EMPTY_FILE} ${EXPORT_LINK})
-TARGET_LINK_LIBRARIES(libmariadb ${SYSTEM_LIBS})
+ADD_LIBRARY(mariadb SHARED ${libmariadb_RC} $<TARGET_OBJECTS:mariadb_obj> ${EMPTY_FILE} ${EXPORT_LINK})
+ADD_LIBRARY(mariadb SHARED ${libmariadb_RC} ${LIBMARIADB_SOURCES} ${EMPTY_FILE})
+TARGET_LINK_LIBRARIES(mariadb ${SYSTEM_LIBS})
IF(UNIX)
- SET_TARGET_PROPERTIES(libmariadb PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")