e0459321cbc10dead07c4285f794834a751c4bf0
[platform/upstream/cmake.git] / Modules / CMakeSystemSpecificInformation.cmake
1 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
3
4
5 # This file is included by cmGlobalGenerator::EnableLanguage.
6 # It is included after the compiler has been determined, so
7 # we know things like the compiler name and if the compiler is gnu.
8
9 # before cmake 2.6 these variables were set in cmMakefile.cxx. This is still
10 # done to keep scripts and custom language and compiler modules working.
11 # But they are reset here and set again in the platform files for the target
12 # platform, so they can be used for testing the target platform instead
13 # of testing the host platform.
14 set(APPLE  )
15 set(UNIX   )
16 set(CYGWIN )
17 set(MSYS )
18 set(WIN32  )
19
20 function(_cmake_record_install_prefix )
21   set(_CMAKE_SYSTEM_PREFIX_PATH_INSTALL_PREFIX_VALUE "${CMAKE_INSTALL_PREFIX}" PARENT_SCOPE)
22   set(_CMAKE_SYSTEM_PREFIX_PATH_STAGING_PREFIX_VALUE "${CMAKE_STAGING_PREFIX}" PARENT_SCOPE)
23   set(icount 0)
24   set(scount 0)
25   foreach(value IN LISTS CMAKE_SYSTEM_PREFIX_PATH)
26     if(value STREQUAL CMAKE_INSTALL_PREFIX)
27       math(EXPR icount "${icount}+1")
28     endif()
29     if(value STREQUAL CMAKE_STAGING_PREFIX)
30       math(EXPR scount "${scount}+1")
31     endif()
32   endforeach()
33   set(_CMAKE_SYSTEM_PREFIX_PATH_INSTALL_PREFIX_COUNT "${icount}" PARENT_SCOPE)
34   set(_CMAKE_SYSTEM_PREFIX_PATH_STAGING_PREFIX_COUNT "${scount}" PARENT_SCOPE)
35 endfunction()
36
37 # include Generic system information
38 include(CMakeGenericSystem)
39
40 # 2. now include SystemName.cmake file to set the system specific information
41 set(CMAKE_SYSTEM_INFO_FILE Platform/${CMAKE_SYSTEM_NAME})
42
43 include(${CMAKE_SYSTEM_INFO_FILE} OPTIONAL RESULT_VARIABLE _INCLUDED_SYSTEM_INFO_FILE)
44
45 if(NOT _INCLUDED_SYSTEM_INFO_FILE)
46   message("System is unknown to cmake, create:\n${CMAKE_SYSTEM_INFO_FILE}"
47           " to use this system, please post your config file on "
48           "discourse.cmake.org so it can be added to cmake")
49   if(EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt)
50     configure_file(${CMAKE_BINARY_DIR}/CMakeCache.txt
51                    ${CMAKE_BINARY_DIR}/CopyOfCMakeCache.txt COPYONLY)
52     message("Your CMakeCache.txt file was copied to CopyOfCMakeCache.txt. "
53             "Please post that file on discourse.cmake.org.")
54   endif()
55 endif()
56
57 # optionally include a file which can do extra-generator specific things, e.g.
58 # CMakeFindEclipseCDT4.cmake asks gcc for the system include dirs for the Eclipse CDT4 generator
59 if(CMAKE_EXTRA_GENERATOR)
60   string(REPLACE " " "" _CMAKE_EXTRA_GENERATOR_NO_SPACES ${CMAKE_EXTRA_GENERATOR} )
61   include("CMakeFind${_CMAKE_EXTRA_GENERATOR_NO_SPACES}" OPTIONAL)
62 endif()
63
64
65 # for most systems a module is the same as a shared library
66 # so unless the variable CMAKE_MODULE_EXISTS is set just
67 # copy the values from the LIBRARY variables
68 # this has to be done after the system information has been loaded
69 if(NOT CMAKE_MODULE_EXISTS)
70   set(CMAKE_SHARED_MODULE_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
71   set(CMAKE_SHARED_MODULE_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
72 endif()
73
74
75 set(CMAKE_SYSTEM_SPECIFIC_INFORMATION_LOADED 1)