#
# 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 JavaCompilation.gmk
include NativeCompilation.gmk

# Setup the java compilers for the JDK build.
include Setup.gmk
# We need the tools.
include Tools.gmk

# Now include all the rules that generate Java sources.
# The Java sources are written into the gensrc_.... directories.

include gensrc/GensrcProperties.gmk
GENSRC += $(GENSRC_PROPERTIES)

include gensrc/GensrcLocaleDataMetaInfo.gmk
GENSRC += $(GENSRC_LOCALEDATAMETAINFO)

include gensrc/GensrcCharacterData.gmk
GENSRC += $(GENSRC_CHARACTERDATA)

include gensrc/GensrcJDWP.gmk
GENSRC += $(GENSRC_JDWP)

include gensrc/GensrcMisc.gmk
GENSRC += $(GENSRC_MISC)

include gensrc/GensrcCharsetMapping.gmk
GENSRC += $(GENSRC_CHARSETMAPPING)

include gensrc/GensrcCharsetCoder.gmk
GENSRC += $(GENSRC_CHARSETCODER)

include gensrc/GensrcBuffer.gmk
GENSRC += $(GENSRC_BUFFER)

include gensrc/GensrcExceptions.gmk
GENSRC += $(GENSRC_EXCEPTIONS)

ifneq ($(OPENJDK_TARGET_OS), windows)
  include gensrc/GensrcIcons.gmk
  GENSRC += $(GENSRC_AWT_ICONS)

  ifeq ($(OPENJDK_TARGET_OS), macosx)
    GENSRC += $(GENSRC_OSX_ICONS)
  endif

  ifneq ($(OPENJDK_TARGET_OS), macosx)
    include gensrc/GensrcX11Wrappers.gmk
    GENSRC += $(GENSRC_X11WRAPPERS)
  endif
endif

include gensrc/GensrcCLDR.gmk
GENSRC += $(GENSRC_CLDR)

include gensrc/GensrcSwing.gmk
GENSRC += $(GENSRC_SWING_BEANINFO) $(GENSRC_SWING_NIMBUS)

$(GENSRC): $(BUILD_TOOLS)

all: $(GENSRC)


.PHONY: all
