CMakeCSharpInformation.cmake 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. # This file sets the basic flags for the C# language in CMake.
  4. # It also loads the available platform file for the system-compiler
  5. # if it exists.
  6. set(CMAKE_BASE_NAME)
  7. get_filename_component(CMAKE_BASE_NAME "${CMAKE_CSharp_COMPILER}" NAME_WE)
  8. set(CMAKE_BUILD_TYPE_INIT Debug)
  9. set(CMAKE_CSharp_FLAGS_INIT "/define:TRACE /langversion:3 /nowin32manifest")
  10. set(CMAKE_CSharp_FLAGS_DEBUG_INIT "/debug:full /optimize- /warn:3 /errorreport:prompt /define:DEBUG")
  11. set(CMAKE_CSharp_FLAGS_RELEASE_INIT "/debug:none /optimize /warn:1 /errorreport:queue")
  12. set(CMAKE_CSharp_FLAGS_RELWITHDEBINFO_INIT "/debug:full /optimize-")
  13. set(CMAKE_CSharp_FLAGS_MINSIZEREL_INIT "/debug:none /optimize")
  14. set(CMAKE_CSharp_LINKER_SUPPORTS_PDB ON)
  15. set(CMAKE_CSharp_STANDARD_LIBRARIES_INIT "System")
  16. if(CMAKE_SIZEOF_VOID_P EQUAL 4)
  17. set(CMAKE_CSharp_FLAGS_INIT "/platform:x86 ${CMAKE_CSharp_FLAGS_INIT}")
  18. else()
  19. set(CMAKE_CSharp_FLAGS_INIT "/platform:x64 ${CMAKE_CSharp_FLAGS_INIT}")
  20. endif()
  21. # This should be included before the _INIT variables are
  22. # used to initialize the cache. Since the rule variables
  23. # have if blocks on them, users can still define them here.
  24. # But, it should still be after the platform file so changes can
  25. # be made to those values.
  26. # for most systems a module is the same as a shared library
  27. # so unless the variable CMAKE_MODULE_EXISTS is set just
  28. # copy the values from the LIBRARY variables
  29. if(NOT CMAKE_MODULE_EXISTS)
  30. set(CMAKE_SHARED_MODULE_CSharp_FLAGS ${CMAKE_SHARED_LIBRARY_CSharp_FLAGS})
  31. set(CMAKE_SHARED_MODULE_CREATE_CSharp_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CSharp_FLAGS})
  32. endif()
  33. # add the flags to the cache based
  34. # on the initial values computed in the platform/*.cmake files
  35. # use _INIT variables so that this only happens the first time
  36. # and you can set these flags in the cmake cache
  37. set(CMAKE_CSharp_FLAGS_INIT "$ENV{CSharpFLAGS} ${CMAKE_CSharp_FLAGS_INIT}")
  38. # avoid just having a space as the initial value for the cache
  39. if(CMAKE_CSharp_FLAGS_INIT STREQUAL " ")
  40. set(CMAKE_CSharp_FLAGS_INIT)
  41. endif()
  42. set (CMAKE_CSharp_FLAGS "${CMAKE_CSharp_FLAGS_INIT}" CACHE STRING
  43. "Flags used by the C# compiler during all build types.")
  44. if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
  45. set (CMAKE_CSharp_FLAGS_DEBUG "${CMAKE_CSharp_FLAGS_DEBUG_INIT}" CACHE STRING
  46. "Flags used by the C# compiler during debug builds.")
  47. set (CMAKE_CSharp_FLAGS_MINSIZEREL "${CMAKE_CSharp_FLAGS_MINSIZEREL_INIT}" CACHE STRING
  48. "Flags used by the C# compiler during release builds for minimum size.")
  49. set (CMAKE_CSharp_FLAGS_RELEASE "${CMAKE_CSharp_FLAGS_RELEASE_INIT}" CACHE STRING
  50. "Flags used by the C# compiler during release builds.")
  51. set (CMAKE_CSharp_FLAGS_RELWITHDEBINFO "${CMAKE_CSharp_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
  52. "Flags used by the C# compiler during release builds with debug info.")
  53. endif()
  54. if(CMAKE_CSharp_STANDARD_LIBRARIES_INIT)
  55. set(CMAKE_CSharp_STANDARD_LIBRARIES "${CMAKE_CSharp_STANDARD_LIBRARIES_INIT}"
  56. CACHE STRING "Libraries linked by default with all C# applications.")
  57. mark_as_advanced(CMAKE_CSharp_STANDARD_LIBRARIES)
  58. endif()
  59. # set missing flags (if they are not defined). This is needed in the
  60. # unlikely case that you have only C# and no C/C++ targets in your
  61. # project.
  62. if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS)
  63. set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "" FORCE)
  64. endif()
  65. if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG)
  66. set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE)
  67. endif()
  68. if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELEASE)
  69. set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE)
  70. endif()
  71. if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL)
  72. set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)
  73. endif()
  74. if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO)
  75. set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
  76. endif()
  77. if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS)
  78. set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE)
  79. endif()
  80. if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG)
  81. set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE)
  82. endif()
  83. if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELEASE)
  84. set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE)
  85. endif()
  86. if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_MINSIZEREL)
  87. set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)
  88. endif()
  89. if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO)
  90. set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
  91. endif()
  92. set(CMAKE_CSharp_CREATE_SHARED_LIBRARY "CSharp_NO_CREATE_SHARED_LIBRARY")
  93. set(CMAKE_CSharp_CREATE_SHARED_MODULE "CSharp_NO_CREATE_SHARED_MODULE")
  94. set(CMAKE_CSharp_LINK_EXECUTABLE "CSharp_NO_LINK_EXECUTABLE")
  95. mark_as_advanced(
  96. CMAKE_CSharp_FLAGS
  97. CMAKE_CSharp_FLAGS_RELEASE
  98. CMAKE_CSharp_FLAGS_RELWITHDEBINFO
  99. CMAKE_CSharp_FLAGS_MINSIZEREL
  100. CMAKE_CSharp_FLAGS_DEBUG
  101. )
  102. set(CMAKE_CSharp_USE_RESPONSE_FILE_FOR_OBJECTS 1)
  103. set(CMAKE_CSharp_INFORMATION_LOADED 1)