PageRenderTime 51ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/solenv/gbuild/platform/macosx.mk

https://bitbucket.org/markjenkins/libreoffice_ubuntu-debian-fixes
Makefile | 430 lines | 278 code | 84 blank | 68 comment | 10 complexity | 1db1e86c8e1b67b7818d7c2f61f70675 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, MPL-2.0-no-copyleft-exception, LGPL-2.1, BSD-3-Clause-No-Nuclear-License-2014
  1. # -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
  2. #*************************************************************************
  3. #
  4. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  5. #
  6. # Copyright 2000, 2011 Oracle and/or its affiliates.
  7. #
  8. # OpenOffice.org - a multi-platform office productivity suite
  9. #
  10. # This file is part of OpenOffice.org.
  11. #
  12. # OpenOffice.org is free software: you can redistribute it and/or modify
  13. # it under the terms of the GNU Lesser General Public License version 3
  14. # only, as published by the Free Software Foundation.
  15. #
  16. # OpenOffice.org is distributed in the hope that it will be useful,
  17. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. # GNU Lesser General Public License version 3 for more details
  20. # (a copy is included in the LICENSE file that accompanied this code).
  21. #
  22. # You should have received a copy of the GNU Lesser General Public License
  23. # version 3 along with OpenOffice.org. If not, see
  24. # <http://www.openoffice.org/license.html>
  25. # for a copy of the LGPLv3 License.
  26. #
  27. #*************************************************************************
  28. gb_SDKDIR := $(MACOSX_SDK_PATH)
  29. include $(GBUILDDIR)/platform/com_GCC_defs.mk
  30. # Darwin mktemp -t expects a prefix, not a pattern
  31. gb_MKTEMP ?= /usr/bin/mktemp -t gbuild.
  32. gb_OSDEFS := \
  33. -D$(OS) \
  34. -D_PTHREADS \
  35. -DUNIX \
  36. -DUNX \
  37. -D_REENTRANT \
  38. -DNO_PTHREAD_PRIORITY \
  39. -DQUARTZ \
  40. -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) \
  41. -DMAC_OS_X_VERSION_MAX_ALLOWED=$(MAC_OS_X_VERSION_MAX_ALLOWED) \
  42. -DMACOSX_SDK_VERSION=$(MACOSX_SDK_VERSION) \
  43. $(EXTRA_CDEFS) \
  44. gb_CFLAGS := \
  45. $(gb_CFLAGS_COMMON) \
  46. -fPIC \
  47. -fno-strict-aliasing \
  48. #-Wshadow \ break in compiler headers already
  49. # For -Wno-non-virtual-dtor see <http://markmail.org/message/664jsoqe6n6smy3b>
  50. # "Re: [dev] warnings01: -Wnon-virtual-dtor" message to dev@openoffice.org from
  51. # Feb 1, 2006:
  52. gb_CXXFLAGS := \
  53. $(gb_CXXFLAGS_COMMON) \
  54. -fPIC \
  55. -Wno-ctor-dtor-privacy \
  56. -Wno-non-virtual-dtor \
  57. -fno-strict-aliasing \
  58. -fsigned-char \
  59. $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),,-malign-natural) \
  60. #-Wshadow \ break in compiler headers already
  61. #-fsigned-char \ might be removed?
  62. #-malign-natural \ might be removed?
  63. ifeq ($(HAVE_SFINAE_ANONYMOUS_BROKEN),TRUE)
  64. gb_COMPILERDEFS += \
  65. -DHAVE_SFINAE_ANONYMOUS_BROKEN \
  66. endif
  67. # Without this I get struct/class clashes for "complex" when compiling
  68. # some source files in vcl, at least with the 10.7 SDK.
  69. ifneq ($(filter 1070,$(MACOSX_SDK_VERSION)),)
  70. gb_COMPILERDEFS += \
  71. -DBOOST_DETAIL_NO_CONTAINER_FWD \
  72. endif
  73. ifeq ($(HAVE_GCC_NO_LONG_DOUBLE),TRUE)
  74. gb_CXXFLAGS += -Wno-long-double
  75. endif
  76. # these are to get g++ to switch to Objective-C++ mode
  77. # (see toolkit module for a case where it is necessary to do it this way)
  78. gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions
  79. gb_OBJCFLAGS := -x objective-c -fobjc-exceptions
  80. gb_LinkTarget_LDFLAGS := \
  81. $(if $(filter 1040 1050,$(MAC_OS_X_VERSION_MIN_REQUIRED)),-Wl$(COMMA)-syslibroot$(COMMA)$(gb_SDKDIR)) \
  82. $(subst -L../lib , ,$(SOLARLIB)) \
  83. #man ld says: obsolete -Wl,-multiply_defined,suppress \
  84. gb_DEBUG_CFLAGS := -g
  85. gb_COMPILEROPTFLAGS := -O2
  86. gb_COMPILERNOOPTFLAGS := -O0
  87. # ObjCxxObject class
  88. define gb_ObjCxxObject__command
  89. $(call gb_Output_announce,$(2).mm,$(true),OCX,3)
  90. $(call gb_Helper_abbreviate_dirs,\
  91. mkdir -p $(dir $(1)) $(dir $(4)) && \
  92. $(gb_CXX) \
  93. $(DEFS) \
  94. $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \
  95. $(if $(WARNINGS_NOT_ERRORS),,$(gb_CXXFLAGS_WERROR)) \
  96. $(T_OBJCXXFLAGS) \
  97. -c $(3) \
  98. -o $(1) \
  99. -MMD -MT $(1) \
  100. -MP -MF $(4) \
  101. -I$(dir $(3)) \
  102. $(INCLUDE))
  103. endef
  104. # ObjCObject class
  105. define gb_ObjCObject__command
  106. $(call gb_Output_announce,$(2).m,$(true),OCC,3)
  107. $(call gb_Helper_abbreviate_dirs,\
  108. mkdir -p $(dir $(1)) $(dir $(4)) && \
  109. $(gb_CC) \
  110. $(DEFS) \
  111. $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \
  112. $(if $(WARNINGS_NOT_ERRORS),,$(gb_CFLAGS_WERROR)) \
  113. $(T_OBJCFLAGS) \
  114. -c $(3) \
  115. -o $(1) \
  116. -MMD -MT $(1) \
  117. -MP -MF $(4) \
  118. -I$(dir $(3)) \
  119. $(INCLUDE))
  120. endef
  121. # LinkTarget class
  122. define gb_LinkTarget__get_rpath_for_layer
  123. $(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
  124. endef
  125. gb_LinkTarget__RPATHS := \
  126. URELIB:@__________________________________________________URELIB/ \
  127. UREBIN: \
  128. OOO:@__________________________________________________OOO/ \
  129. SDKBIN: \
  130. OXT: \
  131. NONE:@__VIA_LIBRARY_PATH__@ \
  132. # $(call gb_LinkTarget__get_installname,libfilename,soversion,layerprefix)
  133. define gb_LinkTarget__get_installname
  134. $(if $(3),-install_name '$(3)$(1)$(if $(2),.$(2))')
  135. endef
  136. gb_LinkTarget_CFLAGS := $(gb_CFLAGS)
  137. gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS)
  138. gb_LinkTarget_OBJCXXFLAGS := $(gb_CXXFLAGS) $(gb_OBJCXXFLAGS)
  139. gb_LinkTarget_OBJCFLAGS := $(gb_CFLAGS) $(gb_OBJCFLAGS)
  140. ifeq ($(gb_SYMBOL),$(true))
  141. gb_LinkTarget_CFLAGS += $(gb_DEBUG_CFLAGS)
  142. gb_LinkTarget_CXXFLAGS += $(gb_DEBUG_CFLAGS)
  143. gb_LinkTarget_OBJCFLAGS += $(gb_DEBUG_CFLAGS)
  144. gb_LinkTarget_OBJCXXFLAGS += $(gb_DEBUG_CFLAGS)
  145. endif
  146. define gb_LinkTarget__get_layer
  147. $(if $(filter Executable,$(1)),\
  148. $$(call gb_Executable_get_layer,$(2)),\
  149. $$(call gb_Library_get_layer,$(2)))
  150. endef
  151. # FIXME the DYLIB_FILE mess is only necessary because
  152. # solver layout is different from installation layout
  153. define gb_LinkTarget__command_dynamiclink
  154. $(call gb_Helper_abbreviate_dirs,\
  155. mkdir -p $(dir $(1)) && \
  156. DYLIB_FILE=`$(gb_MKTEMP)` && \
  157. $(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
  158. $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
  159. $(if $(filter Bundle,$(TARGETTYPE)),$(gb_Bundle_TARGETTYPEFLAGS)) \
  160. $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
  161. $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
  162. $(subst \d,$$,$(RPATH)) \
  163. $(T_LDFLAGS) \
  164. $(patsubst lib%.dylib,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) > $${DYLIB_FILE} && \
  165. $(gb_CXX) \
  166. $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
  167. $(if $(filter Bundle,$(TARGETTYPE)),$(gb_Bundle_TARGETTYPEFLAGS)) \
  168. $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
  169. $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
  170. $(subst \d,$$,$(RPATH)) \
  171. $(T_LDFLAGS) \
  172. $(patsubst lib%.dylib,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
  173. $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
  174. $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
  175. $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
  176. $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \
  177. $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
  178. $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
  179. $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
  180. $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
  181. `cat $${DYLIB_FILE}` \
  182. $(LIBS) \
  183. $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
  184. -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) && \
  185. $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1),:) && \
  186. $(if $(filter Executable,$(TARGETTYPE)), \
  187. $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Executable \
  188. $(LAYER) $(1) &&) \
  189. $(if $(filter Library Bundle CppunitTest,$(TARGETTYPE)),\
  190. $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Library $(LAYER) $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) && \
  191. ln -sf $(notdir $(1)) $(basename $(1)).jnilib &&) \
  192. rm -f $${DYLIB_FILE})
  193. endef
  194. # parameters: 1-linktarget 2-cobjects 3-cxxobjects
  195. define gb_LinkTarget__command_staticlink
  196. $(call gb_Helper_abbreviate_dirs,\
  197. mkdir -p $(dir $(1)) && \
  198. rm -f $(1) && \
  199. $(gb_AR) -rsu $(1) \
  200. $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
  201. $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
  202. $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
  203. $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \
  204. $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
  205. $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
  206. $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
  207. $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),@$(extraobjectlist)) \
  208. $(if $(findstring s,$(MAKEFLAGS)),2> /dev/null))
  209. endef
  210. define gb_LinkTarget__command
  211. $(call gb_Output_announce,$(2),$(true),LNK,4)
  212. $(if $(filter Library Bundle CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1),$(2)))
  213. $(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
  214. endef
  215. define gb_LinkTarget_use_system_darwin_frameworks
  216. $(call gb_LinkTarget_add_libs,$(1),$(foreach fw,$(2),-framework $(fw)))
  217. endef
  218. # Library class
  219. gb_Library_DEFS :=
  220. gb_Library_TARGETTYPEFLAGS := -dynamiclib -single_module
  221. gb_Bundle_TARGETTYPEFLAGS := -bundle
  222. gb_Library_SYSPRE := lib
  223. gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
  224. gb_Library_PLAINEXT := .dylib
  225. gb_Library_DLLEXT := .dylib
  226. gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
  227. gb_Library_OOOEXT := $(gb_Library_DLLPOSTFIX)$(gb_Library_PLAINEXT)
  228. gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
  229. gb_Library_FILENAMES := \
  230. $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
  231. $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
  232. $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
  233. $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
  234. $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
  235. $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
  236. $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
  237. $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
  238. $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
  239. $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \
  240. gb_Library_LAYER := \
  241. $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
  242. $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
  243. $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
  244. $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):NONE) \
  245. $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
  246. $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
  247. $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
  248. $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
  249. $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
  250. $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):OXT) \
  251. define gb_Library_get_rpath
  252. $(call gb_LinkTarget__get_installname,$(call gb_Library_get_filename,$(1)),$(2),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1))))
  253. endef
  254. # RPATH def is delayed until the link command to get current value of SOVERSION
  255. define gb_Library_Library_platform
  256. $(call gb_LinkTarget_get_target,$(2)) : \
  257. RPATH = $$(call gb_Library_get_rpath,$(1),$$(SOVERSION))
  258. $(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1))
  259. endef
  260. gb_Library__set_soversion_script_platform = $(gb_Library__set_soversion_script)
  261. # bundle is a special kind of library that exists only on Darwin/OSX
  262. # set the TARGETTYPE to Bundle, and clear install_name(RPATH)
  263. define gb_Library_Bundle
  264. $(call gb_Library_Library,$(1))
  265. $(call gb_LinkTarget_set_targettype,$(call gb_Library_get_linktargetname,$(1)),Bundle)
  266. $(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,$(1))) : \
  267. RPATH :=
  268. endef
  269. # StaticLibrary class
  270. gb_StaticLibrary_SYSPRE := lib
  271. gb_StaticLibrary_PLAINEXT := .a
  272. gb_StaticLibrary_FILENAMES := \
  273. $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
  274. gb_StaticLibrary_StaticLibrary_platform =
  275. # Executable class
  276. gb_Executable_EXT :=
  277. gb_Executable_TARGETTYPEFLAGS := -bind_at_load
  278. gb_Executable_LAYER := \
  279. $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
  280. $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
  281. $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
  282. $(foreach exe,$(gb_Executable_NONE),$(exe):NONE) \
  283. gb_Executable_get_rpath :=
  284. define gb_Executable_Executable_platform
  285. $(call gb_LinkTarget_get_target,$(2)) : RPATH :=
  286. $(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Executable_get_layer,$(1))
  287. endef
  288. # CppunitTest class
  289. ifeq ($(CROSS_COMPILING),YES)
  290. gb_CppunitTest_CPPTESTPRECOMMAND := :
  291. else
  292. gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path)
  293. endif
  294. gb_CppunitTest_SYSPRE := libtest_
  295. gb_CppunitTest_EXT := .dylib
  296. gb_CppunitTest_LIBDIR := $(gb_Helper_OUTDIRLIBDIR)
  297. gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
  298. gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)
  299. define gb_CppunitTest_CppunitTest_platform
  300. $(call gb_LinkTarget_get_target,$(2)) : RPATH :=
  301. $(call gb_LinkTarget_get_target,$(2)) : LAYER := NONE
  302. endef
  303. # JunitTest class
  304. define gb_JunitTest_JunitTest_platform
  305. $(call gb_JunitTest_get_target,$(1)) : DEFS := \
  306. -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS/soffice}" \
  307. -Dorg.openoffice.test.arg.env=DYLD_LIBRARY_PATH"$$$${DYLD_LIBRARY_PATH+=$$$$DYLD_LIBRARY_PATH}" \
  308. -Dorg.openoffice.test.arg.user=$(call gb_Helper_make_url,$(call gb_JunitTest_get_userdir,$(1))) \
  309. -Dorg.openoffice.test.arg.workdir=$(call gb_JunitTest_get_userdir,$(1)) \
  310. endef
  311. # InstallModuleTarget class
  312. define gb_InstallModuleTarget_InstallModuleTarget_platform
  313. $(call gb_InstallModuleTarget_add_defs,$(1),\
  314. $(gb_CPUDEFS) \
  315. $(gb_OSDEFS) \
  316. -DCOMID=gcc3 \
  317. -DCOMNAME=gcc3 \
  318. -D_gcc3 \
  319. $(if $(filter TRUE,$(SOLAR_JAVA)),-DSOLAR_JAVA) \
  320. )
  321. endef
  322. # ScpConvertTarget class
  323. gb_ScpConvertTarget_ScpConvertTarget_platform :=
  324. # InstallScript class
  325. gb_InstallScript_EXT := .ins
  326. # CliAssemblyTarget class
  327. gb_CliAssemblyTarget_POLICYEXT :=
  328. gb_CliAssemblyTarget_get_dll :=
  329. # ExtensionTarget class
  330. gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
  331. # UnpackedTarget class
  332. gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION)
  333. # UnoApiHeadersTarget class
  334. # It seems that when using the latest Xcode and Clang for OS X, we
  335. # also neeed to always generate comprehensive headers for
  336. # udkapi. Otherwise we get assertion failures in saxparser when doing
  337. # i18npool, at least.
  338. ifneq ($(filter TRUE,$(COM_GCC_IS_CLANG) $(DISABLE_DYNLOADING)),)
  339. gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2))
  340. else
  341. gb_UnoApiHeadersTarget_select_variant = $(2)
  342. endif
  343. # Python
  344. gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
  345. include $(GBUILDDIR)/platform/com_GCC_class.mk
  346. # vim: set noet sw=4: