$search
00001 ############################################################################### 00002 # Platform Detection 00003 ############################################################################### 00004 00005 #ifdef DOXYGEN_SHOULD_SKIP_THIS 00006 00007 ############################### 00008 # Distro 00009 ############################### 00010 # Checks the linux distro and 00011 # sets the following variables 00012 # 00013 # - DISTRO_NAME 00014 # - DISTRO_VERSION 00015 # - DISTRO_VERSION_STRING 00016 # 00017 # If no recognised distro is found, it will 00018 # return each variable with a -UNKNOWN appended 00019 # (e.g. DISTRO_NAME = DISTRO_NAME-UNKNOWN) 00020 # 00021 macro(ecl_detect_distro) 00022 if(EXISTS "/etc/issue") 00023 file(READ "/etc/issue" ETC_ISSUE) 00024 string(REGEX MATCH "9.10" DISTRO_KARMIC ${ETC_ISSUE}) 00025 string(REGEX MATCH "10.04" DISTRO_LUCID ${ETC_ISSUE}) 00026 string(REGEX MATCH "10.10" DISTRO_MAVERICK ${ETC_ISSUE}) 00027 string(REGEX MATCH "11.04" DISTRO_NATTY ${ETC_ISSUE}) 00028 string(REGEX MATCH "11.10" DISTRO_ONEIRIC ${ETC_ISSUE}) 00029 string(REGEX MATCH "12.04" DISTRO_PRECISE ${ETC_ISSUE}) 00030 endif() 00031 if(DISTRO_KARMIC) 00032 set(DISTRO_NAME "Ubuntu") 00033 set(DISTRO_VERSION "9.10") 00034 set(DISTRO_VERSION_STRING "karmic") 00035 elseif(DISTRO_LUCID) 00036 set(DISTRO_NAME "Ubuntu") 00037 set(DISTRO_VERSION "10.04") 00038 set(DISTRO_VERSION_STRING "lucid") 00039 elseif(DISTRO_MAVERICK) 00040 set(DISTRO_NAME "Ubuntu") 00041 set(DISTRO_VERSION "10.10") 00042 set(DISTRO_VERSION_STRING "maverick") 00043 elseif(DISTRO_NATTY) 00044 set(DISTRO_NAME "Ubuntu") 00045 set(DISTRO_VERSION "11.04") 00046 set(DISTRO_VERSION_STRING "natty") 00047 elseif(DISTRO_ONEIRIC) 00048 set(DISTRO_NAME "Ubuntu") 00049 set(DISTRO_VERSION "11.10") 00050 set(DISTRO_VERSION_STRING "oneiric") 00051 elseif(DISTRO_PRECISE) 00052 set(DISTRO_NAME "Ubuntu") 00053 set(DISTRO_VERSION "12.04") 00054 set(DISTRO_VERSION_STRING "precise") 00055 else() 00056 set(DISTRO_NAME DISTRO_NAME-UNKNOWN) 00057 set(DISTRO_VERSION DISTRO_VERSION-UNKNOWN) 00058 set(DISTRO_VERSION_STRING DISTRO_VERSION_STRING-UNKNOWN) 00059 endif() 00060 endmacro() 00061 00062 ############################### 00063 # Detect Posix 00064 ############################### 00065 # This is as yet quite incomplete, but it suffices for what the 00066 # ecl currrently does. If it detects posix, it sets 00067 # 00068 # - PLATFORM_IS_POSIX 00069 # 00070 # It also configures the following variables to true 00071 # for public consumption if found (these are close to equivalent 00072 # to their c macro counterparts): 00073 # 00074 # - POSIX_HAS_CLOCK_GETTIME 00075 # - POSIX_HAS_CLOCK_NANOSLEEP 00076 # - POSIX_HAS_TIMERS 00077 # - POSIX_HAS_PRIORITY_SCHEDULING 00078 # - POSIX_HAS_TIMEOUTS 00079 # - POSIX_HAS_SEMAPHORES 00080 # - POSIX_HAS_SHARED_MEMORY_OBJECTS 00081 # - POSIX_HAS_CLOCK_MONOTONIC 00082 # - POSIX_HAS_CPUTIME 00083 # 00084 macro(ecl_detect_posix) 00085 00086 # Need some standard cmake modules 00087 include(CheckSymbolExists) 00088 include(CheckLibraryExists) 00089 00090 check_symbol_exists(_POSIX_VERSION unistd.h PLATFORM_IS_POSIX) 00091 00092 if(PLATFORM_IS_POSIX) 00093 check_library_exists(rt clock_nanosleep "" POSIX_HAS_CLOCK_NANOSLEEP) 00094 check_library_exists(rt clock_gettime "" POSIX_HAS_CLOCK_GETTIME) 00095 check_library_exists(pthread pthread_mutex_timedlock "" POSIX_HAS_MUTEX_TIMEDLOCK) 00096 check_library_exists(pthread nanosleep "" POSIX_HAS_NANOSLEEP) 00097 check_library_exists(rt shm_open "" POSIX_HAS_SHM_OPEN) 00098 check_library_exists(pthread sched_setscheduler "" POSIX_HAS_SCHED_SETSCHEDULER) 00099 check_library_exists(pthread sem_timedwait "" POSIX_HAS_SEM_TIMEDWAIT) 00100 check_library_exists(pthread sem_init "" POSIX_HAS_SEM_INIT) 00101 check_symbol_exists(CLOCK_MONOTONIC time.h POSIX_HAS_CLOCK_MONOTONIC) 00102 check_symbol_exists(CLOCK_PROCESS_CPUTIME_ID time.h POSIX_HAS_CPUTIME) 00103 endif() 00104 00105 if(POSIX_HAS_CLOCK_GETTIME) 00106 set(POSIX_HAS_MONOTONIC_CLOCK TRUE) 00107 endif() 00108 if(POSIX_HAS_CLOCK_NANOSLEEP) 00109 set(POSIX_HAS_CLOCK_SELECTION TRUE) 00110 endif() 00111 if(POSIX_HAS_NANOSLEEP) 00112 set(POSIX_HAS_TIMERS TRUE) 00113 endif() 00114 if(POSIX_HAS_SCHED_SETSCHEDULER) 00115 set(POSIX_HAS_PRIORITY_SCHEDULING TRUE) 00116 endif() 00117 if(POSIX_HAS_SEM_TIMEDWAIT AND POSIX_HAS_MUTEX_TIMEDLOCK) 00118 set(POSIX_HAS_TIMEOUTS TRUE) 00119 endif() 00120 if(POSIX_HAS_SEM_INIT) 00121 set(POSIX_HAS_SEMAPHORES TRUE) 00122 endif() 00123 if(POSIX_HAS_SHM_OPEN) 00124 set(POSIX_HAS_SHARED_MEMORY_OBJECTS TRUE) 00125 endif() 00126 endmacro() 00127 00128 ############################### 00129 # Detect Threads 00130 ############################### 00131 # If present, sets the variables to 1 00132 # 00133 # - PLATFORM_HAS_POSIX_THREADS 00134 # - PLATFORM_HAS_WIN32_THREADS 00135 # 00136 macro(ecl_detect_threads) 00137 include(FindThreads) 00138 if(CMAKE_USE_PTHREADS_INIT) 00139 set(PLATFORM_HAS_POSIX_THREADS 1) 00140 elseif(CMAKE_USE_WIN32_THREADS_INIT) 00141 set(PLATFORM_HAS_WIN32_THREADS 1) 00142 endif(CMAKE_USE_PTHREADS_INIT) 00143 endmacro() 00144 00145 ############################### 00146 # Detect Timers 00147 ############################### 00148 # This is very rough, if the right env found, sets the variables to 1 00149 # 00150 # - PLATFORM_HAS_WIN_TIMERS 00151 # - PLATFORM_HAS_MACH_TIMERS 00152 # - PLATFORM_HAS_RT_TIMERS 00153 # - PLATFORM_HAS_POSIX_TIMERS 00154 # 00155 macro(ecl_detect_timers) 00156 if(WIN32) 00157 set(PLATFORM_HAS_WIN_TIMERS 1) 00158 elseif(APPLE) 00159 set(PLATFORM_HAS_MACH_TIMERS 1) # Should we check for this? 00160 elseif(POSIX_HAS_CLOCK_GETTIME AND POSIX_HAS_CLOCK_NANOSLEEP) # Found by ecl_detect_posix 00161 set(PLATFORM_HAS_RT_TIMERS TRUE) 00162 elseif ( POSIX_HAS_TIMERS ) 00163 set(PLATFORM_HAS_POSIX_TIMERS 1) 00164 endif() 00165 endmacro() 00166 00167 ############################### 00168 # Detect Sizes 00169 ############################### 00170 # Configures the variables: 00171 # 00172 # - PLATFORM_SIZE_OF_CHAR 00173 # - PLATFORM_SIZE_OF_SHORT 00174 # - PLATFORM_SIZE_OF_INT 00175 # - PLATFORM_SIZE_OF_LONG 00176 # - PLATFORM_SIZE_OF_LONG_LONG 00177 # - PLATFORM_SIZE_OF_FLOAT 00178 # - PLATFORM_SIZE_OF_DOUBLE 00179 # - PLATFORM_SIZE_OF_LONG_DOUBLE 00180 # - PLATFORM_IS_32_BIT 00181 # - PLATFORM_IS_64_BIT 00182 macro(ecl_detect_sizes) 00183 include(CheckTypeSize) 00184 00185 CHECK_TYPE_SIZE (char PLATFORM_SIZE_OF_CHAR) 00186 CHECK_TYPE_SIZE (short PLATFORM_SIZE_OF_SHORT) 00187 CHECK_TYPE_SIZE (int PLATFORM_SIZE_OF_INT) 00188 CHECK_TYPE_SIZE (long PLATFORM_SIZE_OF_LONG) 00189 CHECK_TYPE_SIZE ("long long" PLATFORM_SIZE_OF_LONG_LONG) 00190 CHECK_TYPE_SIZE (float PLATFORM_SIZE_OF_FLOAT) 00191 CHECK_TYPE_SIZE (double PLATFORM_SIZE_OF_DOUBLE) 00192 CHECK_TYPE_SIZE ("long double" PLATFORM_SIZE_OF_LONG_DOUBLE) 00193 00194 if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) 00195 set(PLATFORM_IS_32_BIT 1) 00196 elseif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) 00197 set(PLATFORM_IS_64_BIT 1) 00198 endif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) 00199 endmacro() 00200 00201 ############################### 00202 # Detect Char Type 00203 ############################### 00204 # Configures (or not) the variables: 00205 # 00206 # - PLATFORM_CHAR_IS_SIGNED 00207 # - PLATFORM_CHAR_IS_UNSIGNED 00208 # 00209 # This is bad because it fails when cross compiling. It is possible 00210 # to do it without try_run though. Use try_compile on the classes 00211 # set up like in ecl/concepts/containers so that it will fail to 00212 # compile if a private constructor is called. Not necessary for 00213 # us right now though. 00214 # 00215 macro(ecl_detect_char_type) 00216 rosbuild_find_ros_package(ecl_build) 00217 set(ECL_CMAKE_TESTS_PATH ${ecl_build_PACKAGE_PATH}/cmake/tests) 00218 try_run(IS_SIGNED_RAN_SUCCESS 00219 IS_SIGNED_COMPILED_SUCCESS 00220 "${CMAKE_BINARY_DIR}" 00221 "${ECL_CMAKE_TESTS_PATH}/is_char_signed.cpp" 00222 RUN_OUTPUT_VARIABLE IS_SIGNED_OUTPUT 00223 ) 00224 if(IS_SIGNED_OUTPUT STREQUAL "signed") 00225 set(PLATFORM_CHAR_IS_SIGNED TRUE) 00226 else() 00227 set(PLATFORM_CHAR_IS_UNSIGNED TRUE) 00228 endif() 00229 endmacro() 00230 00231 ############################### 00232 # Detect Endianness 00233 ############################### 00234 # Configures the variables: 00235 # 00236 # - PLATFORM_IS_BIG_ENDIAN 00237 # - PLATFORM_IS_LITTLE_ENDIAN 00238 # 00239 macro(ecl_detect_endianness) 00240 include(TestBigEndian) 00241 TEST_BIG_ENDIAN(PLATFORM_IS_BIG_ENDIAN) 00242 if(NOT PLATFORM_IS_BIG_ENDIAN) 00243 set(PLATFORM_IS_LITTLE_ENDIAN 1) 00244 endif() 00245 endmacro() 00246 00247 ############################### 00248 # Set Platform Specific Flags 00249 ############################### 00250 # This is rather dependant on having used the ecl toolchain/platform 00251 # cmake scripts to configure the following variables: 00252 # 00253 # - PLATFORM_ARCH/PLATFORM_CPU/PLATFORM_TUNE/PLATFORM_OTHER_CFLAGS 00254 # 00255 # It parses these and adds them in the correct way to CMAKE_CXX_FLAGS. 00256 # 00257 macro(ecl_set_platform_cflags) 00258 set(PLATFORM_ARCH "unspecified" CACHE STRING "Architecture type to pass (e.g. to gcc via -march)." ) 00259 set(PLATFORM_CPU "unspecified" CACHE STRING "Cpu type to pass (e.g. to gcc via -mcpu)." ) 00260 set(PLATFORM_TUNE "unspecified" CACHE STRING "Cpu type to tune (e.g. to gcc via -mtune)." ) 00261 00262 # Reason for having abstracted arch,cpu and tunes are so that 00263 # different compiler flags for different platforms can be used here. 00264 IF ( NOT ROS_COMPILE_FLAGS ) # Don't add anything here if ros has already handled it 00265 if( CMAKE_COMPILER_IS_GNUCXX ) # # Generic GnuCXX, also includes MinGW 00266 if(NOT PLATFORM_ARCH STREQUAL "unspecified") # System Architecture 00267 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${PLATFORM_ARCH}") # This gets used for all builds 00268 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PLATFORM_ARCH}") # This gets used for all builds 00269 endif(NOT PLATFORM_ARCH STREQUAL "unspecified") 00270 if(NOT PLATFORM_CPU STREQUAL "unspecified") # System CPU 00271 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=${PLATFORM_CPU}") 00272 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=${PLATFORM_CPU}") 00273 endif(NOT PLATFORM_CPU STREQUAL "unspecified") 00274 if(NOT PLATFORM_TUNE STREQUAL "unspecified") # System CPU Tuner 00275 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mtune=${PLATFORM_TUNE}") 00276 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=${PLATFORM_TUNE}") 00277 endif(NOT PLATFORM_TUNE STREQUAL "unspecified") 00278 if(DEFINED PLATFORM_OTHER_CFLAGS) 00279 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_OTHER_CFLAGS}") 00280 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_OTHER_CFLAGS}") 00281 endif(DEFINED PLATFORM_OTHER_CFLAGS) 00282 endif() 00283 endif() 00284 00285 string(STRIP "${CMAKE_C_FLAGS}" CMAKE_C_FLAGS) 00286 string(STRIP "${CMAKE_CXX_FLAGS}" CMAKE_CXX_FLAGS) 00287 endmacro() 00288 00289 ############################### 00290 # Compiler Version 00291 ############################### 00292 # Configures the variables: 00293 # 00294 # - COMPILER_VERSION 00295 # - COMPILER_MAJOR_VERSION 00296 # - COMPILER_MINOR_VERSION 00297 # - COMPILER_PATCH_VERSION 00298 # 00299 macro(ecl_detect_compiler_version) 00300 if(${MSVC}) 00301 set(COMPILER_VERSION ${MSVC}) 00302 else() 00303 execute_process( 00304 COMMAND ${CMAKE_CXX_COMPILER} --version 00305 OUTPUT_VARIABLE COMPILER_VERSION_STRING 00306 ) 00307 string(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.([0-9]).*" "\\1.\\2.\\3" 00308 COMPILER_VERSION ${COMPILER_VERSION_STRING}) 00309 string(REGEX REPLACE ".* ([0-9])\\.[0-9]\\.[0-9].*" "\\1" 00310 COMPILER_MAJOR_VERSION ${COMPILER_VERSION_STRING}) 00311 string(REGEX REPLACE ".* [0-9]\\.([0-9])\\.[0-9].*" "\\1" 00312 COMPILER_MINOR_VERSION ${COMPILER_VERSION_STRING}) 00313 string(REGEX REPLACE ".* [0-9]\\.[0-9]\\.([0-9]).*" "\\1" 00314 COMPILER_PATCH_VERSION ${COMPILER_VERSION_STRING}) 00315 endif() 00316 endmacro() 00317 00318 ############################### 00319 # Check CXX Flags 00320 ############################### 00321 # 00322 # This is a more general version of CheckCXXCompilerFlags. 00323 # Why they made that one good only for compiler flags I dont know. 00324 # Anyway, this one lets you also check for linker flags. 00325 # 00326 # Usage: 00327 # ecl_check_cxx_flags("-Wl,--as-needed" LINK_AS_NEEDED) 00328 # if(${LINK_AS_NEEDED}) 00329 # set(${_flag} "-Wl,--as-needed") 00330 # else() 00331 # set(${_flag} "") 00332 # endif() 00333 # 00334 macro(ecl_check_cxx_flags _flag _result) 00335 include(CheckCXXSourceCompiles) 00336 set(ORIGINAL_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") 00337 set(CMAKE_REQUIRED_FLAGS "${_flag}") 00338 CHECK_CXX_SOURCE_COMPILES("int main() { return 0;}" ${_result} 00339 # Some compilers do not fail with a bad flag 00340 FAIL_REGEX "unrecognized .*option" # GNU 00341 FAIL_REGEX "ignoring unknown option" # MSVC 00342 FAIL_REGEX "[Uu]nknown option" # HP 00343 FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro 00344 FAIL_REGEX "command option .* is not recognized" # XL 00345 ) 00346 set(CMAKE_REQUIRED_FLAGS "${ORIGINAL_CMAKE_REQUIRED_FLAGS}") 00347 endmacro() 00348 00349 ############################### 00350 # Compiler - link as needed 00351 ############################### 00352 # 00353 # This returns the result of a suitable flag for the compiler in _flag. 00354 # 00355 # ecl_link_as_needed(ECL_LINK_AS_NEEDED_FLAG) 00356 # set(ROS_LINK_FLAGS "${ROS_LINK_FLAGS} ${ECL_LINK_AS_NEEDED_FLAG}") 00357 # 00358 macro(ecl_link_as_needed _flag) 00359 if(APPLE) # Apple gnu 00360 ecl_check_cxx_flags("-Wl,-mark_dead_strippable_dylib" DEAD_STRIPPABLE) 00361 if(${DEAD_STRIPPABLE}) 00362 set(${_flag} "-Wl,-mark_dead_strippable_dylib") 00363 else() 00364 set(${_flag} "") 00365 endif() 00366 elseif(CMAKE_COMPILER_IS_GNUCXX) # Linux gnu 00367 ecl_check_cxx_flags("-Wl,--as-needed" link_as_needed) 00368 if(${link_as_needed}) 00369 set(${_flag} "-Wl,--as-needed") 00370 else() 00371 set(${_flag} "") 00372 endif() 00373 endif() 00374 endmacro() 00375 00376 ############################### 00377 # Compiler - no as needed 00378 ############################### 00379 # 00380 # This returns the result of a suitable flag for the compiler in _flag. 00381 # 00382 # ecl_link_no_as_needed(ECL_LINK_NO_AS_NEEDED_FLAG) 00383 # set(ROS_LINK_FLAGS "${ROS_LINK_FLAGS} ${ECL_LINK_NO_AS_NEEDED_FLAG}") 00384 # 00385 macro(ecl_link_no_as_needed _flag) 00386 if(CMAKE_COMPILER_IS_GNUCXX) 00387 ecl_check_cxx_flags("-Wl,--no-as-needed" link_as_no_needed) 00388 if(${link_as_no_needed}) 00389 set(${_flag} "-Wl,--no-as-needed") 00390 else() 00391 set(${_flag} "") 00392 endif() 00393 endif() 00394 endmacro() 00395 00396 ############################### 00397 # Platform Detection 00398 ############################### 00399 # 00400 # The one to bind them all (detect macros) 00401 # 00402 macro(ecl_detect_platform) 00403 ecl_detect_distro() 00404 ecl_detect_posix() 00405 ecl_detect_threads() 00406 ecl_detect_timers() 00407 ecl_detect_sizes() 00408 ecl_detect_endianness() 00409 #ecl_detect_char_type() # has a try_run test, bad for cross compiling 00410 ecl_detect_compiler_version() 00411 if(NOT PLATFORM_IS_POSIX) 00412 if(WIN32) 00413 set(PLATFORM_IS_WIN32 1) 00414 endif() 00415 endif() 00416 if(APPLE) 00417 set(PLATFORM_IS_APPLE 1) 00418 endif() 00419 endmacro() 00420 00421 ############################### 00422 # Platform Summary 00423 ############################### 00424 # 00425 # Summarise platform statistics 00426 # 00427 macro(ecl_summary_platform) 00428 message("-------------------------------------------------------------------") 00429 message("Platform Summary") 00430 message("-------------------------------------------------------------------") 00431 message("") 00432 # System 00433 if(PLATFORM_IS_APPLE) 00434 message("System type.....................macosx") 00435 elseif(PLATFORM_IS_POSIX) 00436 message("System type.....................posix") 00437 elseif(PLATFORM_IS_WIN32) 00438 message("System type.....................win32") 00439 endif() 00440 message("Operating System................${CMAKE_SYSTEM}") 00441 if ( NOT DISTRO_NAME STREQUAL "DISTRO_NAME-UNKNOWN") 00442 message("Distro Name.....................${DISTRO_NAME}") 00443 endif() 00444 if ( NOT DISTRO_VERSION_STRING STREQUAL "DISTRO_VERSION_STRING-UNKNOWN") 00445 message(" - version string...............${DISTRO_VERSION_STRING}") 00446 endif() 00447 if ( NOT DISTRO_VERSION STREQUAL "DISTRO_VERSION-UNKNOWN") 00448 message(" - version......................${DISTRO_VERSION}") 00449 endif() 00450 # Cpu Specifics 00451 if(DEFINED PLATFORM_ARCH) 00452 message("Architecture....................${PLATFORM_ARCH}") 00453 endif(DEFINED PLATFORM_ARCH) 00454 if(DEFINED PLATFORM_CPU) 00455 message("Cpu type........................${PLATFORM_CPU}") 00456 endif(DEFINED PLATFORM_CPU) 00457 if(DEFINED PLATFORM_TUNE) 00458 message("Tuned cpu type..................${PLATFORM_TUNE}") 00459 endif(DEFINED PLATFORM_TUNE) 00460 if(DEFINED PLATFORM_OTHER_CFLAGS) 00461 message("Cpu specific cflags.............${PLATFORM_OTHER_CFLAGS}") 00462 endif(DEFINED PLATFORM_OTHER_CFLAGS) 00463 # Timers 00464 if(PLATFORM_HAS_RT_TIMERS) 00465 message("Timer model.....................real-time") 00466 elseif(PLATFORM_HAS_MACH_TIMERS) 00467 message("Timer model.....................macosx") 00468 elseif(PLATFORM_HAS_POSIX_TIMERS) 00469 message("Timer model.....................posix") 00470 elseif(PLATFORM_HAS_WIN_TIMERS) 00471 message("Timer model.....................winmm") 00472 else() 00473 message("Timer model.....................unspecified") 00474 endif() 00475 # Threads 00476 if(CMAKE_USE_PTHREADS_INIT) 00477 message("Thread model....................posix") 00478 elseif(CMAKE_USE_WIN32_THREADS_INIT) 00479 message("Thread model....................win32") 00480 else(CMAKE_USE_PTHREADS_INIT) 00481 message("Thread model....................none") 00482 endif(CMAKE_USE_PTHREADS_INIT) 00483 # Type sizes 00484 message("Size of char....................${PLATFORM_SIZE_OF_CHAR}") 00485 message("Size of short...................${PLATFORM_SIZE_OF_SHORT}") 00486 message("Size of int.....................${PLATFORM_SIZE_OF_INT}") 00487 message("Size of long....................${PLATFORM_SIZE_OF_LONG}") 00488 message("Size of long long...............${PLATFORM_SIZE_OF_LONG_LONG}") 00489 message("Size of float...................${PLATFORM_SIZE_OF_FLOAT}") 00490 message("Size of double..................${PLATFORM_SIZE_OF_DOUBLE}") 00491 message("Size of long double.............${PLATFORM_SIZE_OF_LONG_DOUBLE}") 00492 if(PLATFORM_IS_32_BIT) 00493 message("Size of pointer.................32-bit") 00494 elseif(PLATFORM_IS_64_BIT) 00495 message("Size of pointer.................64-bit") 00496 endif(PLATFORM_IS_32_BIT) 00497 00498 if(PLATFORM_IS_BIG_ENDIAN) 00499 message("Endianness......................big-endian") 00500 else(PLATFORM_IS_BIG_ENDIAN) 00501 message("Endianness......................little-endian") 00502 endif(PLATFORM_IS_BIG_ENDIAN) 00503 message("") 00504 00505 if(PLATFORM_IS_POSIX) 00506 message("-------------------------------------------------------------------") 00507 message("Posix Specifications") 00508 message("-------------------------------------------------------------------") 00509 message("") 00510 if(POSIX_HAS_CLOCK_SELECTION) 00511 message("Clock selection.................yes") 00512 else() 00513 message("Clock selection.................no") 00514 endif() 00515 if(POSIX_HAS_MONOTONIC_CLOCK) 00516 message("Monotonic clock.................yes") 00517 else() 00518 message("Monotonic clock.................no") 00519 endif() 00520 if(POSIX_HAS_PRIORITY_SCHEDULING) 00521 message("Priority scheduling.............yes") 00522 else() 00523 message("Priority scheduling.............no") 00524 endif() 00525 if(POSIX_HAS_SEMAPHORES) 00526 message("Semaphores......................yes") 00527 else() 00528 message("Semaphores......................no") 00529 endif() 00530 if(POSIX_HAS_SHARED_MEMORY_OBJECTS) 00531 message("Shared memory objects...........yes") 00532 else() 00533 message("Shared memory objects...........no") 00534 endif() 00535 if(POSIX_HAS_TIMERS) 00536 message("Timers..........................yes") 00537 else() 00538 message("Timers..........................no") 00539 endif() 00540 if(POSIX_HAS_TIMEOUTS) 00541 message("Timeouts........................yes") 00542 else() 00543 message("Timeouts........................no") 00544 endif() 00545 if(POSIX_HAS_CLOCK_GETTIME) 00546 message(" - clock_gettime................yes") 00547 else() 00548 message(" - clock_gettime................no") 00549 endif() 00550 if(POSIX_HAS_CLOCK_NANOSLEEP) 00551 message(" - clock_nanosleep..............yes") 00552 else() 00553 message(" - clock_nanosleep..............no") 00554 endif() 00555 if(POSIX_HAS_NANOSLEEP) 00556 message(" - nanosleep....................yes") 00557 else() 00558 message(" - nanosleep....................no") 00559 endif() 00560 if(POSIX_HAS_MUTEX_TIMEDLOCK) 00561 message(" - pthread_mutex_timedlock......yes") 00562 else() 00563 message(" - pthread_mutex_timedlock......no") 00564 endif() 00565 if(POSIX_HAS_SCHED_SETSCHEDULER) 00566 message(" - sched_setscheduler...........yes") 00567 else() 00568 message(" - sched_setscheduler...........no") 00569 endif() 00570 if(POSIX_HAS_SEM_INIT) 00571 message(" - sem_init.....................yes") 00572 else() 00573 message(" - sem_init.....................no") 00574 endif() 00575 if(POSIX_HAS_SEM_TIMEDWAIT) 00576 message(" - sem_timedwait................yes") 00577 else() 00578 message(" - sem_timedwait................no") 00579 endif() 00580 if(POSIX_HAS_SHM_OPEN) 00581 message(" - shm_open.....................yes") 00582 else() 00583 message(" - shm_open.....................no") 00584 endif() 00585 message("") 00586 endif() 00587 message("-------------------------------------------------------------------") 00588 message("Build Environment") 00589 message("-------------------------------------------------------------------") 00590 message("") 00591 # Compiler 00592 message("Compiler........................${CMAKE_CXX_COMPILER}") 00593 if(COMPILER_VERSION) 00594 message(" - version......................${COMPILER_VERSION}") 00595 endif() 00596 message("") 00597 endmacro() 00598 00599 #endif // DOXYGEN_SHOULD_SKIP_THIS