arch.mk
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:7k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #
  2. # The contents of this file are subject to the Mozilla Public
  3. # License Version 1.1 (the "License"); you may not use this file
  4. # except in compliance with the License. You may obtain a copy of
  5. # the License at http://www.mozilla.org/MPL/
  6. # Software distributed under the License is distributed on an "AS
  7. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  8. # implied. See the License for the specific language governing
  9. # rights and limitations under the License.
  10. # The Original Code is the Netscape security libraries.
  11. # The Initial Developer of the Original Code is Netscape
  12. # Communications Corporation.  Portions created by Netscape are 
  13. # Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  14. # Rights Reserved.
  15. # Contributor(s):
  16. # Alternatively, the contents of this file may be used under the
  17. # terms of the GNU General Public License Version 2 or later (the
  18. # "GPL"), in which case the provisions of the GPL are applicable 
  19. # instead of those above.  If you wish to allow use of your 
  20. # version of this file only under the terms of the GPL and not to
  21. # allow others to use your version of this file under the MPL,
  22. # indicate your decision by deleting the provisions above and
  23. # replace them with the notice and other provisions required by
  24. # the GPL.  If you do not delete the provisions above, a recipient
  25. # may use your version of this file under either the MPL or the
  26. # GPL.
  27. #
  28. #######################################################################
  29. # Master "Core Components" macros for getting the OS architecture     #
  30. #######################################################################
  31. #
  32. # Macros for getting the OS architecture
  33. #
  34. ifeq ($(USE_64), 1)
  35. 64BIT_TAG=_64
  36. else
  37. 64BIT_TAG=
  38. endif
  39. OS_ARCH := $(subst /,_,$(shell uname -s))
  40. #
  41. # Attempt to differentiate between sparc and x86 Solaris
  42. #
  43. OS_TEST := $(shell uname -m)
  44. ifeq ($(OS_TEST),i86pc)
  45. OS_RELEASE := $(shell uname -r)_$(OS_TEST)
  46. else
  47. OS_RELEASE := $(shell uname -r)
  48. endif
  49. #
  50. # Force the IRIX64 machines to use IRIX.
  51. #
  52. ifeq ($(OS_ARCH),IRIX64)
  53. OS_ARCH = IRIX
  54. endif
  55. #
  56. # Force the newer BSDI versions to use the old arch name.
  57. #
  58. ifeq ($(OS_ARCH),BSD_OS)
  59. OS_ARCH = BSD_386
  60. endif
  61. #
  62. # Catch Deterim if SVR4 is NCR or UNIXWARE
  63. #
  64. ifeq ($(OS_ARCH),UNIX_SV)
  65. ifneq ($(findstring NCR, $(shell grep NCR /etc/bcheckrc | head -1 )),)
  66. OS_ARCH = NCR
  67. else
  68. # Make UnixWare something human readable
  69. OS_ARCH = UNIXWARE
  70. endif
  71. # Get the OS release number, not 4.2
  72. OS_RELEASE := $(shell uname -v)
  73. endif
  74. ifeq ($(OS_ARCH),UNIX_System_V)
  75. OS_ARCH = NEC
  76. endif
  77. ifeq ($(OS_ARCH),AIX)
  78. OS_RELEASE := $(shell uname -v).$(shell uname -r)
  79. endif
  80. #
  81. # Distinguish between OSF1 V4.0B and V4.0D
  82. #
  83. ifeq ($(OS_ARCH)$(OS_RELEASE),OSF1V4.0)
  84. OS_VERSION := $(shell uname -v)
  85. ifeq ($(OS_VERSION),564)
  86. OS_RELEASE := V4.0B
  87. endif
  88. ifeq ($(OS_VERSION),878)
  89. OS_RELEASE := V4.0D
  90. endif
  91. endif
  92. #
  93. # SINIX changes name to ReliantUNIX with 5.43
  94. #
  95. ifeq ($(OS_ARCH),ReliantUNIX-N)
  96. OS_ARCH    = ReliantUNIX
  97. OS_RELEASE = 5.4
  98. endif
  99. ifeq ($(OS_ARCH),SINIX-N)
  100. OS_ARCH    = ReliantUNIX
  101. OS_RELEASE = 5.4
  102. endif
  103. #
  104. # Handle FreeBSD 2.2-STABLE and Linux 2.0.30-osfmach3
  105. #
  106. ifeq (,$(filter-out Linux FreeBSD,$(OS_ARCH)))
  107. OS_RELEASE := $(shell echo $(OS_RELEASE) | sed 's/-.*//')
  108. endif
  109. ifeq ($(OS_ARCH),Linux)
  110. OS_RELEASE := $(basename $(OS_RELEASE))
  111. endif
  112. #######################################################################
  113. # Master "Core Components" macros for getting the OS target           #
  114. #######################################################################
  115. #
  116. # Note: OS_TARGET should be specified on the command line for gmake.
  117. # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
  118. # The difference between the Win95 target and the WinNT target is that
  119. # the WinNT target uses Windows NT specific features not available
  120. # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
  121. # at lesser performance (the Win95 target uses threads; the WinNT target
  122. # uses fibers).
  123. #
  124. # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
  125. # is built. See: win16_3.11.mk for lots more about the Win16 target.
  126. #
  127. # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
  128. # cross-compilation.
  129. #
  130. #
  131. # The following hack allows one to build on a WIN95 machine (as if
  132. # s/he were cross-compiling on a WINNT host for a WIN95 target).
  133. # It also accomodates for MKS's uname.exe.  If you never intend
  134. # to do development on a WIN95 machine, you don't need this. It doesn't
  135. # work any more anyway.
  136. #
  137. ifeq ($(OS_ARCH),WIN95)
  138. OS_ARCH   = WINNT
  139. OS_TARGET = WIN95
  140. endif
  141. ifeq ($(OS_ARCH),Windows_95)
  142. OS_ARCH   = Windows_NT
  143. OS_TARGET = WIN95
  144. endif
  145. #
  146. # On WIN32, we also define the variable CPU_ARCH.
  147. #
  148. ifeq ($(OS_ARCH), WINNT)
  149. CPU_ARCH := $(shell uname -p)
  150. ifeq ($(CPU_ARCH),I386)
  151. CPU_ARCH = x386
  152. endif
  153. else
  154. #
  155. # If uname -s returns "Windows_NT", we assume that we are using
  156. # the uname.exe in MKS toolkit.
  157. #
  158. # The -r option of MKS uname only returns the major version number.
  159. # So we need to use its -v option to get the minor version number.
  160. # Moreover, it doesn't have the -p option, so we need to use uname -m.
  161. #
  162. ifeq ($(OS_ARCH), Windows_NT)
  163. OS_ARCH = WINNT
  164. OS_MINOR_RELEASE := $(shell uname -v)
  165. ifeq ($(OS_MINOR_RELEASE),00)
  166. OS_MINOR_RELEASE = 0
  167. endif
  168. OS_RELEASE = $(OS_RELEASE).$(OS_MINOR_RELEASE)
  169. CPU_ARCH := $(shell uname -m)
  170. #
  171. # MKS's uname -m returns "586" on a Pentium machine.
  172. #
  173. ifneq (,$(findstring 86,$(CPU_ARCH)))
  174. CPU_ARCH = x386
  175. endif
  176. endif
  177. endif
  178. ifndef OS_TARGET
  179. OS_TARGET = $(OS_ARCH)
  180. endif
  181. ifeq ($(OS_TARGET), WIN95)
  182. OS_RELEASE = 4.0
  183. endif
  184. ifeq ($(OS_TARGET), WIN16)
  185. OS_RELEASE =
  186. # OS_RELEASE = _3.11
  187. endif
  188. #
  189. # This variable is used to get OS_CONFIG.mk.
  190. #
  191. OS_CONFIG = $(OS_TARGET)$(OS_RELEASE)
  192. #
  193. # OBJDIR_TAG depends on the predefined variable BUILD_OPT,
  194. # to distinguish between debug and release builds.
  195. #
  196. ifdef BUILD_OPT
  197. ifeq ($(OS_TARGET),WIN16)
  198. OBJDIR_TAG = _O
  199. else
  200. OBJDIR_TAG = $(64BIT_TAG)_OPT
  201. endif
  202. else
  203. ifdef BUILD_IDG
  204. ifeq ($(OS_TARGET),WIN16)
  205. OBJDIR_TAG = _I
  206. else
  207. OBJDIR_TAG = $(64BIT_TAG)_IDG
  208. endif
  209. else
  210. ifeq ($(OS_TARGET),WIN16)
  211. OBJDIR_TAG = _D
  212. else
  213. OBJDIR_TAG = $(64BIT_TAG)_DBG
  214. endif
  215. endif
  216. endif
  217. #
  218. # The following flags are defined in the individual $(OS_CONFIG).mk
  219. # files.
  220. #
  221. # CPU_TAG is defined if the CPU is not the most common CPU.
  222. # COMPILER_TAG is defined if the compiler is not the native compiler.
  223. # IMPL_STRATEGY may be defined too.
  224. #
  225. # Name of the binary code directories
  226. ifeq ($(OS_ARCH), WINNT)
  227. ifeq ($(CPU_ARCH),x386)
  228. OBJDIR_NAME = $(OS_CONFIG)$(OBJDIR_TAG).OBJ
  229. else
  230. OBJDIR_NAME = $(OS_CONFIG)$(CPU_ARCH)$(OBJDIR_TAG).OBJ
  231. endif
  232. else
  233. endif
  234. OBJDIR_NAME = $(OS_CONFIG)$(CPU_TAG)$(COMPILER_TAG)$(LIBC_TAG)$(IMPL_STRATEGY)$(OBJDIR_TAG).OBJ
  235. ifeq ($(OS_ARCH), WINNT)
  236. ifneq ($(OS_TARGET),WIN16)
  237. ifndef BUILD_OPT
  238. #
  239. # Define USE_DEBUG_RTL if you want to use the debug runtime library
  240. # (RTL) in the debug build
  241. #
  242. ifdef USE_DEBUG_RTL
  243. OBJDIR_NAME = $(OS_CONFIG)$(CPU_TAG)$(COMPILER_TAG)$(IMPL_STRATEGY)$(OBJDIR_TAG).OBJD
  244. endif
  245. endif
  246. endif
  247. endif
  248. #
  249. # For OS/2
  250. #
  251. ifeq ($(OS_ARCH), OS_2)
  252. OS_ARCH := OS2
  253. OS_RELEASE := $(shell uname -v)
  254. OS_CONFIG := $(OS_ARCH)
  255. endif