1#************************************************************** 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20#************************************************************** 21 22 23 24GUI := WNT 25COM := MSC 26 27# set tmpdir to some mixed case path, suitable for native tools 28gb_TMPDIR:=$(if $(TMPDIR),$(shell cygpath -m $(TMPDIR)),$(shell cygpath -m /tmp)) 29gb_MKTEMP := mktemp --tmpdir=$(gb_TMPDIR) gbuild.XXXXXX 30 31ifeq ($(CPUNAME),INTEL) 32gb_AS := ml 33else ifeq ($(CPUNAME),X86_64) 34gb_AS := ml64 35endif 36 37gb_CC := cl 38gb_CXX := cl 39gb_LINK := link 40gb_AWK := awk 41gb_CLASSPATHSEP := ; 42gb_RC := rc 43 44# use CC/CXX if they are nondefaults 45ifneq ($(origin AS),default) 46gb_AS := $(AS) 47endif 48ifneq ($(origin CC),default) 49gb_CC := $(CC) 50gb_GCCP := $(CC) 51endif 52ifneq ($(origin CXX),default) 53gb_CXX := $(CXX) 54endif 55 56gb_OSDEFS := \ 57 -DWINVER=0x0500 \ 58 -D_WIN32_IE=0x0500 \ 59 -DNT351 \ 60 -DWIN32 \ 61 -DWNT \ 62 63gb_COMPILERDEFS := \ 64 -DMSC \ 65 -D_CRT_NON_CONFORMING_SWPRINTFS \ 66 -D_CRT_NONSTDC_NO_DEPRECATE \ 67 -D_CRT_SECURE_NO_DEPRECATE \ 68 -D_MT \ 69 -D_DLL \ 70 -DCPPU_ENV=$(COMNAME) \ 71 -DFULL_DESK \ 72 -DM1500 \ 73 74gb_CPUDEFS := -D$(ALIGN) -D$(CPUNAME) 75ifeq ($(CPUNAME),INTEL) 76gb_CPUDEFS += -D_X86_=1 77endif 78ifeq ($(CPUNAME),X86_64) 79gb_CPUDEFS += -D_AMD64_=1 80endif 81 82ifeq ($(CPUNAME),INTEL) 83gb_COMPILERDEFS += -DBOOST_MEM_FN_ENABLE_CDECL 84endif 85 86gb_RCDEFS := \ 87 -DWINVER=0x0400 \ 88 -DWIN32 \ 89 90gb_RCFLAGS := \ 91 -V 92 93gb_CFLAGS := \ 94 -Gd \ 95 -GR \ 96 -Gs \ 97 -GS \ 98 -nologo \ 99 -Wall \ 100 -wd4005 \ 101 -wd4061 \ 102 -wd4127 \ 103 -wd4180 \ 104 -wd4189 \ 105 -wd4191 \ 106 -wd4217 \ 107 -wd4250 \ 108 -wd4251 \ 109 -wd4255 \ 110 -wd4275 \ 111 -wd4290 \ 112 -wd4294 \ 113 -wd4350 \ 114 -wd4355 \ 115 -wd4365 \ 116 -wd4503 \ 117 -wd4505 \ 118 -wd4511 \ 119 -wd4512 \ 120 -wd4514 \ 121 -wd4611 \ 122 -wd4619 \ 123 -wd4625 \ 124 -wd4626 \ 125 -wd4640 \ 126 -wd4668 \ 127 -wd4675 \ 128 -wd4692 \ 129 -wd4710 \ 130 -wd4711 \ 131 -wd4738 \ 132 -wd4786 \ 133 -wd4800 \ 134 -wd4820 \ 135 -wd4826 \ 136 -Zc:wchar_t- \ 137 -Zm500 \ 138 139gb_CXXFLAGS := \ 140 -Gd \ 141 -GR \ 142 -Gs \ 143 -GS \ 144 -Gy \ 145 -nologo \ 146 -Wall \ 147 -wd4005 \ 148 -wd4061 \ 149 -wd4127 \ 150 -wd4180 \ 151 -wd4189 \ 152 -wd4191 \ 153 -wd4217 \ 154 -wd4250 \ 155 -wd4251 \ 156 -wd4275 \ 157 -wd4290 \ 158 -wd4294 \ 159 -wd4350 \ 160 -wd4355 \ 161 -wd4365 \ 162 -wd4503 \ 163 -wd4505 \ 164 -wd4511 \ 165 -wd4512 \ 166 -wd4514 \ 167 -wd4611 \ 168 -wd4619 \ 169 -wd4625 \ 170 -wd4626 \ 171 -wd4640 \ 172 -wd4668 \ 173 -wd4675 \ 174 -wd4692 \ 175 -wd4710 \ 176 -wd4711 \ 177 -wd4738 \ 178 -wd4786 \ 179 -wd4800 \ 180 -wd4820 \ 181 -wd4826 \ 182 -Zc:wchar_t- \ 183 -Zm500 \ 184 185gb_STDLIBS := \ 186 uwinapi \ 187 kernel32 \ 188 msvcrt \ 189 oldnames \ 190 191ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE) 192gb_CFLAGS_WERROR := -WX 193gb_CXXFLAGS_WERROR := -WX 194endif 195 196gb_LinkTarget_EXCEPTIONFLAGS := \ 197 -DEXCEPTIONS_ON \ 198 -EHa \ 199 200gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS) 201 202 203gb_LinkTarget_NOEXCEPTIONFLAGS := \ 204 -DEXCEPTIONS_OFF \ 205 206gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS) 207 208ifeq ($(CPUNAME),INTEL) 209gb_LinkTarget_LDFLAGS := \ 210 -MACHINE:IX86 \ 211 -NODEFAULTLIB \ 212 $(patsubst %,-LIBPATH:%,$(filter-out .,$(subst ;, ,$(subst \,/,$(ILIB))))) \ 213 214endif 215ifeq ($(CPUNAME),X86_64) 216gb_LinkTarget_LDFLAGS := \ 217 -MACHINE:X64 \ 218 -NODEFAULTLIB \ 219 $(patsubst %,-LIBPATH:%,$(filter-out .,$(subst ;, ,$(subst \,/,$(ILIB))))) \ 220 221endif 222 223gb_DEBUG_CFLAGS := -Zi 224 225ifeq ($(gb_DEBUGGING),TRUE) 226gb_LinkTarget_LDFLAGS += -DEBUG 227endif 228 229# this does not use CFLAGS so it is not overridable 230ifneq ($(ENABLE_CRASHDUMP),) 231gb_CFLAGS+=-Zi 232gb_CXXFLAGS+=-Zi 233endif 234 235ifeq ($(gb_DEBUGLEVEL),2) 236gb_COMPILEROPTFLAGS := 237else 238gb_COMPILEROPTFLAGS := -Ob1 -Oxs -Oy- 239endif 240 241gb_COMPILERNOOPTFLAGS := -Od 242 243 244# Helper class 245gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 246gb_Helper_WORKDIR_NATIVE := $(shell cygpath -m $(WORKDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 247gb_Helper_OUTDIR_NATIVE := $(shell cygpath -m $(OUTDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 248gb_Helper_REPODIR_NATIVE := $(shell cygpath -m $(REPODIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') 249 250define gb_Helper_abbreviate_dirs_native 251R=$(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))) && \ 252$(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))))))))) 253endef 254 255# convert parametters filesystem root to native notation 256# does some real work only on windows, make sure not to 257# break the dummy implementations on unx* 258define gb_Helper_convert_native 259$(patsubst -I$(OUTDIR)%,-I$(gb_Helper_OUTDIR_NATIVE)%, \ 260$(patsubst $(OUTDIR)%,$(gb_Helper_OUTDIR_NATIVE)%, \ 261$(patsubst $(WORKDIR)%,$(gb_Helper_WORKDIR_NATIVE)%, \ 262$(patsubst $(SRCDIR)%,$(gb_Helper_SRCDIR_NATIVE)%, \ 263$(1))))) 264endef 265 266# convert parametters filesystem root to native notation 267# does some real work only on windows, make sure not to 268# break the dummy implementations on unx* 269define gb_Helper_convert_native 270$(patsubst -I$(OUTDIR)%,-I$(gb_Helper_OUTDIR_NATIVE)%, \ 271$(patsubst $(OUTDIR)%,$(gb_Helper_OUTDIR_NATIVE)%, \ 272$(patsubst $(WORKDIR)%,$(gb_Helper_WORKDIR_NATIVE)%, \ 273$(patsubst $(SRCDIR)%,$(gb_Helper_SRCDIR_NATIVE)%, \ 274$(1))))) 275endef 276 277 278# AsmObject class 279 280gb_AsmObject_EXT := .asm 281 282define gb_AsmObject__command 283$(call gb_Output_announce,$(2),$(true),ASM,3) 284$(call gb_Helper_abbreviate_dirs_native,\ 285 mkdir -p $(dir $(1)) && \ 286 unset INCLUDE && \ 287 $(gb_AS) \ 288 $(DEFS) \ 289 -safeseh \ 290 -Cp \ 291 -coff \ 292 -Fo$(1) \ 293 -c $(3)) 294endef 295 296# CObject class 297 298ifeq ($(gb_FULLDEPS),$(true)) 299define gb_Object__command_deponcompile 300$(call gb_Helper_abbreviate_dirs_native,\ 301 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 302 $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \ 303 -I$(dir $(3)) \ 304 $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME)%,$(6)) \ 305 $(3) \ 306 -f - \ 307 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 308 -v OBJECTFILE=$(1) \ 309 -v OUTDIR=$(OUTDIR)/ \ 310 -v WORKDIR=$(WORKDIR)/ \ 311 -v SRCDIR=$(SRCDIR)/ \ 312 -v REPODIR=$(REPODIR)/ \ 313 > $(2)) 314endef 315else 316gb_Object__command_deponcompile = 317endif 318 319define gb_CObject__command 320$(call gb_Output_announce,$(2),$(true),C ,3) 321$(call gb_Helper_abbreviate_dirs_native,\ 322 mkdir -p $(dir $(1)) $(dir $(4)) && \ 323 unset INCLUDE && \ 324 $(gb_CC) \ 325 $(DEFS) \ 326 $(T_CFLAGS) \ 327 -Fd$(PDBFILE) \ 328 $(CFLAGS) \ 329 $(PCHFLAGS) \ 330 -I$(dir $(3)) \ 331 $(INCLUDE) \ 332 -c $(3) \ 333 -Fo$(1)) 334$(call gb_Object__command_deponcompile,$(1),$(4),$(3),$(DEFS),$(T_CFLAGS),$(INCLUDE)) 335endef 336 337 338# CxxObject class 339 340define gb_CxxObject__command 341$(call gb_Output_announce,$(2),$(true),CXX,3) 342$(call gb_Helper_abbreviate_dirs_native,\ 343 mkdir -p $(dir $(1)) $(dir $(4)) && \ 344 unset INCLUDE && \ 345 $(gb_CXX) \ 346 $(DEFS) \ 347 $(T_CXXFLAGS) \ 348 -Fd$(PDBFILE) \ 349 $(CXXFLAGS) \ 350 $(PCHFLAGS) \ 351 -I$(dir $(3)) \ 352 $(INCLUDE_STL) $(INCLUDE) \ 353 -c $(3) \ 354 -Fo$(1)) 355$(call gb_Object__command_deponcompile,$(1),$(4),$(3),$(DEFS),$(T_CXXFLAGS),$(INCLUDE)) 356endef 357 358 359# PrecompiledHeader class 360 361gb_PrecompiledHeader_get_enableflags = -DPRECOMPILED_HEADERS -Yu$(1).hxx \ 362 -Fp$(call gb_PrecompiledHeader_get_target,$(1)) 363 364ifeq ($(gb_FULLDEPS),$(true)) 365define gb_PrecompiledHeader__command_deponcompile 366$(call gb_Helper_abbreviate_dirs_native,\ 367 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 368 $(4) $(5) \ 369 -I$(dir $(3)) \ 370 $(filter-out -I$(COMPATH)% -I$(JAVA_HOME)%,$(6)) \ 371 $(3) \ 372 -f - \ 373 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 374 -v OBJECTFILE=$(1) \ 375 -v OUTDIR=$(OUTDIR)/ \ 376 -v WORKDIR=$(WORKDIR)/ \ 377 -v SRCDIR=$(SRCDIR)/ \ 378 -v REPODIR=$(REPODIR)/ \ 379 > $(call gb_PrecompiledHeader_get_dep_target,$(2))) 380endef 381else 382gb_PrecompiledHeader__command_deponcompile = 383endif 384 385 386define gb_PrecompiledHeader__command 387$(call gb_Output_announce,$(2),$(true),PCH,1) 388$(call gb_Helper_abbreviate_dirs_native,\ 389 mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \ 390 unset INCLUDE && \ 391 $(gb_CXX) \ 392 $(4) $(5) -Fd$(PDBFILE) \ 393 -I$(dir $(3)) \ 394 $(6) \ 395 -c $(3) \ 396 -DPRECOMPILED_HEADERS \ 397 -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) 398$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) 399endef 400 401# NoexPrecompiledHeader class 402 403gb_NoexPrecompiledHeader_get_enableflags = -Yu$(1).hxx \ 404 -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1)) 405 406ifeq ($(gb_FULLDEPS),$(true)) 407define gb_NoexPrecompiledHeader__command_deponcompile 408$(call gb_Helper_abbreviate_dirs_native,\ 409 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 410 $(4) $(5) \ 411 -I$(dir $(3)) \ 412 $(filter-out -I$(COMPATH)% -I$(JAVA_HOME)%,$(6)) \ 413 $(3) \ 414 -f - \ 415 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 416 -v OBJECTFILE=$(1) \ 417 -v OUTDIR=$(OUTDIR)/ \ 418 -v WORKDIR=$(WORKDIR)/ \ 419 -v SRCDIR=$(SRCDIR)/ \ 420 -v REPODIR=$(REPODIR)/ \ 421 > $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) 422endef 423else 424gb_NoexPrecompiledHeader__command_deponcompile = 425endif 426 427 428define gb_NoexPrecompiledHeader__command 429$(call gb_Output_announce,$(2),$(true),PCH,1) 430$(call gb_Helper_abbreviate_dirs_native,\ 431 mkdir -p $(dir $(1)) $(dir $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) && \ 432 unset INCLUDE && \ 433 $(gb_CXX) \ 434 $(4) $(5) -Fd$(PDBFILE) \ 435 -I$(dir $(3)) \ 436 $(6) \ 437 -c $(3) \ 438 -DPRECOMPILED_HEADERS \ 439 -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) 440$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) 441endef 442 443# LinkTarget class 444 445gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) 446gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR) 447 448gb_LinkTarget_INCLUDE :=\ 449 $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) \ 450 $(foreach inc,$(subst ;, ,$(JDKINC)),-I$(inc)) \ 451 452gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC))) 453 454gb_LinkTarget_get_pdbfile = $(call gb_LinkTarget_get_target,)pdb/$(1).pdb 455 456define gb_LinkTarget__command 457$(call gb_Output_announce,$(2),$(true),LNK,4) 458$(call gb_Helper_abbreviate_dirs_native,\ 459 mkdir -p $(dir $(1)) && \ 460 rm -f $(1) && \ 461 RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),100, \ 462 $(call gb_Helper_convert_native,\ 463 $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ 464 $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ 465 $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \ 466 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ 467 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ 468 $(PCHOBJS) $(NATIVERES))) && \ 469 $(gb_LINK) \ 470 $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ 471 $(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \ 472 $(if $(filter GoogleTest Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \ 473 $(if $(filter YES,$(gb_Executable_TARGETGUI)), -SUBSYSTEM:WINDOWS, -SUBSYSTEM:CONSOLE) \ 474 $(T_LDFLAGS) \ 475 @$${RESPONSEFILE} \ 476 $(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))) \ 477 $(patsubst %,%.lib,$(EXTERNAL_LIBS)) \ 478 $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_filename,$(lib))) \ 479 $(LIBS) \ 480 $(if $(DLLTARGET),-out:$(DLLTARGET) -implib:$(1),-out:$(1)); RC=$$?; rm $${RESPONSEFILE} \ 481 $(if $(DLLTARGET),; if [ ! -f $(DLLTARGET) ]; then rm -f $(1) && false; fi) ; exit $$RC) 482endef 483 484 485# Library class 486 487gb_Library_DEFS := -D_DLL_ 488ifeq ($(CPUNAME),INTEL) 489gb_Library_TARGETTYPEFLAGS := -DLL -OPT:NOREF -SAFESEH -NXCOMPAT -DYNAMICBASE 490endif 491ifeq ($(CPUNAME),X86_64) 492gb_Library_TARGETTYPEFLAGS := -DLL -OPT:NOREF -NXCOMPAT -DYNAMICBASE 493endif 494gb_Library_get_rpath := 495 496gb_Library_SYSPRE := i 497gb_Library_PLAINEXT := .lib 498 499gb_Library_PLAINLIBS_NONE += \ 500 advapi32 \ 501 comdlg32 \ 502 d3d9 \ 503 d3dx \ 504 ddraw \ 505 gdi32 \ 506 gdiplus \ 507 glu32 \ 508 gnu_getopt \ 509 imm32\ 510 kernel32 \ 511 msimg32 \ 512 msvcrt \ 513 mpr \ 514 oldnames \ 515 ole32 \ 516 oleaut32 \ 517 opengl32 \ 518 shell32 \ 519 shlwapi \ 520 strmiids \ 521 user32 \ 522 uuid \ 523 uwinapi \ 524 winmm \ 525 winspool \ 526 ws2_32 \ 527 wsock32 528 529gb_Library_LAYER := \ 530 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \ 531 $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):OOO) \ 532 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \ 533 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \ 534 $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \ 535 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \ 536 $(foreach lib,$(gb_Library_STLLIBS),$(lib):OOO) \ 537 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):OOO) \ 538 $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \ 539 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \ 540 541gb_Library_FILENAMES :=\ 542 $(foreach lib,$(gb_Library_TARGETS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \ 543 544gb_Library_DLLEXT := .dll 545gb_Library_MAJORVER := 3 546gb_Library_RTEXT := MSC$(gb_Library_DLLEXT) 547 548ifeq ($(USE_SYSTEM_STL),YES) 549ifeq ($(gb_PRODUCT),$(true)) 550gb_Library_STLEXT := msvcprt.lib 551else 552gb_Library_STLEXT := msvcprt.lib 553endif 554else 555ifeq ($(gb_PRODUCT),$(true)) 556gb_Library_STLEXT := port_vc7145$(gb_Library_DLLEXT) 557else 558gb_Library_STLEXT := port_vc7145_stldebug$(gb_Library_DLLEXT) 559endif 560endif 561 562gb_Library_OOOEXT := $(gb_Library_DLLEXT) 563gb_Library_UNOEXT := .uno$(gb_Library_DLLEXT) 564gb_Library_UNOVEREXT := $(gb_Library_MAJORVER)$(gb_Library_DLLEXT) 565gb_Library_RTVEREXT := $(gb_Library_MAJORVER)$(gb_Library_RTEXT) 566 567gb_Library_DLLFILENAMES :=\ 568 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(lib)$(gb_Library_OOOEXT)) \ 569 $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 570 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 571 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(lib)$(gb_Library_DLLEXT)) \ 572 $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(lib)$(gb_Library_RTEXT)) \ 573 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(lib)$(gb_Library_RTVEREXT)) \ 574 $(foreach lib,$(gb_Library_STLLIBS),$(lib):$(lib)$(gb_Library_STLEXT)) \ 575 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \ 576 $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \ 577 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(lib)$(gb_Library_UNOVEREXT)) \ 578 579define gb_Library_Library_platform 580$(call gb_LinkTarget_set_dlltarget,$(2),$(3)) 581 582$(call gb_LinkTarget_set_auxtargets,$(2),\ 583 $(patsubst %.lib,%.exp,$(call gb_LinkTarget_get_target,$(2))) \ 584 $(3).manifest \ 585 $(call gb_LinkTarget_get_pdbfile,$(2)) \ 586 $(patsubst %.dll,%.pdb,$(3)) \ 587 $(patsubst %.dll,%.ilk,$(3)) \ 588) 589 590$(call gb_Library_get_target,$(1)) \ 591$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS := $(OUTDIR)/bin/$(notdir $(3)) 592 593ifneq ($(ENABLE_CRASHDUMP),) 594$(call gb_Library_get_target,$(1)) \ 595$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS += \ 596 $(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.pdb,$(3))) \ 597 $(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.ilk,$(3))) \ 598 599$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.pdb,$(3))),$(patsubst %.dll,%.pdb,$(3)),$(1)) 600$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.ilk,$(3))),$(patsubst %.dll,%.ilk,$(3)),$(1)) 601endif 602 603$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3),$(1)) 604 605$(call gb_LinkTarget_get_target,$(2)) \ 606$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2)) 607ifeq ($(gb_FULLDEPS),$(true)) 608$(call gb_LinkTarget_get_dep_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2)) 609endif 610endef 611 612define gb_Library_add_default_nativeres 613$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2)) 614$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/inc/shlinfo) 615$(call gb_WinResTarget_set_defs,$(1)/$(2),\ 616 $$(DEFS) \ 617 -DADDITIONAL_VERINFO1 \ 618 -DADDITIONAL_VERINFO2 \ 619 -DADDITIONAL_VERINFO3 \ 620) 621$(call gb_Library_add_nativeres,$(1),$(2)) 622$(call gb_Library_get_clean_target,$(1)) : $(call gb_WinResTarget_get_clean_target,$(1)/$(2)) 623 624endef 625 626define gb_Library_add_nativeres 627$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : $(call gb_WinResTarget_get_target,$(1)/$(2)) 628$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : NATIVERES += $(call gb_WinResTarget_get_target,$(1)/$(2)) 629 630endef 631 632define gb_Library_get_dllname 633$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES))) 634endef 635 636 637# StaticLibrary class 638 639gb_StaticLibrary_DEFS := 640gb_StaticLibrary_TARGETTYPEFLAGS := -LIB 641gb_StaticLibrary_SYSPRE := 642gb_StaticLibrary_PLAINEXT := .lib 643gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT) 644 645gb_StaticLibrary_FILENAMES := \ 646 $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \ 647 $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \ 648 649gb_StaticLibrary_FILENAMES := $(patsubst salcpprt:salcpprt%,salcpprt:cpprtl%,$(gb_StaticLibrary_FILENAMES)) 650 651define gb_StaticLibrary_StaticLibrary_platform 652$(call gb_LinkTarget_get_target,$(2)) \ 653$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2)) 654 655$(call gb_LinkTarget_set_auxtargets,$(2),\ 656 $(call gb_LinkTarget_get_pdbfile,$(2)) \ 657) 658 659endef 660 661# Executable class 662 663gb_Executable_EXT := .exe 664ifeq ($(CPUNAME),INTEL) 665gb_Executable_TARGETTYPEFLAGS := -RELEASE -BASE:0x1b000000 -OPT:NOREF -INCREMENTAL:NO -DEBUG -SAFESEH -NXCOMPAT -DYNAMICBASE 666endif 667ifeq ($(CPUNAME),X86_64) 668gb_Executable_TARGETTYPEFLAGS := -RELEASE -BASE:0x1b000000 -OPT:NOREF -INCREMENTAL:NO -DEBUG -NXCOMPAT -DYNAMICBASE 669endif 670gb_Executable_get_rpath := 671gb_Executable_TARGETGUI := 672 673gb_InBuild_Library_Path := $(OUTDIR)/bin 674gb_Augment_Library_Path := PATH="$${PATH}:$(gb_InBuild_Library_Path)" 675 676define gb_Executable_Executable_platform 677$(call gb_LinkTarget_set_auxtargets,$(2),\ 678 $(patsubst %.exe,%.pdb,$(call gb_LinkTarget_get_target,$(2))) \ 679 $(call gb_LinkTarget_get_pdbfile,$(2)) \ 680 $(call gb_LinkTarget_get_target,$(2)).manifest \ 681) 682 683$(call gb_Executable_get_target,$(1)) \ 684$(call gb_Executable_get_clean_target,$(1)) : AUXTARGETS := $(call gb_Executable_get_target,$(1)).manifest 685$(call gb_Deliver_add_deliverable,$(call gb_Executable_get_target,$(1)).manifest,$(call gb_LinkTarget_get_target,$(2)).manifest,$(1)) 686 687$(call gb_LinkTarget_get_target,$(2)) \ 688$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2)) 689 690endef 691 692# GoogleTest class 693 694gb_GoogleTest_GTESTPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 695gb_GoogleTest_get_filename = $(1)$(gb_Executable_EXT) 696 697define gb_GoogleTest_GoogleTest_platform 698endef 699 700# JunitTest class 701 702define gb_JunitTest_JunitTest_platform 703$(call gb_JunitTest_get_target,$(1)) : DEFS := \ 704 -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(SRCDIR)/instsetoo_native/$(INPATH)/Apache_OpenOffice/installed/install/en-US/OpenOffice 4/program/soffice.exe}" \ 705 -Dorg.openoffice.test.arg.env=PATH \ 706 -Dorg.openoffice.test.arg.user=file:///$(call gb_JunitTest_get_userdir,$(1)) \ 707 708endef 709 710 711# Ant class 712 713define gb_Ant_add_dependencies 714__ant_out:=$(shell $(gb_Ant_ANTCOMMAND) -Ddependencies.outfile=`cygpath -m $(WORKDIR)/Ant/$(1)/deps` -f `cygpath -m $(2)` dependencies) 715$$(eval $(foreach dep,$(shell cat $(WORKDIR)/Ant/$(1)/deps),$$(call gb_Ant_add_dependency,$(call gb_Ant_get_target,$(1)),$(shell cygpath -u $(dep))))) 716 717endef 718 719 720 721# SdiTarget class 722 723gb_SdiTarget_SVIDLPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 724 725# SrsPartMergeTarget 726 727gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 728 729# SrsPartTarget class 730 731gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc.exe 732gb_SrsPartTarget_RSCCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET) 733 734ifeq ($(gb_FULLDEPS),$(true)) 735define gb_SrsPartTarget__command_dep 736$(call gb_Helper_abbreviate_dirs_native,\ 737 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 738 $(INCLUDE) \ 739 $(DEFS) \ 740 $(2) \ 741 -f - \ 742 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 743 -v OBJECTFILE=$(call gb_SrsPartTarget_get_target,$(1)) \ 744 -v OUTDIR=$(OUTDIR)/ \ 745 -v WORKDIR=$(WORKDIR)/ \ 746 -v SRCDIR=$(SRCDIR)/ \ 747 -v REPODIR=$(REPODIR)/ \ 748 > $(call gb_SrsPartTarget_get_dep_target,$(1))) 749endef 750else 751gb_SrsPartTarget__command_dep = 752endif 753 754# WinResTarget class 755 756gb_WinResTarget_POSTFIX :=.res 757 758define gb_WinResTarget__command 759$(call gb_Output_announce,$(2),$(true),RES,3) 760$(call gb_Helper_abbreviate_dirs_native,\ 761 mkdir -p $(dir $(1)) && \ 762 $(gb_RC) \ 763 $(DEFS) $(FLAGS) \ 764 -I$(dir $(3)) \ 765 $(INCLUDE) \ 766 -Fo$(1) \ 767 $(RCFILE) ) 768endef 769 770$(eval $(call gb_Helper_make_dep_targets,\ 771 WinResTarget \ 772)) 773 774ifeq ($(gb_FULLDEPS),$(true)) 775define gb_WinResTarget__command_dep 776$(call gb_Helper_abbreviate_dirs_native,\ 777 $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ 778 $(INCLUDE) \ 779 $(DEFS) \ 780 $(2) \ 781 -f - \ 782 | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ 783 -v OBJECTFILE=$(call gb_WinResTarget_get_target,$(1)) \ 784 -v OUTDIR=$(OUTDIR)/ \ 785 -v WORKDIR=$(WORKDIR)/ \ 786 -v SRCDIR=$(SRCDIR)/ \ 787 -v REPODIR=$(REPODIR)/ \ 788 > $(call gb_WinResTarget_get_dep_target,$(1))) 789endef 790else 791gb_WinResTarget__command_dep = 792endif 793 794# ComponentTarget 795 796gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin" 797gb_Library_COMPONENTPREFIXES := \ 798 OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \ 799 URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \ 800 NONE:vnd.sun.star.expand:\dOOO_INBUILD_SHAREDLIB_DIR/ \ 801 802# UnoApiTarget 803 804gb_UnoApiTarget_IDLCTARGET := $(OUTDIR)/bin/idlc.exe 805gb_UnoApiTarget_IDLCCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_UnoApiTarget_IDLCTARGET) 806gb_UnoApiTarget_REGMERGETARGET := $(OUTDIR)/bin/regmerge.exe 807gb_UnoApiTarget_REGMERGECOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_UnoApiTarget_REGMERGETARGET) 808gb_UnoApiTarget_REGCOMPARETARGET := $(OUTDIR)/bin/regcompare.exe 809gb_UnoApiTarget_REGCOMPARECOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_UnoApiTarget_REGCOMPARETARGET) 810gb_UnoApiTarget_CPPUMAKERTARGET := $(OUTDIR)/bin/cppumaker.exe 811gb_UnoApiTarget_CPPUMAKERCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_UnoApiTarget_CPPUMAKERTARGET) 812gb_UnoApiTarget_REGVIEWTARGET := $(OUTDIR)/bin/regview.exe 813gb_UnoApiTarget_REGVIEWCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_UnoApiTarget_REGVIEWTARGET) 814 815# vim: set noet sw=4 ts=4: 816