#
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
# 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
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# 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.
#

defalt: all

include $(SPEC)
include MakeBase.gmk
include NativeCompilation.gmk

# Setup the java compilers for the JDK build.
include Setup.gmk

# Copy files (can now depend on $(COPY_FILES))
include CopyFiles.gmk

# Prepare the find cache. Only used if running on windows.
$(eval $(call FillCacheFind,$(JDK_TOPDIR)/src))

# Build tools
include Tools.gmk

# Include the javah generated headers.
CFLAGS_JDKLIB += -I$(JDK_OUTPUTDIR)/gensrc_headers
CXXFLAGS_JDKLIB += -I$(JDK_OUTPUTDIR)/gensrc_headers

# Put the libraries here. Different locations for different target apis.
ifeq ($(OPENJDK_TARGET_OS_API),posix)
    INSTALL_LIBRARIES_HERE:=$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)
else
    INSTALL_LIBRARIES_HERE:=$(JDK_OUTPUTDIR)/bin
endif

BUILD_LIBRARIES=

# Absolute paths to lib files on windows for use in LDFLAGS. Should figure out a more
# elegant solution to this.
WIN_VERIFY_LIB := $(JDK_OUTPUTDIR)/objs/libverify/verify.lib
WIN_JAVA_LIB := $(JDK_OUTPUTDIR)/objs/libjava/java.lib
WIN_AWT_LIB := $(JDK_OUTPUTDIR)/objs/libawt/awt.lib

# Use this variable to set DEBUG_SYMBOLS true on windows for all libraries, but
# not on other platforms.
ifeq ($(OPENJDK_TARGET_OS), windows)
    DEBUG_ALL_BINARIES := true
endif

# Build everything with debugging on OpenJDK
ifdef OPENJDK
    DEBUG_ALL_BINARIES := true
endif

#
# TODO replace with X_FLAGS / X_LIBS
#   and add them to configure
#
OPENWIN_LIB:=$(OPENWIN_HOME)/lib

##########################################################################################

BUILD_LIBFDLIBM_OPTIMIZATION:=HIGH

ifneq ($(OPENJDK_TARGET_OS), solaris)
      BUILD_LIBFDLIBM_OPTIMIZATION:=NONE
endif

ifneq ($(OPENJDK_TARGET_OS),macosx)
$(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM,\
                STATIC_LIBRARY:=fdlibm,\
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\
                SRC:=$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src,\
		LANG:=C,\
		OPTIMIZATION:=$(BUILD_LIBFDLIBM_OPTIMIZATION), \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include,\
		CFLAGS_windows_debug:=-DLOGGING,\
		ARFLAGS:=$(ARFLAGS),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libfdlibm,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

else

# On macosx the old build does partial (incremental) linking of fdlibm instead of
# a plain static library.
$(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM_MAC,\
                LIBRARY:=fdlibm,\
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs/libfdlibm,\
                SRC:=$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src,\
		LANG:=C,\
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include,\
		LDFLAGS:=-nostdlib -r -arch x86_64,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libfdlibm,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBFDLIBM := $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)
$(BUILD_LIBFDLIBM) : $(BUILD_LIBFDLIBM_MAC)
	$(call install-file)

endif
BUILD_LIBRARIES += $(BUILD_LIBFDLIBM)

##########################################################################################

BUILD_LIBVERIFY_SRC:=check_code.c check_format.c

ifeq ($(OPENJDK_TARGET_OS), solaris)
	ifneq ($(OPENJDK_TARGET_CPU), x86_64)
		BUILD_LIBVERIFY_REORDER:=$(JDK_TOPDIR)/makefiles/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU)
	endif
endif

LIBVERIFY_OPTIMIZATION:=HIGH
ifneq ($(findstring $(OPENJDK_TARGET_OS),solaris linux),)
    ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
        LIBVERIFY_OPTIMIZATION:=LOW
    endif
endif


$(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY,\
		LIBRARY:=verify, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/native/common,\
		INCLUDE_FILES:=$(BUILD_LIBVERIFY_SRC),\
		LANG:=C,\
		OPTIMIZATION:=$(LIBVERIFY_OPTIMIZATION), \
		CFLAGS:=$(CFLAGS_JDKLIB),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libverify/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_posix:=-ljvm -lc,\
		LDFLAGS_SUFFIX_windows:=jvm.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS) \
			  -D "JDK_FNAME=verify.dll" \
			  -D "JDK_INTERNAL_NAME=verify" \
			  -D "JDK_FTYPE=0x2L",\
		REORDER:=$(BUILD_LIBVERIFY_REORDER),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libverify,\
		DEBUG_SYMBOLS:=true))

BUILD_LIBRARIES += $(BUILD_LIBVERIFY)

##########################################################################################

LIBJAVA_SRC_DIRS:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/lang \
		$(JDK_TOPDIR)/src/share/native/java/lang \
		$(JDK_TOPDIR)/src/share/native/java/lang/ref \
		$(JDK_TOPDIR)/src/share/native/java/lang/reflect \
		$(JDK_TOPDIR)/src/share/native/java/io \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \
		$(JDK_TOPDIR)/src/share/native/java/nio \
		$(JDK_TOPDIR)/src/share/native/java/security \
		$(JDK_TOPDIR)/src/share/native/common \
		$(JDK_TOPDIR)/src/share/native/sun/misc \
		$(JDK_TOPDIR)/src/share/native/sun/reflect \
		$(JDK_TOPDIR)/src/share/native/java/util \
		$(JDK_TOPDIR)/src/share/native/java/util/concurrent/atomic \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/common \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/util

ifneq ($(OPENJDK_TARGET_OS),macosx)
    LIBJAVA_SRC_DIRS+=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/util/locale/provider
else
    LIBJAVA_SRC_DIRS+=$(JDK_TOPDIR)/src/macosx/native/sun/util/locale/provider
endif

ifeq ($(OPENJDK_TARGET_OS),windows)
    LIBJAVA_SRC_DIRS+=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/provider \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/io
endif

LIBJAVA_CFLAGS:=$(foreach dir,$(LIBJAVA_SRC_DIRS),-I$(dir)) \
		  -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include \
                  -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"'

LIBJAVA_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
                  -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
                  -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \
                  -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"' 

ifneq (,$(JDK_UPDATE_VERSION))
	LIBJAVA_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
endif

LIBJAVA_EXCLUDE_FILES:=check_code.c check_format.c

ifneq ($(OPENJDK_TARGET_OS),macosx)
	LIBJAVA_EXCLUDE_FILES += java_props_macosx.c
else
	BUILD_LIBJAVA_java_props_md.c_CFLAGS:=-x objective-c
endif

ifeq ($(OPENJDK_TARGET_OS),windows)
        LIBJAVA_EXCLUDE_FILES += \
		UNIXProcess_md.c \
		UnixFileSystem_md.c \
		FileSystemPreferences.c
else
	LIBJAVA_EXCLUDE_FILES += \
		ProcessImpl_md.c \
		WinNTFileSystem_md.c \
		dirent_md.c \
		WindowsPreferences.c \
		sun/security/provider/WinCAPISeedGenerator.c \
		sun/io/Win32ErrorMode.c
endif

ifeq ($(OPENJDK_TARGET_OS), solaris)
    ifneq ($(OPENJDK_TARGET_CPU), x86_64)
        LIBJAVA_REORDER:=$(JDK_TOPDIR)/makefiles/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU)
    endif
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA,\
		LIBRARY:=java,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBJAVA_SRC_DIRS),\
		EXCLUDES:=fdlibm/src zip, \
		EXCLUDE_FILES:=$(LIBJAVA_EXCLUDE_FILES), \
		LANG:=C,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(LIBJAVA_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjava/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_posix:=-ljvm -lverify, \
		LDFLAGS_SUFFIX_solaris:=-lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc,\
		LDFLAGS_SUFFIX_linux:=$(LIBDL) $(BUILD_LIBFDLIBM),\
		LDFLAGS_SUFFIX_macosx:=-L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \
                                         -framework CoreFoundation \
                                         -framework Security -framework SystemConfiguration, \
		LDFLAGS_SUFFIX_windows:=-export:winFileHandleOpen -export:handleLseek \
					jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
					shell32.lib delayimp.lib -DELAYLOAD:shell32.dll \
					advapi32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=java.dll" \
			  -D "JDK_INTERNAL_NAME=java" \
			  -D "JDK_FTYPE=0x2L",\
		REORDER:=$(LIBJAVA_REORDER), \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjava,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJAVA)

$(BUILD_LIBJAVA) : $(LIBJLI_BINARY)

$(BUILD_LIBJAVA) : $(BUILD_LIBVERIFY)

$(BUILD_LIBJAVA) : $(BUILD_LIBFDLIBM)

##########################################################################################

BUILD_LIBMLIB_SRC:=$(JDK_TOPDIR)/src/share/native/sun/awt/medialib
BUILD_LIBMLIB_CFLAGS:=-D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \
			-I$(BUILD_LIBMLIB_SRC) \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/medialib 

BUILD_LIBMLIB_LDLIBS:=
BUILD_LIBMLIB_IMAGE_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libmlib_image/mapfile-vers

BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH

ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
	BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT
endif

ifneq ($(OPENJDK_TARGET_OS), windows)
	BUILD_LIBMLIB_LDLIBS += $(LIBM) $(LIBDL)
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE,\
		LIBRARY:=mlib_image,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(BUILD_LIBMLIB_SRC),\
		EXCLUDE_FILES:=awt_ImagingLib.c mlib_c_ImageBlendTable.c,\
		LANG:=C,\
		OPTIMIZATION:=HIGHEST, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(BUILD_LIBMLIB_CFLAGS),\
		MAPFILE:=$(BUILD_LIBMLIB_IMAGE_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(BUILD_LIBMLIB_LDLIBS) \
				$(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_solaris:=-lc, \
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=mlib_image.dll" \
			  -D "JDK_INTERNAL_NAME=mlib_image" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libmlib_image,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBMLIB_IMAGE) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBMLIB_IMAGE)

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH),solaris-sparc)

BUILD_LIBMLIB_IMAGE_V_FILES:=\
        mlib_v_ImageLookUp.c \
        mlib_ImageCreate.c \
        mlib_ImageAffine.c \
        mlib_ImageConvMxN.c \
        mlib_ImageConvKernelConvert.c \
        mlib_sys.c \
        mlib_ImageLookUp_64.c \
        mlib_ImageLookUp_Bit.c \
        mlib_ImageColorTrue2Index.c \
        mlib_c_ImageThresh1_U8.c \
        mlib_v_ImageLookUpS16S16Func.c \
        mlib_v_ImageLookUpS16S32Func.c \
        mlib_v_ImageLookUpS16U16Func.c \
        mlib_v_ImageLookUpS16U8Func.c \
        mlib_v_ImageLookUpS32S16Func.c \
        mlib_v_ImageLookUpS32S32Func.c \
        mlib_v_ImageLookUpS32U16Func.c \
        mlib_v_ImageLookUpS32U8Func.c \
        mlib_v_ImageLookUpSIS16S16Func.c \
        mlib_v_ImageLookUpSIS16S32Func.c \
        mlib_v_ImageLookUpSIS16U16Func.c \
        mlib_v_ImageLookUpSIS16U8Func.c \
        mlib_v_ImageLookUpSIS32S16Func.c \
        mlib_v_ImageLookUpSIS32S32Func.c \
        mlib_v_ImageLookUpSIS32U16Func.c \
        mlib_v_ImageLookUpSIS32U8Func.c \
        mlib_v_ImageLookUpSIU16S16Func.c \
        mlib_v_ImageLookUpSIU16S32Func.c \
        mlib_v_ImageLookUpSIU16U16Func.c \
        mlib_v_ImageLookUpSIU16U8Func.c \
        mlib_v_ImageLookUpSIU8S16Func.c \
        mlib_v_ImageLookUpSIU8S32Func.c \
        mlib_v_ImageLookUpSIU8U16Func.c \
        mlib_v_ImageLookUpSIU8U8Func.c \
        mlib_v_ImageLookUpU16S16Func.c \
        mlib_v_ImageLookUpU16S32Func.c \
        mlib_v_ImageLookUpU16U16Func.c \
        mlib_v_ImageLookUpU16U8Func.c \
        mlib_v_ImageLookUpU8S16Func.c \
        mlib_v_ImageLookUpU8S32Func.c \
        mlib_v_ImageLookUpU8U16Func.c \
        mlib_v_ImageLookUpU8U8Func.c \
        mlib_v_ImageAffineIndex_BC.c \
        mlib_v_ImageAffine_BC.c \
        mlib_v_ImageAffine_BC_S16.c \
        mlib_v_ImageAffine_BC_U16.c \
        mlib_v_ImageAffine_BL.c \
        mlib_v_ImageAffine_BL_S16.c \
        mlib_v_ImageAffine_BL_U16.c \
        mlib_v_ImageAffine_NN.c \
        mlib_v_ImageFilters.c \
        mlib_ImageAffineEdge.c \
        mlib_ImageAffine_BC_D64.c \
        mlib_ImageAffine_BC_F32.c \
        mlib_ImageAffine_BC_S32.c \
        mlib_ImageAffine_BL_D64.c \
        mlib_ImageAffine_BL_F32.c \
        mlib_ImageAffine_BL_S32.c \
        mlib_ImageAffine_NN.c \
        mlib_ImageAffine_NN_Bit.c \
        mlib_ImageFilters.c \
        mlib_ImageScanPoly.c \
        mlib_ImageConv_8nw.c \
        mlib_ImageConv_8ext.c \
        mlib_ImageConv_16nw.c \
        mlib_ImageConv_16ext.c \
        mlib_ImageConv_u16nw.c \
        mlib_ImageConv_u16ext.c \
        mlib_ImageConv_32nw.c \
        mlib_ImageConv_F32nw.c \
        mlib_ImageConvMxN_Fp.c \
        mlib_ImageConvMxN_ext.c \
        mlib_ImageConv_D64nw.c \
        mlib_ImageClipping.c \
        mlib_ImageConvCopyEdge_Bit.c \
        mlib_ImageConvClearEdge_Bit.c \
        mlib_ImageConv2x2_f.c \
        mlib_ImageConvClearEdge_Fp.c \
        mlib_v_ImageConvMxN_8.c \
        mlib_v_ImageConvClearEdge.c \
        mlib_v_ImageConvCopyEdge.c \
        mlib_v_ImageConvMxN_8ext.c \
        mlib_v_ImageConvVersion.c \
        mlib_v_ImageConv_8nw.c \
        mlib_ImageConvCopyEdge_Fp.c \
        mlib_v_ImageChannelInsert_1.c \
        mlib_v_ImageChannelExtract_43.c \
        mlib_v_ImageChannelExtract_1.c \
        mlib_ImageCopy_Bit.c \
        mlib_v_ImageCopy_f.c \
        mlib_ImageUtils.c \
        mlib_ImageDivTables.c

BUILD_LIBMLIB_V_CFLAGS := $(filter-out -DMLIB_NO_LIBSUNMATH,$(BUILD_LIBMLIB_CFLAGS))

$(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE_V,\
		LIBRARY:=mlib_image_v, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/sun/awt/medialib \
		     $(JDK_TOPDIR)/src/solaris/native/sun/awt/medialib,\
		LANG:=C,\
		INCLUDE_FILES:=$(BUILD_LIBMLIB_IMAGE_V_FILES),\
		OPTIMIZATION:=HIGHEST, \
		CFLAGS:=-xarch=sparcvis \
                      $(JDK_TOPDIR)/src/solaris/native/sun/awt/medialib/vis_$(OPENJDK_TARGET_CPU_BITS).il\
                      $(BUILD_LIBMLIB_V_CFLAGS) \
                      $(CFLAGS_JDKLIB), \
		MAPFILE:=$(BUILD_LIBMLIB_IMAGE_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
                         $(BUILD_LIBMLIB_LDLIBS) -ljava -ljvm \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libmlib_image_v,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBMLIB_IMAGE_V): $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBMLIB_IMAGE_V)

endif

##########################################################################################

LIBAWT_DIRS:=\
	$(JDK_TOPDIR)/src/share/native/sun/awt \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt \
	$(JDK_TOPDIR)/src/share/native/sun/awt/image \
	$(JDK_TOPDIR)/src/share/native/sun/awt/image/gif \
	$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
	$(JDK_TOPDIR)/src/share/native/sun/awt/medialib \
	$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
	$(JDK_TOPDIR)/src/share/native/sun/awt/utility \
	$(JDK_TOPDIR)/src/share/native/sun/java2d \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d \
	$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
	$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
	$(JDK_TOPDIR)/src/share/native/sun/awt/image \
	$(JDK_TOPDIR)/src/share/native/sun/java2d/opengl \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/opengl \
	$(JDK_TOPDIR)/src/share/native/sun/font

ifeq ($(OPENJDK_TARGET_OS),windows)
    LIBAWT_DIRS+=\
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/windows \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/d3d
    LIBAWT_CFLAGS+=-I$(DXSDK_INCLUDE_PATH)
else
    LIBAWT_DIRS+=\
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/x11
endif

LIBAWT_CFLAGS+=-D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES \
	$(X_CFLAGS) \
	$(foreach dir,$(LIBAWT_DIRS),-I$(dir))

LIBAWT_FILES:=\
	gifdecoder.c \
	imageInitIDs.c \
	img_globals.c \
	SurfaceData.c \
	Region.c \
	BufImgSurfaceData.c \
	Disposer.c \
	Trace.c \
	GraphicsPrimitiveMgr.c \
	Blit.c \
	BlitBg.c \
	ScaledBlit.c \
	FillRect.c \
	FillSpans.c \
	FillParallelogram.c \
	DrawParallelogram.c \
	DrawLine.c \
	DrawRect.c \
	DrawPolygons.c \
	DrawPath.c \
	FillPath.c \
	ProcessPath.c \
	MaskBlit.c \
	MaskFill.c \
	TransformHelper.c \
	AlphaMath.c \
	AlphaMacros.c \
	AnyByte.c \
	ByteBinary1Bit.c \
	ByteBinary2Bit.c \
	ByteBinary4Bit.c \
	ByteIndexed.c \
	ByteGray.c \
	Index8Gray.c \
	Index12Gray.c \
	AnyShort.c \
	Ushort555Rgb.c \
	Ushort565Rgb.c \
	Ushort4444Argb.c \
	Ushort555Rgbx.c \
	UshortGray.c \
	UshortIndexed.c \
	Any3Byte.c \
	ThreeByteBgr.c \
	AnyInt.c \
	IntArgb.c \
	IntArgbPre.c \
	IntArgbBm.c \
	IntRgb.c \
	IntBgr.c \
	IntRgbx.c \
	Any4Byte.c \
	FourByteAbgr.c \
	FourByteAbgrPre.c \
	BufferedMaskBlit.c \
	BufferedRenderPipe.c \
	ShapeSpanIterator.c \
	SpanClipRenderer.c \
	awt_ImageRep.c \
	awt_ImagingLib.c \
	awt_Mlib.c \
	awt_parseImage.c \
	DataBufferNative.c \
	dither.c \
	debug_assert.c \
	debug_mem.c \
	debug_trace.c \
	debug_util.c

ifneq (,$(filter $(OPENJDK_TARGET_OS), solaris linux))
	LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c
endif

ifeq ($(OPENJDK_TARGET_OS),macosx)
	LIBAWT_FILES += awt_LoadLibrary.c img_colors.c
	LIBAWT_DIRS += $(JDK_TOPDIR)/src/macosx/native/com/apple/resources
	LIBAWT_FILES += awt_LoadLibrary.c MacOSXResourceBundle.m
	LIBAWT_CFLAGS += -F/System/Library/Frameworks/JavaVM.framework/Frameworks

	LIBAWT_MacOSXResourceBundle.m_CFLAGS:=-O0
endif

ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
        LIBAWT_CFLAGS += -DMLIB_ADD_SUFF
        LIBAWT_CFLAGS += -xarch=sparcvis
	LIBAWT_CFLAGS += $(JDK_TOPDIR)/src/solaris/native/sun/awt/medialib/vis_$(OPENJDK_TARGET_CPU_BITS).il
        LIBAWT_CFLAGS += \
            -I$(JDK_TOPDIR)/src/solaris/native/sun/awt/medialib \
            -I$(JDK_TOPDIR)/src/solaris/native/sun/java2d/medialib \
            -I$(JDK_TOPDIR)/src/solaris/native/sun/java2d/loops

	LIBAWT_DIRS += $(JDK_TOPDIR)/src/solaris/native/sun/awt/medialib \
                       $(JDK_TOPDIR)/src/solaris/native/sun/java2d/loops

	LIBAWT_FILES += \
                vis_FuncArray.c           \
                java2d_Mlib.c             \
                mlib_ImageCreate.c        \
                mlib_ImageZoom_NN.c       \
                mlib_ImageCopy_Bit.c      \
                mlib_sys.c                \
                mlib_v_ImageClear.c       \
                mlib_v_ImageClear_f.c     \
                mlib_v_ImageConstXor.c    \
                mlib_v_ImageCopy.c        \
                mlib_v_ImageCopy_f.c      \
                mlib_v_ImageXor.c         \
                mlib_v_ImageZoom_NN_f.c   \
                vis_Interp.c              \
                vis_AlphaMacros.c         \
                vis_AlphaMaskBlit.c       \
                vis_AlphaMaskFill.c       \
                vis_ByteGray.c            \
                vis_ByteGray_FromRgb.c    \
                vis_ByteGray_Mask.c       \
                vis_ByteIndexed.c         \
                vis_DrawLine.c            \
                vis_FourByteAbgr.c        \
                vis_IntArgb.c             \
                vis_IntArgbPre.c          \
                vis_IntArgbPre_Mask.c     \
                vis_IntBgr.c              \
                vis_IntRgb.c              \
                vis_IntRgbx.c             \
                vis_SrcMaskFill.c         \
                vis_SrcOverMaskBlit.c     \
                vis_SrcOverMaskFill.c     \
                vis_FourByteAbgrPre.c     \
                vis_GlyphList.c           \
                vis_GlyphListXor.c        \
                vis_IntArgbBm.c           \
                vis_ThreeByteBgr.c        \
                vis_UshortGray.c          \
                vis_UshortGray_FromRgb.c  \
                vis_XorBlit.c             \
                mlib_v_ImageCopy_blk.s

	ifeq ($(OPENJDK_TARGET_CPU),sparcv9)
		LIBAWT_ASFLAGS=-P -xarch=v9a
	else
		LIBAWT_ASFLAGS=-P -xarch=v8plusa
	endif
else
	LIBAWT_FILES += MapAccelFunc.c
endif

ifneq ($(OPENJDK_TARGET_OS),solaris)
	LIBAWT_CFLAGS += -DMLIB_NO_LIBSUNMATH
endif

LIBAWT_LANG:=C

ifeq ($(OPENJDK_TARGET_OS),windows)
	LIBAWT_FILES += AccelGlyphCache.c \
			ShaderList.c \
			CmdIDList.cpp \
			Hashtable.cpp \
			GDIHashtable.cpp \
			Devices.cpp \
			ObjectList.cpp \
			GDIBlitLoops.cpp \
			GDIRenderer.cpp \
			GDIWindowSurfaceData.cpp \
			WindowsFlags.cpp \
			WPrinterJob.cpp \
			awt_%.cpp \
			D3DBlitLoops.cpp \
			D3DBufImgOps.cpp \
			D3DContext.cpp \
			D3DGlyphCache.cpp \
			D3DGraphicsDevice.cpp \
			D3DMaskBlit.cpp \
			D3DMaskCache.cpp \
			D3DMaskFill.cpp \
			D3DPipelineManager.cpp \
			D3DPaints.cpp \
			D3DRenderer.cpp \
			D3DRenderQueue.cpp \
			D3DResourceManager.cpp \
			D3DSurfaceData.cpp \
			D3DTextRenderer.cpp \
			D3DVertexCacher.cpp \
			ShellFolder2.cpp \
			ThemeReader.cpp \
			ComCtl32Util.cpp \
			DllUtil.cpp \
			initIDs.cpp \
			MouseInfo.cpp \
			rect.c \
			OGLBlitLoops.c \
			OGLBufImgOps.c \
		        OGLContext.c \
		        OGLFuncs.c \
		        OGLMaskBlit.c \
		        OGLMaskFill.c \
		        OGLPaints.c \
		        OGLRenderQueue.c \
		        OGLRenderer.c \
		        OGLSurfaceData.c \
		        OGLTextRenderer.c \
		        OGLVertexCache.c \
		        WGLGraphicsConfig.c \
		        WGLSurfaceData.c
	LIBAWT_LANG:=C++
	LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE
	ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
		LIBAWT_CFLAGS += -DMLIB_OS64BIT
	endif

	ifdef OPENJDK
		LIBAWT_RC_FLAGS:=-i "$(JDK_TOPDIR)/src/windows/resource/icons"
	else
		LIBAWT_RC_FLAGS:=-i "$(JDK_TOPDIR)/src/closed/windows/native/sun/windows"
	endif
	LIBAWT_VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/native/sun/windows/awt.rc
endif

ifeq ($(MILESTONE), internal)
	LIBAWT_CFLAGS += -DINTERNAL_BUILD
endif

LIBAWT_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libawt/mapfile-vers
ifeq ($(OPENJDK_TARGET_OS),linux)
	LIBAWT_MAPFILE:=
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBAWT,\
		LIBRARY:=awt,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBAWT_DIRS),\
		INCLUDE_FILES:=$(LIBAWT_FILES),\
		LANG:=$(LIBAWT_LANG),\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS),\
		ASFLAGS:=$(LIBAWT_ASFLAGS),\
		MAPFILE:=$(LIBAWT_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_solaris:=-R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR),\
		LDFLAGS_SUFFIX_linux:=-ljvm $(LIBM) $(LIBDL) -ljava,\
		LDFLAGS_SUFFIX_solaris:=-ljvm $(LIBM) $(LIBDL) -ljava -lc,\
		LDFLAGS_SUFFIX_macosx:=-lmlib_image -ljvm $(LIBM) \
				       -framework Cocoa \
				       -framework OpenGL \
				       -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
				       -framework JavaNativeFoundation \
				       -framework JavaRuntimeSupport \
				       -framework ApplicationServices \
				       -framework AudioToolbox \
				       -ljava,\
		LDFLAGS_SUFFIX_windows:=kernel32.lib user32.lib gdi32.lib winspool.lib \
					imm32.lib ole32.lib uuid.lib shell32.lib \
					comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \
					delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib \
					-DELAYLOAD:user32.dll -DELAYLOAD:gdi32.dll \
					-DELAYLOAD:shell32.dll -DELAYLOAD:winmm.dll \
					-DELAYLOAD:winspool.drv -DELAYLOAD:imm32.dll \
					-DELAYLOAD:ole32.dll -DELAYLOAD:comdlg32.dll \
					-DELAYLOAD:comctl32.dll -DELAYLOAD:shlwapi.dll,\
		VERSIONINFO_RESOURCE:=$(LIBAWT_VERSIONINFO_RESOURCE),\
		RC_FLAGS:=$(RC_FLAGS) $(LIBAWT_RC_FLAGS) \
			  -D "JDK_FNAME=awt.dll" \
			  -D "JDK_INTERNAL_NAME=awt" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libawt,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBAWT) : $(BUILD_LIBJAVA)

ifeq ($(OPENJDK_TARGET_OS), macosx)
$(BUILD_LIBAWT) : $(BUILD_LIBMLIB_IMAGE)
endif

BUILD_LIBRARIES += $(BUILD_LIBAWT)

##########################################################################################

# TODO!!
# Even though this variable as a general name, it is
# only used on macos, in fontpath.c, as prefix for where to find fonts.
#
# It's used for libawt_headless _and_ libawt_xawt
#
X11_PATH:=/usr/X11R6

ifneq ($(OPENJDK_TARGET_OS), windows)
ifndef BUILD_HEADLESS_ONLY

LIBAWT_XAWT_DIRS:=\
		$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
		$(JDK_TOPDIR)/src/share/native/sun/awt/utility \
		$(JDK_TOPDIR)/src/share/native/sun/font \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/font \
		$(JDK_TOPDIR)/src/share/native/sun/java2d/opengl \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/opengl \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/x11 \
		$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/xawt \

LIBAWT_XAWT_CFLAGS:=-DXAWT -DXAWT_HACK \
        -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \
	$(CUPS_CFLAGS) \
	$(foreach dir,$(LIBAWT_XAWT_DIRS),-I$(dir)) \
	-I$(JDK_TOPDIR)/src/share/native/sun/java2d \
	-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d \
	-I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
	-I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
	-I$(JDK_TOPDIR)/src/share/native/sun/awt/image \
	-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
	-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
	-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/jdga

ifeq ($(OPENJDK_TARGET_OS),solaris)
	LIBAWT_XAWT_CFLAGS += -DFUNCPROTO=15
endif

ifeq ($(MILESTONE),internal)
	LIBAWT_XAWT_CFLAGS += -DINTERNAL_BUILD
endif

LIBAWT_XAWT_FILES:=\
	XlibWrapper.c \
	XWindow.c \
	XToolkit.c \
	X11Color.c \
	X11SurfaceData.c \
	awt_GraphicsEnv.c \
	awt_InputMethod.c \
	robot_common.c \
	awt_Robot.c \
        list.c \
        multiVis.c \
	initIDs.c \
	awt_util.c \
	awt_Desktop.c \
	awt_UNIXToolkit.c \
	X11FontScaler_md.c \
	X11TextRenderer_md.c \
	fontpath.c \
	awt_Insets.c \
	awt_Event.c \
	X11Renderer.c \
	X11PMBlitLoops.c \
	OGLBlitLoops.c \
	OGLBufImgOps.c \
	OGLContext.c \
	OGLFuncs.c \
	OGLMaskBlit.c \
	OGLMaskFill.c \
	OGLPaints.c \
	OGLRenderQueue.c \
	OGLRenderer.c \
	OGLSurfaceData.c \
	OGLTextRenderer.c \
	OGLVertexCache.c \
	GLXGraphicsConfig.c \
	GLXSurfaceData.c \
	AccelGlyphCache.c \
	awt_Font.c \
	multi_font.c \
	awt_AWTEvent.c \
	awt_DrawingSurface.c \
	jawt.c \
	CUPSfuncs.c \
	debug_assert.c \
	debug_mem.c \
	debug_trace.c \
	debug_util.c \
	awt_Plugin.c \
        gnome_interface.c \
	gtk2_interface.c \
        swing_GTKEngine.c \
        swing_GTKStyle.c \
        rect.c \
	sun_awt_X11_GtkFileDialogPeer.c \
	XRSurfaceData.c \
	XRBackendNative.c

LIBAWT_XAWT_LDFLAGS_SUFFIX:=$(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi  -ljava -ljvm -lc

ifeq ($(OPENJDK_TARGET_OS), linux)
        # To match old build, add this to LDFLAGS instead of suffix.
	LIBAWT_XAWT_LDFLAGS += -lpthread
endif

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBAWT_XAWT_LDFLAGS_SUFFIX += -lpthread
endif

# On macosx, the shared library origin is set twice for this lib.
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT,\
		LIBRARY:=awt_xawt,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBAWT_XAWT_DIRS),\
		INCLUDE_FILES:=$(LIBAWT_XAWT_FILES),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
                        $(X_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libawt_xawt/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS),\
		LDFLAGS_linux:=$(call SET_SHARED_LIBRARY_ORIGIN) \
			       $(call SET_SHARED_LIBRARY_ORIGIN,/..),\
		LDFLAGS_solaris:=-L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) \
				 -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) \
				 -R$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) \
				 -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) \
				 -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
			 	 $(call SET_SHARED_LIBRARY_ORIGIN) \
			 	 $(call SET_SHARED_LIBRARY_ORIGIN,/..),\
		LDFLAGS_macosx:=$(call SET_SHARED_LIBRARY_ORIGIN) \
				$(call SET_SHARED_LIBRARY_ORIGIN). \
				$(call SET_SHARED_LIBRARY_ORIGIN) \
				$(call SET_SHARED_LIBRARY_ORIGIN).,\
		LDFLAGS_SUFFIX:=$(LIBAWT_XAWT_LDFLAGS_SUFFIX),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=xawt.dll" \
			  -D "JDK_INTERNAL_NAME=xawt" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libawt_xawt,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBAWT_XAWT) : $(BUILD_LIBJAVA)

$(BUILD_LIBAWT_XAWT) : $(BUILD_LIBAWT)

BUILD_LIBRARIES += $(BUILD_LIBAWT_XAWT)

endif
endif

##########################################################################################

BUILD_LIBZIP_EXCLUDES :=
ifeq ($(USE_EXTERNAL_LIBZ),true)
    LIBZ := -lz
    LIBZIP_EXCLUDES += zlib-1.2.5
else
    ZLIB_CPPFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5
endif

BUILD_LIBZIP_REORDER :=
ifeq ($(OPENJDK_TARGET_OS), solaris)
    ifneq ($(OPENJDK_TARGET_CPU), x86_64)
        BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/makefiles/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU)
    endif
endif

ifeq ($(LIBZIP_CAN_USE_MMAP), true)
     BUILD_LIBZIP_MMAP := -DUSE_MMAP
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBZIP,\
                LIBRARY:=zip,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		SRC:=$(JDK_TOPDIR)/src/share/native/java/util/zip,\
		EXCLUDES:=$(LIBZIP_EXCLUDES),\
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(ZLIB_CPPFLAGS) \
		        -I$(JDK_TOPDIR)/src/share/native/java/io \
                        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io,\
		CFLAGS_posix:=$(BUILD_LIBZIP_MMAP) -UDEBUG,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libzip/mapfile-vers, \
		REORDER:=$(BUILD_LIBZIP_REORDER), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN) \
			 $(EXPORT_ZIP_FUNCS), \
		LDFLAGS_windows:=-export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
                                -export:ZIP_ReadEntry -export:ZIP_GetNextEntry jvm.lib \
                                $(WIN_JAVA_LIB),\
		LDFLAGS_SUFFIX_linux:=-ljvm -ljava $(LIBZ),\
		LDFLAGS_SUFFIX_solaris:=-ljvm -ljava $(LIBZ) -lc,\
		LDFLAGS_SUFFIX_macosx:=$(LIBZ) -ljava -ljvm,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=zip.dll" \
			  -D "JDK_INTERNAL_NAME=zip" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libzip,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBZIP) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBZIP)

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK,\
		LIBRARY:=unpack, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack,\
		EXCLUDE_FILES:=main.cpp,\
		LANG:=C++,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CXXFLAGS_JDKLIB) \
			 -DNO_ZLIB -DUNPACK_JNI -DFULL,\
		CFLAGS_release:=-DPRODUCT,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libunpack/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_windows:=-map:$(JDK_OUTPUTDIR)/objs/unpack.map -debug \
				jvm.lib $(WIN_JAVA_LIB),\
		LDFLAGS_SUFFIX_posix:=-ljvm $(LIBCXX) -ljava -lc,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libunpack,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=unpack.dll" \
			  -D "JDK_INTERNAL_NAME=unpack" \
			  -D "JDK_FTYPE=0x2L",\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBUNPACK) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBUNPACK)

ifeq ($(OPENJDK_TARGET_OS),windows)
    $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.map: $(BUILD_LIBUNPACK)
	$(ECHO) Copying $(@F)
	$(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX),%.map,$<) $@

    $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.pdb: $(BUILD_LIBUNPACK)
	$(ECHO) Copying $(@F)
	$(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX),%.pdb,$<) $@
endif

##########################################################################################

LIBATTACH_EXCLUDE_FILES:=
ifneq ($(OPENJDK_TARGET_OS),solaris)
    LIBATTACH_EXCLUDE_FILES+=SolarisVirtualMachine.c
endif
ifneq ($(OPENJDK_TARGET_OS),linux)
    LIBATTACH_EXCLUDE_FILES+=LinuxVirtualMachine.c
endif
ifneq ($(OPENJDK_TARGET_OS),macosx)
    LIBATTACH_EXCLUDE_FILES+=BsdVirtualMachine.c
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBATTACH,\
		LIBRARY:=attach, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/tools/attach,\
		EXCLUDE_FILES:=$(LIBATTACH_EXCLUDE_FILES),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS) \
			  -D "JDK_FNAME=attach.dll" \
			  -D "JDK_INTERNAL_NAME=attach" \
			  -D "JDK_FTYPE=0x2L",\
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_solaris:=-ldoor,\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_windows:=$(WIN_JAVA_LIB) advapi32.lib psapi.lib,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libattach,\
		DEBUG_SYMBOLS:=true))

$(BUILD_LIBATTACH) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBATTACH)

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBDT_SOCKET,\
		LIBRARY:=dt_socket,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/transport/socket \
			$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/socket,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) -DUSE_MMAP \
                        -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \
                        -I$(JDK_TOPDIR)/src/share/transport/socket \
		        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/socket \
                        -I$(JDK_TOPDIR)/src/share/back/export \
                        -I$(JDK_TOPDIR)/src/share/back,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libdt_socket/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_linux:=-lpthread,\
		LDFLAGS_SUFFIX_solaris:=-lnsl -lsocket -lc,\
		LDFLAGS_SUFFIX_windows:=$(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=dt_socket.dll" \
			  -D "JDK_INTERNAL_NAME=dt_socket" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libdt_socket,\
		DEBUG_SYMBOLS:=true))

$(BUILD_LIBDT_SOCKET) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBDT_SOCKET)

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS),windows)

  $(eval $(call SetupNativeCompilation,BUILD_LIBDT_SHMEM,\
		LIBRARY:=dt_shmem,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/tools/jdi \
			$(JDK_TOPDIR)/src/share/transport/shmem \
			$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/shmem,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) -DUSE_MMAP\
                        -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \
                        -I$(JDK_TOPDIR)/src/share/transport/shmem \
		        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/shmem \
                        -I$(JDK_TOPDIR)/src/share/back/export, \
		LDFLAGS:=$(LDFLAGS_JDKLIB),\
		LDFLAGS_windows:=-export:jdwpTransport_OnLoad,\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=dt_shmem.dll" \
			  -D "JDK_INTERNAL_NAME=dt_shmem" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libdt_shmem,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

  BUILD_LIBRARIES += $(BUILD_LIBDT_SHMEM)

endif # OPENJDK_TARGET_OS

##########################################################################################
# JDWP_LOGGING causes log messages to be compiled into the library.
$(eval $(call SetupNativeCompilation,BUILD_LIBJDWP,\
		LIBRARY:=jdwp, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/back $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/back,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) -DJDWP_LOGGING\
		 -I$(JDK_TOPDIR)/src/share/transport/export \
                 -I$(JDK_TOPDIR)/src/share/back/export \
                 -I$(JDK_TOPDIR)/src/share/npt \
                 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
                 -I$(JDK_TOPDIR)/src/share/back \
                 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/back \
		 -I$(JDK_OUTPUTDIR)/gensrc_jdwp_headers,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjdwp/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_linux:=$(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=$(LIBDL) -lc,\
		LDFLAGS_SUFFIX_windows:=$(LDFLAGS_JDKLIB_SUFFIX),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jdwp.dll" \
			  -D "JDK_INTERNAL_NAME=jdwp" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjdwp,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJDWP) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJDWP)

##########################################################################################

LIBJAAS_MAPFILE:=
ifneq ($(OPENJDK_TARGET_OS),solaris)
   LIBJAAS_EXCLUDE_FILES:=Solaris.c
else
   # only on solaris...wonder why
   LIBJAAS_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjaas/mapfile-vers
endif

LIBJAAS_NAME:=jaas_unix
ifeq ($(OPENJDK_TARGET_OS), windows)
     LIBJAAS_NAME:=jaas_nt
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBJAAS,\
		LIBRARY:=$(LIBJAAS_NAME),\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/com/sun/security/auth/module,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB),\
		MAPFILE:=$(LIBJAAS_MAPFILE),\
		LDFLAGS:=$(filter-out -ljava,$(LDFLAGS_JDKLIB)) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_windows:=netapi32.lib user32.lib mpr.lib advapi32.lib,\
		LDFLAGS_SUFFIX_windows:=$(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		EXCLUDE_FILES:=$(LIBJAAS_EXCLUDE_FILES),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS) \
			  -D "JDK_FNAME=$(LIBJAAS_NAME).dll" \
			  -D "JDK_INTERNAL_NAME=$(LIBJAAS_NAME)" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjaas,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJAAS) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJAAS)

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBJSDT,\
		LIBRARY:=jsdt,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/sun/tracing/dtrace\
			$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/tracing/dtrace,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB)\
			-I$(JDK_TOPDIR)/src/share/native/sun/tracing/dtrace,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjsdt/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_linux:=$(LIBDL),\
		LDFLAGS_SUFFIX_windows:=$(LDFLAGS_JDKLIB_SUFFIX) $(LIBDL),\
		LDFLAGS_SUFFIX_macosx:=                         $(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jsdt.dll" \
			  -D "JDK_INTERNAL_NAME=jsdt" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjsdt, \
                DEBUG_SYMBOLS:=true))

$(BUILD_LIBJSDT) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJSDT)

##########################################################################################

    # TODO: Update awt lib path when awt is converted
    $(eval $(call SetupNativeCompilation,BUILD_LIBLCMS,\
                LIBRARY:=lcms,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/sun/java2d/cmm/lcms,\
		LANG:=C,\
		OPTIMIZATION:=HIGHEST, \
		CFLAGS:=$(filter-out -xc99=%none,$(CFLAGS_JDKLIB)) \
			$(SHARED_LIBRARY_FLAGS) \
			-I$(JDK_TOPDIR)/src/share/native/sun/java2d \
			-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug,\
		CFLAGS_solaris:=-xc99=no_lib,\
		CFLAGS_windows:=-DCMS_IS_WINDOWS_,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/liblcms/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
                         $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_solaris:=/usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2,\
		LDFLAGS_windows:=$(WIN_AWT_LIB) $(WIN_JAVA_LIB),\
		LDFLAGS_SUFFIX_solaris:=-lawt -ljava -ljvm -lc,\
		LDFLAGS_SUFFIX_macosx:=$(LIBM) -lawt -ljava -ljvm,\
		LDFLAGS_SUFFIX_linux:=-lm -lawt -ljava -ljvm,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=lcms.dll" \
			  -D "JDK_INTERNAL_NAME=lcms" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/liblcms,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

    BUILD_LIBRARIES += $(BUILD_LIBLCMS)

    $(BUILD_LIBLCMS) : $(BUILD_LIBAWT)

##########################################################################################

ifdef OPENJDK
    BUILD_LIBJPEG_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/mapfile-vers
else
    BUILD_LIBJPEG_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/mapfile-vers-closed
    BUILD_LIBJPEG_CLOSED_SRC:=$(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
    BUILD_LIBJPEG_CLOSED_INCLUDES:=-I$(BUILD_LIBJPEG_CLOSED_SRC)
endif

BUILD_LIBJPEG_REORDER:=
ifeq ($(OPENJDK_TARGET_OS), solaris)
    ifneq ($(OPENJDK_TARGET_CPU), x86_64)
        BUILD_LIBJPEG_REORDER:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
    endif
endif

# Suppress gcc warnings like "variable might be clobbered by 'longjmp'
# or 'vfork'": this warning indicates that some variable is placed to
# a register by optimized compiler and it's value might be lost on longjmp().
# Recommended way to avoid such warning is to declare the variable as
# volatile to prevent the optimization. However, this approach does not
# work because we have to declare all variables as volatile in result.
#ifndef CROSS_COMPILE_ARCH
#    CC_43_OR_NEWER:=\
#        $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
#              \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
#    ifeq ($(CC_43_OR_NEWER),1)
#        BUILD_LIBJPEG_CFLAGS_linux += -Wno-clobbered
#    endif
#endif

$(eval $(call SetupNativeCompilation,BUILD_LIBJPEG,\
                LIBRARY:=jpeg, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(BUILD_LIBJPEG_CLOSED_SRC) \
		     $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\
		LANG:=C,\
		OPTIMIZATION:=HIGHEST, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			$(BUILD_LIBJPEG_CLOSED_INCLUDES) \
			-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\
		MAPFILE:=$(BUILD_LIBJPEG_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_windows:=$(WIN_JAVA_LIB) jvm.lib,\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jpeg.dll" \
			  -D "JDK_INTERNAL_NAME=jpeg" \
			  -D "JDK_FTYPE=0x2L",\
		REORDER:=$(BUILD_LIBJPEG_REORDER),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjpeg,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJPEG) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJPEG)

##########################################################################################

ifndef OPENJDK
    FONT_HEADERS:=-I$(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k
    BUILD_LIBFONTMANAGER_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libfontmanager/mapfile-vers
    LIBFONTMANAGER_EXCLUDE_FILES += freetypeScaler.c
else
    FONT_HEADERS:=$(FREETYPE2_CFLAGS)
    BUILD_LIBFONTMANAGER_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libfontmanager/mapfile-vers.openjdk
    BUILD_LIBFONTMANAGER_FONTLIB:=$(FREETYPE2_LIBS)
endif

LIBFONTMANAGER_OPTIMIZATION:=HIGH

ifeq ($(OPENJDK_TARGET_OS),windows)
    LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
				    X11TextRenderer.c
    LIBFONTMANAGER_OPTIMIZATION:=LOW
else
    LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
				    lcdglyph.c
endif

BUILD_LIBFONTMANAGER_CFLAGS_COMMON:=\
			$(X_CFLAGS) \
			-DLE_STANDALONE -DHEADLESS \
			$(FONT_HEADERS) \
			-I$(JDK_TOPDIR)/src/share/native/sun/font \
			-I$(JDK_TOPDIR)/src/share/native/sun/font/layout \
			-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt \
			-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
			-I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
			-I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d \
			-I$(JDK_TOPDIR)/src/share/native/sun/java2d

# Turn off aliasing with GCC for ExtensionSubtables.cpp
ifeq ($(OPENJDK_TARGET_OS), linux)
    BUILD_LIBFONTMANAGER_ExtensionSubtables.cpp_CXXFLAGS:=-fno-strict-aliasing
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER,\
		LIBRARY:=fontmanager, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/share/native/sun/font\
		     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/font,\
		EXCLUDE_FILES:=$(LIBFONTMANAGER_EXCLUDE_FILES) \
			       AccelGlyphCache.c,\
		LANG:=C++,\
		CFLAGS:=$(CFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON),\
		CXXFLAGS:=$(CXXFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON),\
		OPTIMIZATION:=$(LIBFONTMANAGER_OPTIMIZATION), \
		CFLAGS_windows= -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
				-DCC_NOEX, \
		MAPFILE:=$(BUILD_LIBFONTMANAGER_MAPFILE), \
		LDFLAGS:=$(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(BUILD_LIBFONTMANAGER_FONTLIB),\
		LDFLAGS_SUFFIX_linux:=-lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc,\
		LDFLAGS_SUFFIX_solaris:=-lawt -lawt_xawt -lc $(LIBM) $(LIBCXX) -ljava -ljvm,\
		LDFLAGS_SUFFIX_macosx:=-lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
				       -ljava -ljvm,\
		LDFLAGS_SUFFIX_windows:=$(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
					$(WIN_AWT_LIB),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=fontmanager.dll" \
			  -D "JDK_INTERNAL_NAME=fontmanager" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libfontmanager,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBFONTMANAGER) : $(BUILD_LIBAWT)

ifneq (,$(findstring $(OPENJDK_TARGET_OS),solaris macosx))
$(BUILD_LIBFONTMANAGER) : $(BUILD_LIBAWT_XAWT)
endif

BUILD_LIBRARIES += $(BUILD_LIBFONTMANAGER)

##########################################################################################

ifndef OPENJDK

#    ifeq ($(OPENJDK_TARGET_OS), linux)
#        ifeq ("$(CC_VER_MAJOR)", "3")
#            OTHER_LDLIBS  += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
#        endif                           
#    endif
#
# The resulting size of the t2k lib file is (at least on linux) dependant on the order of 
# the input .o files. Because of this the new build will differ in size to the old build.
    BUILD_LIBT2K_CFLAGS_COMMON:=-I$(JDK_TOPDIR)/src/share/native/sun/font \
		            -I$(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k \
		            -I$(JDK_TOPDIR)/src/closed/share/native/sun/font \
		            -I$(JDK_TOPDIR)/src/share/share/native/sun/font \
		            -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/font \
		            -I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
		            -I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
		            -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d \
		            -I$(JDK_TOPDIR)/src/share/native/sun/java2d

    $(eval $(call SetupNativeCompilation,BUILD_LIBT2K,\
                LIBRARY:=t2k, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/closed/share/native/sun/font \
		     $(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k \
		     $(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k/ttHints,\
		EXCLUDE_FILES:=orion.c,\
		LANG:=C++,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(CFLAGS_JDKLIB) $(BUILD_LIBT2K_CFLAGS_COMMON),\
		CXXFLAGS:=$(CXXFLAGS_JDKLIB) $(BUILD_LIBT2K_CFLAGS_COMMON),\
		CFLAGS_windows=-DCC_NOEX, \
		CXXFLAGS_windows=-DCC_NOEX, \
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libt2k/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_windows:=user32.lib $(JDK_OUTPUTDIR)/objs/libfontmanager/fontmanager.lib,\
		LDFLAGS_SUFFIX_posix:=$(LIBM) $(LIBCXX) -lfontmanager -ljava -ljvm -lc,\
		LDFLAGS_SUFFIX_solaris:=-lawt -lawt_xawt,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=t2k.dll" \
			  -D "JDK_INTERNAL_NAME=t2k" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libt2k,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

    # t2k is linked against fontmanager
    $(BUILD_LIBT2K) : $(BUILD_LIBFONTMANAGER)

    BUILD_LIBRARIES += $(BUILD_LIBT2K)
endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), windows)
    ifeq ($(OPENJDK_TARGET_CPU), x86)
        KERNEL32_LIB:=kernel32.lib
    endif
    $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT,\
                LIBRARY:=jawt, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows,\
		INCLUDE_FILES:=jawt.cpp,\
		LANG:=C++,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CXXFLAGS_JDKLIB) \
			-EHsc -DUNICODE -D_UNICODE \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
		        -I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
		        -I$(JDK_TOPDIR)/src/share/native/sun/java2d \
			-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/windows \
			-I$(DXSDK_INCLUDE_PATH), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(KERNEL32_LIB) $(LDFLAGS_CXX_JDK) \
			 advapi32.lib $(WIN_AWT_LIB),\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jawt.dll" \
			  -D "JDK_INTERNAL_NAME=jawt" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjawt,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJAWT) : $(BUILD_LIBAWT)

$(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX): $(BUILD_LIBJAWT)
	$(ECHO) Copying $(@F)
	$(CP) $(JDK_OUTPUTDIR)/objs/libjawt/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX) $@

BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX)

else # OPENJDK_TARGET_OS not windows

    JAWT_LIBS:=
    ifneq ($(OPENJDK_TARGET_OS), solaris)
        JAWT_LIBS += -lawt
    endif

    ifndef BUILD_HEADLESS_ONLY
        JAWT_LIBS += -lawt_xawt
    else
        JAWT_LIBS += -lawt_headless
        HEADLESS_CFLAG += -DHEADLESS
    endif

    JAWT_FILES:=jawt.c
    ifeq ($(OPENJDK_TARGET_OS), macosx)
	JAWT_FILES:=jawt.m
	JAWT_LIBS:=-lawt_lwawt
    endif

    $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT,\
                LIBRARY:=jawt, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt \
                     $(JDK_TOPDIR)/src/macosx/native/sun/awt,\
		INCLUDE_FILES:=$(JAWT_FILES),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB), \
		CFLAGS_linux:=$(HEADLESS_CFLAG),\
		CFLAGS_macosx:=-I$(JDK_TOPDIR)/src/solaris/native/sun/awt ,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjawt/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_solaris:=-L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR),\
		LDFLAGS_SUFFIX_linux:=$(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_solaris:=$(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender,\
		LDFLAGS_SUFFIX_macosx:=-Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
				       -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjawt,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

ifndef BUILD_HEADLESS_ONLY
$(BUILD_LIBJAWT) : $(BUILD_LIBAWT_XAWT)
else
$(BUILD_LIBJAWT) : $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)
endif

ifeq ($(OPENJDK_TARGET_OS),macosx)
$(BUILD_LIBJAWT) : $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)
endif

endif # OPENJDK_TARGET_OS

BUILD_LIBRARIES += $(BUILD_LIBJAWT)

##########################################################################################

LIBINSTRUMENT_SRC   :=$(JDK_TOPDIR)/src/share/instrument \
                      $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \
                      $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/instrument

LIBINSTRUMENT_FILES :=\
	EncodingSupport.c \
	EncodingSupport_md.c \
	FileSystemSupport_md.c \
	InstrumentationImplNativeMethods.c \
	InvocationAdapter.c \
	JarFacade.c \
	JPLISAgent.c \
	JPLISAssert.c \
	JavaExceptions.c \
	PathCharsValidator.c \
	Reentrancy.c \
	Utilities.c \
	canonicalize_md.c

LIBINSTRUMENT_DIR   :=$(JDK_OUTPUTDIR)/objs/libinstrument
LIBINSTRUMENT_CFLAGS:=$(CFLAGS_JDKLIB) \
                      -I$(JDK_TOPDIR)/src/share/instrument \
                      -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/instrument \
                      -I$(JDK_TOPDIR)/src/share/bin

LIBINSTRUMENT_LDFLAGS:=
LIBINSTRUMENT_LDFLAGS_SUFFIX:=

ifeq ($(OPENJDK_TARGET_OS), windows)
    LIBINSTRUMENT_LDFLAGS += $(JDK_OUTPUTDIR)/objs/jli_static.lib $(WIN_JAVA_LIB) \
				 -export:Agent_OnAttach advapi32.lib
    # Statically link the C runtime so that there are not dependencies on modules 
    # not on the search patch when invoked from the Windows system directory 
    # (or elsewhere).
    LIBINSTRUMENT_CFLAGS := $(filter-out -MD,$(LIBINSTRUMENT_CFLAGS))
    # equivalent of strcasecmp is stricmp on Windows
    LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT,\
		LIBRARY:=instrument, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBINSTRUMENT_SRC),\
		INCLUDE_FILES:=$(LIBINSTRUMENT_FILES),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(LIBINSTRUMENT_CFLAGS),\
		CFLAGS_debug:=-DJPLIS_LOGGING,\
		CFLAGS_release:=-DNO_JPLIS_LOGGING,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libinstrument/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN) \
                         $(LIBINSTRUMENT_LDFLAGS),\
		LDFLAGS_linux:=$(call SET_SHARED_LIBRARY_ORIGIN,/jli),\
		LDFLAGS_solaris:= $(call SET_SHARED_LIBRARY_ORIGIN,/jli),\
		LDFLAGS_macosx:=-Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \
				-framework Cocoa -framework Security -framework ApplicationServices,\
		LDFLAGS_SUFFIX:=$(LIBINSTRUMENT_LDFLAGS_SUFFIX),\
		LDFLAGS_SUFFIX_macosx:=-liconv $(LIBZ),\
		LDFLAGS_SUFFIX_solaris:=$(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc,\
		LDFLAGS_SUFFIX_linux:=$(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL),\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=instrument.dll" \
			  -D "JDK_INTERNAL_NAME=instrument" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(LIBINSTRUMENT_DIR),\
		DEBUG_SYMBOLS:=true))

ifneq (,$(findstring $(OPENJDK_TARGET_OS), macosx windows))
$(BUILD_LIBINSTRUMENT) : $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX)
else
$(BUILD_LIBINSTRUMENT) : $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX)
endif
$(BUILD_LIBINSTRUMENT) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBINSTRUMENT)

##########################################################################################

BUILD_LIBMANAGEMENT_SRC:=$(JDK_TOPDIR)/src/share/native/sun/management \
                           $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management \
                           $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/com/sun/management

BUILD_LIBMANAGEMENT_EXCLUDES:=

BUILD_LIBMANAGEMENT_CFLAGS:=-I$(JDK_TOPDIR)/src/share/native/sun/management

ifneq ($(OPENJDK_TARGET_OS), windows)
	BUILD_LIBMANAGEMENT_EXCLUDES += OperatingSystem_md.c
else
	BUILD_LIBMANAGEMENT_EXCLUDES += UnixOperatingSystem_md.c
endif

ifneq ($(OPENJDK_TARGET_OS),solaris)
	BUILD_LIBMANAGEMENT_EXCLUDES += SolarisOperatingSystem.c
endif

ifneq ($(OPENJDK_TARGET_OS),linux)
	BUILD_LIBMANAGEMENT_EXCLUDES += LinuxOperatingSystem.c
endif

ifneq ($(OPENJDK_TARGET_OS),macosx)
	BUILD_LIBMANAGEMENT_EXCLUDES += MacosxOperatingSystem.c
endif

LIBMANAGEMENT_OPTIMIZATION:=HIGH
ifneq ($(findstring $(OPENJDK_TARGET_OS),solaris linux),)
    ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
        LIBMANAGEMENT_OPTIMIZATION:=LOW
    endif
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBMANAGEMENT,\
		LIBRARY:=management,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(BUILD_LIBMANAGEMENT_SRC),\
		EXCLUDE_FILES:=$(BUILD_LIBMANAGEMENT_EXCLUDES),\
		LANG:=C,\
		OPTIMIZATION:=$(LIBMANAGEMENT_OPTIMIZATION), \
		CFLAGS:=$(CFLAGS_JDKLIB) $(BUILD_LIBMANAGEMENT_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libmanagement/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_solaris:=-lkstat,\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_windows:=jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=management.dll" \
			  -D "JDK_INTERNAL_NAME=management" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libmanagement,\
		DEBUG_SYMBOLS:=true))

$(BUILD_LIBMANAGEMENT) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBMANAGEMENT)

##########################################################################################

BUILD_LIBHPROF_SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/hprof $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/demo/jvmti/hprof
BUILD_LIBHPROF_CFLAGS:=-I$(JDK_TOPDIR)/src/share/demo/jvmti/hprof \
                         -I$(JDK_TOPDIR)/src/share/npt \
                         -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
                         -I$(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo

BUILD_LIBHPROF_LDFLAGS:=

LIBHPROF_OPTIMIZATION:=HIGHEST
ifneq ($(findstring $(OPENJDK_TARGET_OS),solaris linux),)
    ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
        LIBHPROF_OPTIMIZATION:=LOW
    endif
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBHPROF,\
		LIBRARY:=hprof, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(BUILD_LIBHPROF_SRC),\
		LANG:=C,\
		OPTIMIZATION:=$(LIBHPROF_OPTIMIZATION), \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                         $(BUILD_LIBHPROF_CFLAGS),\
		CFLAGS_debug:=-DHPROF_LOGGING,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libhprof/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_windows:=wsock32.lib winmm.lib advapi32.lib,\
		LDFLAGS_SUFFIX_linux:=$(LIBDL),\
		LDFLAGS_SUFFIX_macosx:=$(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-lsocket -lnsl $(LIBDL) -lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=hprof.dll" \
			  -D "JDK_INTERNAL_NAME=hprof" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libhprof_jvmti,\
		DEBUG_SYMBOLS:=true))

BUILD_LIBRARIES += $(BUILD_LIBHPROF)

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA_CRW_DEMO,\
		LIBRARY:=java_crw_demo, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        -I$(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjava_crw_demo/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=java_crw_demo.dll" \
			  -D "JDK_INTERNAL_NAME=java_crw_demo" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjava_crw_demo,\
		DEBUG_SYMBOLS:=true))

BUILD_LIBRARIES += $(BUILD_LIBJAVA_CRW_DEMO)

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBNPT,\
		LIBRARY:=npt, \
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/npt $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        -I$(JDK_TOPDIR)/src/share/npt \
                        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnpt/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_macosx:=-liconv,\
		LDFLAGS_SUFFIX_windows:=-export:nptInitialize -export:nptTerminate,\
		LDFLAGS_SUFFIX_solaris:=-lc, \
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=npt.dll" \
			  -D "JDK_INTERNAL_NAME=npt" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libnpt,\
		DEBUG_SYMBOLS:=true))

BUILD_LIBRARIES += $(BUILD_LIBNPT)

##########################################################################################

LIBNET_SRC_DIRS:=$(JDK_TOPDIR)/src/share/native/java/net \
                   $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/net \
                   $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/dns \
                   $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/spi

ifeq ($(OPENJDK_TARGET_OS),windows)
    LIBNET_SRC_DIRS+=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/www/protocol/http/ntlm
else
    LIBNET_SRC_DIRS+=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/sdp
endif

LIBNET_CFLAGS:=$(foreach dir,$(LIBNET_SRC_DIRS),-I$(dir))

LIBNET_EXCLUDE_FILES:=
ifneq ($(OPENJDK_TARGET_OS),linux)
	LIBNET_EXCLUDE_FILES += linux_close.c
endif

ifneq ($(OPENJDK_TARGET_OS),macosx)
	LIBNET_EXCLUDE_FILES += bsd_close.c
endif

ifeq ($(OPENJDK_TARGET_OS),windows)
	LIBNET_EXCLUDE_FILES += PlainSocketImpl.c PlainDatagramSocketImpl.c SdpSupport.c
else
	LIBNET_EXCLUDE_FILES += TwoStacksPlainSocketImpl.c DualStackPlainSocketImpl.c \
                                TwoStacksPlainDatagramSocketImpl.c DualStackPlainDatagramSocketImpl.c \
				NTLMAuthSequence.c NetworkInterface_winXP.c
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBNET,\
		LIBRARY:=net,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBNET_SRC_DIRS),\
		EXCLUDE_FILES:=$(LIBNET_EXCLUDE_FILES), \
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(LIBNET_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnet/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_macosx:=-ljvm -ljava,\
		LDFLAGS_SUFFIX_solaris:=-ljvm -ljava -lnsl -lsocket $(LIBDL) -lc ,\
		LDFLAGS_SUFFIX_linux:=$(LIBDL) -ljvm -lpthread -ljava,\
		LDFLAGS_SUFFIX_windows:=ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
					delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
					-DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=net.dll" \
			  -D "JDK_INTERNAL_NAME=net" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libnet,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBNET) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBNET)

$(JDK_OUTPUTDIR)/lib/net.properties: $(JDK_TOPDIR)/src/share/lib/net.properties
	$(ECHO) $(LOG_INFO) Copying $(@F)
	$(call install-file)

COPY_FILES += $(JDK_OUTPUTDIR)/lib/net.properties

ifeq ($(OPENJDK_TARGET_OS), solaris)
$(JDK_OUTPUTDIR)/lib/sdp/sdp.conf.template : $(JDK_TOPDIR)/src/${OPENJDK_TARGET_OS_API_DIR}/lib/sdp/sdp.conf.template
	$(ECHO) $(LOG_INFO) Copying $(@F)
	$(call install-file)

COPY_FILES += $(JDK_OUTPUTDIR)/lib/sdp/sdp.conf.template
endif

##########################################################################################

BUILD_LIBNIO_SRC:=\
        $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/nio \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/nio/ch \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/nio/fs

BUILD_LIBNIO_CFLAGS:=\
	-I$(JDK_TOPDIR)/src/share/native/sun/nio/ch \
	-I$(JDK_TOPDIR)/src/share/native/java/io \
	-I$(JDK_TOPDIR)/src/share/native/java/net \
        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/net

BUILD_LIBNIO_FILES:=\
        DatagramChannelImpl.c \
        DatagramDispatcher.c \
	FileChannelImpl.c \
	FileDispatcherImpl.c \
	FileKey.c \
	IOUtil.c \
        MappedByteBuffer.c \
	Net.c \
	ServerSocketChannelImpl.c \
	SocketChannelImpl.c \
	SocketDispatcher.c

ifeq ($(OPENJDK_TARGET_OS), windows)
	BUILD_LIBNIO_FILES += \
		Iocp.c \
		RegistryFileTypeDetector.c \
		WindowsAsynchronousFileChannelImpl.c \
		WindowsAsynchronousServerSocketChannelImpl.c \
		WindowsAsynchronousSocketChannelImpl.c \
		WindowsNativeDispatcher.c \
	        WindowsSelectorImpl.c
endif

ifeq ($(OPENJDK_TARGET_OS), linux)
	BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
	BUILD_LIBNIO_FILES += \
		EPoll.c \
		EPollArrayWrapper.c \
		EPollPort.c \
		InheritedChannel.c \
		NativeThread.c \
		PollArrayWrapper.c \
		UnixAsynchronousServerSocketChannelImpl.c \
		UnixAsynchronousSocketChannelImpl.c \
		GnomeFileTypeDetector.c \
		MagicFileTypeDetector.c \
		LinuxNativeDispatcher.c \
		LinuxWatchService.c \
		UnixCopyFile.c \
		UnixNativeDispatcher.c
endif

ifeq ($(OPENJDK_TARGET_OS), macosx)
	BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
	BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/macosx/native/sun/nio/ch
	BUILD_LIBNIO_FILES += \
		InheritedChannel.c \
		NativeThread.c \
	        PollArrayWrapper.c \
		UnixAsynchronousServerSocketChannelImpl.c \
		UnixAsynchronousSocketChannelImpl.c \
		BsdNativeDispatcher.c \
		MacOSXNativeDispatcher.c \
		UnixCopyFile.c \
		UnixNativeDispatcher.c \
		KQueue.c \
		KQueuePort.c \
		KQueueArrayWrapper.c
endif

ifeq ($(OPENJDK_TARGET_OS), solaris)
	BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
	BUILD_LIBNIO_FILES += \
		DevPollArrayWrapper.c \
		InheritedChannel.c \
		NativeThread.c \
		PollArrayWrapper.c \
		SolarisEventPort.c \
		UnixAsynchronousServerSocketChannelImpl.c \
		UnixAsynchronousSocketChannelImpl.c \
		GnomeFileTypeDetector.c \
		SolarisNativeDispatcher.c \
		SolarisWatchService.c \
		UnixCopyFile.c \
		UnixNativeDispatcher.c
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBNIO,\
		LIBRARY:=nio,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(BUILD_LIBNIO_SRC),\
		INCLUDE_FILES:=$(BUILD_LIBNIO_FILES), \
		LANG:=C,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(BUILD_LIBNIO_CFLAGS),\
		MAPFILE:=$(BUILD_LIBNIO_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_linux:=-ljava -lnet -lpthread $(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-ljvm -lsocket -lposix4 $(LIBDL) \
				        -lsendfile -ljava -lnet -lc,\
		LDFLAGS_SUFFIX_windows:=jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
					$(JDK_OUTPUTDIR)/objs/libnet/net.lib \
					advapi32.lib,\
		LDFLAGS_SUFFIX_macosx:=-ljava -lnet -pthread -framework CoreFoundation,\
		LDFLAGS_SUFFIX:=,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=nio.dll" \
			  -D "JDK_INTERNAL_NAME=nio" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libnio,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBNIO)

$(BUILD_LIBNIO) : $(BUILD_LIBNET)

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS_API),posix)

  ifneq ($(OPENJDK_TARGET_OS),macosx)

    SCTP_WERROR := -Werror
    ifeq ($(OPENJDK_TARGET_CPU_ARCH), ppc)
      SCTP_WERROR :=
    endif

    $(eval $(call SetupNativeCompilation,BUILD_LIBSCTP,\
                LIBRARY:=sctp,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
                SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/nio/ch/sctp,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB)\
			-I$(JDK_TOPDIR)/src/share/native/sun/nio/ch \
			-I$(JDK_TOPDIR)/src/share/native/sun/nio/ch/sctp \
			-I$(JDK_TOPDIR)/src/share/native/java/net \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/nio/ch \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/net,\
		CFLAGS_linux:=$(SCTP_WERROR),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsctp/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_linux:=-lpthread $(LIBDL) -ljava -ljvm,\
		LDFLAGS_SUFFIX_posix:=-lnio -lnet,\
		LDFLAGS_SUFFIX_solaris:=-lsocket -ljava -ljvm -lc,\
		LDFLAGS_SUFFIX_macosx:=-ljava -ljvm,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libsctp,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

    BUILD_LIBRARIES += $(BUILD_LIBSCTP)

    $(BUILD_LIBSCTP) : $(BUILD_LIBNIO)
  endif
endif

##########################################################################################

BUILD_LIBJLI_SRC_DIRS:=$(JDK_TOPDIR)/src/share/bin $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin
LIBJLI_CFLAGS:=$(CFLAGS_JDKLIB) $(foreach dir,$(BUILD_LIBJLI_SRC_DIRS),-I$(dir))

BUILD_LIBJLI_FILES:=\
	java.c \
	splashscreen_stubs.c \
	parse_manifest.c \
	version_comp.c \
	wildcard.c \
	jli_util.c

ifeq ($(JVM_VARIANT_ZERO), true)
	ERGO_FAMILY:=zero
else
	ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
		ERGO_FAMILY:=i586
	else
		ERGO_FAMILY:=$(OPENJDK_TARGET_CPU_ARCH)
	endif
endif

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBJLI_CFLAGS += -I$(JDK_TOPDIR)/src/macosx/bin
	BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/bin
	BUILD_LIBJLI_FILES += java_md_common.c java_md_macosx.c

	BUILD_LIBJLI_java_md_macosx.c_CFLAGS:=-x objective-c
	BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS:=-x objective-c
endif

ifeq ($(OPENJDK_TARGET_OS), windows)
	BUILD_LIBJLI_FILES += java_md.c \
			      cmdtoargs.c
        # Staticically link with c runtime on windows.
	LIBJLI_CFLAGS:=$(filter-out -MD,$(LIBJLI_CFLAGS))
else ifneq ($(OPENJDK_TARGET_OS), macosx)

	BUILD_LIBJLI_FILES += java_md_common.c
	BUILD_LIBJLI_FILES += java_md_solinux.c ergo.c 

	ERGO_ARCH_FILE = ergo_$(ERGO_FAMILY).c

        # if the architecture specific ergo file exists then
        # use it, else use the generic definitions from ergo.c
	ifneq ($(wildcard $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin/$(ERGO_ARCH_FILE)),)
		BUILD_LIBJLI_FILES += $(ERGO_ARCH_FILE)
	else # !ERGO_ARCH_FILE
		LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
	endif # ERGO_ARCH_FILE
endif #WINDOWS

# Append defines depending on target platform
LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS)

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
endif

ifneq ($(USE_EXTERNAL_LIBZ),true)
	BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5
	LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
	BUILD_LIBJLI_FILES += \
		inflate.c \
		inftrees.c \
		inffast.c \
		zadler32.c \
		zcrc32.c \
		zutil.c
endif

ifeq ($(OPENJDK_TARGET_OS), windows)
    LIBJLI_OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE)
else
    LIBJLI_OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE)/jli
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBJLI,\
		LIBRARY:=jli,\
                OUTPUT_DIR:=$(LIBJLI_OUTPUT_DIR),\
		SRC:=$(BUILD_LIBJLI_SRC_DIRS),\
		INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\
		LANG:=C,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(LIBJLI_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjli/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_linux:=$(call SET_SHARED_LIBRARY_ORIGIN,/..),\
		LDFLAGS_solaris:=$(call SET_SHARED_LIBRARY_ORIGIN,/..),\
		LDFLAGS_macosx:=-framework Cocoa -framework Security -framework ApplicationServices,\
		LDFLAGS_SUFFIX_solaris:=$(LIBZ) $(LIBDL) -lc,\
		LDFLAGS_SUFFIX_linux:=$(LIBZ) $(LIBDL) -lc -lpthread,\
		LDFLAGS_SUFFIX_macosx:=$(LIBZ),\
		LDFLAGS_SUFFIX_windows:=\
			-export:JLI_Launch \
			-export:JLI_ManifestIterate \
			-export:JLI_SetTraceLauncher \
			-export:JLI_ReportErrorMessage \
			-export:JLI_ReportErrorMessageSys \
			-export:JLI_ReportMessage \
			-export:JLI_ReportExceptionDescription \
			-export:JLI_MemAlloc \
			-export:JLI_CmdToArgs \
			-export:JLI_GetStdArgc \
			-export:JLI_GetStdArgs \
			advapi32.lib \
			comctl32.lib \
			user32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS) \
			  -D "JDK_FNAME=jli.dll" \
			  -D "JDK_INTERNAL_NAME=jli" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJLI)

# On windows, the static library has the same suffix as the import library created by
# with the shared library, so the static library is given a different name. No harm
# in doing it for all platform to reduce complexity.
ifeq ($(OPENJDK_TARGET_OS), windows)
    $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\
		STATIC_LIBRARY:=jli_static,\
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\
		SRC:=$(BUILD_LIBJLI_SRC_DIRS),\
		INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\
		LANG:=C,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS),\
		ARFLAGS:=$(ARFLAGS),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC)

else ifeq ($(OPENJDK_TARGET_OS),macosx)
    #
    # On macosx they do partial (incremental) linking of libjli_static.a
    #   code it here...rather than add support to NativeCompilation
    #   as this is first time I see it
    $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\
		LIBRARY:=jli_static, \
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\
		SRC:=$(BUILD_LIBJLI_SRC_DIRS),\
		INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\
		LANG:=C,\
		OPTIMIZATION:=HIGH, \
		CFLAGS:=$(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS),\
		LDFLAGS:=-nostdlib -r,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(JDK_OUTPUTDIR)/objs/libjli_static.a : $(BUILD_LIBJLI_STATIC)
	$(call install-file)

BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a
endif

##########################################################################################

ifndef OPENJDK
ifeq ($(ENABLE_JFR), true)

$(eval $(call SetupNativeCompilation,BUILD_LIBJFR,\
		LIBRARY:=jfr,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/closed/share/native/oracle/jfr,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        -I$(JDK_TOPDIR)/src/closed/share/javavm/export, \
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjfr/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jfr.dll" \
			  -D "JDK_INTERNAL_NAME=jfr" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjfr,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJFR)

endif
endif

##########################################################################################

ifndef OPENJDK

BUILD_LIBKCMS_EXCLUDE_FILES:=
ifeq ($(OPENJDK_TARGET_OS),windows)
	BUILD_LIBKCMS_EXCLUDE_FILES += ukcpmgr.c unixmem.c
else
	BUILD_LIBKCMS_EXCLUDE_FILES += cmmdll.c registry.c spxffile.c sysinfo.c winmem.c wkcpmgr.c
endif

BUILD_LIBKCMS_FLAGS:=$(CFLAGS_JDKLIB)

ifeq ($(OPENJDK_TARGET_OS),solaris)
     # This particular library uses a feature called PIC_CODE_SMALL (on solaris)
     #   implement it like this...since it's only used here
     BUILD_LIBKCMS_FLAGS:=$(patsubst -KPIC,-Kpic,$(BUILD_LIBKCMS_FLAGS))
else ifeq ($(OPENJDK_TARGET_CPU_ARCH), ppc)
     BUILD_LIBKCMS_FLAGS:=$(patsubst -fPIC,-fpic,$(BUILD_LIBKCMS_FLAGS))
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBKCMS,\
		LIBRARY:=kcms,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/closed/share/native/sun/java2d/cmm/kcms,\
		LANG:=C,\
		EXCLUDE_FILES:=$(BUILD_LIBKCMS_EXCLUDE_FILES),\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(BUILD_LIBKCMS_FLAGS) \
                        -DJAVACMM -DFUT_CALC_EX -DNO_FUT_GCONST,\
		CFLAGS_linux:=-Wno-missing-field-initializers,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libkcms/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_linux:=-lc -lpthread,\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		LDFLAGS_SUFFIX_windows:=$(WIN_JAVA_LIB) advapi32.lib user32.lib version.lib, \
		LDFLAGS_SUFFIX_posix:=-lm -ljava -ljvm,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/closed/share/native/sun/java2d/cmm/kcms/cmm.rc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/closed/share/native/sun/java2d/cmm/kcms/cmm.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=kcms.dll" \
			  -D "JDK_INTERNAL_NAME=kcms" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libkcms,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBKCMS) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBKCMS)

endif

##########################################################################################

ifndef OPENJDK
ifeq ($(OPENJDK_TARGET_OS), solaris)
ifneq ($(OPENJDK_TARGET_CPU), x86_64)

ifeq ($(shell if test "$(OS_VERSION_MAJOR)" -eq 5 -a "$(OS_VERSION_MINOR)" -le 10; then $(ECHO) ok; fi), ok)

SUNWJDGA_MAPFILE:=
ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
	SUNWJDGA_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjdga/mapfile-vers
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBSUNWJDGA, \
		LIBRARY:=sunwjdga,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/solaris/native/sun/jdga, \
		LANG:=C, \
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/share/javavm/export \
			-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/javavm/export \
			-I$(OPENWIN_HOME)/include, \
		MAPFILE:=$(SUNWJDGA_MAPFILE), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX:=-L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -ldga -lX11 $(LIBDL) -lc, \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libsunwjdga,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBSUNWJDGA)

endif
endif
endif
endif

##########################################################################################

ifeq ($(BUILD_HEADLESS), true)
ifneq ($(OPENJDK_TARGET_OS), windows)

LIBAWT_HEADLESS_DIRS:=$(JDK_TOPDIR)/src/share/native/sun/font \
                        $(JDK_TOPDIR)/src/share/native/sun/java2d/opengl \
			$(JDK_TOPDIR)/src/solaris/native/sun/font \
			$(JDK_TOPDIR)/src/solaris/native/sun/awt \
			$(JDK_TOPDIR)/src/solaris/native/sun/java2d/opengl \
			$(JDK_TOPDIR)/src/solaris/native/sun/java2d/x11

ifeq ($(OPENJDK_TARGET_OS),macosx)
	LIBAWT_HEADLESS_DIRS+=$(JDK_TOPDIR)/src/macosx/native/sun/font
endif

LIBAWT_HEADLESS_CFLAGS:=-DHEADLESS=true \
                          -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \
			  $(CUPS_CFLAGS) \
			  $(X_CFLAGS) \
			  -I$(JDK_TOPDIR)/src/share/native/sun/java2d \
			  -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d \
			  -I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
			  -I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
			  -I$(JDK_TOPDIR)/src/share/native/sun/awt/image \
			  -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
			  -I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
			  -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/jdga \
                          $(foreach dir,$(LIBAWT_HEADLESS_DIRS),-I$(dir))

ifeq ($(OPENJDK_TARGET_OS),macosx)
	LIBAWT_HEADLESS_CFLAGS+=\
		-F/System/Library/Frameworks/JavaVM.framework/Frameworks \
		-F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
endif

LIBAWT_HEADLESS_FILES:=\
	awt_Font.c \
	HeadlessToolkit.c \
	fontpath.c \
	VDrawingArea.c \
	X11Color.c \
	X11Renderer.c \
	X11PMBlitLoops.c \
	X11SurfaceData.c \
	X11FontScaler_md.c \
	X11TextRenderer_md.c \
        OGLBlitLoops.c \
        OGLBufImgOps.c \
        OGLContext.c \
        OGLFuncs.c \
        OGLMaskBlit.c \
        OGLMaskFill.c \
        OGLPaints.c \
        OGLRenderQueue.c \
        OGLRenderer.c \
        OGLSurfaceData.c \
        OGLTextRenderer.c \
        OGLVertexCache.c \
        GLXGraphicsConfig.c \
        GLXSurfaceData.c \
        AccelGlyphCache.c \
	CUPSfuncs.c

ifeq ($(OPENJDK_TARGET_OS),macosx)
	LIBAWT_HEADLESS_FILES+=\
		AWTFont.m \
		AWTStrike.m \
		CCharToGlyphMapper.m \
		CGGlyphImages.m \
		CGGlyphOutlines.m \
		CoreTextSupport.m
endif

LIBAWT_HEADLESS_REORDER:=
ifeq ($(OPENJDK_TARGET_OS), solaris)
	ifneq ($(OPENJDK_TARGET_CPU), x86_64)
		LIBAWT_HEADLESS_REORDER:=$(JDK_TOPDIR)/makefiles/mapfiles/libawt_headless/reorder-$(OPENJDK_TARGET_CPU)
	endif
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_HEADLESS,\
		LIBRARY:=awt_headless,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBAWT_HEADLESS_DIRS),\
		INCLUDE_FILES:=$(LIBAWT_HEADLESS_FILES),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) $(LIBAWT_HEADLESS_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libawt_headless/mapfile-vers,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_linux:=$(call SET_SHARED_LIBRARY_ORIGIN,/..),\
		LDFLAGS_solaris:=$(call SET_SHARED_LIBRARY_ORIGIN,/..) \
				 -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
				 -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR),\
		LDFLAGS_macosx:=$(call SET_SHARED_LIBRARY_ORIGIN).,\
		REORDER:=$(LIBAWT_HEADLESS_REORDER), \
		LDFLAGS_SUFFIX_linux:=-ljvm -lawt -lm $(LIBDL) -ljava,\
		LDFLAGS_SUFFIX_solaris:=$(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc,\
		LDFLAGS_SUFFIX_macosx:=-ljvm $(LIBCXX) -lawt $(LIBDL) -ljava \
				 -framework Accelerate \
				 -framework ApplicationServices \
				 -framework Cocoa \
				 -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
				 -framework JavaNativeFoundation \
				 -framework JavaRuntimeSupport,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libawt_headless,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBAWT_HEADLESS) : $(BUILD_LIBAWT)

BUILD_LIBRARIES += $(BUILD_LIBAWT_HEADLESS)

endif
endif

##########################################################################################

ifndef BUILD_HEADLESS_ONLY
LIBSPLASHSCREEN_DIRS:=\
	$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg \
	$(JDK_TOPDIR)/src/share/native/sun/awt/libpng \
	$(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen

ifeq ($(USE_EXTERNAL_LIBGIF),true)
    GIFLIB_LDFLAGS := -lgif
else
    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/giflib
    GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
endif

ifneq ($(OPENJDK_TARGET_OS), macosx)
    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
else
    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/macosx/native/sun/awt/splashscreen
endif

LIBSPLASHSCREEN_CFLAGS:=-DSPLASHSCREEN -DPNG_NO_MMX_CODE \
	$(foreach dir,$(LIBSPLASHSCREEN_DIRS),-I$(dir))

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBSPLASHSCREEN_CFLAGS:=-I$(JDK_TOPDIR)/src/macosx/native/sun/awt/splashscreen \
                                  $(LIBSPLASHSCREEN_CFLAGS) \
                                  -F/System/Library/Frameworks/JavaVM.framework/Frameworks
	LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX
	LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/macosx/native/sun/osxapp

	LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_gif.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_impl.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_jpeg.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS:=-x objective-c -O0
	LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS:=-O0

else ifneq ($(OPENJDK_TARGET_OS), windows)
	LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
else
	LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
endif

LIBSPLASHSCREEN_LDFLAGS_SUFFIX:=

ifneq ($(USE_EXTERNAL_LIBZ),true)
	LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5
	LIBSPLASHSCREEN_CFLAGS += $(ZLIB_CPPFLAGS)
endif

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(LIBM) -lpthread -liconv -losxapp \
				  -framework ApplicationServices \
				  -framework Foundation \
				  -framework Cocoa \
                                  -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
				  -framework JavaNativeFoundation
else ifneq ($(OPENJDK_TARGET_OS), windows)
	LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
else # OPENJDK_TARGET_OS
	LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll
endif # OPENJDK_TARGET_OS

$(eval $(call SetupNativeCompilation,LIBSPLASHSCREEN,\
		LIBRARY:=splashscreen,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBSPLASHSCREEN_DIRS),\
		EXCLUDE_FILES:=imageioJPEG.c jpegdecoder.c pngtest.c,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) $(GIFLIB_CFLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsplashscreen/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(GIFLIB_LDFLAGS),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=splashscreen.dll" \
			  -D "JDK_INTERNAL_NAME=splashscreen" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libsplashscreen,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(LIBSPLASHSCREEN)

ifeq ($(OPENJDK_TARGET_OS),macosx)
$(LIBSPLASHSCREEN) :  $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)osxapp$(SHARED_LIBRARY_SUFFIX) 
endif

endif

##########################################################################################

ifndef OPENJDK

LIBDCPR_SRC_DIRS:=\
	$(JDK_TOPDIR)/src/closed/share/native/sun/dc/doe \
	$(JDK_TOPDIR)/src/closed/share/native/sun/dc/path \
	$(JDK_TOPDIR)/src/closed/share/native/sun/dc/pr \
	$(JDK_TOPDIR)/src/closed/share/native/sun/dc/util

LIBDCPR_CFLAGS:=$(foreach dir,$(LIBDCPR_SRC_DIRS),-I$(dir)) \
	          -I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe

$(eval $(call SetupNativeCompilation,BUILD_LIBDCPR,\
		LIBRARY:=dcpr,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBDCPR_SRC_DIRS),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			$(LIBDCPR_CFLAGS), \
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libdcpr/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(LIBM) $(LDFLAGS_JDKLIB_SUFFIX),\
		LDFLAGS_SUFFIX_posix:=-lm,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=dcpr.dll" \
			  -D "JDK_INTERNAL_NAME=dcpr" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libdcpr,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBDCPR) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBDCPR)

endif

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBJ2PCSC,\
		LIBRARY:=j2pcsc,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/native/sun/security/smartcardio \
                     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/smartcardio,\
		LANG:=C,\
		CFLAGS_posix:=-D__sun_jdk,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                     -I$(JDK_TOPDIR)/src/share/native/sun/security/smartcardio \
                     -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/smartcardio\
                     -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/smartcardio/MUSCLE,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libj2pcsc/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_posix:=$(LIBDL), \
		LDFLAGS_SUFFIX_windows:=winscard.lib,\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=j2pcsc.dll" \
			  -D "JDK_INTERNAL_NAME=j2pcsc" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libj2pcsc,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJ2PCSC)

##########################################################################################

ifneq ($(OPENJDK_TARGET_OS), windows)
$(eval $(call SetupNativeCompilation,BUILD_LIBJ2GSS,\
		LIBRARY:=j2gss,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/native/sun/security/jgss/wrapper \
                     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/jgss/wrapper,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                     -I$(JDK_TOPDIR)/src/share/native/sun/security/jgss/wrapper \
                     -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/jgss/wrapper,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libj2gss/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libj2gss,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJ2GSS)
endif

##########################################################################################

BUILD_LIBKRB5_NAME:=
ifeq ($(OPENJDK_TARGET_OS), windows)
     BUILD_LIBKRB5_NAME:=w2k_lsa_auth
     BUILD_LIBKRB5_SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/krb5
     BUILD_LIBKRB5_LIBS:=advapi32.lib Secur32.lib netapi32.lib kernel32.lib user32.lib \
			 gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib \
			 ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib
else ifeq ($(OPENJDK_TARGET_OS), macosx)
     BUILD_LIBKRB5_NAME:=osxkrb5
     BUILD_LIBKRB5_SRC:=$(JDK_TOPDIR)/src/share/native/sun/security/krb5
     BUILD_LIBKRB5_LIBS:=-framework Kerberos
endif

ifneq ($(BUILD_LIBKRB5_NAME),)
$(eval $(call SetupNativeCompilation,BUILD_LIBKRB5,\
		LIBRARY:=$(BUILD_LIBKRB5_NAME),\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(BUILD_LIBKRB5_SRC),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
		        -I$(JDK_TOPDIR)/src/share/native/sun/security/krb5 \
                        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/krb5 ,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(BUILD_LIBKRB5_LIBS) ,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=$(BUILD_LIBKRB5_NAME).dll" \
			  -D "JDK_INTERNAL_NAME=$(BUILD_LIBKRB5_NAME)" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libkrb5,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBKRB5)
endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), windows)

$(eval $(call SetupNativeCompilation,BUILD_LIBSUNMSCAPI,\
		LIBRARY:=sunmscapi,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/mscapi,\
		LANG:=C++,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/mscapi ,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=Crypt32.Lib advapi32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=sunmscapi.dll" \
			  -D "JDK_INTERNAL_NAME=sunmscapi" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libsunmscapi,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBSUNMSCAPI)
endif

##########################################################################################

$(eval $(call SetupNativeCompilation,BUILD_LIBJ2PKCS11,\
		LIBRARY:=j2pkcs11,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/native/sun/security/pkcs11 \
                     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/pkcs11 \
                     $(JDK_TOPDIR)/src/share/native/sun/security/pkcs11/wrapper \
                     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/pkcs11/wrapper,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
		        -I$(JDK_TOPDIR)/src/share/native/sun/security/pkcs11 \
		        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/pkcs11 \
		        -I$(JDK_TOPDIR)/src/share/native/sun/security/pkcs11/wrapper \
                        -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/pkcs11/wrapper,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libj2pkcs11/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX_posix:=$(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=j2pkcs11.dll" \
			  -D "JDK_INTERNAL_NAME=j2pkcs11" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libj2pkcs11,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBJ2PKCS11)

##########################################################################################

ifeq ($(ENABLE_INTREE_EC),yes)

BUILD_LIBSUNEC_FLAGS:= -I$(JDK_TOPDIR)/src/share/native/sun/security/ec \
                       -I$(JDK_TOPDIR)/src/share/native/sun/security/ec/impl

#
# On sol-sparc...all libraries are compiled with -xregs=no%appl
#   (set in CFLAGS_REQUIRED_sparc)
#
# except!!! libsunec.so
#
ECC_JNI_SOLSPARC_FILTER:=
ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
     ECC_JNI_SOLSPARC_FILTER:=-xregs=no%appl
endif

$(eval $(call SetupNativeCompilation,BUILD_LIBSUNEC,\
		LIBRARY:=sunec,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/share/native/sun/security/ec \
                     $(JDK_TOPDIR)/src/share/native/sun/security/ec/impl, \
		LANG:=C++, \
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(filter-out $(ECC_JNI_SOLSPARC_FILTER), $(CFLAGS_JDKLIB))\
                        $(BUILD_LIBSUNEC_FLAGS) \
                        -DMP_API_COMPATIBLE -DNSS_ECC_MORE_THAN_SUITE_B,\
		CXXFLAGS:=$(filter-out $(ECC_JNI_SOLSPARC_FILTER), $(CXXFLAGS_JDKLIB)) \
                          $(BUILD_LIBSUNEC_FLAGS),\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsunec/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK),\
		LDFLAGS_macosx:=$(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(LIBCXX),\
                LDFLAGS_SUFFIX_linux:=-lc ,\
                LDFLAGS_SUFFIX_solaris:=-lc ,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=sunec.dll" \
			  -D "JDK_INTERNAL_NAME=sunec" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libsunec,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBSUNEC)
endif

##########################################################################################

LIBJSOUND_SRC_DIRS:=\
	$(JDK_TOPDIR)/src/share/native/com/sun/media/sound \
	$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/com/sun/media/sound

LIBJSOUND_SRC_FILES:=Utilities.c Platform.c

LIBJSOUND_LANG:=C
LIBJSOUND_CFLAGS:=$(foreach dir,$(LIBJSOUND_SRC_DIRS),-I$(dir))

EXTRA_SOUND_JNI_LIBS:=

LIBJSOUND_MIDIFILES:=\
	MidiInDevice.c \
	MidiInDeviceProvider.c \
	MidiOutDevice.c \
	MidiOutDeviceProvider.c \
	PlatformMidi.c

# files needed for ports
LIBJSOUND_PORTFILES:=\
	PortMixerProvider.c \
	PortMixer.c

# files needed for direct audio
LIBJSOUND_DAUDIOFILES:=\
	DirectAudioDeviceProvider.c \
	DirectAudioDevice.c

ifeq ($(OPENJDK_TARGET_OS), windows)
	EXTRA_SOUND_JNI_LIBS += jsoundds
	LIBJSOUND_CFLAGS += -DX_PLATFORM=X_WINDOWS \
                            -DUSE_PLATFORM_MIDI_OUT=TRUE \
                            -DUSE_PLATFORM_MIDI_IN=TRUE \
                            -DUSE_PORTS=TRUE
	LIBJSOUND_SRC_FILES += \
		PLATFORM_API_WinOS_MidiIn.cpp \
		PLATFORM_API_WinOS_MidiOut.c \
		PLATFORM_API_WinOS_Util.c \
		PLATFORM_API_WinOS_Ports.c
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES)
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES)
endif # OPENJDK_TARGET_OS windows

ifeq ($(OPENJDK_TARGET_OS), linux)
	EXTRA_SOUND_JNI_LIBS += jsoundalsa
	LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX
endif # OPENJDK_TARGET_OS linux

ifeq ($(OPENJDK_TARGET_OS), macosx)
	LIBJSOUND_LANG:=C++
	LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \
                            -DUSE_PORTS=TRUE \
                            -DUSE_DAUDIO=TRUE \
                            -DUSE_PLATFORM_MIDI_OUT=TRUE \
                            -DUSE_PLATFORM_MIDI_IN=TRUE
	LIBJSOUND_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/com/sun/media/sound
	LIBJSOUND_SRC_FILES += \
		PLATFORM_API_MacOSX_Utils.cpp \
		PLATFORM_API_MacOSX_PCM.cpp \
		PLATFORM_API_MacOSX_Ports.cpp \
                PLATFORM_API_MacOSX_MidiIn.c \
                PLATFORM_API_MacOSX_MidiOut.c \
                PLATFORM_API_MacOSX_MidiUtils.c
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES)
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES)
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_DAUDIOFILES)
endif # OPENJDK_TARGET_OS macosx

ifeq ($(OPENJDK_TARGET_OS), solaris)
	LIBJSOUND_CFLAGS += -DX_PLATFORM=X_SOLARIS \
                            -DUSE_PORTS=TRUE \
                            -DUSE_DAUDIO=TRUE
	LIBJSOUND_SRC_FILES += \
		PLATFORM_API_SolarisOS_Utils.c \
		PLATFORM_API_SolarisOS_Ports.c \
		PLATFORM_API_SolarisOS_PCM.c
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES)
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES)
	LIBJSOUND_SRC_FILES += $(LIBJSOUND_DAUDIOFILES)
endif # OPENJDK_TARGET_OS solaris


ifeq ($(JVM_VARIANT_ZERO), true)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_ZERO
else
  ifeq ($(OPENJDK_TARGET_CPU), x86)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_I586
  endif

  ifeq ($(OPENJDK_TARGET_CPU), sparc)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_SPARC
  endif

  ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_SPARCV9
  endif

  ifeq ($(OPENJDK_TARGET_CPU), x86_64)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_AMD64
  endif

  ifeq ($(OPENJDK_TARGET_CPU), arm)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_ARM
  endif

  ifeq ($(OPENJDK_TARGET_CPU), ppc)
	LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC
  endif
endif

LIBJSOUND_CFLAGS += -DEXTRA_SOUND_JNI_LIBS='"$(EXTRA_SOUND_JNI_LIBS)"'

$(eval $(call SetupNativeCompilation,BUILD_LIBJSOUND,\
		LIBRARY:=jsound,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBJSOUND_SRC_DIRS),\
		INCLUDE_FILES:=$(LIBJSOUND_SRC_FILES),\
		LANG:=$(LIBJSOUND_LANG),\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
		        $(LIBJSOUND_CFLAGS), \
		CXXFLAGS:=$(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjsound/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_macosx:=-framework CoreAudio -framework CoreFoundation \
				-framework CoreServices -framework AudioUnit $(LIBCXX) \
				-framework CoreMIDI -framework AudioToolbox,\
		LDFLAGS_windows:=$(WIN_JAVA_LIB) advapi32.lib winmm.lib,\
		LDFLAGS_SUFFIX_posix:=-ljava -ljvm,\
		LDFLAGS_SUFFIX_solaris:=-lc ,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jsound.dll" \
			  -D "JDK_INTERNAL_NAME=jsound" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjsound,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJSOUND) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJSOUND)

##########################################################################################

ifneq ($(filter jsoundalsa, $(EXTRA_SOUND_JNI_LIBS)),)

$(eval $(call SetupNativeCompilation,BUILD_LIBJSOUNDALSA,\
		LIBRARY:=jsoundalsa,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBJSOUND_SRC_DIRS),\
		INCLUDE_FILES:=Utilities.c $(LIBJSOUND_MIDIFILES) $(LIBJSOUND_PORTFILES) \
                                $(LIBJSOUND_DAUDIOFILES) \
				PLATFORM_API_LinuxOS_ALSA_CommonUtils.c   \
				PLATFORM_API_LinuxOS_ALSA_PCM.c     \
				PLATFORM_API_LinuxOS_ALSA_PCMUtils.c   \
				PLATFORM_API_LinuxOS_ALSA_MidiIn.c  \
				PLATFORM_API_LinuxOS_ALSA_MidiOut.c \
				PLATFORM_API_LinuxOS_ALSA_MidiUtils.c \
				PLATFORM_API_LinuxOS_ALSA_Ports.c,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			$(LIBJSOUND_CFLAGS) \
			-DUSE_DAUDIO=TRUE \
			-DUSE_PORTS=TRUE  \
			-DUSE_PLATFORM_MIDI_OUT=TRUE \
			-DUSE_PLATFORM_MIDI_IN=TRUE, \
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjsoundalsa/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=-lasound -ljava -ljvm,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjsoundalsa,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJSOUNDALSA) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJSOUNDALSA)

endif

##########################################################################################

ifneq ($(filter jsoundds, $(EXTRA_SOUND_JNI_LIBS)),)

$(eval $(call SetupNativeCompilation,BUILD_LIBJSOUNDDS,\
		LIBRARY:=jsoundds,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBJSOUND_SRC_DIRS),\
		INCLUDE_FILES:=Utilities.c $(LIBJSOUND_DAUDIOFILES) \
				PLATFORM_API_WinOS_DirectSound.cpp, \
		LANG:=C++,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			$(LIBJSOUND_CFLAGS) \
			-DUSE_DAUDIO=TRUE \
                        -I$(DXSDK_INCLUDE_PATH), \
		LDFLAGS:=$(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
			 $(call SET_SHARED_LIBRARY_ORIGIN),\
		LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX) dsound.lib winmm.lib user32.lib ole32.lib,\
		VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
		RC_FLAGS:=$(RC_FLAGS)\
			  -D "JDK_FNAME=jsoundds.dll" \
			  -D "JDK_INTERNAL_NAME=jsoundds" \
			  -D "JDK_FTYPE=0x2L",\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjsoundds,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJSOUNDDS) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJSOUNDDS)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), solaris)
ifndef OPENJDK

$(eval $(call SetupNativeCompilation,BUILD_LIBJ2UCRYPTO,\
		LIBRARY:=j2ucrypto,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/closed/solaris/native/com/oracle/security/ucrypto,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/closed/solaris/native/com/oracle/security/ucrypto ,\
		MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libj2ucrypto/mapfile-vers, \
		LDFLAGS:=$(LDFLAGS_JDKLIB),\
		LDFLAGS_SUFFIX:=$(LIBDL),\
		LDFLAGS_SUFFIX_solaris:=-lc,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libj2ucrypto,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBJ2UCRYPTO) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBJ2UCRYPTO)

endif
endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

$(eval $(call SetupNativeCompilation,BUILD_LIBAPPLESCRIPTENGINE,\
		LIBRARY:=AppleScriptEngine,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/macosx/native/apple/applescript,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/macosx/native/apple/applescript \
			-F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                        -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks, \
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX:=-framework Cocoa \
                                -framework Carbon \
                                -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                                -framework JavaNativeFoundation \
                                $(LDFLAGS_JDKLIB_SUFFIX),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libAppleScriptEngine,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(BUILD_LIBAPPLESCRIPTENGINE) : $(BUILD_LIBJAVA)

BUILD_LIBRARIES += $(BUILD_LIBAPPLESCRIPTENGINE)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

$(eval $(call SetupNativeCompilation,BUILD_LIBOSXAPP,\
		LIBRARY:=osxapp,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/macosx/native/sun/osxapp,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-I$(JDK_TOPDIR)/src/macosx/native/sun/osxapp \
			-I$(JDK_OUTPUTDIR)/gensrc/sun/osxapp \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                        -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks,\
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_macosx:=\
	-framework Accelerate \
	-framework ApplicationServices \
	-framework AudioToolbox \
	-framework Carbon \
	-framework Cocoa \
	-framework Security \
	-framework ExceptionHandling \
        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
	-framework JavaNativeFoundation \
	-framework JavaRuntimeSupport \
	-framework OpenGL \
	-framework IOSurface \
	-framework QuartzCore, \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libosxapp,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBOSXAPP)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

LIBOSX_DIRS:=\
  $(JDK_TOPDIR)/src/macosx/native/com/apple/concurrent \
  $(JDK_TOPDIR)/src/macosx/native/java/util \
  $(JDK_TOPDIR)/src/macosx/native/com/apple/eio \
  $(JDK_TOPDIR)/src/macosx/native/apple/security \
  $(JDK_TOPDIR)/src/macosx/native/apple/launcher

$(eval $(call SetupNativeCompilation,BUILD_LIBOSX,\
		LIBRARY:=osx,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBOSX_DIRS),\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(foreach dir,$(LIBOSX_DIRS),-I$(dir)) \
                        -I$(JDK_TOPDIR)/src/macosx/native/sun/osxapp \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                        -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks,\
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_macosx:=\
    -losxapp \
    -framework Cocoa \
    -framework ApplicationServices \
    -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
    -framework JavaNativeFoundation \
    -framework JavaRuntimeSupport \
    -framework Security \
    -framework SystemConfiguration \
    $(LDFLAGS_JDKLIB_SUFFIX), \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libosx,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBOSX)

$(BUILD_LIBOSX) : $(BUILD_LIBOSXAPP)

$(BUILD_LIBOSX) : $(BUILD_LIBJAVA)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

LIBAWT_LWAWT_FILES:=\
        awt.m \
        ApplicationDelegate.m \
        CFRetainedResource.m \
        CGLGraphicsConfig.m \
        CGLSurfaceData.m \
        CGLLayer.m \
        CGraphicsConfig.m \
        CGraphicsDevice.m \
        CGraphicsEnv.m \
        CCharToGlyphMapper.m \
        CSystemColors.m \
        AWTFont.m \
        CGGlyphOutlines.m \
        CGGlyphImages.m \
        CoreTextSupport.m \
        AWTStrike.m \
        InitIDs.m \
        AWTEvent.m \
        AWTView.m \
        AWTWindow.m \
        AWTSurfaceLayers.m \
        CCursorManager.m \
        CClipboard.m \
        CDataTransferer.m \
        CDragSource.m \
        CDragSourceContextPeer.m \
        CDropTarget.m \
        CDropTargetContextPeer.m \
        CInputMethod.m \
        CDesktopPeer.m \
        OSVersion.m \
        DnDUtilities.m \
        CFileDialog.m \
        CImage.m \
        CMenu.m \
        CMenuBar.m \
        CMenuComponent.m \
        CMenuItem.m \
        CPopupMenu.m \
        CRobot.m \
        CTrayIcon.m \
        CWrapper.m \
        JavaAccessibilityAction.m \
        JavaAccessibilityUtilities.m \
        JavaComponentAccessibility.m \
        JavaTextAccessibility.m \
        LWCToolkit.m \
        GeomUtilities.m \
        CPrinterJob.m \
        PrintModel.m \
        PrinterSurfaceData.m \
        PrinterView.m \
        QuartzSurfaceData.m \
        QuartzRenderer.m \
        CTextPipe.m \
        ImageSurfaceData.m \
        awt_DrawingSurface.m \
        \
        OGLBlitLoops.c \
        OGLBufImgOps.c \
        OGLContext.c \
        OGLFuncs.c \
        OGLMaskBlit.c \
        OGLMaskFill.c \
        OGLPaints.c \
        OGLRenderQueue.c \
        OGLRenderer.c \
        OGLSurfaceData.c \
        OGLTextRenderer.c \
        OGLVertexCache.c \
        AccelGlyphCache.c \
        CUPSfuncs.c


LIBAWT_LWAWT_DIRS:=\
  $(JDK_TOPDIR)/src/macosx/native/sun/awt \
  $(JDK_TOPDIR)/src/macosx/native/sun/font \
  $(JDK_TOPDIR)/src/macosx/native/sun/java2d/opengl \
  $(JDK_TOPDIR)/src/solaris/native/sun/awt \
  $(JDK_TOPDIR)/src/share/native/sun/font \
  $(JDK_TOPDIR)/src/share/native/sun/java2d/opengl \

$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_LWAWT,\
		LIBRARY:=awt_lwawt,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(LIBAWT_LWAWT_DIRS),\
		LANG:=C,\
		INCLUDE_FILES:=$(LIBAWT_LWAWT_FILES),\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        $(X_CFLAGS) \
                        $(X_LIBS) \
                        $(foreach dir,$(LIBAWT_LWAWT_DIRS),-I$(dir)) \
                        -I$(JDK_TOPDIR)/src/macosx/native/sun/osxapp \
                        -I$(JDK_TOPDIR)/src/share/native/sun/java2d \
                        -I$(JDK_TOPDIR)/src/solaris/native/sun/java2d \
                        -I$(JDK_TOPDIR)/src/share/native/sun/awt/image \
                        -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
                        -I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
                        -I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
                        -I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                        -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks,\
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX_macosx:=-lawt -lmlib_image -losxapp -ljvm $(LIBM) \
				       -framework Accelerate \
				       -framework ApplicationServices \
				       -framework AudioToolbox \
				       -framework Carbon \
				       -framework Cocoa \
				       -framework Security \
				       -framework ExceptionHandling \
				       -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
				       -framework JavaNativeFoundation \
				       -framework JavaRuntimeSupport \
				       -framework OpenGL \
				       -framework QuartzCore -ljava,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libawt_lwawt,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBAWT_LWAWT)

$(BUILD_LIBAWT_LWAWT) : $(BUILD_LIBAWT) 

$(BUILD_LIBAWT_LWAWT) : $(BUILD_LIBMLIB_IMAGE)

$(BUILD_LIBAWT_LWAWT) : $(BUILD_LIBOSXAPP)

$(BUILD_LIBAWT_LWAWT) : $(BUILD_LIBJAVA)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

$(eval $(call SetupNativeCompilation,BUILD_LIBOSXUI,\
		LIBRARY:=osxui,\
                OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(JDK_TOPDIR)/src/macosx/native/com/apple/laf,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=$(CFLAGS_JDKLIB) \
                        -I$(JDK_TOPDIR)/src/macosx/native/com/apple/laf \
			-I$(JDK_TOPDIR)/src/macosx/native/sun/osxapp \
			-I$(JDK_TOPDIR)/src/macosx/native/sun/awt \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks, \
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN) \
			 -Xlinker -rpath -Xlinker @loader_path,\
		LDFLAGS_SUFFIX_macosx:=-lawt -losxapp -lawt_lwawt \
				       -framework Cocoa \
				       -framework Carbon \
				       -framework ApplicationServices \
				       -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
				       -framework JavaNativeFoundation \
				       -framework JavaRuntimeSupport \
				       -ljava -ljvm,\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libosxui,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

BUILD_LIBRARIES += $(BUILD_LIBOSXUI)

$(BUILD_LIBOSXUI) : $(BUILD_LIBAWT) 

$(BUILD_LIBOSXUI) : $(BUILD_LIBOSXAPP)

$(BUILD_LIBOSXUI) : $(BUILD_LIBAWT_LWAWT)

#$(BUILD_LIBOSXUI) : $(BUILD_LIBJAVA)

endif

##########################################################################################

ifeq ($(OPENJDK_TARGET_OS), macosx)

# Ugly hack to mimic behaviour in old build where this is built as an xcode project.
SET_SHARED_LIBRARY_NAME=-Xlinker -install_name -Xlinker /usr/local/lib/libJObjC.dylib

$(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC32,\
		LIBRARY:=JObjC,\
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs/libjobjc32,\
		SRC:=$(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
                     $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native ,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=-fpascal-strings \
                        -fobjc-gc \
                        -gdwarf-2 \
                        $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
			-m32,\
		LDFLAGS:=$(LDFLAGS_JDKLIB)\
			-m32, \
		LDFLAGS_SUFFIX:=-framework Foundation -framework JavaVM \
                                  -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                                  -framework JavaNativeFoundation \
                                  -lffi, \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjobjc32,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC64,\
		LIBRARY:=JObjC,\
                OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs/libjobjc64,\
		SRC:=$(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
                     $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native ,\
		LANG:=C,\
		OPTIMIZATION:=LOW, \
		CFLAGS:=-fpascal-strings \
                        -fobjc-gc \
                        -gdwarf-2 \
                        $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
                        -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
			, \
		LDFLAGS:=-fpascal-strings \
                         -fobjc-gc \
                         -gdwarf-2 \
                         $(LDFLAGS_JDKLIB)\
			 $(call SET_SHARED_LIBRARY_ORIGIN), \
		LDFLAGS_SUFFIX:=-framework Foundation -framework JavaVM \
                                  -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
                                  -framework JavaNativeFoundation \
                                  -lffi, \
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjobjc64,\
		DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES)))

$(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX): $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)
	$(LIPO) -create -output $@ $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)

BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX)

endif

##########################################################################################

ifndef OPENJDK
ifeq ($(OPENJDK_TARGET_OS), windows)

  ACCESSBRIDGE_SRCDIR:=$(JDK_TOPDIR)/src/closed/windows/native/sun/bridge

  define SetupAccessBridge
    # Parameter 1 Suffix
    # Parameter 2 Machine
    # Parameter 3 ACCESSBRIDGE_ARCH_ suffix

    $(call SetupNativeCompilation,BUILD_JAWTACCESSBRIDGE$1,\
		LIBRARY=JAWTAccessBridge$1,\
		OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(ACCESSBRIDGE_SRCDIR),\
		INCLUDE_FILES:=JAWTAccessBridge.cpp,\
		LANG:=C++,\
		OPTIMIZATION:=LOW,\
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-DACCESSBRIDGE_ARCH_$3,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \
			 winspool.lib jawt.lib comdlg32.lib advapi32.lib shell32.lib \
			 ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
			 -subsystem:windows -machine:$2 \
			 -def:$(ACCESSBRIDGE_SRCDIR)/JAWTAccessBridge.DEF,\
		VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\
		RC_FLAGS:=$(RC_FLAGS),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjawtaccessbridge$1,\
		DEBUG_SYMBOLS:=true)

    $$(BUILD_JAWTACCESSBRIDGE$1): $(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX)

    $(call SetupNativeCompilation,BUILD_JAVAACCESSBRIDGE$1,\
		LIBRARY=JavaAccessBridge$1,\
		OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(ACCESSBRIDGE_SRCDIR),\
		INCLUDE_FILES:=AccessBridgeATInstance.cpp AccessBridgeDebug.cpp \
			       AccessBridgeJavaEntryPoints.cpp \
			       AccessBridgeMessages.cpp JavaAccessBridge.cpp,\
		LANG:=C++,\
		OPTIMIZATION:=LOW,\
		CFLAGS:=$(CFLAGS_JDKLIB) \
			-DACCESSBRIDGE_ARCH_$3,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \
			 winspool.lib comdlg32.lib advapi32.lib shell32.lib \
			 ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
			 -subsystem:windows -machine:$2 \
			 -def:$(ACCESSBRIDGE_SRCDIR)/JavaAccessBridge.DEF,\
		VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\
		RC_FLAGS:=$(RC_FLAGS),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjavaaccessbridge$1,\
		DEBUG_SYMBOLS:=true)

    $(call SetupNativeCompilation,BUILD_WINDOWSACCESSBRIDGE$1,\
		LIBRARY=WindowsAccessBridge$1,\
		OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
		SRC:=$(ACCESSBRIDGE_SRCDIR),\
		INCLUDE_FILES:=AccessBridgeJavaVMInstance.cpp AccessBridgeMessageQueue.cpp \
			       AccessBridgeMessages.cpp AccessBridgeWindowsEntryPoints.cpp \
			       WinAccessBridge.cpp AccessBridgeDebug.cpp \
			       AccessBridgeEventHandler.cpp,\
		LANG:=C++,\
		OPTIMIZATION:=LOW,\
		CFLAGS:=$(filter-out -MD,$(CFLAGS_JDKLIB)) -MT \
			-DACCESSBRIDGE_ARCH_$3,\
		LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \
			 winspool.lib comdlg32.lib advapi32.lib shell32.lib \
			 ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
			 -subsystem:windows -machine:$2 \
			 -def:$(ACCESSBRIDGE_SRCDIR)/WinAccessBridge.DEF,\
		VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\
		RC_FLAGS:=$(RC_FLAGS),\
		OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libwindowsaccessbridge$1,\
		DEBUG_SYMBOLS:=true)

    BUILD_LIBRARIES += $$(BUILD_JAWTACCESSBRIDGE$1) $$(BUILD_JAVAACCESSBRIDGE$1) \
		       $$(BUILD_WINDOWSACCESSBRIDGE$1)

  endef

  ifeq ($(OPENJDK_TARGET_CPU_BITS),32)
    $(eval $(call SetupAccessBridge,-32,I386,32))
    $(eval $(call SetupAccessBridge,,I386,LEGACY))
  else
    $(eval $(call SetupAccessBridge,-64,X64,64))
  endif
endif
endif


##########################################################################################

all: $(COPY_FILES) $(BUILD_LIBRARIES)

.PHONY: all
