diff --git a/cmake/cmake.define b/cmake/cmake.define index cf7f45099414af86a6fe8bccfbbd8bb477c5b711..62777ee797a1829de49bf4d293cb1d49d8755c8a 100644 --- a/cmake/cmake.define +++ b/cmake/cmake.define @@ -80,7 +80,8 @@ ENDIF () IF (TD_WINDOWS) MESSAGE("${Yellow} set compiler flag for Windows! ${ColourReset}") - SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32 /Zi /MTd") + SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32") + SET(COMMON_FLAGS_DBG "/Zi /MTd") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") # IF (MSVC AND (MSVC_VERSION GREATER_EQUAL 1900)) # SET(COMMON_FLAGS "${COMMON_FLAGS} /Wv:18") @@ -98,8 +99,16 @@ IF (TD_WINDOWS) SET(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "" FORCE) ENDIF () - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}") + SET(CMAKE_C_FLAGS_REL "${CMAKE_C_FLAGS} ${COMMON_FLAGS}") + SET(CMAKE_CXX_FLAGS_REL "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}") + + IF (${BUILD_RELEASE}) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_REL}") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_REL}") + ELSE () + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_REL} ${COMMON_FLAGS_DBG}") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_REL} ${COMMON_FLAGS_DBG}") + ENDIF () SET(JEMALLOC_ENABLED OFF) diff --git a/cmake/cmake.platform b/cmake/cmake.platform index 76ac6ba004674386672d45302649b134a61d4cfd..66df57a056391175aefba9f05d615db258c9a551 100644 --- a/cmake/cmake.platform +++ b/cmake/cmake.platform @@ -179,6 +179,7 @@ ENDIF() MESSAGE(STATUS "Platform arch:" ${PLATFORM_ARCH_STR}) set(TD_DEPS_DIR "x86") +set(TD_CONTRIB_STATIC FALSE) if (TD_LINUX) IF (TD_ARM_64 OR TD_ARM_32) set(TD_DEPS_DIR "arm") @@ -187,6 +188,12 @@ if (TD_LINUX) ELSE() set(TD_DEPS_DIR "x86") ENDIF() + set(TD_CONTRIB_STATIC TRUE) +elseif (TD_WINDOWS) + IF (${PLATFORM_ARCH_STR} MATCHES "amd64") + set(TD_DEPS_DIR "x86/win64") + set(TD_CONTRIB_STATIC TRUE) + ENDIF() endif() MESSAGE(STATUS "DEPS_DIR: " ${TD_DEPS_DIR}) diff --git a/cmake/geos_CMakeLists.txt.in b/cmake/geos_CMakeLists.txt.in index f939ccead045fcab4c3aee14e86bb014ae39e8cb..9f489a1858a3d04e2bdab30815a634d0f4b8afa4 100644 --- a/cmake/geos_CMakeLists.txt.in +++ b/cmake/geos_CMakeLists.txt.in @@ -1,12 +1,14 @@ # geos -ExternalProject_Add(geos - GIT_REPOSITORY https://github.com/libgeos/geos.git - GIT_TAG 3.12.0 - SOURCE_DIR "${TD_CONTRIB_DIR}/geos" - BINARY_DIR "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) +if (${BUILD_CONTRIB} OR NOT ${TD_CONTRIB_STATIC}) + ExternalProject_Add(geos + GIT_REPOSITORY https://github.com/libgeos/geos.git + GIT_TAG 3.12.0 + SOURCE_DIR "${TD_CONTRIB_DIR}/geos" + BINARY_DIR "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) +endif() diff --git a/cmake/rocksdb_CMakeLists.txt.in b/cmake/rocksdb_CMakeLists.txt.in index 45599d82e3a8750f8b6e4823c0f8eb8dc8a79f24..1c3f8bc8d23b2d318bcbe13bd2571dda28d2cdc0 100644 --- a/cmake/rocksdb_CMakeLists.txt.in +++ b/cmake/rocksdb_CMakeLists.txt.in @@ -13,7 +13,7 @@ if (${BUILD_CONTRIB}) TEST_COMMAND "" ) else() - if (NOT ${TD_LINUX}) + if (NOT ${TD_CONTRIB_STATIC}) ExternalProject_Add(rocksdb URL https://github.com/facebook/rocksdb/archive/refs/tags/v8.1.1.tar.gz URL_HASH MD5=3b4c97ee45df9c8a5517308d31ab008b diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index c60fd33b16187840d2cc27feb8321e14b801ed5d..8e4785889d7d5b676939b5c240ea93cddf12085e 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -83,7 +83,7 @@ if (${BUILD_CONTRIB}) add_definitions(-DUSE_ROCKSDB) endif() else() - if (NOT ${TD_LINUX}) + if (NOT ${TD_CONTRIB_STATIC}) if(${BUILD_WITH_ROCKSDB}) cat("${TD_SUPPORT_DIR}/rocksdb_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) add_definitions(-DUSE_ROCKSDB) @@ -300,7 +300,7 @@ if (${BUILD_WITH_ROCKSDB}) PUBLIC $ ) else() - if (NOT ${TD_LINUX}) + if (NOT ${TD_CONTRIB_STATIC}) MESSAGE(STATUS "CXXXX STATUS CONFIG: " ${CMAKE_CXX_FLAGS}) if(${TD_DARWIN}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=maybe-uninitialized") @@ -547,20 +547,22 @@ endif(${BUILD_ADDR2LINE}) # geos if(${BUILD_GEOS}) - if(${TD_LINUX}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_REL}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_REL}") - IF ("${CMAKE_BUILD_TYPE}" STREQUAL "") - SET(CMAKE_BUILD_TYPE Release) - endif() - endif(${TD_LINUX}) - option(BUILD_SHARED_LIBS "Build GEOS with shared libraries" OFF) - add_subdirectory(geos EXCLUDE_FROM_ALL) - unset(CMAKE_CXX_STANDARD CACHE) # undo libgeos's setting of global CMAKE_CXX_STANDARD - target_include_directories( - geos_c - PUBLIC $ - ) + if (${BUILD_CONTRIB} OR NOT ${TD_CONTRIB_STATIC}) + if(${TD_LINUX}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_REL}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_REL}") + if ("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE Release) + endif() + endif(${TD_LINUX}) + option(BUILD_SHARED_LIBS "Build GEOS with shared libraries" OFF) + add_subdirectory(geos EXCLUDE_FROM_ALL) + unset(CMAKE_CXX_STANDARD CACHE) # undo libgeos's setting of global CMAKE_CXX_STANDARD + target_include_directories( + geos_c + PUBLIC $ + ) + endif() endif(${BUILD_GEOS}) # ================================================================================================ diff --git a/source/dnode/mgmt/CMakeLists.txt b/source/dnode/mgmt/CMakeLists.txt index 762b8fd5293e97aae4fb38ca5c021aaa893ff2b8..9e036f1b81d5e1ca031460302edbde88760bed10 100644 --- a/source/dnode/mgmt/CMakeLists.txt +++ b/source/dnode/mgmt/CMakeLists.txt @@ -25,6 +25,10 @@ IF (TD_LINUX_64 AND JEMALLOC_ENABLED) ADD_DEPENDENCIES(taosd jemalloc) target_link_libraries(taosd dnode ${LINK_JEMALLOC}) ELSE () + IF (TD_WINDOWS AND TD_CONTRIB_STATIC) + target_link_libraries(taosd dnode shlwapi rpcrt4) + ELSE() target_link_libraries(taosd dnode) + ENDIF() ENDIF () diff --git a/source/dnode/vnode/CMakeLists.txt b/source/dnode/vnode/CMakeLists.txt index 194ffa16f671b8b63466d3bb1de559b470547de4..e2239ce7eb0efffe939a4c594b716248c41307ef 100644 --- a/source/dnode/vnode/CMakeLists.txt +++ b/source/dnode/vnode/CMakeLists.txt @@ -122,7 +122,7 @@ else() PUBLIC "src/inc" PUBLIC "${TD_SOURCE_DIR}/include/libs/scalar" ) - if (${TD_LINUX}) + if (${TD_CONTRIB_STATIC}) target_include_directories( vnode PUBLIC "${TD_SOURCE_DIR}/deps/${TD_DEPS_DIR}/rocksdb_static" diff --git a/source/libs/stream/CMakeLists.txt b/source/libs/stream/CMakeLists.txt index b63a8b39009187714d44d95f353ba4baa7cf8d6d..096ebc2a658ab0017a38863ded09d4a6f6dbfcf2 100644 --- a/source/libs/stream/CMakeLists.txt +++ b/source/libs/stream/CMakeLists.txt @@ -19,7 +19,7 @@ if(${BUILD_WITH_ROCKSDB}) PUBLIC "${TD_SOURCE_DIR}/contrib/rocksdb/include" ) else() - if (TD_LINUX) + if (TD_CONTRIB_STATIC) target_include_directories( stream PUBLIC "${TD_SOURCE_DIR}/deps/${TD_DEPS_DIR}/rocksdb_static" diff --git a/source/util/CMakeLists.txt b/source/util/CMakeLists.txt index 9c2ed190c1f7f1f16936e6ef8ebac5289435c290..794595a387aaf2a261d05e7a6b1d1f4ff5301c65 100644 --- a/source/util/CMakeLists.txt +++ b/source/util/CMakeLists.txt @@ -19,12 +19,31 @@ target_include_directories( PRIVATE "${TD_SOURCE_DIR}/include/common" PRIVATE "${GRANT_CFG_INCLUDE_DIR}" ) -target_link_libraries( - util - PUBLIC os - PUBLIC lz4_static - PUBLIC api cjson geos_c -) + +if (${TD_CONTRIB_STATIC} AND NOT ${BUILD_CONTRIB}) + target_include_directories( + util + PUBLIC "${TD_SOURCE_DIR}/deps/${TD_DEPS_DIR}/geos_static" + ) + + target_link_directories( + util + PUBLIC "${TD_SOURCE_DIR}/deps/${TD_DEPS_DIR}/geos_static" + ) + target_link_libraries( + util + PUBLIC os + PUBLIC lz4_static + PUBLIC api cjson geos_c geos + ) +else() + target_link_libraries( + util + PUBLIC os + PUBLIC lz4_static + PUBLIC api cjson geos_c + ) +endif() if(${BUILD_TEST}) ADD_SUBDIRECTORY(test)