1# Defines a series of preprocessor variables based on the current platform. 2# 3# Usage: define_platform_macros(PREFIX) 4# 5# where PREFIX is the macro prefix (i.e., if PREFIX is XYZZY then the macros 6# will be named XYZZY_LINUX, XYZZY_WINDOWS, etc.). 7# 8# Author: 9# Kevin M. Godby <kevin@godby.org> 10# 11# Distributed under the Boost Software License, Version 1.0. 12# (See accompanying file LICENSE_1_0.txt or copy at 13# http://www.boost.org/LICENSE_1_0.txt) 14# 15 16function(_define_platform_macros_impl prefix platform_string variable_name) 17 if (${CMAKE_SYSTEM_NAME} MATCHES "${platform_string}") 18 string(TOUPPER "${prefix}_${variable_name}" _varname) 19 set(${_varname} TRUE PARENT_SCOPE) 20 endif() 21endfunction() 22 23macro(define_platform_macros _prefix) 24 _define_platform_macros_impl(${_prefix} "AIX" AIX) 25 _define_platform_macros_impl(${_prefix} "Android" ANDROID) 26 _define_platform_macros_impl(${_prefix} "BS/DOS" BSDOS) 27 _define_platform_macros_impl(${_prefix} "FreeBSD" FREEBSD) 28 _define_platform_macros_impl(${_prefix} "HP-UX" HPUX) 29 _define_platform_macros_impl(${_prefix} "IRIX" IRIX) 30 _define_platform_macros_impl(${_prefix} "Linux" LINUX) 31 _define_platform_macros_impl(${_prefix} "GNU/kFreeBSD" KFREEBSD) 32 _define_platform_macros_impl(${_prefix} "NetBSD" NETBSD) 33 _define_platform_macros_impl(${_prefix} "OpenBSD" OPENBSD) 34 _define_platform_macros_impl(${_prefix} "OFS1" OFS1) 35 _define_platform_macros_impl(${_prefix} "SCO_SV" SCO_SV) 36 _define_platform_macros_impl(${_prefix} "UnixWare" UNIXWARE) 37 _define_platform_macros_impl(${_prefix} "Xenix" XENIX) 38 _define_platform_macros_impl(${_prefix} "SunOS" SUNOS) 39 _define_platform_macros_impl(${_prefix} "Tru64" TRU64) 40 _define_platform_macros_impl(${_prefix} "ULTRIX" ULTRIX) 41 _define_platform_macros_impl(${_prefix} "CYGWIN" CYGWIN) 42 _define_platform_macros_impl(${_prefix} "Darwin" MACOSX) 43 _define_platform_macros_impl(${_prefix} "Windows" WINDOWS) 44endmacro() 45 46