CCPlatformConfig.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /****************************************************************************
  2. Copyright (c) 2010-2012 cocos2d-x.org
  3. Copyright (c) 2013-2017 Chukong Technologies
  4. http://www.cocos2d-x.org
  5. Permission is hereby granted, free of charge, to any person obtaining a copy
  6. of this software and associated documentation files (the "Software"), to deal
  7. in the Software without restriction, including without limitation the rights
  8. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. copies of the Software, and to permit persons to whom the Software is
  10. furnished to do so, subject to the following conditions:
  11. The above copyright notice and this permission notice shall be included in
  12. all copies or substantial portions of the Software.
  13. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19. THE SOFTWARE.
  20. ****************************************************************************/
  21. #ifndef __BASE_CC_PLATFORM_CONFIG_H__
  22. #define __BASE_CC_PLATFORM_CONFIG_H__
  23. /// @cond DO_NOT_SHOW
  24. /**
  25. Config of cocos2d-x project, per target platform.
  26. THIS FILE MUST NOT INCLUDE ANY OTHER FILE
  27. */
  28. //////////////////////////////////////////////////////////////////////////
  29. // pre configure
  30. //////////////////////////////////////////////////////////////////////////
  31. // define supported target platform macro which CC uses.
  32. #define CC_PLATFORM_UNKNOWN 0
  33. #define CC_PLATFORM_IOS 1
  34. #define CC_PLATFORM_ANDROID 2
  35. #define CC_PLATFORM_WIN32 3
  36. #define CC_PLATFORM_MARMALADE 4
  37. #define CC_PLATFORM_LINUX 5
  38. #define CC_PLATFORM_BADA 6
  39. #define CC_PLATFORM_BLACKBERRY 7
  40. #define CC_PLATFORM_MAC 8
  41. #define CC_PLATFORM_NACL 9
  42. #define CC_PLATFORM_EMSCRIPTEN 10
  43. #define CC_PLATFORM_TIZEN 11
  44. #define CC_PLATFORM_QT5 12
  45. #define CC_PLATFORM_WINRT 13
  46. // Determine target platform by compile environment macro.
  47. #define CC_TARGET_PLATFORM CC_PLATFORM_UNKNOWN
  48. // Apple: Mac and iOS
  49. #if defined(__APPLE__) && !defined(ANDROID) // exclude android for binding generator.
  50. #include <TargetConditionals.h>
  51. #if TARGET_OS_IPHONE // TARGET_OS_IPHONE includes TARGET_OS_IOS TARGET_OS_TV and TARGET_OS_WATCH. see TargetConditionals.h
  52. #undef CC_TARGET_PLATFORM
  53. #define CC_TARGET_PLATFORM CC_PLATFORM_IOS
  54. #elif TARGET_OS_MAC
  55. #undef CC_TARGET_PLATFORM
  56. #define CC_TARGET_PLATFORM CC_PLATFORM_MAC
  57. #endif
  58. #endif
  59. // android
  60. #if defined(ANDROID)
  61. #undef CC_TARGET_PLATFORM
  62. #define CC_TARGET_PLATFORM CC_PLATFORM_ANDROID
  63. #endif
  64. // win32
  65. #if defined(_WIN32) && defined(_WINDOWS)
  66. #undef CC_TARGET_PLATFORM
  67. #define CC_TARGET_PLATFORM CC_PLATFORM_WIN32
  68. #endif
  69. // linux
  70. #if defined(LINUX) && !defined(__APPLE__)
  71. #undef CC_TARGET_PLATFORM
  72. #define CC_TARGET_PLATFORM CC_PLATFORM_LINUX
  73. #endif
  74. // marmalade
  75. #if defined(MARMALADE)
  76. #undef CC_TARGET_PLATFORM
  77. #define CC_TARGET_PLATFORM CC_PLATFORM_MARMALADE
  78. #endif
  79. // bada
  80. #if defined(SHP)
  81. #undef CC_TARGET_PLATFORM
  82. #define CC_TARGET_PLATFORM CC_PLATFORM_BADA
  83. #endif
  84. // qnx
  85. #if defined(__QNX__)
  86. #undef CC_TARGET_PLATFORM
  87. #define CC_TARGET_PLATFORM CC_PLATFORM_BLACKBERRY
  88. #endif
  89. // native client
  90. #if defined(__native_client__)
  91. #undef CC_TARGET_PLATFORM
  92. #define CC_TARGET_PLATFORM CC_PLATFORM_NACL
  93. #endif
  94. // Emscripten
  95. #if defined(EMSCRIPTEN)
  96. #undef CC_TARGET_PLATFORM
  97. #define CC_TARGET_PLATFORM CC_PLATFORM_EMSCRIPTEN
  98. #endif
  99. // tizen
  100. #if defined(TIZEN)
  101. #undef CC_TARGET_PLATFORM
  102. #define CC_TARGET_PLATFORM CC_PLATFORM_TIZEN
  103. #endif
  104. // qt5
  105. #if defined(CC_TARGET_QT5)
  106. #undef CC_TARGET_PLATFORM
  107. #define CC_TARGET_PLATFORM CC_PLATFORM_QT5
  108. #endif
  109. // WinRT (Windows 8.1 Store/Phone App)
  110. #if defined(WINRT)
  111. #undef CC_TARGET_PLATFORM
  112. #define CC_TARGET_PLATFORM CC_PLATFORM_WINRT
  113. #endif
  114. //////////////////////////////////////////////////////////////////////////
  115. // post configure
  116. //////////////////////////////////////////////////////////////////////////
  117. // check user set platform
  118. #if ! CC_TARGET_PLATFORM
  119. #error "Cannot recognize the target platform; are you targeting an unsupported platform?"
  120. #endif
  121. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
  122. #ifndef __MINGW32__
  123. #pragma warning (disable:4127)
  124. #endif
  125. #endif // CC_PLATFORM_WIN32
  126. #if ((CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_TIZEN))
  127. #define CC_PLATFORM_MOBILE
  128. #else
  129. #define CC_PLATFORM_PC
  130. #endif
  131. /// @endcond
  132. #endif // __BASE_CC_PLATFORM_CONFIG_H__