1 #
   2 # Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
   3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 #
   5 # This code is free software; you can redistribute it and/or modify it
   6 # under the terms of the GNU General Public License version 2 only, as
   7 # published by the Free Software Foundation.
   8 #
   9 # This code is distributed in the hope that it will be useful, but WITHOUT
  10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 # version 2 for more details (a copy is included in the LICENSE file that
  13 # accompanied this code).
  14 #
  15 # You should have received a copy of the GNU General Public License version
  16 # 2 along with this work; if not, write to the Free Software Foundation,
  17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 #
  19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 # or visit www.oracle.com if you need additional information or have any
  21 # questions.
  22 #
  23 #
  24 
  25 # macosx universal builds
  26 universal_product:
  27         $(MAKE) MACOSX_UNIVERSAL=true all_product_universal
  28 universal_optimized:
  29         $(MAKE) MACOSX_UNIVERSAL=true all_optimized_universal
  30 universal_fastdebug:
  31         $(MAKE) MACOSX_UNIVERSAL=true all_fastdebug_universal
  32 universal_debug:
  33         $(MAKE) MACOSX_UNIVERSAL=true all_debug_universal
  34 
  35 
  36 # Universal builds include 1 or more architectures in a single binary
  37 all_product_universal:
  38 #       $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_PRODUCT_TARGETS)
  39         $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_PRODUCT_TARGETS)
  40         $(QUIETLY) $(MAKE) BUILD_FLAVOR=product EXPORT_SUBDIR= universalize
  41 all_optimized_universal:
  42 #       $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_OPTIMIZED_TARGETS)
  43         $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_OPTIMIZED_TARGETS)
  44         $(QUIETLY) $(MAKE) BUILD_FLAVOR=optimized EXPORT_SUBDIR=/optimized universalize
  45 all_fastdebug_universal:
  46 #       $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_FASTDEBUG_TARGETS)
  47         $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_FASTDEBUG_TARGETS)
  48         $(QUIETLY) $(MAKE) BUILD_FLAVOR=fastdebug EXPORT_SUBDIR=/fastdebug universalize
  49 all_debug_universal:
  50 #       $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_DEBUG_TARGETS)
  51         $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_DEBUG_TARGETS)
  52         $(QUIETLY) $(MAKE) BUILD_FLAVOR=debug EXPORT_SUBDIR=/debug universalize
  53 
  54 
  55 # Consolidate architecture builds into a single Universal binary
  56 universalize: $(UNIVERSAL_LIPO_LIST) $(UNIVERSAL_COPY_LIST)
  57         $(RM) -r $(EXPORT_PATH)/jre/lib/{i386,amd64}
  58 
  59 
  60 # Package built libraries in a universal binary
  61 $(UNIVERSAL_LIPO_LIST):
  62         BUILT_LIPO_FILES="`find $(EXPORT_JRE_LIB_DIR)/{i386,amd64}/$(subst $(EXPORT_JRE_LIB_DIR)/,,$@) 2>/dev/null`"; \
  63         if [ -n "$${BUILT_LIPO_FILES}" ]; then \
  64           $(MKDIR) -p $(shell dirname $@); \
  65           lipo -create -output $@ $${BUILT_LIPO_FILES}; \
  66         fi
  67 
  68 
  69 # Copy built non-universal binaries in place
  70 # - copies directories; including empty dirs
  71 # - copies files, symlinks, other non-directory files
  72 $(UNIVERSAL_COPY_LIST):
  73         BUILT_COPY_FILES="`find $(EXPORT_JRE_LIB_DIR)/{i386,amd64}/$(subst $(EXPORT_JRE_LIB_DIR)/,,$@) -prune 2>/dev/null`"; \
  74         if [ -n "$${BUILT_COPY_FILES}" ]; then \
  75           for i in $${BUILT_COPY_FILES}; do \
  76             $(MKDIR) -p $(shell dirname $@); \
  77             $(CP) -R $${i} $@; \
  78           done; \
  79         fi
  80 
  81 
  82 # Replace arch specific binaries with universal binaries
  83 # Do not touch jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX)
  84 # That symbolic link belongs to the 'jdk' build.
  85 export_universal:
  86         $(RM) -r $(EXPORT_PATH)/jre/lib/{i386,amd64}
  87         $(RM) -r $(JDK_IMAGE_DIR)/jre/lib/{i386,amd64}
  88         ($(CD) $(EXPORT_PATH) && \
  89           $(TAR) -cf - *) | \
  90           ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xpf -)
  91 
  92 
  93 # Overlay universal binaries
  94 # Do not touch jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX)
  95 # That symbolic link belongs to the 'jdk' build.
  96 copy_universal:
  97         $(RM) -r $(JDK_IMAGE_DIR)$(COPY_SUBDIR)/jre/lib/{i386,amd64}
  98         ($(CD) $(EXPORT_PATH)$(COPY_SUBDIR) && \
  99           $(TAR) -cf - *) | \
 100           ($(CD) $(JDK_IMAGE_DIR)$(COPY_SUBDIR) && $(TAR) -xpf -)
 101 
 102 
 103 # Additional processing for universal builds
 104 export_product_jdk::
 105         $(MAKE) EXPORT_SUBDIR=           export_universal
 106 export_optimized_jdk::
 107         $(MAKE) EXPORT_SUBDIR=/optimized export_universal
 108 export_fastdebug_jdk::
 109         $(MAKE) EXPORT_SUBDIR=/fastdebug export_universal
 110 export_debug_jdk::
 111         $(MAKE) EXPORT_SUBDIR=/debug     export_universal
 112 copy_product_jdk::
 113         $(MAKE) COPY_SUBDIR=             copy_universal
 114 copy_optimized_jdk::
 115         $(MAKE) COPY_SUBDIR=/optimized   copy_universal
 116 copy_fastdebug_jdk::
 117         $(MAKE) COPY_SUBDIR=/fastdebug   copy_universal
 118 copy_debug_jdk::
 119         $(MAKE) COPY_SUBDIR=/debug       copy_universal
 120 
 121 .PHONY: universal_product universal_fastdebug universal_debug \
 122         all_product_universal all_fastdebug_universal all_debug_universal \
 123         universal_optimized all_optimized_universal \
 124         universalize export_universal copy_universal \
 125         $(UNIVERSAL_LIPO_LIST) $(UNIVERSAL_COPY_LIST)