CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20) PROJECT(TDengine) # # If it is a Windows operating system # 1.Use command line tool of VS2013 or higher version # mkdir build; cd build; # cmake -G "NMake Makefiles" .. # nmake install # 2.Use the VS development interface tool # mkdir build; cd build; # cmake -A x64 .. # open the file named TDengine.sln # # Set macro definitions according to os platform SET(TD_LINUX FALSE) SET(TD_LINUX_64 FALSE) SET(TD_LINUX_32 FALSE) SET(TD_ARM_64 FALSE) SET(TD_ARM_32 FALSE) SET(TD_MIPS_64 FALSE) SET(TD_MIPS_32 FALSE) SET(TD_ALPINE FALSE) SET(TD_NINGSI FALSE) SET(TD_NINGSI_60 FALSE) SET(TD_NINGSI_80 FALSE) SET(TD_WINDOWS FALSE) SET(TD_WINDOWS_64 FALSE) SET(TD_WINDOWS_32 FALSE) SET(TD_DARWIN FALSE) SET(TD_DARWIN_64 FALSE) IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux") # # Get OS information and store in variable TD_OS_INFO. # execute_process(COMMAND chmod 777 ${TD_COMMUNITY_DIR}/packaging/tools/get_os.sh) execute_process(COMMAND readlink /bin/sh OUTPUT_VARIABLE SHELL_LINK) MESSAGE(STATUS "The shell is: " ${SHELL_LINK}) IF (${SHELL_LINK} MATCHES "dash") execute_process(COMMAND ${TD_COMMUNITY_DIR}/packaging/tools/get_os.sh "" OUTPUT_VARIABLE TD_OS_INFO) ELSE () execute_process(COMMAND sh ${TD_COMMUNITY_DIR}/packaging/tools/get_os.sh "" OUTPUT_VARIABLE TD_OS_INFO) ENDIF() MESSAGE(STATUS "The current os is " ${TD_OS_INFO}) SET(TD_LINUX TRUE) IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET(TD_LINUX_64 TRUE) MESSAGE(STATUS "The current platform is Linux 64-bit") ELSEIF (${CMAKE_SIZEOF_VOID_P} MATCHES 4) SET(TD_LINUX_32 TRUE) MESSAGE(STATUS "The current platform is Linux 32-bit") ELSE () MESSAGE(FATAL_ERROR "The current platform is Linux neither 32-bit nor 64-bit, not supported yet") EXIT () ENDIF () IF (${TD_OS_INFO} MATCHES "Alpine") SET(TD_ALPINE TRUE) MESSAGE(STATUS "The current OS is Alpine Linux, append extra flags") ELSEIF (${TD_OS_INFO} MATCHES "Arch") SET(TD_ARCHLINUX TRUE) MESSAGE(STATUS "The current OS is Arch Linux") ELSE () MESSAGE(STATUS "The distro is " ${TD_OS_INFO}) ENDIF() ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") SET(TD_DARWIN TRUE) IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET(TD_DARWIN_64 TRUE) MESSAGE(STATUS "The current platform is Darwin 64-bit") ELSE () MESSAGE(FATAL_ERROR "The current platform is Darwin 32-bit, not supported yet") EXIT () ENDIF () ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows") SET(TD_WINDOWS TRUE) IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET(TD_WINDOWS_64 TRUE) MESSAGE(STATUS "The current platform is Windows 64-bit") ELSE () SET(TD_WINDOWS_32 TRUE) MESSAGE(STATUS "The current platform is Windows 32-bit") ENDIF () ELSE() MESSAGE(FATAL_ERROR "The current platform is not Linux/Darwin/Windows, stop compile") EXIT () ENDIF () IF ("${CPUTYPE}" STREQUAL "") MESSAGE(STATUS "The current platform " ${CMAKE_SYSTEM_PROCESSOR} " is detected") IF (CMAKE_SYSTEM_PROCESSOR MATCHES "(amd64)|(AMD64)") MESSAGE(STATUS "The current platform is amd64") MESSAGE(STATUS "Set CPUTYPE to x64") SET(CPUTYPE "x64") SET(PLATFORM_ARCH_STR "amd64") ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)") MESSAGE(STATUS "The current platform is x86") MESSAGE(STATUS "Set CPUTYPE to x86") SET(CPUTYPE "x32") SET(PLATFORM_ARCH_STR "i386") ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l") MESSAGE(STATUS "Set CPUTYPE to aarch32") SET(CPUTYPE "aarch32") MESSAGE(STATUS "Set CPUTYPE to aarch32") SET(TD_LINUX TRUE) SET(TD_LINUX_32 FALSE) SET(TD_ARM_32 TRUE) SET(PLATFORM_ARCH_STR "arm") ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") SET(CPUTYPE "aarch64") MESSAGE(STATUS "Set CPUTYPE to aarch64") SET(TD_LINUX TRUE) SET(TD_LINUX_64 FALSE) SET(TD_ARM_64 TRUE) SET(PLATFORM_ARCH_STR "arm64") ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") SET(CPUTYPE "mips64") MESSAGE(STATUS "Set CPUTYPE to mips64") SET(TD_LINUX TRUE) SET(TD_LINUX_64 FALSE) SET(TD_MIPS_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") SET(CPUTYPE "apple_m1") MESSAGE(STATUS "Set CPUTYPE to apple silicon m1") SET(TD_ARM_64 TRUE) ENDIF () ELSE () # if generate ARM version: # cmake -DCPUTYPE=aarch32 .. or cmake -DCPUTYPE=aarch64 IF (${CPUTYPE} MATCHES "aarch32") SET(TD_LINUX TRUE) SET(TD_LINUX_32 FALSE) SET(TD_ARM_32 TRUE) SET(PLATFORM_ARCH_STR "arm") MESSAGE(STATUS "input cpuType: aarch32") ELSEIF (${CPUTYPE} MATCHES "aarch64") SET(TD_LINUX TRUE) SET(TD_LINUX_64 FALSE) SET(TD_ARM_64 TRUE) SET(PLATFORM_ARCH_STR "arm64") MESSAGE(STATUS "input cpuType: aarch64") ELSEIF (${CPUTYPE} MATCHES "mips64") SET(TD_LINUX TRUE) SET(TD_LINUX_64 FALSE) SET(TD_MIPS_64 TRUE) SET(PLATFORM_ARCH_STR "mips") MESSAGE(STATUS "input cpuType: mips64") ELSEIF (${CPUTYPE} MATCHES "x64") SET(PLATFORM_ARCH_STR "amd64") MESSAGE(STATUS "input cpuType: x64") ELSEIF (${CPUTYPE} MATCHES "x86") SET(PLATFORM_ARCH_STR "i386") MESSAGE(STATUS "input cpuType: x86") ELSE () MESSAGE(STATUS "input cpuType unknown " ${CPUTYPE}) ENDIF () ENDIF () MESSAGE(STATUS "platform arch:" ${PLATFORM_ARCH_STR}) # cmake -DOSTYPE=Ningsi IF (${OSTYPE} MATCHES "Ningsi60") SET(TD_NINGSI TRUE) SET(TD_NINGSI_60 TRUE) MESSAGE(STATUS "input osType: Ningsi60") ELSEIF (${OSTYPE} MATCHES "Ningsi80") SET(TD_NINGSI TRUE) SET(TD_NINGSI_80 TRUE) MESSAGE(STATUS "input osType: Ningsi80") ELSEIF (${OSTYPE} MATCHES "Linux") MESSAGE(STATUS "input osType: Linux") ELSEIF (${OSTYPE} MATCHES "Alpine") MESSAGE(STATUS "input osType: Alpine") SET(TD_ALPINE TRUE) ELSE () MESSAGE(STATUS "The user specified osType is unknown: " ${OSTYPE}) ENDIF ()