diff --git a/cmake/Env.cmake b/cmake/Env.cmake index 3e597365f..83710c515 100644 --- a/cmake/Env.cmake +++ b/cmake/Env.cmake @@ -115,6 +115,10 @@ message(STATUS "DETECT BUILD ARCH: " ${ARCHITECTURE}) if(${ARCHITECTURE} STREQUAL "x86_64") set(MTUNE_CFLAGS "-mtune=core2") set(ARCH_LDFLAGS "") +elseif(${ARCHITECTURE} STREQUAL "aarch64") + set(MARCH_CFLAGS "-march=armv8-a+crc" ) + set(MTUNE_CFLAGS "-mtune=generic" ) + set(ARCH_LDFLAGS "-latomic") else() message(FATAL_ERROR "UNSUPPORT BUILD ARCH: ${ARCHITECTURE}") endif() diff --git a/deps/3rd/dep_create.sh b/deps/3rd/dep_create.sh index 300d53703..45421a334 100644 --- a/deps/3rd/dep_create.sh +++ b/deps/3rd/dep_create.sh @@ -14,7 +14,8 @@ fi source /etc/os-release || exit 1 -PNAME=${PRETTY_NAME:-${NAME} ${VERSION}} +PNAME=${PRETTY_NAME:-"${NAME} ${VERSION}"} +PNAME="${PNAME} (${OS_ARCH})" function compat_centos8() { echo "[NOTICE] '$PNAME' is compatible with CentOS 8, use el8 dependencies list" @@ -35,42 +36,54 @@ function version_ge() { } function get_os_release() { - case "$ID" in - alios) - version_ge "8.0" && compat_centos8 && return - version_ge "7.2" && compat_centos7 && return - ;; - anolis) - version_ge "8.0" && compat_centos8 && return - version_ge "7.0" && compat_centos7 && return - ;; - ubuntu) - version_ge "16.04" && compat_centos7 && return - ;; - centos) - version_ge "8.0" && OS_RELEASE=8 && return - version_ge "7.0" && OS_RELEASE=7 && return - ;; - debian) - version_ge "9" && compat_centos7 && return - ;; - fedora) - version_ge "33" && compat_centos7 && return - ;; - opensuse-leap) - version_ge "15" && compat_centos7 && return - ;; - #suse - sles) - version_ge "15" && compat_centos7 && return - ;; - uos) - version_ge "20" && compat_centos7 && return - ;; - alinux) - version_ge "2.1903" && compat_centos7 && return - ;; - esac + if [[ "${OS_ARCH}x" == "x86_64x" ]]; then + case "$ID" in + alinux) + version_ge "2.1903" && compat_centos7 && return + ;; + alios) + version_ge "8.0" && compat_centos8 && return + version_ge "7.2" && compat_centos7 && return + ;; + anolis) + version_ge "8.0" && compat_centos8 && return + version_ge "7.0" && compat_centos7 && return + ;; + ubuntu) + version_ge "16.04" && compat_centos7 && return + ;; + centos) + version_ge "8.0" && OS_RELEASE=8 && return + version_ge "7.0" && OS_RELEASE=7 && return + ;; + debian) + version_ge "9" && compat_centos7 && return + ;; + fedora) + version_ge "33" && compat_centos7 && return + ;; + opensuse-leap) + version_ge "15" && compat_centos7 && return + ;; + #suse + sles) + version_ge "15" && compat_centos7 && return + ;; + uos) + version_ge "20" && compat_centos7 && return + ;; + esac + elif [[ "${OS_ARCH}x" == "aarch64x" ]]; then + case "$ID" in + alios) + version_ge "7.0" && compat_centos7 && return + ;; + centos) + version_ge "8.0" && compat_centos7 && return + version_ge "7.0" && OS_RELEASE=7 && return + ;; + esac + fi not_supported && return 1 } diff --git a/deps/3rd/oceanbase.el7.aarch64.deps b/deps/3rd/oceanbase.el7.aarch64.deps new file mode 100644 index 000000000..b642dff63 --- /dev/null +++ b/deps/3rd/oceanbase.el7.aarch64.deps @@ -0,0 +1,22 @@ +[target] +os=7 +arch=aarch64 +repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64/ + +[deps] +devdeps-gtest-1.8.0-3.el7.aarch64.rpm +devdeps-isa-l-static-2.22.0-3.el7.aarch64.rpm +devdeps-libcurl-static-7.29.0-3.el7.aarch64.rpm +devdeps-libunwind-static-1.5.0-3.el7.aarch64.rpm +devdeps-mariadb-connector-c-3.1.12-3.el7.aarch64.rpm +devdeps-openssl-static-1.0.1e-3.el7.aarch64.rpm +devdeps-libaio-0.3.112-3.el7.aarch64.rpm + +[tools] +obdevtools-bintuils-2.30-3.el7.aarch64.rpm +obdevtools-bison-2.4.1-3.el7.aarch64.rpm +obdevtools-ccache-3.7.12-3.el7.aarch64.rpm +obdevtools-cmake-3.20.2-3.el7.aarch64.rpm +obdevtools-flex-2.5.35-3.el7.aarch64.rpm +obdevtools-gcc-5.2.0-3.el7.aarch64.rpm +obdevtools-llvm-11.0.1-3.el7.aarch64.rpm diff --git a/deps/easy/CMakeLists.txt b/deps/easy/CMakeLists.txt index bcdd7105f..2f7b4a5ab 100644 --- a/deps/easy/CMakeLists.txt +++ b/deps/easy/CMakeLists.txt @@ -26,10 +26,16 @@ target_include_directories( ${DEP_DIR}/include ) +set(EASY_ARCH_COMPILE_OPTIONS "") +if(${ARCHITECTURE} STREQUAL "aarch64") + set(EASY_ARCH_COMPILE_OPTIONS -Wno-tautological-constant-out-of-range-compare) +endif() + + if (OB_USE_CLANG) - set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-unused-function -fmax-type-align=8) + set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-unused-function -fmax-type-align=8 ${EASY_ARCH_COMPILE_OPTIONS}) else() - set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-implicit-function-declaration -Wno-unused-but-set-variable -Wno-unused-function) + set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-implicit-function-declaration -Wno-unused-but-set-variable -Wno-unused-function ${EASY_ARCH_COMPILE_OPTIONS}) endif() diff --git a/deps/oblib/src/CMakeLists.txt b/deps/oblib/src/CMakeLists.txt index b4921e7aa..2c360e173 100644 --- a/deps/oblib/src/CMakeLists.txt +++ b/deps/oblib/src/CMakeLists.txt @@ -10,6 +10,10 @@ target_include_directories( ${DEP_DIR}/include ) +set(ARCH_COMPILE_OPTIONS "") +if(${ARCHITECTURE} STREQUAL "aarch64") + set(ARCH_COMPILE_OPTIONS -Wno-extern-c-compat -Wno-atomic-alignment) +endif() if (OB_USE_CLANG) target_compile_options(oblib_base_base INTERFACE @@ -24,14 +28,16 @@ if (OB_USE_CLANG) -Wno-format-security -Wno-reserved-user-defined-literal -Wno-sometimes-uninitialized -Wno-unused-value -Wno-self-assign -Wno-overloaded-virtual -Wno-unused-private-field -Wno-mismatched-tags -Wno-unused-variable - -Wno-invalid-offsetof -Wno-tautological-compare -Wno-psabi -Wno-c99-designator) + -Wno-invalid-offsetof -Wno-tautological-compare -Wno-psabi -Wno-c99-designator + ${ARCH_COMPILE_OPTIONS} +) else() target_compile_options(oblib_base_base INTERFACE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_NO_EXCEPTION -Wall -Wno-unused-parameter -Wextra -Wformat -Wno-deprecated -fno-strict-aliasing -fno-omit-frame-pointer ${MARCH_CFLAGS} ${MTUNE_CFLAGS} - -Wno-psabi -Wno-sign-compare -Wno-unused-variable + -Wno-psabi -Wno-sign-compare -Wno-unused-variable ${ARCH_COMPILE_OPTIONS} $<$:-Wno-old-style-declaration> $<$:-Wno-literal-suffix -Wno-invalid-offsetof>) endif()