22 # or visit www.oracle.com if you need additional information or have any |
22 # or visit www.oracle.com if you need additional information or have any |
23 # questions. |
23 # questions. |
24 # |
24 # |
25 |
25 |
26 include JdkNativeCompilation.gmk |
26 include JdkNativeCompilation.gmk |
27 |
|
28 ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli) |
|
29 |
|
30 # Applications expect to be able to link against libjawt without invoking |
|
31 # System.loadLibrary("jawt") first. This was the behaviour described in the |
|
32 # devloper documentation of JAWT and what worked with OpenJDK6. |
|
33 ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), ) |
|
34 ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib) |
|
35 endif |
|
36 |
27 |
37 # Tell the compiler not to export any functions unless declared so in |
28 # Tell the compiler not to export any functions unless declared so in |
38 # the source code. On Windows, this is the default and cannot be changed. |
29 # the source code. On Windows, this is the default and cannot be changed. |
39 # On Mac, we have always exported all symbols, probably due to oversight |
30 # On Mac, we have always exported all symbols, probably due to oversight |
40 # and/or misunderstanding. To emulate this, don't hide any symbols |
31 # and/or misunderstanding. To emulate this, don't hide any symbols |
84 # EXTRA_JAVA_ARGS Processed into a -DEXTRA_JAVA_ARGS and is prepended |
75 # EXTRA_JAVA_ARGS Processed into a -DEXTRA_JAVA_ARGS and is prepended |
85 # before JAVA_ARGS to CFLAGS, primarily to allow long string literal |
76 # before JAVA_ARGS to CFLAGS, primarily to allow long string literal |
86 # compile time defines exceeding Visual Studio 2013 limitations. |
77 # compile time defines exceeding Visual Studio 2013 limitations. |
87 # CFLAGS Additional CFLAGS |
78 # CFLAGS Additional CFLAGS |
88 # CFLAGS_windows Additional CFLAGS_windows |
79 # CFLAGS_windows Additional CFLAGS_windows |
89 # LIBS_unix Additional LIBS_unix |
|
90 # LIBS_windows Additional LIBS_windows |
|
91 # LDFLAGS_solaris Additional LDFLAGS_solaris |
80 # LDFLAGS_solaris Additional LDFLAGS_solaris |
92 # RC_FLAGS Additional RC_FLAGS |
81 # RC_FLAGS Additional RC_FLAGS |
93 # MACOSX_SIGNED On macosx, sign this binary |
82 # MACOSX_SIGNED On macosx, sign this binary |
94 # OPTIMIZATION Override default optimization level (LOW) |
83 # OPTIMIZATION Override default optimization level (LOW) |
95 # OUTPUT_DIR Override default output directory |
84 # OUTPUT_DIR Override default output directory |
117 endif |
106 endif |
118 $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ |
107 $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ |
119 $$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }' |
108 $$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }' |
120 $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR) |
109 $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR) |
121 |
110 |
122 $1_LIBS := |
|
123 ifeq ($(OPENJDK_TARGET_OS), macosx) |
111 ifeq ($(OPENJDK_TARGET_OS), macosx) |
124 ifeq ($$($1_MACOSX_SIGNED), true) |
112 ifeq ($$($1_MACOSX_SIGNED), true) |
125 $1_PLIST_FILE := Info-privileged.plist |
113 $1_PLIST_FILE := Info-privileged.plist |
126 $1_CODESIGN := true |
114 $1_CODESIGN := true |
127 else |
115 else |
128 $1_PLIST_FILE := Info-cmdline.plist |
116 $1_PLIST_FILE := Info-cmdline.plist |
129 endif |
117 endif |
130 |
118 |
131 $1_LDFLAGS += -Wl,-all_load \ |
119 $1_LDFLAGS += -sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE) |
132 -sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE) |
120 |
133 ifeq ($(STATIC_BUILD), true) |
121 ifeq ($(STATIC_BUILD), true) |
134 $1_LDFLAGS += -exported_symbols_list \ |
122 $1_LDFLAGS += -exported_symbols_list \ |
135 $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols |
123 $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols |
136 $1_LIBS += \ |
124 $1_LIBS += \ |
137 $$(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs/java.base -name "*.a") \ |
125 $$(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs/java.base -name "*.a") \ |
141 -framework CoreFoundation \ |
129 -framework CoreFoundation \ |
142 -framework Foundation \ |
130 -framework Foundation \ |
143 -framework SystemConfiguration \ |
131 -framework SystemConfiguration \ |
144 -lstdc++ -liconv |
132 -lstdc++ -liconv |
145 endif |
133 endif |
146 $1_LIBS += -framework Cocoa -framework Security \ |
|
147 -framework ApplicationServices |
|
148 endif |
|
149 |
|
150 ifeq ($(OPENJDK_TARGET_OS), aix) |
|
151 $1_LDFLAGS += -L$(SUPPORT_OUTPUTDIR)/native/java.base |
|
152 $1_LIBS += -ljli_static |
|
153 endif |
134 endif |
154 |
135 |
155 ifeq ($(USE_EXTERNAL_LIBZ), true) |
136 ifeq ($(USE_EXTERNAL_LIBZ), true) |
156 $1_LIBS += -lz |
137 $1_LIBS += -lz |
157 endif |
138 endif |
170 $$($1_CFLAGS), \ |
151 $$($1_CFLAGS), \ |
171 CFLAGS_linux := -fPIC, \ |
152 CFLAGS_linux := -fPIC, \ |
172 CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ |
153 CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ |
173 CFLAGS_windows := $$($1_CFLAGS_windows), \ |
154 CFLAGS_windows := $$($1_CFLAGS_windows), \ |
174 LDFLAGS := $$(LDFLAGS_JDKEXE) \ |
155 LDFLAGS := $$(LDFLAGS_JDKEXE) \ |
175 $$(ORIGIN_ARG) \ |
156 $$(call SET_EXECUTABLE_ORIGIN) \ |
176 $$($1_LDFLAGS), \ |
157 $$($1_LDFLAGS), \ |
177 LDFLAGS_linux := \ |
158 LDFLAGS_linux := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \ |
178 -L$(call FindLibDirForModule, java.base)/jli, \ |
159 -L$(call FindLibDirForModule, java.base), \ |
179 LDFLAGS_macosx := \ |
160 LDFLAGS_macosx := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \ |
180 -L$(call FindLibDirForModule, java.base)/jli, \ |
161 -L$(call FindLibDirForModule, java.base), \ |
181 LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ |
162 LDFLAGS_solaris := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \ |
182 -L$(call FindLibDirForModule, java.base)/jli, \ |
163 -L$(call FindLibDirForModule, java.base), \ |
|
164 LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \ |
183 LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \ |
165 LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \ |
184 LIBS_unix := $$($1_LIBS_unix), \ |
166 LIBS_linux := -ljli -lpthread $(LIBDL), \ |
185 LIBS_linux := -lpthread -ljli $(LIBDL), \ |
167 LIBS_macosx := -ljli -framework Cocoa -framework Security \ |
186 LIBS_macosx := -ljli, \ |
168 -framework ApplicationServices, \ |
187 LIBS_solaris := -ljli -lthread $(LIBDL), \ |
169 LIBS_solaris := -ljli -lthread $(LIBDL), \ |
|
170 LIBS_aix := -ljli_static, \ |
188 LIBS_windows := $$($1_WINDOWS_JLI_LIB) \ |
171 LIBS_windows := $$($1_WINDOWS_JLI_LIB) \ |
189 $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib \ |
172 $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib, \ |
190 $$($1_LIBS_windows), \ |
|
191 OUTPUT_DIR := $$($1_OUTPUT_DIR), \ |
173 OUTPUT_DIR := $$($1_OUTPUT_DIR), \ |
192 VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \ |
174 VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \ |
193 EXTRA_RC_FLAGS := $$($1_EXTRA_RC_FLAGS), \ |
175 EXTRA_RC_FLAGS := $$($1_EXTRA_RC_FLAGS), \ |
194 MANIFEST := $(JAVA_MANIFEST), \ |
176 MANIFEST := $(JAVA_MANIFEST), \ |
195 MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \ |
177 MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \ |