Defs-windows.gmk 15.7 KB
Newer Older
D
duke 已提交
1
#
2
# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
D
duke 已提交
3 4 5 6
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
7
# published by the Free Software Foundation.  Oracle designates this
D
duke 已提交
8
# particular file as subject to the "Classpath" exception as provided
9
# by Oracle in the LICENSE file that accompanied this code.
D
duke 已提交
10 11 12 13 14 15 16 17 18 19 20
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
21 22 23
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
D
duke 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#

#
# Makefile to specify compiler flags for programs and libraries
# targeted to Windows builds.  Should not contain any rules.
#
# WARNING: This file is shared with other workspaces. 
#          So when it includes other files, it must use JDK_TOPDIR.
#

# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk

# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -Fo

# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = lib
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX = .bat

# LIB_LOCATION, which for windows identifies where .exe files go, may be
# set by each GNUmakefile. The default is BINDIR.
ifndef LIB_LOCATION
  LIB_LOCATION = $(BINDIR)
endif # LIB_LOCATION

ifndef PLATFORM_SRC
52
  PLATFORM_SRC  = $(BUILDDIR)/../src/windows
D
duke 已提交
53 54
endif # PLATFORM_SRC

55 56 57 58 59
# Location of the various .properties files specific to Windows platform
ifndef PLATFORM_PROPERTIES
  PLATFORM_PROPERTIES  = $(BUILDDIR)/../src/windows/lib
endif # PLATFORM_SRC

D
duke 已提交
60 61 62
# Platform specific closed sources
ifndef OPENJDK
  ifndef CLOSED_PLATFORM_SRC
63
    CLOSED_PLATFORM_SRC  = $(BUILDDIR)/../src/closed/windows
D
duke 已提交
64 65 66 67 68 69 70 71 72 73
  endif
endif

# for backwards compatability, the old "win32" is used here instead of 
# the more proper "windows"
PLATFORM_INCLUDE_NAME = win32
PLATFORM_INCLUDE      = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)

# The following DLL's are considered MS runtime libraries and should
#     not to be REBASEd, see deploy/make/common/Release.gmk.
74
#     msvcr*.dll: Microsoft runtimes
75 76 77 78
ifeq ($(COMPILER_VERSION), VS2010)
  MSVCRNN_DLL = msvcr100.dll
  MSVCPNN_DLL = msvcp100.dll
  MS_RUNTIME_LIBRARIES = $(MSVCRNN_DLL)
79
endif
D
duke 已提交
80 81 82

EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)

83
# Full Debug Symbols has been enabled on Windows since JDK1.4.1.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
# The Full Debug Symbols (FDS) default for VARIANT == OPT builds is
# enabled with debug info files ZIP'ed to save space. For VARIANT !=
# OPT builds, FDS is always enabled, after all a debug build without
# debug info isn't very useful. The ZIP_DEBUGINFO_FILES option only has
# meaning when FDS is enabled.
#
# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
# disabled for a VARIANT == OPT build.
#
# Note: Use of a different variable name for the FDS override option
# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
# in options via environment variables, use of distinct variables
# prevents strange behaviours. For example, in a VARIANT != OPT build,
# the FULL_DEBUG_SYMBOLS environment variable will be 0, but the
# ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If the same
# variable name is used, then different values can be picked up by
# different parts of the build. Just to be clear, we only need two
# variable names because the incoming option value can be overridden
# in some situations, e.g., a VARIANT != OPT build.

ifeq ($(VARIANT), OPT)
  FULL_DEBUG_SYMBOLS ?= 1
  ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
else
  # debug variants always get Full Debug Symbols (if available)
  ENABLE_FULL_DEBUG_SYMBOLS = 1
endif
_JUNK_ := $(shell \
  echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
114 115

ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
116 117 118
  # HACK: disable ZIP_DEBUGINFO_FILES by default until install repo
  # changes are promoted
  ZIP_DEBUGINFO_FILES ?= 0
119 120 121
else
  ZIP_DEBUGINFO_FILES=0
endif
122
_JUNK_ := $(shell echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
123

D
duke 已提交
124 125 126 127 128
# C Compiler flag definitions

#
# Default optimization
#
129 130 131 132 133 134 135 136

ifndef OPTIMIZATION_LEVEL
  ifeq ($(PRODUCT), java)
    OPTIMIZATION_LEVEL = HIGHER
  else
    OPTIMIZATION_LEVEL = LOWER
  endif
endif
137 138 139
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
  FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
140

D
duke 已提交
141
ifeq ($(CC_VERSION),msvc)
142
  # Visual Studio compiler option definitions:
D
duke 已提交
143 144 145 146 147
  #   -O1      Favors reduced size over speed (-Og     -Os -Oy -Ob2 -Gs -GF -Gy)
  #   -O2      Favors speed over reduced size (-Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy)
  #   -Ob2     More aggressive inlining
  #   -Og      Global optimizations
  #   -Oi      Replace some functions with intrinsic or special forms
148 149
  #   -fp:precise (should be the default)
  #            Improve floating point calculations (disables some optimizations)
D
duke 已提交
150 151 152
  #   -Os      Favor small code
  #   -Ot      Favor faster code
  #   -Oy      Frame pointer omission
153
  #   -G6      Used to be -GB?
D
duke 已提交
154 155 156
  #   -GF      Pool strings in read-only memory
  #   -Gf      Pool strings in read-write memory (the default)
  #   -Gs      Controls stack probess
157 158
  #   -GS      Adds buffer overflow checks on stacks (the default)
  #   -EHsc    Enables exception handling 
D
duke 已提交
159 160
  #   -Gy      Function level linking only
  #
161 162 163 164 165 166

  CC_OPT/NONE    = -Od
  CC_OPT/LOWER   = -O2
  CC_OPT/HIGHER  = -O3
  CC_OPT/HIGHEST = -O3
  
167 168 169 170 171
  ifeq ($(COMPILER_VERSION), VS2010)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    GX_OPTION = -EHsc
    GZ_OPTION = -RTC1
172 173 174 175 176 177 178 179 180 181
    ifeq ($(ARCH_DATA_MODEL), 32)
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    else
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    endif
  endif
182

D
duke 已提交
183 184
else # CC_VERSION
  # GCC not supported, but left for historical reference...
185 186 187 188
  CC_OPT/NONE     =
  CC_OPT/LOWER    = -O2
  CC_OPT/HIGHER   = -O2
  CC_OPT/HIGHEST  = -O3
D
duke 已提交
189 190 191

endif

192
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
D
duke 已提交
193 194 195

# Select the runtime support library carefully, need to be consistent
#
196
# Visual Studio Runtime compiler option definitions:
D
duke 已提交
197 198 199 200 201 202
#   -MD        Use dynamic multi-threaded runtime library
#   -MDd       Use debug version (don't use, doesn't mix with -MD DLL's)
#   -MT        Use static multi-threaded runtime library (-ML is going away)
#   -MTd       Use static debug version (better than -MDd, no runtime issues)
#   -D_DEBUG   Change use of malloc/free/etc to use special debug ones (-MTd)
#
203
#      NOTE: We also will use /D _STATIC_CPPLIB  so we don't need msvcpnn.dll
D
duke 已提交
204
#
205 206 207
# If MS_RUNTIME_STATIC is requested we may have a problem, it is no longer
#     supported by VS2010
ifneq ($(MS_RUNTIME_STATIC),true)
D
duke 已提交
208 209 210 211 212 213 214 215 216 217 218
  MS_RUNTIME_OPTION=-MD
endif
# The _DEBUG macro option (changes things like malloc to use debug version)
MS_RUNTIME_DEBUG_OPTION=
MS_RC_DEBUG_OPTION=
# Externally set environment variable can force any build to use the debug vers
ifeq ($(MFC_DEBUG), true)
  ifeq ($(MS_RUNTIME_STATIC),true)
    MS_RUNTIME_OPTION=-MTd
  else
    # This MS debugging flag forces a dependence on the debug
219
    #     version of the runtime library (MSVCR*D.DLL), as does -MDd.
D
duke 已提交
220 221 222 223 224 225 226 227 228
    #     We cannot re-distribute this debug runtime.
    MS_RUNTIME_OPTION=-MDd
  endif
  MS_RUNTIME_DEBUG_OPTION= -D_DEBUG
  MS_RC_DEBUG_OPTION= -d _DEBUG
endif

# Always add _STATIC_CPPLIB definition
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
229 230 231 232 233 234 235

# Silence the warning about using _STATIC_CPPLIB
ifneq ($(SHOW_ALL_WARNINGS),true)
  # Needed with VS2010 to turn off the deprecated warning.
  STATIC_CPPLIB_OPTION += /D _DISABLE_DEPRECATE_STATIC_CPPLIB
endif

D
duke 已提交
236 237 238
MS_RUNTIME_OPTION += $(STATIC_CPPLIB_OPTION)

ifeq ($(CC_VERSION),msvc)
239
  # Visual Studio compiler option definitions:
D
duke 已提交
240 241 242 243 244 245 246
  #   -Zi      Cause *.pdb file to be created, full debug information
  #   -Z7      Full debug inside the .obj, no .pdb
  #   -Zd      Basic debug, no local variables? In the .obj
  #   -Zl      Don't add runtime library name to obj file?
  #   -Od      Turns off optimization and speeds compilation
  #   -YX -Fp/.../foobar.pch   Use precompiled headers (try someday?)
  #   -nologo  Don't print out startup message
247
  #   /D _STATIC_CPPLIB
248
  #            Use static link for the C++ runtime (so msvcpnn.dll not needed)
D
duke 已提交
249
  #   
250 251 252 253
  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
    CFLAGS_COMMON  += -Zi
  endif
  CFLAGS_COMMON  += -nologo
254
  CFLAGS_OPT      = $(CC_OPT)
D
duke 已提交
255 256
  CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)

257
  CFLAGS_VS2010 += -Zc:wchar_t-
D
duke 已提交
258 259 260 261

  # All builds get the same runtime setting
  CFLAGS_COMMON += $(MS_RUNTIME_OPTION) $(CFLAGS_$(COMPILER_VERSION))

262 263 264
  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
    LDEBUG = /debug
  endif
D
duke 已提交
265 266 267 268 269 270
  
  ifeq ($(VTUNE_SUPPORT), true)
    OTHER_CFLAGS = -Z7 -Ox 
    LDEBUG += /pdb:NONE
  endif
  
271 272
  # VS2010, always need safe exception handlers, not needed on 64bit
  ifeq ($(ARCH_DATA_MODEL), 32)
273
    LFLAGS_VS2010 +=  -SAFESEH
274
  endif
275

D
duke 已提交
276 277
  # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
  BASELFLAGS = -nologo /opt:REF /incremental:no
278

D
duke 已提交
279 280 281 282 283 284 285 286 287 288 289 290
  LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION))
  LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION))
  
endif

#
# Preprocessor macro definitions
#
CPPFLAGS_COMMON = -DWIN32 -DIAL -D_LITTLE_ENDIAN
ifeq ($(ARCH), amd64)
  CPPFLAGS_COMMON += -D_AMD64_ -Damd64
else
291
  CPPFLAGS_COMMON += -D_X86_ -Dx86 
D
duke 已提交
292 293 294 295 296 297
endif
CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN

#
# Output options (use specific filenames to avoid parallel compile errors)
#
298 299 300
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
  CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
endif
D
duke 已提交
301

302 303 304 305 306 307 308
#
# Use -wdNNNN to disable warning NNNN.
#   C4800 is a warning about bool performance casts (can't make go away)
#
COMPILER_WARNINGS_TO_IGNORE = 4800
CFLAGS_COMMON += $(COMPILER_WARNINGS_TO_IGNORE:%=-wd%)

D
duke 已提交
309 310 311
#
# Treat compiler warnings as errors, if requested
#
312
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
D
duke 已提交
313 314 315 316
ifeq ($(COMPILER_WARNINGS_FATAL),true)
  CFLAGS_COMMON += -WX
endif

317 318 319 320 321 322 323 324 325 326
# Turn off some warnings by default, enable them all if asked.
ifneq ($(SHOW_ALL_WARNINGS),true)
  # The -D _CRT_SECURE_NO_DEPRECATE turns off security/deprecated warnings on
  #    the standard C library functions like strcpy.
  CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
  # The -D _CRT_NONSTDC_NO_DEPRECATE turns off deprecation warnings about using
  #    non-standard C POSIX functions.
  CFLAGS_COMMON += -D _CRT_NONSTDC_NO_DEPRECATE
endif

327
CPPFLAGS_OPT    = -DNDEBUG
D
duke 已提交
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
CPPFLAGS_DBG    = -DDEBUG -DLOGGING

CXXFLAGS_COMMON = $(CFLAGS_COMMON)
CXXFLAGS_OPT    = $(CFLAGS_OPT)
CXXFLAGS_DBG    = $(CFLAGS_DBG)

ifneq ($(LIBRARY),fdlibm)
  EXTRA_LIBS += advapi32.lib
endif

#
# Path and option to link against the VM, if you have to. 
#
JVMLIB = $(LIBDIR)/jvm.lib
JAVALIB = $(LIBDIR)/java.lib

ifeq ($(CC_VERSION), msvc)
  CC_DEPEND        = -FD
  CC_DEPEND_FILTER = 
else # CC_VERSION
# not supported, but left for historical reference...
  CC_DEPEND        = -MM
  CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)&!g'
endif # CC_VERSION

LIBRARY_SUFFIX = dll
LIB_SUFFIX     = lib

# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH   = $(HOTSPOT_IMPORT_PATH)/jre/bin
SALIB_NAME = $(LIB_PREFIX)sawindbg.$(LIBRARY_SUFFIX)
SAMAP_NAME = $(LIB_PREFIX)sawindbg.map
SAPDB_NAME = $(LIB_PREFIX)sawindbg.pdb
361
SA_DIZ_NAME = $(LIB_PREFIX)sawindbg.diz
D
duke 已提交
362 363 364 365 366

ifeq ($(ARCH), ia64)
  # SA will never be supported here.
  INCLUDE_SA = false
else
367
  INCLUDE_SA = true
D
duke 已提交
368 369 370
endif

# Settings for the VERSIONINFO tap on windows. 
371
VERSIONINFO_RESOURCE = $(BUILDDIR)/../src/windows/resource/version.rc
D
duke 已提交
372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416

ifneq ($(JDK_BUILD_NUMBER),)
 COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) | $(SED) -e 's/^b//' -e 's/^0//')
else
 COOKED_BUILD_NUMBER = 0
endif

# If the update version contains non-numeric characters, we need
# to massage it into a numeric format. 
# We use the following formula:
# JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
#
# Here are some examples:
#     1.5.0    b01  ->  5,0,0,1
#     1.5.0_10 b01  ->  5,0,100,1
#     1.4.2 b01     ->  4,2,0,1
#     1.4.2_02 b01  ->  4,2,20,1
#     1.4.2_02a b01 ->  4,2,21,1
#     1.4.2_02b b01 ->  4,2,22,1
ifdef JDK_UPDATE_VERSION
  VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
  CAB_CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
  CAB_CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
  CAB_CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
  JDK_UPDATE_META_TAG := U$(MARKETING_NUMBER)
  ifeq ($(CAB_CHAR3),)
    CAB_CHAR3 := 0
  endif
  ifeq ($(CAB_CHAR1), 0)
    JDK_UPDATE_VER := $(CAB_CHAR2)$(CAB_CHAR3)
  else
    JDK_UPDATE_VER := $(CAB_CHAR1)$(CAB_CHAR2)$(CAB_CHAR3)
  endif
else
  JDK_UPDATE_VER := 0
endif

RC_FLAGS = /l 0x409 /r

ifeq ($(VARIANT), OPT)
  RC_FLAGS += -d NDEBUG 
else
  RC_FLAGS += $(MS_RC_DEBUG_OPTION)
endif 

417 418 419 420 421 422 423 424 425 426 427
# Values for the RC variables defined in RC_FLAGS
JDK_RC_BUILD_ID = $(FULL_VERSION)
JDK_RC_COMPANY = $(COMPANY_NAME)
JDK_RC_COMPONENT = $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) binary
JDK_RC_VER = \
    $(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
JDK_RC_COPYRIGHT = Copyright \xA9 $(COPYRIGHT_YEAR)
JDK_RC_NAME = \
    $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)
JDK_RC_FVER = \
    $(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
D
duke 已提交
428

429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473
# JDK name required here
RC_FLAGS += -d "JDK_BUILD_ID=$(JDK_RC_BUILD_ID)" \
            -d "JDK_COMPANY=$(JDK_RC_COMPANY)" \
            -d "JDK_COMPONENT=$(JDK_RC_COMPONENT)" \
            -d "JDK_VER=$(JDK_RC_VER)" \
            -d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
            -d "JDK_NAME=$(JDK_RC_NAME)" \
            -d "JDK_FVER=$(JDK_RC_FVER)"

# Enable 7-Zip LZMA file (de)compression for Java Kernel if it is available
ifeq ($(ARCH_DATA_MODEL), 32)
  ifneq ($(KERNEL), off)
    # This is a hack to use until  7-Zip (and UPX) bundles can be put
    # under /java/devtools.
    ifndef DEPLOY_TOPDIR
      DEPLOY_TOPDIR=$(JDK_TOPDIR)/../deploy
    endif
    # Uncomment this block to cause build failure if above assumption false
    #DCHK = $(shell if [ ! -d $(DEPLOY_TOPDIR) ] ; then \
    #  $(ECHO) deploy_not_a_peer_of_j2se ; \
    #fi )
    #ifeq ($(DCHK), deploy_not_a_peer_of_j2se)
    #  If a build failure points to control coming here it means
    #  it means deploy is not in the same directory
    #  as j2se. Java Kernel can't tolerate that for the time being.
    #endif
    EC_TMP = $(shell if [ -d $(DEPLOY_TOPDIR)/make/lzma ] ; then \
      $(ECHO) true ; \
    else \
      $(ECHO) false ; \
    fi )
    ifeq ($(EC_TMP), true)
      EXTRA_COMP_INSTALL_PATH = lib\\\\deploy\\\\lzma.dll
      # Crazy but true: deploy/make/plugin/jinstall/Makefile.jkernel does
      # not include deploy/make/common/Defs-windows.gmk, either directly
      # or indirectly. But it does include this file, so redundantly declare
      # these variables that are in deploy/make/common/Defs-windows.gmk for
      # the sake of the Java Kernel part of the deploy build. Whew!
      EXTRA_COMP_LIB_NAME = lzma.dll
      EXTRA_COMP_PATH = $(OUTPUTDIR)/tmp/deploy/lzma/win32/obj
      EXTRA_COMP_CMD_PATH = $(EXTRA_COMP_PATH)/lzma.exe
      EXTRA_COMP_LIB_PATH = $(EXTRA_COMP_PATH)/$(EXTRA_COMP_LIB_NAME)
    endif
  endif
endif