project(siadrive) include(ExternalProject) cmake_minimum_required(VERSION 3.3) if (NOT DEFINED CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) endif() #Common Configuration Pre-setup set(3RD_PARTY_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/ttmath-0.9.3) set(COMMON_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include/siadrive_api) add_definitions(-DTTMATH_NOASM) #SiaDrive API Library file(GLOB_RECURSE SIADRIVE_API_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cxx ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.c) add_library(siadrive.api SHARED ${SIADRIVE_API_SOURCES}) set_target_properties(siadrive.api PROPERTIES COMPILE_FLAGS -DSIADRIVE_EXPORT_SYMBOLS ) if (MSVC OR MINGW) target_link_libraries(siadrive.api Shlwapi.lib Ws2_32.lib crypt32.lib winmm.lib) endif() if (MSVC) ExternalProject_Add(curl_project URL https://github.com/curl/curl/archive/curl-7_53_1.tar.gz PREFIX ${CMAKE_BINARY_DIR}/external/builds/curl CMAKE_ARGS -DCURL_STATICLIB=ON -DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF -DCURL_DISABLE_LDAP=ON -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/external/) ExternalProject_Add(sqlitecpp_project URL https://github.com/SRombauts/SQLiteCpp/archive/2.0.0.tar.gz PREFIX ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp CMAKE_ARGS -DSQLITECPP_RUN_CPPLINT=OFF -DSQLITECPP_RUN_CPPCHECK=OFF INSTALL_COMMAND cmake -E echo "Skipping install step.") add_definitions(-DCURL_STATICLIB=ON -DCURL_DISABLE_LDAP=ON) add_dependencies(siadrive.api curl_project sqlitecpp_project) set(3RD_PARTY_INCLUDES ${3RD_PARTY_INCLUDES} ${CMAKE_BINARY_DIR}/external/include ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project/sqlite3 ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project/include/) target_link_libraries(siadrive.api ${CMAKE_BINARY_DIR}/external/lib/libcurl.lib ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project-build/sqlite3/${CMAKE_BUILD_TYPE}/sqlite3.lib ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project-build/${CMAKE_BUILD_TYPE}/SQLiteCpp.lib) endif() if (MSVC OR MINGW) #Sia Dokan file(GLOB_RECURSE SIADRIVE_DOKAN_API_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cxx ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.c) add_library(siadrive.dokan.api SHARED ${SIADRIVE_DOKAN_API_SOURCES}) set_target_properties(siadrive.dokan.api PROPERTIES COMPILE_FLAGS -DSIADRIVE_EXPORT_SYMBOLS ) target_link_libraries(siadrive.dokan.api siadrive.api ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/Dokan\ Library-1.0.2/lib/dokan1.lib) set(3RD_PARTY_INCLUDES ${3RD_PARTY_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/Dokan\ Library-1.0.2/include/dokan ${CMAKE_CURRENT_SOURCE_DIR}/include/siadrive_dokan_api) endif() #Common Configuration Post-setup include_directories(${3RD_PARTY_INCLUDES} ${COMMON_INCLUDES})