author | erikj |
Wed, 09 Jan 2013 16:13:29 +0100 | |
changeset 15135 | 3ea5d7852acc |
parent 14344 | a5537423264b |
child 20547 | 453837141fac |
permissions | -rw-r--r-- |
13164 | 1 |
# |
2 |
# Copyright (c) 2011, 2012, 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. Oracle designates this |
|
8 |
# particular file as subject to the "Classpath" exception as provided |
|
9 |
# by Oracle in the LICENSE file that accompanied this code. |
|
10 |
# |
|
11 |
# This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 |
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 |
# version 2 for more details (a copy is included in the LICENSE file that |
|
15 |
# accompanied this code). |
|
16 |
# |
|
17 |
# You should have received a copy of the GNU General Public License version |
|
18 |
# 2 along with this work; if not, write to the Free Software Foundation, |
|
19 |
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 |
# |
|
21 |
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 |
# or visit www.oracle.com if you need additional information or have any |
|
23 |
# questions. |
|
24 |
# |
|
25 |
||
26 |
GENSRC_JOBJC := |
|
27 |
||
28 |
JOBJC_FRAMEWORKS := Foundation CoreFoundation AppKit |
|
29 |
FRAMEWORKS_DIR := /System/Library/Frameworks |
|
30 |
GBM := /usr/bin/gen_bridge_metadata |
|
31 |
||
32 |
JOBJC_SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc |
|
33 |
JOBJC_TMP := $(JDK_OUTPUTDIR)/gensrc_jobjc |
|
34 |
JOBJC_DST := $(JDK_OUTPUTDIR)/gensrc_jobjc/src |
|
35 |
||
36 |
# |
|
37 |
# Build generator |
|
38 |
# |
|
39 |
$(eval $(call SetupJavaCompilation,BUILD_JOBJC_PRIMITIVE_CODER,\ |
|
40 |
SETUP:=GENERATE_OLDBYTECODE,\ |
|
13702 | 41 |
DISABLE_SJAVAC:=true,\ |
13164 | 42 |
INCLUDES:=core/java \ |
43 |
com/apple,\ |
|
44 |
SRC:=$(JOBJC_SRC)/src \ |
|
45 |
$(JOBJC_SRC)/src/generator/java, \ |
|
46 |
BIN:=$(JOBJC_TMP)/bin)) |
|
47 |
||
13702 | 48 |
GENSRC_JOBJC += $(BUILD_JOBJC_PRIMITIVE_CODER) |
13164 | 49 |
|
50 |
# |
|
13702 | 51 |
# Generate bridge support for select frameworks |
13164 | 52 |
# |
53 |
BRIDGESUPPORT := $(addprefix $(JOBJC_TMP)/bridge/,$(addsuffix Full.bridgesupport,$(JOBJC_FRAMEWORKS))) |
|
54 |
||
13702 | 55 |
# |
56 |
# Define macro for rules to create bridge support |
|
57 |
# Not sure why, but if the system has this framework bridge support, |
|
58 |
# we appear to copy that, otherwise we run GBM which can be very slow. |
|
59 |
# |
|
60 |
define CreateBridgeSupport # Framework |
|
61 |
$(RM) $@ $@.tmp |
|
62 |
$(MKDIR) -p $(@D) |
|
63 |
if [ -f $(FRAMEWORKS_DIR)/$1.framework/Resources/BridgeSupport/$(@F) ]; then \ |
|
64 |
$(CP) $(FRAMEWORKS_DIR)/$1.framework/Resources/BridgeSupport/$(@F) $@.tmp ;\ |
|
65 |
else \ |
|
14231 | 66 |
$(GBM) $(LOG_INFO) -F complete --framework $1 -o $@.tmp ; \ |
13702 | 67 |
fi |
68 |
$(MV) $@.tmp $@ |
|
69 |
endef |
|
13164 | 70 |
|
71 |
# |
|
13702 | 72 |
# Currently 3 frameworks, avoid pattern rule due to the names being conflicting |
13164 | 73 |
# |
13702 | 74 |
$(JOBJC_TMP)/bridge/FoundationFull.bridgesupport : \ |
75 |
$(wildcard $(FRAMEWORKS_DIR)/Foundation.framework/Headers/*.h) |
|
76 |
$(call CreateBridgeSupport,Foundation) |
|
77 |
$(JOBJC_TMP)/bridge/CoreFoundationFull.bridgesupport : \ |
|
78 |
$(wildcard $(FRAMEWORKS_DIR)/CoreFoundation.framework/Headers/*.h) |
|
79 |
$(call CreateBridgeSupport,CoreFoundation) |
|
80 |
$(JOBJC_TMP)/bridge/AppKitFull.bridgesupport : \ |
|
81 |
$(wildcard $(FRAMEWORKS_DIR)/AppKit.framework/Headers/*.h) |
|
82 |
$(call CreateBridgeSupport,AppKit) |
|
83 |
||
84 |
# |
|
85 |
# Find Xbootclasspath, for some reason, this involves firing up Java just |
|
86 |
# so we can get the boot classpath, so we can remove anything in that |
|
87 |
# classpath that ends with "JObjC.jar", and emit the new bootclasspath. |
|
88 |
# |
|
89 |
$(JOBJC_TMP)/_the.generator_bootclasspath : $(BUILD_JOBJC_PRIMITIVE_CODER) |
|
14231 | 90 |
$(ECHO) Generating jobjc framework bridge |
13702 | 91 |
$(RM) $@ |
14231 | 92 |
$(JAVA) $(LOG_INFO) -cp $(JOBJC_TMP)/bin com.apple.internal.jobjc.generator.BootClassPathMinus JObjC.jar > $@.tmp |
13164 | 93 |
$(MV) $@.tmp $@ |
94 |
||
95 |
# |
|
96 |
# Run generator |
|
13702 | 97 |
# Now we use bootclasspath to run java again, with the bridge support to |
98 |
# generate more source. |
|
13164 | 99 |
# |
14344
a5537423264b
8002220: build-infra: update for mac, solaris 11 issues
erikj
parents:
14231
diff
changeset
|
100 |
$(JOBJC_TMP)/_the.generator : $(JOBJC_TMP)/_the.generator_bootclasspath $(BRIDGESUPPORT) |
13702 | 101 |
$(RM) $@ |
14231 | 102 |
$(JAVA) $(LOG_INFO) -d64 -Xbootclasspath:`$(CAT) $(JOBJC_TMP)/_the.generator_bootclasspath` -cp $(JOBJC_TMP)/bin -ea com.apple.internal.jobjc.generator.Generator dst=$(JOBJC_DST) frameworks=$(JOBJC_TMP)/bridge |
13164 | 103 |
$(TOUCH) $@ |
104 |
||
14231 | 105 |
# The generator delets all files in the target dir so it has to work in its |
106 |
# own dir and have the files copied over to gensrc aftewards. |
|
107 |
$(JDK_OUTPUTDIR)/gensrc/_the.jobjc.files : $(JOBJC_TMP)/_the.generator |
|
108 |
$(MKDIR) -p $(@D) |
|
109 |
$(CP) -rp $(JOBJC_DST)/* $(@D) |
|
110 |
$(TOUCH) $@ |
|
13702 | 111 |
|
14231 | 112 |
GENSRC_JOBJC += $(JDK_OUTPUTDIR)/gensrc/_the.jobjc.files |