TDengine/cmake/check_env.cmake
freemine 6267763e85
Freemine.cmake.3.0 (#30663)
* chore(ci): with cmake verbose, temporarily

* chore(cmake): prefer Threads::Threads

* fix(cmake): debug building gtest on ubuntu 20.04 for the moment

* fix(cmake): try adding Threads::Threads

* fix(cmake): debug building gtest on ubuntu 20.04 for the moment

* fix(cmake): revert taosd-ci-build.yml

* fix(cmake): debug building on ubuntu 20.04 for the moment

* fix(cmake): debug building on ubuntu 20.04 for the moment

* fix(cmake): debug building on ubuntu 20.04 for the moment, adding dl right after DEP_ext_libuv

* fix(cmake): debug building on ubuntu 20.04 for the moment, try full run

* fix(cmake): fix building on ubuntu 20.04

* fix(cmake): dl is only valid in non-windows platform

* fix(cmake): dl order

* refactor(cmake): adjust option/cache variables for external dependencies

* refactor(cmake): mv patch files from contrib/ to cmake/

* refactor(cmake): typo

* refactor(cmake): adding cache on ci

* refactor(cmake):
1. ext_lzma2 is only used by Linux
2. fix bug in taosd-ci-build.yml

* enh: adding functionalities of build.sh

* fix(ci): `cmake -B` shall maintain consistency

* refactor(cmake): LOCAL_REPO/LOCAL_URL as cache variable

* refactor(cmake): taosadapter to be built in main build directory rather than .externals

* refactor(cmake): adding rpath for taosadapter, linux now

* refactor(cmake): adding rpath for taosadapter, macos now

* chore(cmake): remove some comments

* debug(ci): bypass TD_EXTERNALS_USE_ONLY

* debug(ci): bypass .externals caching for the moment

* fix(cmake): temporarily use taosadapter/main branch because this branch(freemine.cmake.3.0) has not include taos_fetch_fields_e from upstream

* refactor(cmake): clean GIT_TAG/GIT_SHALLOW pairs

* enh(ci): use build.sh rather than hard-coded in taosd-ci-build.yml, linux for now

* debug(ci): undefined __isoc23_strtoull

* debug(ci): benchmarkTest

* debug(ci): what if use_only = off

* debug(ci): remove .externals to make a refresh build

* debug(ci): back to cache, and ls files of gtest

* debug(ci): remove find coz {} not escaped

* debug(ci): cache key seems missing "matrix.os"

* refactor(ci): fixed cache key and reopen macos/windows

* chore(ci): literally -j4

* chore(ci): Trigger GitHub Actions re-run

* chore(ci): Trigger GitHub Actions re-run

* fix(ci): typo

* chore(ci): JOBS calculated by build.sh itself

* refactor(ci): enable WEBSOCKET in build.sh by default

* refactor(ci): enable WEBSOCKET in build.sh by default, macOS

* chore(cmake): remove obsoletes

* refactor(ci): stop service before running taosd

* chore(ci): `./build.sh install` just install TDengine, you will have to start taosd by `./build.sh start`

* refactor(cmake): adding source code found on http://emfisis.physics.uiowa.edu/Software/C/libargp/

* refactor(cmake): moving jansson/snappy/avro to .externals, and porting BUILD_TEST/WEBSOCKET on Windows

* refactor(cmake): porting linux

* refactor(cmake): porting macos
1. check argp.h
2. re-enable building taosdump

* refactor(cmake): porting linux
1. adjust CMAKE_C/CXX_FLAGS

* refactor(cmake): porting windows, adjust CMAKE_C/CXX_FLAGS

* refactor(cmake): use cmake_parse_arguments in macro INIT_EXT

* refactor(cmake): format ci cache directives

* refactor(cmake): adding comments for ci externals-cache directives

* refactor(cmake): adding check_env.cmake to checking libraries installed on the system

* refactor(cmake): porting linux, make homebrew-installed-libs available

* refactor(cmake): remove BYPRODUCTS from INIT_EXT macro

* refactor(cmake): INC_DIR is oneValueArg

* refactor(cmake): taosdump depends on ext_xz(LZMA)

* refactor(cmake): add copy_pthreadVC3 target on windows

* refactor(cmake): mv taosd-ci-build.yml to tdengine-build.yml

* chore(ci): try to fix yml syntax error

* refactor(cmake): use brew --prefix to get HomeBrew's install path

* refactor(cmake): typo

* debug(ci): build and cache externals first

* debug(ci): adding -Wno-stringop-overread for the moment

* debug(ci): make Threads::Threads public from os target

* debug(ci): make os public

* debug(ci): re-enable start and test

* debug(ci): let it go even if taosBenchmark failed

* debug(ci): copy logic from TDengine/main

* debug(ci): try ./build.sh start/test

* debug(ci): revert to original simple test logic in ci, taosBenchark/taos

* chore(cmake): code-convention and ci-logic

* debug(ci): show versions

* debug(ci): forcefully use specific GIT_TAG by commit-id for taos-connector-rust.git and taosadapter.git

* refactor(cmake): remove empty lines

* debug(ci): typo

* debug(ci): set supportVnodes to 256 before starting taosd

* debug(ci): fix: sudo and pipe

* debug(ci): cat /etc/taos/taos.cfg to check if supportVnodes effective

* debug(ci): cat forceReadConfig to taos.cfg

* debug(ci): adding taos -s "show dnodes"

* debug(ci): print more info

* debug(ci):
1. git log .... in an independant step
2. sleep 3 deliberately

* build: release ver-3.3.6.0

* chore(ci): comment and remove unnecessary code

* refactor(ci): cleanup tools/CMakeLists.txt
1. remove unnecessary or uneffective codes
2. better approach to pass compile flags to go

* chore(cmake): remove unnecessary code

* merge(cmake): porting linux

* merge(cmake): porting macOS

* merge(cmake): porting windows

* merge(cmake): pitfall fix: use literal format string instead

* merge(cmake): ver-3.3.6.0 for both taosadatper and taosws

* merge(cmake): adjust ci for debug purposes

* merge(cmake): add dependenices to make sure native built

* merge(main): link os

* merge(main): revert to main

* chore(cmake): remove freemine'd comments

* chore(cmake): make github ci to run with empty change

* refactor(cmake): remove unnecessaries

* refactor(cmake): remove unnecessaries

* chore(cmake):
1. remove taosudf in build.sh::do_purge
2. packaging taosBenchmark

* chore(cmake):
1. typo corrections
2. add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to bypass compatibility check imposed by latest cmake since 4.0

* chore(cmake): show cmake version

* chore(cmake): add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to bypass compatibility check imposed by latest cmake since 4.0

* chore(cmake): typo

* chore(cmake): remove unnecessaries

* cmake: debug enterprise compilation

* refactor: preparatory work before merging the freemin PR

* refactor(cmake): revert to d91205594a

* refactor(cmake): optimize by adjusting cache key

* chore(cmake): make github ci to run with empty change

* refactor(cmake): move libs3 and azure to external.cmake

* refactor(cmake): porting macOS

* refactor(cmake): move cos to external.cmake

* refactor(cmake): bypass s3/azure/cos on windows for the moment

* refactor(cmake): try find_package(Threads)

* refactor(cmake): add dl/pthread in libs3

* refactor(cmake): enable s3/azure for the moment, hard-coded

* refactor(cmake): adjust BUILD_WITH_ANALYSIS option

* refactor(cmake):
1. enum AVROTYPE => enum enAVROTYPE
2. remove INSTALL(CODE ...) from tools/taos-tools/CMakeLists.txt

* refactor(cmake): portint macOS and typo

* refactor(cmake): ticking external cache key to force refresh external building

* refactor(cmake): remove obsoletes

* refactor(cmake): remove obsoletes

* refactor(cmake): remove obsoletes, contrib/deps-download related

* refactor(cmake): adding build.bat, and use build.bat in .github/workflows/tdengine-build.yml

* refactor(cmake):
1. call .\build.bat
2. remove POST_BUILD which is not valid in this signature of add_custom_command

* refactor(ci): use 'NMake Makefiles JOM'

* refactor(ci): typo

* refactor(ci): debug

* refactor(ci): debug

* refactor(ci): debug

* refactor(ci): use call on windows

* refactor(cmake): move utils/TSZ to contrib/TSZ

* chore(cmake): make github ci to run with empty change

* refactor(cmake): mv cmake.* -> *.cmake and related in CMakeLists.txt

* refactor(cmake): debugging integrating community

* refactor(cmake): debugging integrating community

* chore(cmake): make github ci to run with empty change

* refactor(cmake): revert geos.git back to 3.12.0

* refactor(cmake): revert doc/** to main branch

* refactor(cmake): revert tests/** to main branch, except tests/taosc_test/CMakeLists.txt

* refactor(cmake): revert test/cases/** to main branch

* refactor(cmake): revert test/docs/** to main branch

* refactor(cmake): revert tools/taos-tools/deps/{avro,jansson,libargp,snappy,zlib-1.2.13} to main branch, which need to be removed later

* refactor(ci): revert .github/workflows/{deploy-case-docs.yml,tdengine-doc-build.yml} to main branch

* refactor(cmake): revert tcommon.h and related to main branch

* refactor(cmake): revert test/* stuffs back to main branch

* refactor(cmake): revert libuv.git back to v1.49.2

* refactor(cmake): revert .h/.c and related to main branch

* refactor(cmake): typo format string

* refactor(cmake): typo correction, incorrect use of macro `assert`

* refactor(cmake): adding /wd4028 to bypass thttp.c under enterprise build for the moment

* refactor(cmake):
1. adding some rules to .gitignore for the last resort to save
2. adding source files manually to source/libs/parser/CMakeLists.txt to exclude potential sql.c generated by old build system

* refactor(cmake): add -Wno-unused-result for the moment

* refactor(cmake): adjust target dependencies

* refactor(cmake): tweaking building of mxml

* refactor(cmake): adjust externals CMAKE_ARGS to save compilation time

* refactor(cmake): temporarily use tomchon-patch-3

* refactor(cmake): temporarily adding dumpbin directives

* refactor(cmake): adding NODEFAULTLIB temporarily for debugging purpose

* refactor(cmake): adding NODEFAULTLIB:libcpmt temporarily for debugging purpose

* refactor(cmake): adding NODEFAULTLIB:cpmt temporarily for debugging purpose

* chore(cmake): make github ci to run with empty change

* chore(cmake): make github ci to run with empty change

* refactor(ci): use freemine.debug branch for the moment

* refactor(ci): revert back to use run-tests-on-windows.yml of tomchon-patch-3 branch

* chore(cmake): make github ci to run with empty change

* refactor(cmake): remove temporary debug directives

* refactor(cmake): move cmake_policy(..CMP0135..) to the root of this project

* refactor(cmake): Remove temporary debugging conditional and restore original logic

* chore(cmake): adding -B in army tests

* chore(cmake): make github ci to run with empty change

* chore(cmake): revert: adding -B in army tests

* refactor(cmake):
1. use ver-3.3.6.3 of taosadapter
2. pitfall fix: do not link with taosws for taos shell

* refactor(cmake): revert taosadapter to ver-3.3.6.0

* chore(cmake): adding logging message in more detail

* chore(cmake): adding logging message in more detail

* chore(ci): debugging by using ls -l

* chore(ci): typo

* chore(ci): typo

* refactor(cmake): revert to remove debug code, and taosadapter to ver-3.3.6.3

* refactor(cmake): remove DEP_ext_taosws

* chore(cmake): make github ci to run with empty change

* chore(cmake): make github ci to run with empty change

* chore(cmake): make github ci to run with empty change

* chore(cmake): make github ci to run with empty change

* chore(cmake): typo correction: utils/test/c/sml_test.c

* debug(cmake): test cases debug

* chore(cmake): make github ci to run with empty change

* chore(ci): using tomchon-patch-3 branch for run-tests-on-linux for the moment

* chore(cmake): make github ci to run with empty change

* debug(test): revert utils/test/c/sml_test.c back to tdengine/main branch

* debug(test): adding VERBOSE=1 and gcc --version

* debug(test): revert tests/parallel_test/cases.task back to tdengine/main branch

* debug: add log in run_case.sh

* fix: test log

* fix: docker run privileged

* tes: add debug test in  cases.task

* refactor(cmake): remove ref to \contrib\<dep-name> and ~/.cos-local-{1,2} from CMakeLists.txt(s)

* refactor(cmake): make taosudf link with libtaos.so

* chore(cmake): fix compiler warning as error problem

* refactor(cmake): revert 7d7f03832d

* chore(cmake): only udf.sim and udfpy.sim for the moment

* debug(ci): debug udf.sim for the moment

* debug(ci): debug udf.sim for the moment

* debug(ci): debug udf.sim for the moment

* debug(ci): debug only udf.sim for the moment

* debug(ci): debug only udf.sim for the moment, using tee

* debug(ci): debug only udf.sim for the moment, revert using tee

* debug(ci): debug only udf.sim for the moment, adding TAOS_LIB again

* debug(cmake): adding -rdynamic for the moment

* debug(cmake): re-adding udfpy.sim

* debug(cmake): do NOT run with Sanitizer for udfpy.sim for the moment

* chore(cmake): revert cases.task, and remove ubuntu-20.04 from tdengine-build.yml

* refactor(cmake): using ENABLE_EXPORTS to export symbols in taosudf

* chore(cmake): make github ci to run with empty change

* chore(cmake): remove stuffs for debug purpose and revert

---------

Co-authored-by: support-platform <it@taosdata.com>
Co-authored-by: Simon Guan <slguan@taosdata.com>
Co-authored-by: Simon Guan <guanshengliang@qq.com>
Co-authored-by: haoranchen <haoran920c@163.com>
2025-04-19 14:03:29 +08:00

184 lines
5.2 KiB
CMake

# NOTE: if you change this option later, that'll NOT effect unless you remove CMakeCache.txt beforehand
option(TD_CHECK_SYSTEM_EXTERNALS "if check and externals installed on the system or not" OFF)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
if(NOT BREW_PREFIX)
execute_process(COMMAND brew --prefix OUTPUT_VARIABLE BREW_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
set(BREW_PREFIX "${BREW_PREFIX}" CACHE STRING "Homebrew installation prefix")
endif()
message(STATUS "Homebrew prefix: ${BREW_PREFIX}")
endif()
macro(check_lib)
set(options)
set(oneValueArgs NAME HEADER_FILE LIBNAME SYMBOL)
set(multiValueArgs ACCOMPANIES)
cmake_parse_arguments(arg_check_lib
"${options}" "${oneValueArgs}" "${multiValueArgs}"
${ARGN}
)
if(NOT DEFINED arg_check_lib_NAME)
message(FATAL_ERROR "`NAME` must be set")
endif()
if(NOT DEFINED arg_check_lib_HEADER_FILE)
message(FATAL_ERROR "`HEADER_FILE` must be set")
endif()
if(NOT DEFINED arg_check_lib_LIBNAME)
message(FATAL_ERROR "`LIBNAME` must be set")
endif()
if(NOT DEFINED arg_check_lib_SYMBOL)
message(FATAL_ERROR "`SYMBOL` must be set")
endif()
set(_name ${arg_check_lib_NAME})
set(_hdr ${arg_check_lib_HEADER_FILE})
set(_lib ${arg_check_lib_LIBNAME})
set(_symbol ${arg_check_lib_SYMBOL})
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(CMAKE_REQUIRED_FLAGS "-I${BREW_PREFIX}/include -L${BREW_PREFIX}/lib")
endif()
check_library_exists(${_lib} ${_symbol} "" HAVE_LIB_${_name})
set(${_name}_LIBNAMES "")
if(${HAVE_LIB_${_name}})
set(CMAKE_REQUIRED_LIBRARIES ${_lib})
check_symbol_exists(${_symbol} ${_hdr} HAVE_DEV_${_name})
set(CMAKE_REQUIRED_LIBRARIES)
if(${HAVE_DEV_${_name}})
set(${_name}_LIBNAMES "${_lib}" "${arg_check_lib_ACCOMPANIES}")
endif()
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
# cleanup
set(CMAKE_REQUIRED_FLAGS)
endif()
endmacro()
if(NOT TD_CHECK_SYSTEM_EXTERNALS)
message(STATUS "does not check and use externals installed on the system")
return()
endif()
# sudo apt install libgeos-dev
check_lib(
NAME GEOS
HEADER_FILE geos_c.h
LIBNAME geos_c
SYMBOL GEOS_init_r
)
message(STATUS "HAVE_LIB_GEOS:${HAVE_LIB_GEOS}")
message(STATUS "HAVE_DEV_GEOS:${HAVE_DEV_GEOS}")
# sudo apt install libjansson-dev
check_lib(
NAME JANSSON
HEADER_FILE jansson.h
LIBNAME jansson.so
SYMBOL jansson_version_str
)
message(STATUS "HAVE_LIB_JANSSON:${HAVE_LIB_JANSSON}")
message(STATUS "HAVE_DEV_JANSSON:${HAVE_DEV_JANSSON}")
# sudo apt install liblzma-dev
check_lib(
NAME LZMA
HEADER_FILE lzma.h
LIBNAME lzma
SYMBOL lzma_version_number
)
message(STATUS "HAVE_LIB_LZMA:${HAVE_LIB_LZMA}")
message(STATUS "HAVE_DEV_LZMA:${HAVE_DEV_LZMA}")
# sudo apt install libsnappy-dev
check_lib(
NAME SNAPPY
HEADER_FILE snappy-c.h
LIBNAME snappy
SYMBOL snappy_compress
)
message(STATUS "HAVE_LIB_SNAPPY:${HAVE_LIB_SNAPPY}")
message(STATUS "HAVE_DEV_SNAPPY:${HAVE_DEV_SNAPPY}")
# sudo apt install libssl-dev
check_lib(
NAME SSL
HEADER_FILE openssl/ssl.h
LIBNAME ssl
# SYMBOL SSL_CTX_get_options
SYMBOL SSL_get_version
ACCOMPANIES crypto
)
message(STATUS "HAVE_LIB_SSL:${HAVE_LIB_SSL}")
message(STATUS "HAVE_DEV_SSL:${HAVE_DEV_SSL}")
# sudo apt install zlib1g-dev
check_lib(
NAME ZLIB
HEADER_FILE zlib.h
LIBNAME z
SYMBOL zlibVersion
)
message(STATUS "HAVE_LIB_ZLIB:${HAVE_LIB_ZLIB}")
message(STATUS "HAVE_DEV_ZLIB:${HAVE_DEV_ZLIB}")
# sudo apt install libzstd-dev
check_lib(
NAME ZSTD
HEADER_FILE zstd.h
LIBNAME zstd
SYMBOL ZSTD_versionNumber
)
message(STATUS "HAVE_LIB_ZSTD:${HAVE_LIB_ZSTD}")
message(STATUS "HAVE_DEV_ZSTD:${HAVE_DEV_ZSTD}")
# sudo apt install liblz4-dev
check_lib(
NAME LZ4
HEADER_FILE lz4.h
LIBNAME lz4
SYMBOL LZ4_versionNumber
)
message(STATUS "HAVE_LIB_LZ4:${HAVE_LIB_LZ4}")
message(STATUS "HAVE_DEV_LZ4:${HAVE_DEV_LZ4}")
# sudo apt install libuv1-dev
check_lib(
NAME LIBUV
HEADER_FILE uv.h
LIBNAME uv
SYMBOL uv_version
)
message(STATUS "HAVE_LIB_LIBUV:${HAVE_LIB_LIBUV}")
message(STATUS "HAVE_DEV_LIBUV:${HAVE_DEV_LIBUV}")
# sudo apt install libsqlite3-dev
check_lib(
NAME SQLITE3
HEADER_FILE sqlite3.h
LIBNAME sqlite3
SYMBOL sqlite3_libversion
)
message(STATUS "HAVE_LIB_SQLITE3:${HAVE_LIB_SQLITE3}")
message(STATUS "HAVE_DEV_SQLITE3:${HAVE_DEV_SQLITE3}")
# sudo apt install libcurl4-openssl-dev
check_lib(
NAME CURL4_OPENSSL
HEADER_FILE curl/curl.h
LIBNAME curl
SYMBOL curl_version
)
message(STATUS "HAVE_LIB_CURL4_OPENSSL:${HAVE_LIB_CURL4_OPENSSL}")
message(STATUS "HAVE_DEV_CURL4_OPENSSL:${HAVE_DEV_CURL4_OPENSSL}")
# sudo apt install libavro-dev
check_lib(
NAME AVRO
HEADER_FILE avro.h
LIBNAME avro
SYMBOL avro_generic_class_from_schema
)
message(STATUS "HAVE_LIB_AVRO:${HAVE_LIB_AVRO}")
message(STATUS "HAVE_DEV_AVRO:${HAVE_DEV_AVRO}")