use default cmake for detection

This commit is contained in:
tooomm 2026-09-13 14:05:20 +02:00
parent 4ba06597f9
commit e9ff825cc3

View file

@ -20,12 +20,12 @@ set(servatrice_SOURCES
src/settingscache.cpp src/settingscache.cpp
src/isl_interface.cpp src/isl_interface.cpp
src/signalhandler.cpp src/signalhandler.cpp
${VERSION_STRING_CPP}
src/smtpclient.cpp src/smtpclient.cpp
src/smtp/qxthmac.cpp src/smtp/qxthmac.cpp
src/smtp/qxtmailattachment.cpp src/smtp/qxtmailattachment.cpp
src/smtp/qxtmailmessage.cpp src/smtp/qxtmailmessage.cpp
src/smtp/qxtsmtp.cpp src/smtp/qxtsmtp.cpp
${VERSION_STRING_CPP}
) )
set(servatrice_RESOURCES servatrice.qrc) set(servatrice_RESOURCES servatrice.qrc)
@ -52,39 +52,24 @@ qt6_add_resources(servatrice_RESOURCES_RCC ${servatrice_RESOURCES})
set(QT_DONT_USE_QTGUI TRUE) set(QT_DONT_USE_QTGUI TRUE)
# Mysql connector # MySQL/MariaDB connector using find_package
if(UNIX) # Try MySQL first, then fall back to MariaDB
if(APPLE) find_package(mySQL QUIET)
set(MYSQLCLIENT_DEFAULT_PATHS "/usr/local/lib" "/opt/local/lib/mysql55/mysql/" "/opt/local/lib/mysql56/mysql/") if(NOT MySQL_FOUND)
else() find_package(MariaDB QUIET)
set(MYSQLCLIENT_DEFAULT_PATHS "/usr/lib64" "/usr/local/lib64" "/usr/lib" "/usr/local/lib")
endif()
elseif(WIN32)
set(MYSQLCLIENT_DEFAULT_PATHS "C:\\Program Files\\MySQL\\MySQL Server 5.7\\lib"
"C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib"
)
endif() endif()
find_library( if(MySQL_FOUND)
MYSQL_CLIENT_LIBRARIES set(MYSQLCLIENT_FOUND TRUE CACHE INTERNAL "")
NAMES mysqlclient message(STATUS "Found MySQL connector: ${MYSQL_LIBRARIES} (found version \"${MySQL_VERSION}\")")
PATHS ${MYSQLCLIENT_DEFAULT_PATHS} set(MYSQL_CLIENT_TARGET MySQL::MySQL)
PATH_SUFFIXES mysql mariadb elseif(MariaDB_FOUND)
) set(MYSQLCLIENT_FOUND TRUE CACHE INTERNAL "")
if(${MYSQL_CLIENT_LIBRARIES} MATCHES "NOTFOUND") message(STATUS "Found MariaDB connector: ${MariaDB_LIBRARIES} (found version \"${MariaDB_VERSION}\")")
set(MYSQLCLIENT_FOUND set(MYSQL_CLIENT_TARGET MariaDB::MariaDB)
FALSE
CACHE INTERNAL ""
)
message(STATUS "MySQL connector NOT FOUND: Servatrice won't be able to connect to a MySQL server")
unset(MYSQL_CLIENT_LIBRARIES)
else() else()
set(MYSQLCLIENT_FOUND set(MYSQLcLIENT_FOUND FALSE CACHE INTERNAL "")
TRUE message(STATUS "MySQL/MariaDB connector NOT FOUND: Servatrice won't be able to connect to a MySQL/MariaDB server")
CACHE INTERNAL ""
)
get_filename_component(MYSQLCLIENT_LIBRARY_DIR ${MYSQL_CLIENT_LIBRARIES} PATH)
message(STATUS "Found MySQL connector at: ${MYSQL_CLIENT_LIBRARIES}")
endif() endif()
# Declare path variables # Declare path variables
@ -97,7 +82,7 @@ set(DESKTOPDIR
CACHE STRING "desktop file destination" CACHE STRING "desktop file destination"
) )
# Build servatrice binary and link it # Build Servatrice binary and link it
add_executable(servatrice MACOSX_BUNDLE ${servatrice_MOC_SRCS} ${servatrice_RESOURCES_RCC} ${servatrice_SOURCES}) add_executable(servatrice MACOSX_BUNDLE ${servatrice_MOC_SRCS} ${servatrice_RESOURCES_RCC} ${servatrice_SOURCES})
target_precompile_headers(servatrice PRIVATE "${CMAKE_SOURCE_DIR}/cmake/pch/qtcore_pch.h") target_precompile_headers(servatrice PRIVATE "${CMAKE_SOURCE_DIR}/cmake/pch/qtcore_pch.h")
@ -107,15 +92,21 @@ if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD")
servatrice libcockatrice_deck_list libcockatrice_network_server_remote Threads::Threads ${SERVATRICE_QT_MODULES} servatrice libcockatrice_deck_list libcockatrice_network_server_remote Threads::Threads ${SERVATRICE_QT_MODULES}
${LIBEXECINFO_LIBRARY} ${LIBEXECINFO_LIBRARY}
) )
else() if(MYSQLCLIENT_FOUND)
target_link_libraries(servatrice ${MYSQL_CLIENT_TARGET})
endif()
else
target_link_libraries( target_link_libraries(
servatrice libcockatrice_deck_list libcockatrice_network_server_remote Threads::Threads ${SERVATRICE_QT_MODULES} servatrice libcockatrice_deck_list libcockatrice_network_server_remote Threads::Threads ${SERVATRICE_QT_MODULES}
) )
if(MYSQLCLIENT_FOUND)
target_link_libraries(servatrice ${MYSQL_CLIENT_TARGET})
endif()
endif() endif()
# install rules # Install rules
if(UNIX) if(UNIX)
if(APPLE) if(APPLE) # macOS
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
@ -126,8 +117,7 @@ if(UNIX)
install(TARGETS servatrice BUNDLE DESTINATION ./) install(TARGETS servatrice BUNDLE DESTINATION ./)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./servatrice.app/Contents/Resources/) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./servatrice.app/Contents/Resources/)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./servatrice.app/Contents/Resources/) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./servatrice.app/Contents/Resources/)
else() else() # Assume Linux
# Assume linux
install(TARGETS servatrice RUNTIME DESTINATION bin/) install(TARGETS servatrice RUNTIME DESTINATION bin/)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION share/servatrice/) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION share/servatrice/)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION share/servatrice/) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION share/servatrice/)
@ -136,18 +126,18 @@ if(UNIX)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.desktop DESTINATION ${DESKTOPDIR}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.desktop DESTINATION ${DESKTOPDIR})
endif() endif()
elseif(WIN32) elseif(WIN32) # Windows (including 64bit)
install(TARGETS servatrice RUNTIME DESTINATION ./) install(TARGETS servatrice RUNTIME DESTINATION ./)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./)
endif() endif()
if(APPLE) if(APPLE) # macOS
# these needs to be relative to CMAKE_INSTALL_PREFIX # These needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir servatrice.app/Contents/Plugins) set(plugin_dest_dir servatrice.app/Contents/Plugins)
set(qtconf_dest_dir servatrice.app/Contents/Resources) set(qtconf_dest_dir servatrice.app/Contents/Resources)
# Qt plugins: platforms, sqldrivers/mysql, tls (Qt6) # Qt plugins: platforms, sqldrivers/mysql, tls
install( install(
DIRECTORY "${QT_PLUGINS_DIR}/" DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir} DESTINATION ${plugin_dest_dir}
@ -181,8 +171,8 @@ Translations = Resources/translations\")
) )
endif() endif()
if(WIN32) if(WIN32) # Windows (including 64bit)
# these needs to be relative to CMAKE_INSTALL_PREFIX # These needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir Plugins) set(plugin_dest_dir Plugins)
set(qtconf_dest_dir .) set(qtconf_dest_dir .)
@ -193,7 +183,7 @@ if(WIN32)
PATTERN "*.dll" PATTERN "*.dll"
) )
# Qt plugins: platforms, sqldrivers, tls (Qt6) # Qt plugins: platforms, sqldrivers, tls
install( install(
DIRECTORY "${QT_PLUGINS_DIR}/" DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir} DESTINATION ${plugin_dest_dir}
@ -203,12 +193,12 @@ if(WIN32)
PATTERN "platforms/qminimal.dll" PATTERN "platforms/qminimal.dll"
PATTERN "platforms/qoffscreen.dll" PATTERN "platforms/qoffscreen.dll"
PATTERN "platforms/qwindows.dll" PATTERN "platforms/qwindows.dll"
PATTERN "tls/qcertonlybackend.dll"
PATTERN "tls/qopensslbackend.dll"
PATTERN "tls/qschannelbackend.dll"
PATTERN "sqldrivers/qsqlite.dll" PATTERN "sqldrivers/qsqlite.dll"
PATTERN "sqldrivers/qsqlodbc.dll" PATTERN "sqldrivers/qsqlodbc.dll"
PATTERN "sqldrivers/qsqlpsql.dll" PATTERN "sqldrivers/qsqlpsql.dll"
PATTERN "tls/qcertonlybackend.dll"
PATTERN "tls/qopensslbackend.dll"
PATTERN "tls/qschannelbackend.dll"
) )
install( install(