Skip to content

Commit

Permalink
Close #537: macos: Compile mariadb-connector and qsqlmysql
Browse files Browse the repository at this point in the history
and include them into the app.
This enables Mariadb/Mysql for Mac OSX

Related to #285
  • Loading branch information
chris2511 committed Oct 1, 2024
1 parent a14e045 commit b2869e0
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 25 deletions.
2 changes: 1 addition & 1 deletion doc/xca.1.tail
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Outputs the commandline arguments in man-page nroff, sphinx rst or as
oneline list for command-completion to automatically update the documentation
if new arguments are added.
.TP
.B QPSQL_OPTIONS QMYSQL_OPTIONS QODBC_OPTIONS
.B XCA_QPSQL_OPTIONS XCA_QMYSQL_OPTIONS XCA_QODBC_OPTIONS
Additional connection options for the SQL database drivers as described in
https://doc.qt.io/qt-5/qsqldatabase.html#setConnectOptions like
\fIQPSQL_OPTIONS=requiressl=1\fR
Expand Down
105 changes: 81 additions & 24 deletions release/build-mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ do_openssl()
{
test -x $INSTALL_DIR/lib/libcrypto.dylib && return

test -f "$OSSL".tar.gz || curl -L -O https://www.openssl.org/source/"$OSSL".tar.gz
test -f "$OSSL".tar.gz || curl -L -O https://github.com/openssl/openssl/releases/download/$OSSL/${OSSL}.tar.gz
test -d "$OSSL" || tar zxf "$OSSL".tar.gz
mkdir -p ${INSTALL_DIR}/lib
for arch in x86_64 arm64; do
Expand All @@ -25,43 +25,94 @@ do_openssl()
lipo -create -output "$INSTALL_DIR"/lib/libssl.${OSSL_MAJOR}.dylib $PARTS_ssl
}

# need to install ninja via "brew install ninja"
do_mysql()
do_zstd()
{
PLUGIN="$QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib"
#test -f "$PLUGIN" && return
ZSTDV=1.5.6
ARCHIVE=zstd-${ZSTDV}.tar.gz
test -f $ARCHIVE || curl -L https://github.com/facebook/zstd/archive/refs/tags/v${ZSTDV}.tar.gz -o ${ARCHIVE}
for arch in x86_64 arm64; do
ZBUILD=zstd-${arch}
mkdir -p "$ZBUILD"
(cd "$ZBUILD"
tar -zxf ../${ARCHIVE} --strip-components 1
export CFLAGS="-target ${arch}-apple-macos11 -mmacosx-version-min=$SDK"
export PREFIX="$INSTALL_DIR"
make -j5 && make install
)
# DESTDIR="$INSTALL_DIR" make install
PARTS_dylib="$PARTS_dylib $ZBUILD/lib/libzstd.dylib"
PARTS_a="$PARTS_a $ZBUILD/lib/libzstd.a"
done
rm -f "$INSTALL_DIR"/lib/libzstd.dylib "$INSTALL_DIR"/lib/libzstd.a
lipo -create -output "$INSTALL_DIR"/lib/libzstd.dylib $PARTS_dylib
lipo -create -output "$INSTALL_DIR"/lib/libzstd.a $PARTS_a
}

do_mariadb_connector_c()
{
REPO=mariadb-connector-c-3.4.1-src
ARCHIVE=${REPO}.tar.gz
test -f $ARCHIVE || curl -LO https://mirror.kumi.systems/mariadb/connector-c-3.4.1/$ARCHIVE
test -d $REPO || tar zxf "$ARCHIVE"
B="$TOP_DIR/mariadb-build"
mkdir -p ${B}
cmake -B ${B} -DCMAKE_C_FLAGS=-Wno-deprecated-non-prototype \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_PREFIX_PATH="$INSTALL_DIR" \
-DINSTALL_LIBDIR=lib \
$TOP_DIR/mariadb-connector-c-3.3.7-src
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_PREFIX_PATH="$INSTALL_DIR" \
-DINSTALL_LIBDIR=lib -DCMAKE_MACOSX_RPATH=1 \
-DWITH_EXTERNAL_ZLIB=OFF \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$SDK \
-S $TOP_DIR/$REPO
cmake --build ${B} -j$JOBS
cmake --install ${B} --prefix="$INSTALL_DIR"
}

#############################

# need to install ninja via "brew install ninja"
do_qsqlmysql()
{
PLUGIN="$QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib"
# test -f "$PLUGIN" && return
SQL_BUILD="$TOP_DIR/build-sqlplugins"
( cd "$QT_DIR/../Src/qtbase"
./configure -cmake-generator Ninja -release -no-feature-x86intrin -sql-mysql \
CMAKE_BUILD_TYPE=Release \
CMAKE_PREFIX_PATH="$INSTALL_DIR" \
CMAKE_OSX_DEPLOYMENT_TARGET=$SDK \
DMySQL_ROOT="$INSTALL_DIR" \
FEATURE_sql_odbc=OFF FEATURE_sql_sqlite=OFF
)

rm -rf "$SQL_BUILD"
mkdir -p "$SQL_BUILD"

cmake -B $SQL_BUILD \
-DCMAKE_INSTALL_PREFIX="$QT_DIR" \
cmake -B $SQL_BUILD -G "Ninja" \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DMySQL_INCLUDE_DIR="$INSTALL_DIR/include/mariadb" \
-DMySQL_LIBRARY="$INSTALL_DIR/lib/libmariadb.dylib" \
-DFEATURE_sql_odbc=OFF -DFEATURE_sql_sqlite=OFF \
-DCMAKE_INSTALL_PREFIX="$QT_DIR" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$SDK \
-DMySQL_ROOT="$INSTALL_DIR" \
"$QT_DIR/../Src/qtbase/src/plugins/sqldrivers"

cmake --build $SQL_BUILD -j$JOBS
cmake --build $SQL_BUILD -j$JOBS -v
cmake --install $SQL_BUILD
install_name_tool -change libmariadb.3.dylib "$INSTALL_DIR"/lib/libmariadb.3.dylib \
$QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib
file $QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib
file $SQL_BUILD/plugins/sqldrivers/libqsqlmysql.dylib
install_name_tool -change @rpath/libmariadb.3.dylib\
"$INSTALL_DIR"/lib/libmariadb.3.dylib \
$QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib

file $QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib
file $SQL_BUILD/plugins/sqldrivers/libqsqlmysql.dylib
otool -L $QT_DIR/plugins/sqldrivers/libqsqlmysql.dylib
}

( echo >/dev/null \
-DCMAKE_BUILD_TYPE=Release \
-DMySQL_ROOT="$INSTALL_DIR" \
-DMySQL_INCLUDE_DIR="$INSTALL_DIR/include/mariadb" \
-DMySQL_LIBRARY="$INSTALL_DIR/lib/libmariadb.dylib" \
-DFEATURE_sql_odbc=OFF -DFEATURE_sql_sqlite=OFF \

)

OSSL_MAJOR="3"
OSSL="openssl-3.3.2"
XCA_DIR="$(cd `dirname $0`/.. && pwd)"
Expand All @@ -76,14 +127,19 @@ SDK="11.0"
JOBS=7

cd $TOP_DIR

do_openssl
# Only builds x86_64 binaries, hell knows why...
# do_mysql
#do_zstd
#do_mariadb_connector_c
# aqt install-src mac 6.6.3 --archives qtbase
# qtbase/src/plugins/sqldrivers/mysql/CMakeLists.txt:
# -qt_internal_force_macos_intel_arch(QMYSQLDriverPlugin)
# do_qsqlmysql


cmake -B "$BUILDDIR" "$XCA_DIR" \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_PREFIX_PATH="$QT_DIR/lib/cmake;$INSTALL_DIR" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$SDK

cmake --build "$BUILDDIR" -j$JOBS
Expand All @@ -102,6 +158,7 @@ cmake -B "$BUILDDIR_APPSTORE" "$XCA_DIR" \
-DCMAKE_PREFIX_PATH="$QT_DIR/lib/cmake;$INSTALL_DIR" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$SDK \
-DAPPSTORE_COMPLIANT=ON \
-DCMAKE_BUILD_TYPE=Release \
-DPROVISIONPROFILE="$TOP_DIR/XCA_AppStore_Provisioning.provisionprofile"

read xca_version < "$BUILDDIR_APPSTORE"/PKGVERSION.txt
Expand Down

0 comments on commit b2869e0

Please sign in to comment.