include(CheckSymbolExists) # generated(see comments in public/build.h) # cat build.h | grep '^#undef XASH' | awk '{ print "check_symbol_exists(" $2 " \"build.h\" " $2 ")" }' set(CMAKE_REQUIRED_INCLUDES "${PROJECT_SOURCE_DIR}/public/") check_symbol_exists(XASH_64BIT "build.h" XASH_64BIT) check_symbol_exists(XASH_AMD64 "build.h" XASH_AMD64) check_symbol_exists(XASH_ANDROID "build.h" XASH_ANDROID) check_symbol_exists(XASH_APPLE "build.h" XASH_APPLE) check_symbol_exists(XASH_ARM "build.h" XASH_ARM) check_symbol_exists(XASH_ARM_HARDFP "build.h" XASH_ARM_HARDFP) check_symbol_exists(XASH_ARM_SOFTFP "build.h" XASH_ARM_SOFTFP) check_symbol_exists(XASH_ARMv4 "build.h" XASH_ARMv4) check_symbol_exists(XASH_ARMv5 "build.h" XASH_ARMv5) check_symbol_exists(XASH_ARMv6 "build.h" XASH_ARMv6) check_symbol_exists(XASH_ARMv7 "build.h" XASH_ARMv7) check_symbol_exists(XASH_ARMv8 "build.h" XASH_ARMv8) check_symbol_exists(XASH_BIG_ENDIAN "build.h" XASH_BIG_ENDIAN) check_symbol_exists(XASH_BSD "build.h" XASH_BSD) check_symbol_exists(XASH_DOS4GW "build.h" XASH_DOS4GW) check_symbol_exists(XASH_E2K "build.h" XASH_E2K) check_symbol_exists(XASH_EMSCRIPTEN "build.h" XASH_EMSCRIPTEN) check_symbol_exists(XASH_FREEBSD "build.h" XASH_FREEBSD) check_symbol_exists(XASH_HAIKU "build.h" XASH_HAIKU) check_symbol_exists(XASH_IOS "build.h" XASH_IOS) check_symbol_exists(XASH_JS "build.h" XASH_JS) check_symbol_exists(XASH_LINUX "build.h" XASH_LINUX) check_symbol_exists(XASH_LITTLE_ENDIAN "build.h" XASH_LITTLE_ENDIAN) check_symbol_exists(XASH_MINGW "build.h" XASH_MINGW) check_symbol_exists(XASH_MIPS "build.h" XASH_MIPS) check_symbol_exists(XASH_PPC "build.h" XASH_PPC) check_symbol_exists(XASH_MOBILE_PLATFORM "build.h" XASH_MOBILE_PLATFORM) check_symbol_exists(XASH_MSVC "build.h" XASH_MSVC) check_symbol_exists(XASH_NETBSD "build.h" XASH_NETBSD) check_symbol_exists(XASH_OPENBSD "build.h" XASH_OPENBSD) check_symbol_exists(XASH_POSIX "build.h" XASH_POSIX) check_symbol_exists(XASH_RISCV "build.h" XASH_RISCV) check_symbol_exists(XASH_RISCV_DOUBLEFP "build.h" XASH_RISCV_DOUBLEFP) check_symbol_exists(XASH_RISCV_SINGLEFP "build.h" XASH_RISCV_SINGLEFP) check_symbol_exists(XASH_RISCV_SOFTFP "build.h" XASH_RISCV_SOFTFP) check_symbol_exists(XASH_SERENITY "build.h" XASH_SERENITY) check_symbol_exists(XASH_WIN32 "build.h" XASH_WIN32) check_symbol_exists(XASH_WIN64 "build.h" XASH_WIN64) check_symbol_exists(XASH_X86 "build.h" XASH_X86) check_symbol_exists(XASH_NSWITCH "build.h" XASH_NSWITCH) unset(CMAKE_REQUIRED_INCLUDES) # engine/common/build.c if(XASH_ANDROID) set(BUILDOS "android") elseif(XASH_WIN32 OR XASH_LINUX OR XASH_APPLE) set(BUILDOS "") # no prefix for default OS elseif(XASH_FREEBSD) set(BUILDOS "freebsd") elseif(XASH_NETBSD) set(BUILDOS "netbsd") elseif(XASH_OPENBSD) set(BUILDOS "openbsd") elseif(XASH_EMSCRIPTEN) set(BUILDOS "emscripten") elseif(XASH_DOS4GW) set(BUILDOS "DOS4GW") elseif(XASH_HAIKU) set(BUILDOS "haiku") elseif(XASH_SERENITY) set(BUILDOS "serenityos") elseif(XASH_NSWITCH) set(BUILDOS "nswitch") else() message(SEND_ERROR "Place your operating system name here! If this is a mistake, try to fix conditions above and report a bug") endif() if(XASH_AMD64) set(BUILDARCH "amd64") elseif(XASH_X86) if(XASH_WIN32 OR XASH_LINUX OR XASH_APPLE) set(BUILDARCH "") # no prefix for default OS else() set(BUILDARCH "i386") endif() elseif(XASH_ARM AND XASH_64BIT) set(BUILDARCH "aarch64") elseif(XASH_ARM) set(BUILDARCH "armv") if(XASH_ARMv8) set(BUILDARCH "${BUILDARCH}8_32") elseif(XASH_ARMv7) set(BUILDARCH "${BUILDARCH}7") elseif(XASH_ARMv6) set(BUILDARCH "${BUILDARCH}6") elseif(XASH_ARMv5) set(BUILDARCH "${BUILDARCH}5") elseif(XASH_ARMv4) set(BUILDARCH "${BUILDARCH}4") else() message(SEND_ERROR "Unknown ARM") endif() if(XASH_ARM_HARDFP) set(BUILDARCH "${BUILDARCH}hf") else() set(BUILDARCH "${BUILDARCH}l") endif() elseif(XASH_MIPS) set(BUILDARCH "mips") if(XASH_64BIT) set(BUILDARCH "${BUILDARCH}64") endif() if(XASH_LITTLE_ENDIAN) set(BUILDARCH "${BUILDARCH}el") endif() elseif(XASH_PPC) set(BUILDARCH "powerpc") if(XASH_64BIT) set(BUILDARCH "${BUILDARCH}64") endif() if(XASH_LITTLE_ENDIAN) set(BUILDARCH "${BUILDARCH}le") endif() elseif(XASH_RISCV) set(BUILDARCH "riscv") if(XASH_64BIT) set(BUILDARCH "${BUILDARCH}64") else() set(BUILDARCH "${BUILDARCH}32") endif() if(XASH_RISCV_DOUBLEFP) set(BUILDARCH "${BUILDARCH}d") elseif(XASH_RISCV_SINGLEFP) set(BUILDARCH "${BUILDARCH}f") endif() elseif(XASH_JS) set(BUILDARCH "javascript") elseif(XASH_E2K) set(BUILDARCH "e2k") else() message(SEND_ERROR "Place your architecture name here! If this is a mistake, try to fix conditions above and report a bug") endif() if(BUILDOS STREQUAL "android") set(POSTFIX "") # force disable for Android, as Android ports aren't distributed in normal way and doesn't follow library naming elseif(BUILDOS AND BUILDARCH) set(POSTFIX "_${BUILDOS}_${BUILDARCH}") elseif(BUILDARCH) set(POSTFIX "_${BUILDARCH}") else() set(POSTFIX "") endif() message(STATUS "Library postfix: " ${POSTFIX}) set(CMAKE_RELEASE_POSTFIX ${POSTFIX}) set(CMAKE_DEBUG_POSTFIX ${POSTFIX}) set(CMAKE_RELWITHDEBINFO_POSTFIX ${POSTFIX}) set(CMAKE_MINSIZEREL_POSTFIX ${POSTFIX}) set(CMAKE_POSTFIX ${POSTFIX})