72 lines
1.9 KiB
CMake
72 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
project(kgg-dec VERSION 0.6.0 LANGUAGES CXX)
|
|
|
|
option(USE_SYSTEM_SQLITE3 "Use system SQLite3 (if not using WinSQLite3)" ON)
|
|
option(USE_OPENSSL "Use OpenSSL API (if not using WinCrypto API)" ON)
|
|
|
|
if(WIN32)
|
|
option(USE_WIN_SQLITE3 "Use Windows SQLite3 (MSVC Only)" ${MSVC})
|
|
option(USE_WIN_CRYPTO "Use Windows Crypto API" ${WIN32})
|
|
else()
|
|
set(USE_WIN_SQLITE3 OFF)
|
|
set(USE_WIN_CRYPTO OFF)
|
|
endif()
|
|
|
|
# Setup CryptoAPI
|
|
if (NOT USE_WIN_CRYPTO AND USE_OPENSSL)
|
|
find_package(OpenSSL REQUIRED)
|
|
endif()
|
|
|
|
include(cmake/SetupSQLite3.cmake)
|
|
add_subdirectory(third-party/aes)
|
|
add_subdirectory(third-party/md5)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
add_executable(kgg-dec
|
|
src/main.cpp
|
|
src/common/base64.cpp
|
|
src/infra/infra.cpp
|
|
src/tc_tea/tc_tea.cpp
|
|
src/qmc2/ekey.cpp
|
|
src/qmc2/qmc2_factory.cpp
|
|
src/qmc2/qmc2_map.cpp
|
|
src/qmc2/qmc2_rc4.cpp
|
|
src/utils/cli.cpp
|
|
)
|
|
|
|
target_include_directories(kgg-dec
|
|
PRIVATE
|
|
src/common
|
|
src/tc_tea
|
|
)
|
|
|
|
# Base crypto implementations
|
|
target_link_libraries(kgg-dec PRIVATE libaes libmd5)
|
|
if (USE_WIN_CRYPTO)
|
|
target_compile_definitions(kgg-dec PRIVATE USE_WIN_CRYPTO=1)
|
|
elseif(USE_OPENSSL)
|
|
target_compile_definitions(kgg-dec PRIVATE USE_OPENSSL=1)
|
|
endif ()
|
|
|
|
# Win32 specific
|
|
if (WIN32)
|
|
target_link_libraries(kgg-dec PRIVATE shell32 ole32)
|
|
target_compile_definitions(kgg-dec PRIVATE NOMINMAX)
|
|
endif ()
|
|
|
|
# SQLite3
|
|
if (WinSQLite3_Found)
|
|
target_link_libraries(kgg-dec PRIVATE WinSQLite3)
|
|
target_include_directories(kgg-dec PRIVATE ${WindowsKitInclude})
|
|
elseif(SQLite3_FOUND)
|
|
target_link_libraries(kgg-dec PRIVATE SQLite::SQLite3)
|
|
else ()
|
|
target_link_libraries(kgg-dec PRIVATE sqlite3)
|
|
endif ()
|
|
|
|
# Extra definitions
|
|
target_compile_definitions(kgg-dec PRIVATE KGGDEC_PROJECT_VERSION="${PROJECT_VERSION}")
|