Skip to content

Commit

Permalink
CMake: Refactor deps
Browse files Browse the repository at this point in the history
  • Loading branch information
Iswenzz committed Sep 25, 2023
1 parent 2347b15 commit 1b5878e
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 31 deletions.
5 changes: 4 additions & 1 deletion .vcpkg/linux.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
file(TO_CMAKE_PATH $ENV{VCPKG_ROOT} VCPKG_ROOT)
set(VCPKG_TARGET_TRIPLET x86-linux-static)

option(BUILD_TESTING "Build tests" OFF)
if(BUILD_TESTING)
list(APPEND VCPKG_MANIFEST_FEATURES "tests")
endif()

if(NOT DEFINED ENV{VCPKG_ROOT})
message(FATAL_ERROR "ERROR: VCPKG_ROOT environment variable is not defined. Please set it to the root directory of your vcpkg installation.")
endif()
file(TO_CMAKE_PATH $ENV{VCPKG_ROOT} VCPKG_ROOT)
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
5 changes: 4 additions & 1 deletion .vcpkg/windows.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
file(TO_CMAKE_PATH $ENV{VCPKG_ROOT} VCPKG_ROOT)
set(VCPKG_TARGET_TRIPLET x86-mingw-static)

option(BUILD_TESTING "Build tests" OFF)
if(BUILD_TESTING)
list(APPEND VCPKG_MANIFEST_FEATURES "tests")
endif()

if(NOT DEFINED ENV{VCPKG_ROOT})
message(FATAL_ERROR "ERROR: VCPKG_ROOT environment variable is not defined. Please set it to the root directory of your vcpkg installation.")
endif()
file(TO_CMAKE_PATH $ENV{VCPKG_ROOT} VCPKG_ROOT)
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
41 changes: 12 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ set(CMAKE_C_FLAGS "-m32 -Wall -O1 -g -mtune=core2 -fvisibility=hidden -Wno-unuse
set(CMAKE_SHARED_LINKER_FLAGS "-m32 -g -shared -static-libgcc -static-libstdc++")
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_STATIC_LIBRARY_PREFIX "")

# CMake
add_definitions(-D_CRT_SECURE_NO_WARNINGS -DWIN32_LEAN_AND_MEAN)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

# CPack
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
Expand All @@ -17,19 +20,11 @@ include(CPack)

# Dependencies
find_path(CGSC_INCLUDE_DIRS "CGSC/cgsc.h")
find_path(LIBMARIADB_INCLUDE_DIRS "mysql/mysql.h")
find_library(CURL_LIBRARY libcurl.a)
find_library(BZ2_LIBRARY libbz2.a)
find_library(LIBCRYPTO_LIBRARY libcrypto.a)
find_library(LIBMARIADB_LIBRARY libmariadb.a)
find_library(LIBZIB_LIBRARY libzip.a)
find_library(OPENSSL_LIBRARY libssl.a)
find_library(PCRE2_LIBRARY libpcre2-8.a)
find_library(ZLIB_LIBRARY NAMES libzlib.a libz.a)
find_library(PCRE2_LIB pcre2-8)
find_package(Cwalk CONFIG REQUIRED)

# Includes
string(APPEND LIBMARIADB_INCLUDE_DIRS "/mysql")
find_package(Libcurl REQUIRED)
find_package(Libmariadb REQUIRED)
find_package(Libzip REQUIRED)

# Tests
if(BUILD_TESTING)
Expand All @@ -52,26 +47,14 @@ set_target_properties(gsclib PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ../../../../bin)

target_include_directories(gsclib PUBLIC ..
${CGSC_INCLUDE_DIRS}
${LIBMARIADB_INCLUDE_DIRS})
${CGSC_INCLUDE_DIRS})

target_link_libraries(gsclib PUBLIC
$<$<BOOL:${WIN32}>:com_plugin>
${CURL_LIBRARY}
${LIBMARIADB_LIBRARY}
${LIBZIB_LIBRARY}
${BZ2_LIBRARY}
${OPENSSL_LIBRARY}
${LIBCRYPTO_LIBRARY}
${PCRE2_LIBRARY}
${ZLIB_LIBRARY}
$<$<BOOL:${WIN32}>:crypt32>
$<$<BOOL:${WIN32}>:ws2_32>
$<$<BOOL:${WIN32}>:bcrypt>
$<$<BOOL:${WIN32}>:shlwapi>
$<$<BOOL:${UNIX}>:dl>
$<$<BOOL:${UNIX}>:rt>
$<$<BOOL:${UNIX}>:pthread>
${PCRE2_LIB}
curl::curl
libmariadb::libmariadb
libzip::libzip
cwalk)

target_link_directories(gsclib PUBLIC ..)
Expand Down
27 changes: 27 additions & 0 deletions cmake/FindLibcurl.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
find_path(CURL_INCLUDE_DIRS "curl/curl.h")
find_library(CURL_LIB curl)
find_library(ZLIB_LIB NAMES zlib z)
find_package(OpenSSL REQUIRED)

set(CURL_LIBS
${CURL_LIB}
${ZLIB_LIB}
openssl::openssl)

if(WIN32)
list(APPEND CURL_LIBS winmm ws2_32 advapi32 crypt32 bcrypt)
endif()

if(UNIX)
list(APPEND CURL_LIBS pthread)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libcurl DEFAULT_MSG CURL_LIBS CURL_INCLUDE_DIRS)
mark_as_advanced(CURL_LIBS CURL_INCLUDE_DIRS)

if(NOT TARGET curl::curl)
add_library(curl::curl INTERFACE IMPORTED)
set_property(TARGET curl::curl PROPERTY INTERFACE_LINK_LIBRARIES "${CURL_LIBS}")
set_property(TARGET curl::curl PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}")
endif()
27 changes: 27 additions & 0 deletions cmake/FindLibmariadb.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
find_path(LIBMARIADB_INCLUDE_DIRS "mysql/mysql.h")
find_library(LIBMARIADB_LIB mariadb)
find_library(ZLIB_LIB NAMES zlib z)
find_package(OpenSSL REQUIRED)

set(LIBMARIADB_LIBS
${LIBMARIADB_LIB}
${ZLIB_LIB}
openssl::openssl)

set(LIBMARIADB_INCLUDE_DIRS
${LIBMARIADB_INCLUDE_DIRS}
${LIBMARIADB_INCLUDE_DIRS}/mysql)

if(WIN32)
list(APPEND LIBMARIADB_LIBS ws2_32 advapi32 kernel32 shlwapi crypt32)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libmariadb DEFAULT_MSG LIBMARIADB_LIBS LIBMARIADB_INCLUDE_DIRS)
mark_as_advanced(LIBMARIADB_LIBS LIBMARIADB_INCLUDE_DIRS)

if(NOT TARGET libmariadb::libmariadb)
add_library(libmariadb::libmariadb INTERFACE IMPORTED)
set_property(TARGET libmariadb::libmariadb PROPERTY INTERFACE_LINK_LIBRARIES "${LIBMARIADB_LIBS}")
set_property(TARGET libmariadb::libmariadb PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LIBMARIADB_INCLUDE_DIRS}")
endif()
25 changes: 25 additions & 0 deletions cmake/FindLibzip.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
find_path(LIBZIP_INCLUDE_DIRS "zip.h")
find_library(LIBZIB_LIB zip)
find_library(BZ2_LIB bz2)
find_library(ZLIB_LIB NAMES zlib z)
find_package(OpenSSL REQUIRED)

set(LIBZIP_LIBS
${LIBZIB_LIB}
${BZ2_LIB}
${ZLIB_LIB}
openssl::openssl)

if(WIN32)
list(APPEND LIBZIP_LIBS advapi32)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libzip DEFAULT_MSG LIBZIP_LIBS LIBZIP_INCLUDE_DIRS)
mark_as_advanced(LIBZIP_LIBS LIBZIP_INCLUDE_DIRS)

if(NOT TARGET libzip::libzip)
add_library(libzip::libzip INTERFACE IMPORTED)
set_property(TARGET libzip::libzip PROPERTY INTERFACE_LINK_LIBRARIES "${LIBZIP_LIBS}")
set_property(TARGET libzip::libzip PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LIBZIP_INCLUDE_DIRS}")
endif()
23 changes: 23 additions & 0 deletions cmake/FindOpenSSL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
find_path(OPENSSL_INCLUDE_DIRS "openssl/ssl.h")
find_library(LIBCRYPTO_LIB crypto)
find_library(OPENSSL_LIB ssl)
find_library(ZLIB_LIB NAMES zlib z)

set(OPENSSL_LIBS
${OPENSSL_LIB}
${LIBCRYPTO_LIB}
${ZLIB_LIBRARY})

if(WIN32)
list(APPEND OPENSSL_LIBS ws2_32 gdi32 crypt32)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenSSL DEFAULT_MSG OPENSSL_LIBS OPENSSL_INCLUDE_DIRS)
mark_as_advanced(OPENSSL_LIBS OPENSSL_INCLUDE_DIRS)

if(NOT TARGET openssl::openssl)
add_library(openssl::openssl INTERFACE IMPORTED)
set_property(TARGET openssl::openssl PROPERTY INTERFACE_LINK_LIBRARIES "${OPENSSL_LIBS}")
set_property(TARGET openssl::openssl PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIRS}")
endif()

0 comments on commit 1b5878e

Please sign in to comment.