8003477: build-infra: Remove explicit source file listings for libs when possible
Reviewed-by: ohair, ohrstrom
## Copyright (c) 2012, 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.## Utilities used in this MakefileBASENAME=basenameCAT=catCD=cdCMP=cmpCP=cpECHO=echoMKDIR=mkdirPRINTF=printfPWD=pwdTAR=tarifeq ($(PLATFORM),windows) ZIP=zipelse # store symbolic links as the link ZIP=zip -yendif# Insure we have a path that looks like it came from pwd# (This is mostly for Windows sake and drive letters)define UnixPath # path$(shell (cd "$1" && $(PWD)))endef# Current root directoryCURRENT_DIRECTORY := $(shell $(PWD))# Build directory rootBUILD_DIR_ROOT = $(CURRENT_DIRECTORY)/build# All configured Makefiles to runALL_MAKEFILES = $(wildcard $(BUILD_DIR_ROOT)/*-*/Makefile)# All bundles to createALL_IMAGE_DIRS = $(wildcard $(BUILD_DIR_ROOT)/*-*/images/*-image)# Build all the standard 'all', 'images', and 'clean' targetsall images clean: checks @if [ "$(ALL_MAKEFILES)" = "" ] ; then \ $(ECHO) "ERROR: No configurations to build"; exit 1; \ fi @for bdir in $(dir $(ALL_MAKEFILES)) ; do \ $(ECHO) "$(CD) $${bdir} && $(MAKE) $@" ; \ $(CD) $${bdir} && $(MAKE) $@ ; \ done# TBD: Deploy input$(BUILD_DIR_ROOT)/.deploy_input: @if [ "$(ALL_MAKEFILES)" = "" ] ; then \ $(ECHO) "ERROR: No configurations to build"; exit 1; \ fi @for bdir in $(dir $(ALL_MAKEFILES)) ; do \ if [ deploy/make/Makefile ] ; then \ echo "Attempting deploy build." ; \ ( \ $(RM) -r $${bdir}/deploy_input ; \ $(MKDIR) -p $${bdir}/deploy_input ; \ ( $(CD) $${bdir}/images && $(TAR) -cf - j2sdk-image j2re-image ) \ | ( $(CD) $${bdir}/deploy_input && $(TAR) -xf - ) ; \ ) ; \ fi; \ done touch $@# TBD: Deploy imagesdeploy: $(BUILD_DIR_ROOT)/.deploy_input @if [ "$(ALL_MAKEFILES)" = "" ] ; then \ $(ECHO) "ERROR: No configurations to build"; exit 1; \ fi @for bdir in $(dir $(ALL_MAKEFILES)) ; do \ if [ deploy/make/Makefile ] ; then \ echo "Attempting deploy build." ; \ ( \ $(CD) deploy/make && \ $(MAKE) \ ABS_OUTPUTDIR=$${bdir}/deploy_input \ OUTPUTDIR=$${bdir}/deploy_input \ ) ; \ fi; \ done# TBD: Install bundlesinstall:# Bundle creationbundles: @if [ "$(ALL_IMAGE_DIRS)" = "" ] ; then \ $(ECHO) "ERROR: No images to bundle"; exit 1; \ fi @for i in $(ALL_IMAGE_DIRS) ; do \ $(MKDIR) -p $${i}/../../bundles && \ $(RM) $${i}/../../bundles/`$(BASENAME) $${i}`.zip && \ $(ECHO) "$(CD) $${i} && $(ZIP) -q -r ../../bundles/`$(BASENAME) $${i}`.zip ." && \ $(CD) $${i} && $(ZIP) -q -r ../../bundles/`$(BASENAME) $${i}`.zip . ; \ done# Clobber all the built filesclobber:: $(RM) -r $(BUILD_DIR_ROOT)# Make various checks to insure the build will be successful# Possibilities:# * Check that if any closed repo is provided, they all must be.# * Check that all open repos exist, at least until we are ready for some# kind of partial build.checks: @$(ECHO) "No checks yet"# Keep track of user targetsUSER_TARGETS += all deploy install images clean clobber checks############################################################################ To help in adoption of the new configure&&make build process, a bridge# build will use the old settings to run configure and do the build.# Build with the configure bridgebridgeBuild: bridge2configure images# Bridge from old Makefile ALT settings to configure optionsbridge2configure: $(BUILD_DIR_ROOT)/.bridge2configureOpts bash ./configure $(strip $(shell $(CAT) $<))# Create a file with configure options created from old Makefile mechanisms.$(BUILD_DIR_ROOT)/.bridge2configureOpts: $(BUILD_DIR_ROOT)/.bridge2configureOptsLatest $(RM) $@ $(CP) $< $@# Use this file to only change when obvious things have changed$(BUILD_DIR_ROOT)/.bridge2configureOptsLatest: FRC $(RM) $@.tmp $(MKDIR) -p $(BUILD_DIR_ROOT) @$(ECHO) " --with-debug-level=$(if $(DEBUG_LEVEL),$(DEBUG_LEVEL),release) " >> $@.tmpifdef ARCH_DATA_MODEL @$(ECHO) " --with-target-bits=$(ARCH_DATA_MODEL) " >> $@.tmpendififdef ALT_PARALLEL_COMPILE_JOBS @$(ECHO) " --with-num-cores=$(ALT_PARALLEL_COMPILE_JOBS) " >> $@.tmpendififdef ALT_BOOTDIR @$(ECHO) " --with-boot-jdk=$(call UnixPath,$(ALT_BOOTDIR)) " >> $@.tmpendififdef ALT_CUPS_HEADERS_PATH @$(ECHO) " --with-cups-include=$(call UnixPath,$(ALT_CUPS_HEADERS_PATH)) " >> $@.tmpendififdef ALT_FREETYPE_HEADERS_PATH @$(ECHO) " --with-freetype=$(call UnixPath,$(ALT_FREETYPE_HEADERS_PATH)/..) " >> $@.tmpendif @if [ -f $@ ] ; then \ if ! $(CMP) $@ $@.tmp > /dev/null ; then \ $(CP) $@.tmp $@ ; \ fi ; \ else \ $(CP) $@.tmp $@ ; \ fi $(RM) $@.tmp# Clobber all the built filesclobber:: bridge2clobberbridge2clobber:: $(RM) $(BUILD_DIR_ROOT)/.bridge2* $(RM) $(BUILD_DIR_ROOT)/.deploy_input# Keep track of phony targetsPHONY_LIST += bridge2configure bridgeBuild bridge2clobber############################################################################ Sanity checks (history target)#sanity: checks# Keep track of user targetsUSER_TARGETS += sanity############################################################################ Javadocs#javadocs: cd common/makefiles && $(MAKE) -f MakefileJavadoc.gmk# Keep track of user targetsUSER_TARGETS += javadocs############################################################################ JPRT targetsifndef JPRT_ARCHIVE_BUNDLE JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/j2sdk-image.zipendifjprt_build_product: DEBUG_LEVEL=releasejprt_build_product: BUILD_DIRNAME=*-releasejprt_build_product: jprt_build_genericjprt_build_fastdebug: DEBUG_LEVEL=fastdebugjprt_build_fastdebug: BUILD_DIRNAME=*-fastdebugjprt_build_fastdebug: jprt_build_genericjprt_build_debug: DEBUG_LEVEL=slowdebugjprt_build_debug: BUILD_DIRNAME=*-debugjprt_build_debug: jprt_build_genericjprt_build_generic: $(JPRT_ARCHIVE_BUNDLE)$(JPRT_ARCHIVE_BUNDLE): bridgeBuild bundles $(MKDIR) -p $(@D) $(RM) $@ $(CP) $(BUILD_DIR_ROOT)/$(BUILD_DIRNAME)/bundles/j2sdk-image.zip $@# Keep track of phony targetsPHONY_LIST += jprt_build_product jprt_build_fastdebug jprt_build_debug \ jprt_build_generic############################################################################ Help targetHELP_FORMAT=%12s%s\nhelp: @$(PRINTF) "# JDK Makefile\n" @$(PRINTF) "#\n" @$(PRINTF) "# Usage: make [Target]\n" @$(PRINTF) "#\n" @$(PRINTF) "# $(HELP_FORMAT)" "Target " "Description" @$(PRINTF) "# $(HELP_FORMAT)" "------ " "-----------" @for i in $(USER_TARGETS) ; do \ $(MAKE) help_$${i} ; \ done @$(PRINTF) "#\n"help_all: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Build the entire jdk but not the images"help_images: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Create the jdk images for the builds"help_deploy: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Create the jdk deploy images from the jdk images"help_install: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Create the jdk install bundles from the deploy images"help_clean: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Clean and prepare for a fresh build from scratch"help_clobber: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Clean and also purge any hidden derived data"help_checks: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Perform various checks to make sure we can build"help_sanity: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Same as 'make checks'"help_javadocs: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Build the javadocs"help_help: @$(PRINTF) "# $(HELP_FORMAT)" "$(subst help_,,$@) - " \ "Print out the help messages"# Keep track of user targetsUSER_TARGETS += help############################################################################ Phony targets.PHONY: $(PHONY_LIST) $(USER_TARGETS)# Force targetFRC: