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)