1#************************************************************************* 2# 3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4# 5# Copyright 2009 by Sun Microsystems, Inc. 6# 7# OpenOffice.org - a multi-platform office productivity suite 8# 9# This file is part of OpenOffice.org. 10# 11# OpenOffice.org is free software: you can redistribute it and/or modify 12# it under the terms of the GNU Lesser General Public License version 3 13# only, as published by the Free Software Foundation. 14# 15# OpenOffice.org is distributed in the hope that it will be useful, 16# but WITHOUT ANY WARRANTY; without even the implied warranty of 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18# GNU Lesser General Public License version 3 for more details 19# (a copy is included in the LICENSE file that accompanied this code). 20# 21# You should have received a copy of the GNU Lesser General Public License 22# version 3 along with OpenOffice.org. If not, see 23# <http://www.openoffice.org/license.html> 24# for a copy of the LGPLv3 License. 25# 26#************************************************************************* 27 28GUI := WNT 29COM := GCC 30 31# set tmpdir to some mixed case path, suitable for native tools 32gb_TMPDIR:=$(if $(TMPDIR),$(shell cygpath -m $(TMPDIR)),$(shell cygpath -m /tmp)) 33gb_MKTEMP := mktemp --tmpdir=$(gb_TMPDIR) gbuild.XXXXXX 34 35gb_CC := $(CC) 36gb_CXX := $(CXX) 37gb_LINK := $(shell $(CC) -print-prog-name=ld) 38gb_AR := $(shell $(CC) -print-prog-name=ar) 39gb_AWK := awk 40gb_RC := rc 41ifeq ($(USE_MINGW),cygwin) 42gb_MINGWLIBDIR := $(COMPATH)/lib/mingw 43else 44ifeq ($(USE_MINGW),cygwin-w64-mingw32) 45gb_MINGWLIBDIR := $(COMPATH)/usr/i686-w64-mingw32/sys-root/mingw/lib 46else 47gb_MINGWLIBDIR := $(COMPATH)/lib 48endif 49endif 50ifeq ($(MINGW_SHARED_GXXLIB),YES) 51gb_MINGW_LIBSTDCPP := $(subst -l,,$(MINGW_SHARED_LIBSTDCPP)) 52else 53gb_MINGW_LIBSTDCPP := \ 54 stdc++ \ 55 moldname 56endif 57ifeq ($(MINGW_SHARED_GCCLIB),YES) 58gb_MINGW_LIBGCC := \ 59 gcc_s \ 60 gcc 61else 62ifeq ($(MINGW_GCCLIB_EH),YES) 63gb_MINGW_LIBGCC := \ 64 gcc \ 65 gcc_eh 66else 67gb_MINGW_LIBGCC := gcc 68endif 69endif 70 71gb_OSDEFS := \ 72 -DWINVER=0x0500 \ 73 -D_WIN32_IE=0x0500 \ 74 -D_WIN32_WINNT=0x0600 \ 75 -DNT351 \ 76 -DWIN32 \ 77 -DWNT \ 78 79ifeq ($(GXX_INCLUDE_PATH),) 80GXX_INCLUDE_PATH=$(COMPATH)/include/c++/$(shell gcc -dumpversion) 81endif 82 83gb_COMPILERDEFS := \ 84 -DGCC \ 85 -D$(CVER) \ 86 -DCVER=$(CVER) \ 87 -DGLIBC=2 \ 88 -DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \ 89 -DCPPU_ENV=gcc3 \ 90 -D_MT \ 91 -D_NATIVE_WCHAR_T_DEFINED \ 92 -D_MSC_EXTENSIONS \ 93 -D_FORCENAMELESSUNION \ 94 95ifeq ($(USE_MINGW),cygwin-w64-mingw32) 96gb_COMPILERDEFS +=-D_declspec=__declspec 97endif 98 99gb_CPUDEFS := \ 100 -DINTEL \ 101 -D_M_IX86 \ 102 103gb_RCDEFS := \ 104 -DWIN32 \ 105 -D__GNUC__ \ 106 107gb_RCFLAGS := \ 108 -V 109 110gb_CFLAGS := \ 111 -Wall \ 112 -Wendif-labels \ 113 -Wextra \ 114 -fmessage-length=0 \ 115 -fno-strict-aliasing \ 116 -pipe \ 117 -nostdinc \ 118 119gb_CXXFLAGS := \ 120 -Wall \ 121 -Wendif-labels \ 122 -Wextra \ 123 -Wno-ctor-dtor-privacy \ 124 -Wno-non-virtual-dtor \ 125 -Wreturn-type \ 126 -Wshadow \ 127 -Wuninitialized \ 128 -fmessage-length=0 \ 129 -fno-strict-aliasing \ 130 -fno-use-cxa-atexit \ 131 -pipe \ 132 -nostdinc \ 133 134ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE) 135gb_CFLAGS_WERROR := -Werror 136gb_CXXFLAGS_WERROR := -Werror 137endif 138 139ifneq ($(SYSBASE),) 140gb_CXXFLAGS += --sysroot=$(SYSBASE) 141gb_CFLAGS += --sysroot=$(SYSBASE) 142endif 143gb_LinkTarget_EXCEPTIONFLAGS := \ 144 -DEXCEPTIONS_ON \ 145 -fexceptions \ 146 -fno-enforce-eh-specs \ 147 148gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS) 149 150 151gb_LinkTarget_NOEXCEPTIONFLAGS := \ 152 -DEXCEPTIONS_OFF \ 153 -fno-exceptions \ 154 155gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS) 156 157gb_LinkTarget_LDFLAGS := \ 158 --export-all-symbols \ 159 --kill-at \ 160 --subsystem console \ 161 --exclude-libs ALL \ 162 --enable-stdcall-fixup \ 163 --enable-runtime-pseudo-reloc-v2 \ 164 -L$(gb_Library_DLLDIR) \ 165 $(patsubst %,-L%,$(filter-out .,$(subst ;, ,$(subst \,/,$(ILIB))))) \ 166 167ifeq ($(MINGW_GCCLIB_EH),YES) 168gb_LinkTarget_LDFLAGS += -shared-libgcc 169endif 170 171ifeq ($(gb_DEBUGLEVEL),2) 172gb_COMPILEROPTFLAGS := -O0 173else 174gb_COMPILEROPTFLAGS := -Os 175endif 176 177gb_COMPILERNOOPTFLAGS := -O0 178 179gb_STDLIBS := \ 180 mingwthrd \ 181 $(gb_MINGW_LIBSTDCPP) \ 182 mingw32 \ 183 $(gb_MINGW_LIBGCC) \ 184 uwinapi \ 185 moldname \ 186 mingwex \ 187 kernel32 \ 188 msvcrt \ 189 190 191# Helper class 192 193gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 194gb_Helper_WORKDIR_NATIVE := $(shell cygpath -m $(WORKDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 195gb_Helper_OUTDIR_NATIVE := $(shell cygpath -m $(OUTDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 196gb_Helper_REPODIR_NATIVE := $(shell cygpath -m $(REPODIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 197 198define gb_Helper_abbreviate_dirs_native 199R=$(gb_Helper_REPODIR_NATIVE) && $(subst $(REPODIR)/,$$R/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,O=$(gb_Helper_OUTDIR_NATIVE) && W=$(gb_Helper_WORKDIR_NATIVE) && S=$(gb_Helper_SRCDIR_NATIVE))) && \ 200$(subst $(REPODIR)/,$$R/,$(subst $(SRCDIR)/,$$S/,$(subst $(OUTDIR)/,$$O/,$(subst $(WORKDIR)/,$$W/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,$(subst $(gb_Helper_SRCDIR_NATIVE)/,$$S/,$(subst $(gb_Helper_OUTDIR_NATIVE)/,$$O/,$(subst $(gb_Helper_WORKDIR_NATIVE)/,$$W/,$(1))))))))) 201endef 202 203# convert parametters filesystem root to native notation 204# does some real work only on windows, make sure not to 205# break the dummy implementations on unx* 206define gb_Helper_convert_native 207$(patsubst -I$(OUTDIR)%,-I$(gb_Helper_OUTDIR_NATIVE)%, \ 208$(patsubst $(OUTDIR)%,$(gb_Helper_OUTDIR_NATIVE)%, \ 209$(patsubst $(WORKDIR)%,$(gb_Helper_WORKDIR_NATIVE)%, \ 210$(patsubst $(SRCDIR)%,$(gb_Helper_SRCDIR_NATIVE)%, \ 211$(1))))) 212endef 213 214# CObject class 215 216ifeq ($(gb_FULLDEPS),$(true)) 217define gb_CObject__command_deponcompile 218$(call gb_Helper_abbreviate_dirs_native,\ 219 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 220 $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \ 221 -I$(dir $(3)) \ 222 $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \ 223 $(3) \ 224 -f - \ 225 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 226 -v OBJECTFILE=$(1) \ 227 -v OUTDIR=$(OUTDIR)/ \ 228 -v WORKDIR=$(WORKDIR)/ \ 229 -v SRCDIR=$(SRCDIR)/ \ 230 -v REPODIR=$(REPODIR)/ \ 231 > $(call gb_CObject_get_dep_target,$(2))) 232endef 233else 234CObject__command_deponcompile = 235endif 236 237define gb_CObject__command 238$(call gb_Output_announce,$(2),$(true),C ,3) 239$(call gb_Helper_abbreviate_dirs_native,\ 240 mkdir -p $(dir $(1)) && \ 241 $(gb_CC) \ 242 $(DEFS) $(CFLAGS) \ 243 -c $(3) \ 244 -o $(1) \ 245 -I$(dir $(3)) \ 246 $(INCLUDE)) 247$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE)) 248endef 249 250 251 252# CxxObject class 253 254ifeq ($(gb_FULLDEPS),$(true)) 255define gb_CxxObject__command_deponcompile 256$(call gb_Helper_abbreviate_dirs_native,\ 257 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 258 $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \ 259 -I$(dir $(3)) \ 260 $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \ 261 $(3) \ 262 -f - \ 263 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 264 -v OBJECTFILE=$(1) \ 265 -v OUTDIR=$(OUTDIR)/ \ 266 -v WORKDIR=$(WORKDIR)/ \ 267 -v SRCDIR=$(SRCDIR)/ \ 268 -v REPODIR=$(REPODIR)/ \ 269 > $(call gb_CxxObject_get_dep_target,$(2))) 270endef 271else 272gb_CxxObject__command_deponcompile = 273endif 274 275define gb_CxxObject__command 276$(call gb_Output_announce,$(2),$(true),CXX,3) 277$(call gb_Helper_abbreviate_dirs_native,\ 278 mkdir -p $(dir $(1)) && \ 279 $(gb_CXX) \ 280 $(DEFS) $(CXXFLAGS) \ 281 -c $(3) \ 282 -o $(1) \ 283 -I$(dir $(3)) \ 284 $(INCLUDE_STL) $(INCLUDE)) 285$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CXXFLAGS),$(INCLUDE_STL) $(INCLUDE)) 286endef 287 288 289# PrecompiledHeader class 290 291gb_PrecompiledHeader_EXT := .gch 292 293gb_PrecompiledHeader_get_enableflags = -I$(WORKDIR)/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR) \ 294 -DPRECOMPILED_HEADERS \ 295 -Winvalid-pch \ 296 297ifeq ($(gb_FULLDEPS),$(true)) 298define gb_PrecompiledHeader__command_deponcompile 299$(call gb_Helper_abbreviate_dirs_native,\ 300 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 301 $(4) $(5) \ 302 -I$(dir $(3)) \ 303 $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \ 304 $(3) \ 305 -f - \ 306 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 307 -v OBJECTFILE=$(1) \ 308 -v OUTDIR=$(OUTDIR)/ \ 309 -v WORKDIR=$(WORKDIR)/ \ 310 -v SRCDIR=$(SRCDIR)/ \ 311 -v REPODIR=$(REPODIR)/ \ 312 > $(call gb_PrecompiledHeader_get_dep_target,$(2))) 313endef 314else 315gb_PrecompiledHeader__command_deponcompile = 316endif 317 318define gb_PrecompiledHeader__command 319$(call gb_Output_announce,$(2),$(true),PCH,1) 320$(call gb_Helper_abbreviate_dirs_native,\ 321 mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \ 322 $(gb_CXX) \ 323 -x c++-header \ 324 $(4) $(5) \ 325 -I$(dir $(3)) \ 326 $(6) \ 327 -c $(3) \ 328 -o$(1)) 329$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) 330 331endef 332 333# NoexPrecompiledHeader class 334 335gb_NoexPrecompiledHeader_EXT := .gch 336 337gb_NoexPrecompiledHeader_get_enableflags = -I$(WORKDIR)/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR) \ 338 -Winvalid-pch \ 339 340ifeq ($(gb_FULLDEPS),$(true)) 341define gb_NoexPrecompiledHeader__command_deponcompile 342$(call gb_Helper_abbreviate_dirs_native,\ 343 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 344 $(4) $(5) \ 345 -I$(dir $(3)) \ 346 $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \ 347 $(3) \ 348 -f - \ 349 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 350 -v OBJECTFILE=$(1) \ 351 -v OUTDIR=$(OUTDIR)/ \ 352 -v WORKDIR=$(WORKDIR)/ \ 353 -v SRCDIR=$(SRCDIR)/ \ 354 -v REPODIR=$(REPODIR)/ \ 355 > $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) 356endef 357else 358gb_NoexPrecompiledHeader__command_deponcompile = 359endif 360 361define gb_NoexPrecompiledHeader__command 362$(call gb_Output_announce,$(2),$(true),PCH,1) 363$(call gb_Helper_abbreviate_dirs_native,\ 364 mkdir -p $(dir $(1)) $(dir $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) && \ 365 $(gb_CXX) \ 366 -x c++-header \ 367 $(4) $(5) \ 368 -I$(dir $(3)) \ 369 $(6) \ 370 -c $(3) \ 371 -o$(1)) 372$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) 373 374endef 375 376 377# LinkTarget class 378 379gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS) 380gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR) 381 382ifeq ($(gb_DEBUGLEVEL),2) 383gb_LinkTarget_CXXFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline 384gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline 385 386endif 387 388gb_LinkTarget_INCLUDE :=\ 389 $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) \ 390 $(foreach inc,$(subst ;, ,$(JDKINC)),-I$(inc)) \ 391 392gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC))) 393 394define gb_LinkTarget__command_dynamiclinkexecutable 395$(call gb_Output_announce,$(2),$(true),LNK,4) 396$(call gb_Helper_abbreviate_dirs_native,\ 397 mkdir -p $(dir $(1)) && \ 398 RESPONSEFILE=`$(gb_MKTEMP)` && \ 399 echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ 400 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ 401 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ 402 $(NATIVERES) " > $${RESPONSEFILE} && \ 403 $(gb_LINK) \ 404 $(gb_Executable_TARGETTYPEFLAGS) \ 405 $(LDFLAGS) \ 406 $(gb_MINGWLIBDIR)/crt2.o \ 407 $(MINGW_CLIB_DIR)/crtbegin.o \ 408 @$${RESPONSEFILE} \ 409 --start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) --end-group \ 410 --start-group $(patsubst %.dll,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_dllname,$(lib)))) --end-group \ 411 $(MINGW_CLIB_DIR)/crtend.o \ 412 -Map $(basename $(1)).map \ 413 -o $(1)) 414endef 415 416define gb_LinkTarget__command_dynamiclinklibrary 417$(call gb_Helper_abbreviate_dirs_native,\ 418 mkdir -p $(dir $(1)) && \ 419 rm -f $(1) && \ 420 RESPONSEFILE=`$(gb_MKTEMP)` && \ 421 echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ 422 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ 423 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ 424 $(NATIVERES) " > $${RESPONSEFILE} && \ 425 $(gb_LINK) \ 426 $(gb_Library_TARGETTYPEFLAGS) \ 427 $(LDFLAGS) \ 428 --enable-auto-image-base \ 429 -e _DllMainCRTStartup@12 \ 430 $(gb_MINGWLIBDIR)/dllcrt2.o \ 431 $(MINGW_CLIB_DIR)/crtbegin.o \ 432 @$${RESPONSEFILE} \ 433 --start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) --end-group \ 434 --start-group $(patsubst %.dll,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_dllname,$(lib)))) --end-group \ 435 $(MINGW_CLIB_DIR)/crtend.o \ 436 -Map $(basename $(DLLTARGET)).map \ 437 -o $(DLLTARGET) && touch $(1)) 438endef 439 440define gb_LinkTarget__command_staticlinklibrary 441$(call gb_Helper_abbreviate_dirs_native,\ 442 mkdir -p $(dir $(1)) && \ 443 RESPONSEFILE=`$(gb_MKTEMP)` && \ 444 echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ 445 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ 446 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) " > $${RESPONSEFILE} && \ 447 $(gb_AR) -rsu\ 448 $(1) \ 449 @$${RESPONSEFILE}) 450endef 451 452define gb_LinkTarget__command 453$(call gb_Output_announce,$(2),$(true),LNK,4) 454$(if $(filter Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclinkexecutable,$(1),$(2))) 455$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclinklibrary,$(1),$(2))) 456$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlinklibrary,$(1))) 457endef 458 459 460# Library class 461 462gb_Library_DEFS := -D_DLL 463gb_Library_TARGETTYPEFLAGS := -shared 464gb_Library_get_rpath := 465 466gb_Library_SYSPRE := i 467gb_Library_PLAINEXT := .lib 468 469gb_Library_PLAINLIBS_NONE += \ 470 mingwthrd \ 471 mingw32 \ 472 mingwex \ 473 $(gb_MINGW_LIBSTDCPP) \ 474 $(gb_MINGW_LIBGCC) \ 475 advapi32 \ 476 gdi32 \ 477 gdiplus \ 478 gnu_getopt \ 479 imm32\ 480 kernel32 \ 481 msimg32 \ 482 msvcrt \ 483 mpr \ 484 moldname \ 485 ole32 \ 486 oleaut32 \ 487 shell32 \ 488 user32 \ 489 uuid \ 490 uwinapi \ 491 winspool \ 492 z \ 493 494gb_Library_LAYER := \ 495 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \ 496 $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):OOO) \ 497 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \ 498 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \ 499 $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \ 500 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \ 501 $(foreach lib,$(gb_Library_STLLIBS),$(lib):OOO) \ 502 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):OOO) \ 503 $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \ 504 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \ 505 506gb_Library_FILENAMES :=\ 507 $(foreach lib,$(gb_Library_TARGETS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \ 508 509gb_Library_DLLEXT := .dll 510gb_Library_MAJORVER := 3 511gb_Library_RTEXT := gcc3$(gb_Library_DLLEXT) 512ifeq ($(gb_PRODUCT),$(true)) 513gb_Library_STLEXT := port_gcc$(gb_Library_DLLEXT) 514else 515gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_DLLEXT) 516endif 517gb_Library_OOOEXT := $(gb_Library_DLLEXT) 518gb_Library_UNOEXT := .uno$(gb_Library_DLLEXT) 519gb_Library_UNOVEREXT := $(gb_Library_MAJORVER)$(gb_Library_DLLEXT) 520gb_Library_RTVEREXT := $(gb_Library_MAJORVER)$(gb_Library_RTEXT) 521 522gb_Library_DLLFILENAMES := \ 523 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(lib)$(gb_Library_OOOEXT)) \ 524 $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 525 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 526 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 527 $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(lib)$(gb_Library_RTEXT)) \ 528 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(lib)$(gb_Library_RTVEREXT)) \ 529 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \ 530 $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \ 531 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(lib)$(gb_Library_UNOVEREXT)) \ 532 533gb_Library_IARCSYSPRE := lib 534gb_Library_IARCEXT := .a 535 536gb_Library_ILIBEXT := .lib 537 538define gb_Library_Library_platform 539$(call gb_LinkTarget_set_dlltarget,$(2),$(3)) 540 541$(call gb_LinkTarget_set_auxtargets,$(2),\ 542 $(patsubst %.dll,%.map,$(3)) \ 543) 544 545$(call gb_Library_get_target,$(1)) \ 546$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS := $(OUTDIR)/bin/$(notdir $(3)) 547 548$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3)) 549 550endef 551 552define gb_Library_add_default_nativeres 553$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2)) 554$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/inc/shlinfo) 555$(call gb_WinResTarget_set_defs,$(1)/$(2),\ 556 $$(DEFS) \ 557 -DADDITIONAL_VERINFO1= \ 558 -DADDITIONAL_VERINFO2= \ 559 -DADDITIONAL_VERINFO3= \ 560) 561$(call gb_Library_add_nativeres,$(1),$(2)) 562$(call gb_Library_get_clean_target,$(1)) : $(call gb_WinResTarget_get_clean_target,$(1)/$(2)) 563 564endef 565 566define gb_Library_add_nativeres 567$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : $(call gb_WinResTarget_get_target,$(1)/$(2)) 568$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : NATIVERES += $(call gb_WinResTarget_get_target,$(1)/$(2)) 569 570endef 571 572define gb_Library_get_dllname 573$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES))) 574endef 575 576 577# StaticLibrary class 578 579gb_StaticLibrary_DEFS := 580gb_StaticLibrary_SYSPRE := lib 581gb_StaticLibrary_PLAINEXT := .a 582gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT) 583 584gb_StaticLibrary_FILENAMES := \ 585 $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \ 586 $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \ 587 588gb_StaticLibrary_FILENAMES := $(patsubst salcpprt:salcpprt%,salcpprt:cpprtl%,$(gb_StaticLibrary_FILENAMES)) 589 590gb_StaticLibrary_StaticLibrary_platform = 591 592# Executable class 593 594gb_Executable_EXT := .exe 595gb_Executable_TARGETTYPEFLAGS := 596gb_Executable_get_rpath := 597gb_Executable_Executable_platform = 598 599 600# CppunitTest class 601 602gb_CppunitTest_CPPTESTPRECOMMAND := 603gb_CppunitTest_SYSPRE := itest_ 604gb_CppunitTest_EXT := .lib 605gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT) 606gb_CppunitTest_get_libfilename = test_$(1).dll 607 608define gb_CppunitTest_CppunitTest_platform 609$(call gb_LinkTarget_set_dlltarget,$(2),$(3)) 610 611$(call gb_LinkTarget_set_auxtargets,$(2),\ 612 $(patsubst %.dll,%.map,$(3)) \ 613) 614 615endef 616 617# SdiTarget class 618 619gb_SdiTarget_SVIDLPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 620 621# SrsPartMergeTarget 622 623gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 624 625# SrsPartTarget class 626 627gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc.exe 628gb_SrsPartTarget_RSCCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET) 629 630ifeq ($(gb_FULLDEPS),$(true)) 631define gb_SrsPartTarget__command_dep 632$(call gb_Helper_abbreviate_dirs_native,\ 633 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 634 $(INCLUDE) \ 635 $(DEFS) \ 636 $(2) \ 637 -f - \ 638 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 639 -v OBJECTFILE=$(call gb_SrsPartTarget_get_target,$(1)) \ 640 -v OUTDIR=$(OUTDIR)/ \ 641 -v WORKDIR=$(WORKDIR)/ \ 642 -v SRCDIR=$(SRCDIR)/ \ 643 -v REPODIR=$(REPODIR)/ \ 644 > $(call gb_SrsPartTarget_get_dep_target,$(1))) 645endef 646else 647gb_SrsPartTarget__command_dep = 648endif 649 650# WinResTarget class 651 652gb_WinResTarget_POSTFIX :=_res.o 653 654define gb_WinResTarget__command 655$(call gb_Output_announce,$(2),$(true),RES,3) 656$(call gb_Helper_abbreviate_dirs_native,\ 657 mkdir -p $(dir $(1)) && \ 658 $(gb_RC) \ 659 $(DEFS) $(FLAGS) \ 660 -I$(dir $(3)) \ 661 $(INCLUDE) \ 662 -Fo$(patsubst %_res.o,%.res,$(1)) \ 663 $(RCFILE) ) 664$(call gb_Helper_abbreviate_dirs_native,\ 665 windres $(patsubst %_res.o,%.res,$(1)) $(1)) 666 rm $(patsubst %_res.o,%.res,$(1)) 667endef 668 669$(eval $(call gb_Helper_make_dep_targets,\ 670 WinResTarget \ 671)) 672 673ifeq ($(gb_FULLDEPS),$(true)) 674define gb_WinResTarget__command_dep 675$(call gb_Helper_abbreviate_dirs_native,\ 676 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 677 $(INCLUDE) \ 678 $(DEFS) \ 679 $(2) \ 680 -f - \ 681 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 682 -v OBJECTFILE=$(call gb_WinResTarget_get_target,$(1)) \ 683 -v OUTDIR=$(OUTDIR)/ \ 684 -v WORKDIR=$(WORKDIR)/ \ 685 -v SRCDIR=$(SRCDIR)/ \ 686 -v REPODIR=$(REPODIR)/ \ 687 > $(call gb_WinResTarget_get_dep_target,$(1))) 688endef 689else 690gb_WinResTarget__command_dep = 691endif 692 693# ComponentTarget 694 695gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 696gb_Library_COMPONENTPREFIXES := \ 697 OOO:vnd.sun.star.expand:\dBRAND_BASE_DIR/program/ \ 698 URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \ 699 700# vim: set noet sw=4 ts=4: 701