#
# 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.
#

default: 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_JAVA_LIB := $(JDK_OUTPUTDIR)/objs/libjava/java.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

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

include lib/CoreLibraries.gmk

include lib/PlatformLibraries.gmk

include lib/NetworkingLibraries.gmk

include lib/NioLibraries.gmk

include lib/SecurityLibraries.gmk

include lib/ServiceabilityLibraries.gmk

include lib/Awt2dLibraries.gmk

include lib/SoundLibraries.gmk

# Include the corresponding custom file, if present. 
-include $(CUSTOM_MAKE_DIR)/CompileNativeLibraries.gmk

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

all: $(COPY_FILES) $(BUILD_LIBRARIES)

.PHONY: all
