diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CMakeDetermineCCompiler.cmake | 5 | ||||
-rw-r--r-- | Modules/CMakeDetermineCXXCompiler.cmake | 5 | ||||
-rw-r--r-- | Modules/CMakeDetermineSystem.cmake | 62 | ||||
-rw-r--r-- | Modules/CMakeSystemSpecificInformation.cmake | 35 |
4 files changed, 107 insertions, 0 deletions
diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake new file mode 100644 index 0000000..100412a --- /dev/null +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -0,0 +1,5 @@ +# determine the compiler to use for C programs +# NOTE, a generator may set CMAKE_C_COMPILER before +# loading this file to force a compiler. + +FIND_PROGRAM(CMAKE_C_COMPILER NAMES $ENV{CC} gcc cc cl bcc PATHS /bin /usr/bin /usr/local/bin ) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake new file mode 100644 index 0000000..72ee90a --- /dev/null +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -0,0 +1,5 @@ +# determine the compiler to use for C++ programs +# NOTE, a generator may set CMAKE_CXX_COMPILER before +# loading this file to force a compiler. + +FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES $ENV{CXX} c++ g++ CC aCC cl bcc PATHS /bin /usr/bin /usr/local/bin ) diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake new file mode 100644 index 0000000..5a0296a --- /dev/null +++ b/Modules/CMakeDetermineSystem.cmake @@ -0,0 +1,62 @@ +# This module is used by the Makefile generator to determin the following variables: +# CMAKE_SYSTEM_NAME - on unix this is uname -s, for windows it is Windows +# CMAKE_SYSTEM_VERSION - on unix this is uname -r, for windows it is empty +# CMAKE_SYSTEM - ${CMAKE_SYSTEM}-${CMAKE_SYSTEM_VERSION}, for windows: ${CMAKE_SYSTEM} +# +# Expected uname -s output: +# +# AIX AIX +# BSD/OS BSD/OS +# FreeBSD FreeBSD +# HP-UX HP-UX +# IRIX IRIX +# Linux Linux +# NetBSD NetBSD +# OpenBSD OpenBSD +# OFS/1 (Digital Unix) OSF1 +# SCO OpenServer 5 SCO_SV +# SCO UnixWare 7 UnixWare +# SCO UnixWare (pre release 7) UNIX_SV +# SCO XENIX Xenix +# Solaris SunOS +# SunOS SunOS +# Tru64 Tru64 +# Ultrix ULTRIX +# cygwin CYGWIN_NT-5.1 +# MacOSX Darwin + +IF(UNIX) + FIND_PROGRAM(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin ) + IF(CMAKE_UNAME) + EXEC_PROGRAM(uname ARGS -s OUTPUT_VARIABLE CMAKE_SYSTEM_NAME) + EXEC_PROGRAM(uname ARGS -r OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION) + SET(CMAKE_UNAME ${CMAKE_UNAME} CACHE INTERNAL "uname command") + ENDIF(CMAKE_UNAME) +ELSE(UNIX) + IF(WIN32) + SET (CMAKE_SYSTEM_NAME "Windows") + SET (CMAKE_SYSTEM_VERSION "") + ENDIF(WIN32) +ENDIF(UNIX) + +IF(NOT CMAKE_SYSTEM_NAME) + SET(CMAKE_SYSTEM_NAME "UnknownOS") +ENDIF(NOT CMAKE_SYSTEM_NAME) + +# fix for BSD/OS , remove the / +IF(CMAKE_SYSTEM_NAME MATCHES BSD.OS) + SET(CMAKE_SYSTEM_NAME BSDOS) +ENDIF(CMAKE_SYSTEM_NAME MATCHES BSD.OS) + +# fix for CYGWIN which has windows version in it +IF(CMAKE_SYSTEM_NAME MATCHES CYGWIN) + SET(CMAKE_SYSTEM_NAME CYGWIN) +ENDIF(CMAKE_SYSTEM_NAME MATCHES CYGWIN) + +# set CMAKE_SYSTEM to the CMAKE_SYSTEM_NAME +SET(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME}) +# if there is a CMAKE_SYSTEM_VERSION then add a -${CMAKE_SYSTEM_VERSION} +IF(CMAKE_SYSTEM_VERSION) + SET(CMAKE_SYSTEM ${CMAKE_SYSTEM}-${CMAKE_SYSTEM_VERSION}) +ENDIF(CMAKE_SYSTEM_VERSION) + diff --git a/Modules/CMakeSystemSpecificInformation.cmake b/Modules/CMakeSystemSpecificInformation.cmake new file mode 100644 index 0000000..1615d9f --- /dev/null +++ b/Modules/CMakeSystemSpecificInformation.cmake @@ -0,0 +1,35 @@ +# this module sets system information like how to build libraries +# before including this file the system, C, and C++ compilers must +# have already been determined. +# This file first sets default variables that can be used for most +# makefiles. Next, it will include a system specific file. Finally, +# it will optionally include a system and compiler specific file that +# can be used to override any of this information. + + +# 1. set default values that will work for most system +SET(CMAKE_CXX_CREATE_SHARED_LIBRARY + "${CMAKE_CXX_COMPILE} ${CMAKE_SHARED_LIBRARY_CREATE_FLAGS} ${CMAKE_CXX_LINK_SHARED_OUT_FLAG} <TARGET> <OBJECTS>") + +SET(CMAKE_CXX_CREATE_AR_LIBRARY + "${CMAKE_AR} ${CMAKE_AR_FLAGS} <TARGET> <OBJECTS>") + +# 2. now include SystemName.cmake file to set the system specific information +SET(CMAKE_SYSTEM_INFO_FILE ${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}.cmake) +IF(EXISTS ${CMAKE_SYSTEM_INFO_FILE}) + INCLUDE(${CMAKE_SYSTEM_INFO_FILE}) +ELSE(EXISTS ${CMAKE_SYSTEM_INFO_FILE}) + MESSAGE("System is unknown to cmake, create:\n${CMAKE_SYSTEM_INFO_FILE}" + " to use this system, please send your config file to " + "cmake@www.cmake.org so it can be added to cmake"") +ENDIF(EXISTS ${CMAKE_SYSTEM_INFO_FILE}) + + +# 3. include optional systemname-compiler.cmake files +IF(CMAKE_C_COMPILER) + INCLUDE(${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}-${CMAKE_C_COMPILER}.cmake OPTIONAL) +ENDIF(CMAKE_C_COMPILER) +IF(CMAKE_CXX_COMPILER) + INCLUDE(${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER}.cmake + OPTIONAL) +ENDIF(CMAKE_CXX_COMPILER) |