| # |
| # 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 Makefile |
| BASENAME=basename |
| CAT=cat |
| CD=cd |
| CMP=cmp |
| CP=cp |
| ECHO=echo |
| MKDIR=mkdir |
| PRINTF=printf |
| PWD=pwd |
| TAR=tar |
| ifeq ($(PLATFORM),windows) |
| ZIP=zip |
| else |
| # store symbolic links as the link |
| ZIP=zip -y |
| endif |
| # 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 directory |
| CURRENT_DIRECTORY := $(shell $(PWD)) |
| |
| # Build directory root |
| BUILD_DIR_ROOT = $(CURRENT_DIRECTORY)/build |
| |
| # All configured Makefiles to run |
| ALL_MAKEFILES = $(wildcard $(BUILD_DIR_ROOT)/*-*/Makefile) |
| |
| # All bundles to create |
| ALL_IMAGE_DIRS = $(wildcard $(BUILD_DIR_ROOT)/*-*/images/*-image) |
| |
| # Build all the standard 'all', 'images', and 'clean' targets |
| all 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 images |
| deploy: $(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 bundles |
| install: |
| |
| # Bundle creation |
| bundles: |
| @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 files |
| clobber:: |
| $(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 targets |
| USER_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 bridge |
| bridgeBuild: bridge2configure images |
| |
| # Bridge from old Makefile ALT settings to configure options |
| bridge2configure: $(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) " >> $@.tmp |
| ifdef ARCH_DATA_MODEL |
| @$(ECHO) " --with-target-bits=$(ARCH_DATA_MODEL) " >> $@.tmp |
| endif |
| ifdef ALT_PARALLEL_COMPILE_JOBS |
| @$(ECHO) " --with-num-cores=$(ALT_PARALLEL_COMPILE_JOBS) " >> $@.tmp |
| endif |
| ifdef ALT_BOOTDIR |
| @$(ECHO) " --with-boot-jdk=$(call UnixPath,$(ALT_BOOTDIR)) " >> $@.tmp |
| endif |
| ifdef ALT_CUPS_HEADERS_PATH |
| @$(ECHO) " --with-cups-include=$(call UnixPath,$(ALT_CUPS_HEADERS_PATH)) " >> $@.tmp |
| endif |
| ifdef ALT_FREETYPE_HEADERS_PATH |
| @$(ECHO) " --with-freetype=$(call UnixPath,$(ALT_FREETYPE_HEADERS_PATH)/..) " >> $@.tmp |
| endif |
| @if [ -f $@ ] ; then \ |
| if ! $(CMP) $@ $@.tmp > /dev/null ; then \ |
| $(CP) $@.tmp $@ ; \ |
| fi ; \ |
| else \ |
| $(CP) $@.tmp $@ ; \ |
| fi |
| $(RM) $@.tmp |
| |
| # Clobber all the built files |
| clobber:: bridge2clobber |
| bridge2clobber:: |
| $(RM) $(BUILD_DIR_ROOT)/.bridge2* |
| $(RM) $(BUILD_DIR_ROOT)/.deploy_input |
| |
| # Keep track of phony targets |
| PHONY_LIST += bridge2configure bridgeBuild bridge2clobber |
| |
| ########################################################################### |
| # Sanity checks (history target) |
| # |
| |
| sanity: checks |
| |
| # Keep track of user targets |
| USER_TARGETS += sanity |
| |
| ########################################################################### |
| # Javadocs |
| # |
| |
| javadocs: |
| cd common/makefiles && $(MAKE) -f MakefileJavadoc.gmk |
| |
| # Keep track of user targets |
| USER_TARGETS += javadocs |
| |
| ########################################################################### |
| # JPRT targets |
| |
| ifndef JPRT_ARCHIVE_BUNDLE |
| JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/j2sdk-image.zip |
| endif |
| |
| jprt_build_product: DEBUG_LEVEL=release |
| jprt_build_product: BUILD_DIRNAME=*-release |
| jprt_build_product: jprt_build_generic |
| |
| jprt_build_fastdebug: DEBUG_LEVEL=fastdebug |
| jprt_build_fastdebug: BUILD_DIRNAME=*-fastdebug |
| jprt_build_fastdebug: jprt_build_generic |
| |
| jprt_build_debug: DEBUG_LEVEL=slowdebug |
| jprt_build_debug: BUILD_DIRNAME=*-debug |
| jprt_build_debug: jprt_build_generic |
| |
| jprt_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 targets |
| PHONY_LIST += jprt_build_product jprt_build_fastdebug jprt_build_debug \ |
| jprt_build_generic |
| |
| ########################################################################### |
| # Help target |
| |
| HELP_FORMAT=%12s%s\n |
| |
| help: |
| @$(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 targets |
| USER_TARGETS += help |
| |
| ########################################################################### |
| # Phony targets |
| .PHONY: $(PHONY_LIST) $(USER_TARGETS) |
| |
| # Force target |
| FRC: |