diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index e58aae64..709e1d25 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -152,37 +152,43 @@ endif() if(CMAKE_COMPILER_IS_ELBRUSC OR CMAKE_SYSTEM_PROCESSOR MATCHES "e2k.*|E2K.*|elbrus.*|ELBRUS.*") set(E2K TRUE) -elseif(MSVC64 OR MINGW64) + set(CMAKE_SYSTEM_ARCH "Elbrus") +elseif((MSVC64 OR MINGW64) AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(X86_64 TRUE) + set(CMAKE_SYSTEM_ARCH "x86_64") elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING)) set(X86_32 TRUE) + set(CMAKE_SYSTEM_ARCH "x86") elseif(CMAKE_COMPILER_IS_ELBRUSC OR CMAKE_SYSTEM_PROCESSOR MATCHES "e2k.*|E2K.*|elbrus.*|ELBRUS.*") set(E2K TRUE) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") + set(CMAKE_SYSTEM_ARCH "Elbrus") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(X86_64 TRUE) + set(CMAKE_SYSTEM_ARCH "x86_64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") set(X86_32 TRUE) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|ARM64.*)") + set(CMAKE_SYSTEM_ARCH "x86") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|ARM64.*)" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(AARCH64 TRUE) + set(CMAKE_SYSTEM_ARCH "ARM64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") set(ARM32 TRUE) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le.*") + set(CMAKE_SYSTEM_ARCH "ARM") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(PPC64LE TRUE) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64.*") + set(CMAKE_SYSTEM_ARCH "PPC64LE") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(PPC64 TRUE) + set(CMAKE_SYSTEM_ARCH "PPC64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc).*") set(PPC32 TRUE) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(mips|MIPS)64.*") + set(CMAKE_SYSTEM_ARCH "PPC") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(mips|MIPS)64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(MIPS64 TRUE) + set(CMAKE_SYSTEM_ARCH "MIPS64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(mips|MIPS).*") set(MIPS32 TRUE) -endif() - -# Workaround for 32-bit operating systems on 64-bit x86_64 processor -if(X86_64 AND CMAKE_SIZEOF_VOID_P EQUAL 4 AND NOT FORCE_X86_64) - message(STATUS "sizeof(void) = 4 on x86 / x86_64 processor. Assume 32-bit compilation mode (X86=1)") - unset(X86_64) - set(X86_32 TRUE) + set(CMAKE_SYSTEM_ARCH "MIPS") endif() if(MSVC) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5545a098..41e04fd0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -154,12 +154,23 @@ endif() string(STRIP "${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}${MDBX_BUILD_COMPILER}" MDBX_BUILD_COMPILER) # make a build-target triplet -if(CMAKE_CONFIGURATION_TYPES) - # via per-configuration define - add_definitions(-DMDBX_BUILD_TARGET="${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-$") - set(MDBX_BUILD_TARGET "MDBX_BUILD_TARGET") +if(CMAKE_C_COMPILER_TARGET) + set(MDBX_BUILD_TARGET "${CMAKE_C_COMPILER_TARGET}") +elseif(CMAKE_C_PLATFORM_ID AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME) + string(STRIP "${CMAKE_C_PLATFORM_ID}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET) +elseif(CMAKE_LIBRARY_ARCHITECTURE) + string(STRIP "${CMAKE_LIBRARY_ARCHITECTURE}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET) +elseif(CMAKE_GENERATOR_PLATFORM AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME) + string(STRIP "${CMAKE_GENERATOR_PLATFORM}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET) +elseif(CMAKE_SYSTEM_ARCH) + string(STRIP "${CMAKE_SYSTEM_ARCH}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET) else() - string(STRIP "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-${CMAKE_BUILD_TYPE}" MDBX_BUILD_TARGET) + string(STRIP "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET) +endif() +if(CMAKE_CONFIGURATION_TYPES) + add_definitions(-DMDBX_BUILD_CONFIG="$") +else() + add_definitions(-DMDBX_BUILD_CONFIG="${CMAKE_BUILD_TYPE}") endif() # options @@ -196,7 +207,7 @@ endforeach(item) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/elements/version.c.in" "${CMAKE_CURRENT_BINARY_DIR}/version.c" ESCAPE_QUOTES) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/elements/config.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/mdbx-config.h") + "${CMAKE_CURRENT_BINARY_DIR}/mdbx-config.h" ESCAPE_QUOTES) target_compile_definitions(mdbx PRIVATE MDBX_CONFIG_H="${CMAKE_CURRENT_BINARY_DIR}/mdbx-config.h") diff --git a/src/elements/version.c.in b/src/elements/version.c.in index ce02bcac..a73a4a28 100644 --- a/src/elements/version.c.in +++ b/src/elements/version.c.in @@ -36,5 +36,10 @@ "@MDBX_GIT_DESCRIBE@"}}; /*LIBMDBX_API*/ const mdbx_build_info mdbx_build = { - "@MDBX_BUILD_TIMESTAMP@", "${MDBX_BUILD_TARGET}", "@MDBX_OPTIONS_STRING@", - "@MDBX_BUILD_COMPILER@", "${MDBX_COMPILE_FLAGS}"}; + "@MDBX_BUILD_TIMESTAMP@", + "${MDBX_BUILD_TARGET}" +#ifdef DMDBX_BUILD_CONFIG + "-" DMDBX_BUILD_CONFIG +#endif + , + "@MDBX_OPTIONS_STRING@", "@MDBX_BUILD_COMPILER@", "${MDBX_COMPILE_FLAGS}"};