Description: Support linking against system-wide libmariadb-dev
Author: Sebastien Jodogne <s.jodogne@orthanc-labs.com>
Forwarded: https://orthanc.uclouvain.be/hg/orthanc-databases/rev/814994b3ba16
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: OrthancMySQL-5.0/Resources/CMake/MariaDBConfiguration.cmake
===================================================================
--- OrthancMySQL-5.0.orig/Resources/CMake/MariaDBConfiguration.cmake
+++ OrthancMySQL-5.0/Resources/CMake/MariaDBConfiguration.cmake
@@ -2,7 +2,8 @@
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
 # Copyright (C) 2017-2023 Osimis S.A., Belgium
-# Copyright (C) 2021-2023 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
+# Copyright (C) 2024-2026 Orthanc Team SRL, Belgium
+# Copyright (C) 2021-2026 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Affero General Public License
@@ -25,7 +26,7 @@ if (STATIC_BUILD OR NOT USE_SYSTEM_MYSQL
   set(MARIADB_PACKAGE_VERSION "3.1.11")
   set(MARIADB_CLIENT_SOURCES_DIR ${CMAKE_BINARY_DIR}/mariadb-connector-c-${MARIADB_PACKAGE_VERSION}-src)
   set(MARIADB_CLIENT_MD5 "cf9da5f0ac9ec72dd8309bdc1d1c6c2f")
-  set(MARIADB_CLIENT_URL "https://orthanc.uclouvain.be/third-party-downloads/mariadb-connector-c-${MARIADB_PACKAGE_VERSION}-src.tar.gz")
+  set(MARIADB_CLIENT_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/mariadb-connector-c-${MARIADB_PACKAGE_VERSION}-src.tar.gz")
 
   if (IS_DIRECTORY "${MARIADB_CLIENT_SOURCES_DIR}")
     set(FirstRun OFF)
@@ -152,9 +153,12 @@ if (STATIC_BUILD OR NOT USE_SYSTEM_MYSQL
   endif()
 
 else()
+  # The MariaDB and the MySQL client libraries provide the same C interface
   find_path(MYSQLCLIENT_INCLUDE_DIR mysql.h
-    /usr/local/include/mysql
+    /usr/include/mariadb
     /usr/include/mysql
+    /usr/local/include/mariadb
+    /usr/local/include/mysql
     )
 
   if (MYSQLCLIENT_INCLUDE_DIR)
@@ -164,23 +168,46 @@ else()
 
   check_include_file(mysql.h HAVE_MYSQL_CLIENT_H)
   if (NOT HAVE_MYSQL_CLIENT_H)
-    message(FATAL_ERROR "Please install the libmysqlclient-dev package")
+    message(FATAL_ERROR "Please install the libmariadb-dev or libmysqlclient-dev package")
   endif()
 
-  find_library(MYSQL_CLIENT_LIB NAMES mysqlclient PATHS
-    /usr/lib/mysql
-    /usr/local/lib/mysql
+
+  # Select MariaDB client library by default, if available
+  find_library(MARIADB_CLIENT_LIB NAMES mariadbclient PATHS
+    /usr/lib/
+    /usr/local/lib/
     )
-  
-  if (MYSQL_CLIENT_LIB)
-    check_library_exists(${MYSQL_CLIENT_LIB} mysql_init "" HAVE_MYSQL_CLIENT_LIB)
-    if (NOT HAVE_MYSQL_CLIENT_LIB)
-      message(FATAL_ERROR "Unable to use mysql_init from mysqlclient library")
-    endif()    
-    get_filename_component(MYSQL_CLIENT_LIB_PATH ${MYSQL_CLIENT_LIB} DIRECTORY)
-    link_directories(${MYSQL_CLIENT_LIB_PATH})
-    link_libraries(mysqlclient)
+
+  if (MARIADB_CLIENT_LIB)
+    check_library_exists(${MARIADB_CLIENT_LIB} mysql_init "" HAVE_MARIADB_CLIENT_LIB)
+    if (NOT HAVE_MARIADB_CLIENT_LIB)
+      message(FATAL_ERROR "Unable to use mysql_init from mariadbclient library")
+    endif()
+    get_filename_component(MARIADB_CLIENT_LIB_PATH ${MARIADB_CLIENT_LIB} DIRECTORY)
+    link_directories(${MARIADB_CLIENT_LIB_PATH})
+    link_libraries(mariadbclient)
+
   else()
-     message(FATAL_ERROR "Unable to find the mysqlclient library")
-   endif()
+
+    # No MariaDB client library, fallback to the MySQL client library
+    find_library(MYSQL_CLIENT_LIB NAMES mysqlclient PATHS
+      /usr/lib/mysql
+      /usr/local/lib/mysql
+      )
+
+    if (MYSQL_CLIENT_LIB)
+      check_library_exists(${MYSQL_CLIENT_LIB} mysql_init "" HAVE_MYSQL_CLIENT_LIB)
+      if (NOT HAVE_MYSQL_CLIENT_LIB)
+        message(FATAL_ERROR "Unable to use mysql_init from mysqlclient library")
+      endif()
+      get_filename_component(MYSQL_CLIENT_LIB_PATH ${MYSQL_CLIENT_LIB} DIRECTORY)
+      link_directories(${MYSQL_CLIENT_LIB_PATH})
+      link_libraries(mysqlclient)
+    else()
+
+      # Neither the MariaDB, not the MySQL client library is available
+      message(FATAL_ERROR "Unable to find the mariadbclient or mysqlclient library")
+
+    endif()
+  endif()
 endif()
