--- old/makefiles/CompileLaunchers.gmk 2012-07-03 19:58:59.873364653 +0200 +++ new/makefiles/CompileLaunchers.gmk 2012-07-03 19:58:59.613360821 +0200 @@ -32,17 +32,25 @@ # Setup the java compilers for the JDK build. include Setup.gmk +# Build tools +include Tools.gmk + BUILD_LAUNCHERS= define SetupLauncher # TODO: Fix mapfile on solaris. Won't work with ld as linker. # Parameter 1 is the name of the launcher (java,javac,jar...) - # Parameter 2 are extra CFLAGS - # Parameter 3 are extra LDFLAGS - # Parameter 4 are extra LDFLAGS_SUFFIX_posix - # Parameter 5 are extra LDFLAGS_SUFFIX_winapi + # Parameter 2 is extra CFLAGS + # Parameter 3 is extra LDFLAGS + # Parameter 4 is extra LDFLAGS_SUFFIX_posix + # Parameter 5 is extra LDFLAGS_SUFFIX_winapi + # Parameter 6 is optional Windows JLI library (full path) + # Parameter 7 is optional Windows resource (RC) flags + # Parameter 8 is optional Windows version resource file (.rc) + # Parameter 9 is different output dir + # Parameter 10 is FULL DEBUG SYMBOLS (set value to turn OFF, since most(all) seems to have it) - $1_WINDOWS_JLI_LIB:=$(JDK_OUTPUTDIR)/objs/jli.lib + $1_WINDOWS_JLI_LIB:=$(JDK_OUTPUTDIR)/objs/libjli/jli.lib ifneq ($6,) $1_WINDOWS_JLI_LIB:=$6 endif @@ -51,33 +59,73 @@ $1_VERSION_INFO_RESOURCE:=$8 endif + $1_LDFLAGS := $3 + ifeq ($(OPENJDK_TARGET_OS), macosx) + $1_LDFLAGS += -F/System/Library/Frameworks/JavaVM.framework/Frameworks \ + -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks + endif + + $1_LDFLAGS_SUFFIX := + ifeq ($(USE_EXTERNAL_LIBZ), true) + $1_LDFLAGS_SUFFIX += -lz + endif + + ifeq ($(OPENJDK_TARGET_OS), macosx) + $1_LDFLAGS_SUFFIX += -Wl,-all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \ + -framework Cocoa -framework Security -framework ApplicationServices \ + -sectcreate __TEXT __info_plist $(JDK_TOPDIR)/src/macosx/lib/Info-cmdline.plist + endif + + + $1_OUTPUT_DIR_ARG:=$9 + ifeq (,$$($1_OUTPUT_DIR_ARG)) + $1_OUTPUT_DIR_ARG:=$(JDK_OUTPUTDIR)/bin + endif + + $1_DEBUG_SYMBOLS:=yes + ifneq (,$(10)) + $1_DEBUG_SYMBOLS:= + endif + + $1_OPTIMIZATION:= LOW + + # TODO: maybe it's better to move this if-statement out of this function + ifeq ($(1),java) + $1_OPTIMIZATION:=HIGH + endif + $(call SetupNativeCompilation,BUILD_LAUNCHER_$1,\ SRC:=$(JDK_TOPDIR)/src/share/bin,\ INCLUDE_FILES:=main.c,\ LANG:=C,\ - CFLAGS:=$(CFLAGS_JDKEXE) $(C_O_FLAG_NORM) \ + OPTIMIZATION :=$$($1_OPTIMIZATION), \ + CFLAGS:=$(CFLAGS_JDKEXE) \ -I$(JDK_TOPDIR)/src/share/bin \ - -I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/bin \ - -I$(JDK_TOPDIR)/src/$(PLATFORM)/bin \ + -I$(JDK_TOPDIR)/src/$(LEGACY_OPENJDK_TARGET_OS_API)/bin \ + -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS)/bin \ -DFULL_VERSION='"$(FULL_VERSION)"' \ -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \ -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \ -DLIBARCHNAME='"$(ARCH)"' \ - -DLAUNCHER_NAME='"openjdk"' \ + -DLAUNCHER_NAME='"java"' \ -DPROGNAME='"$1"' $(DPACKAGEPATH) \ $2,\ CFLAGS_linux:=-fPIC,\ + CFLAGS_solaris:=-KPIC -DHAVE_GETHRTIME,\ LDFLAGS:=$(LDFLAGS_JDKEXE) \ $(call SET_SHARED_LIBRARY_ORIGIN,../lib/$(LIBARCH)/jli) \ $(call SET_SHARED_LIBRARY_ORIGIN,../jre/lib/$(LIBARCH)/jli) \ - $3,\ + $$($1_LDFLAGS),\ MAPFILE := $(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(ARCH), \ - LDFLAGS_SUFFIX:=$(LDFLAGS_JDKEXE_SUFFIX),\ + LDFLAGS_SUFFIX:=$(LDFLAGS_JDKEXE_SUFFIX) $$($1_LDFLAGS_SUFFIX),\ LDFLAGS_SUFFIX_posix:=$4 -lc,\ LDFLAGS_SUFFIX_winapi:=$$($1_WINDOWS_JLI_LIB) \ - $(JDK_OUTPUTDIR)/objs/java.lib advapi32.lib $5,\ - BIN:=$(JDK_OUTPUTDIR)/objs/$1_objs,\ - EXE:=$(JDK_OUTPUTDIR)/objs/$1$(EXE_SUFFIX),\ + $(JDK_OUTPUTDIR)/objs/libjava/java.lib advapi32.lib $5,\ + LDFLAGS_SUFFIX_solaris := -lthread $(LIBDL), \ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/$1_objs,\ + OUTPUT_DIR:=$$($1_OUTPUT_DIR_ARG),\ + PROGRAM:=$1,\ + DEBUG_SYMBOLS:=$$($1_DEBUG_SYMBOLS),\ VERSIONINFO_RESOURCE:=$$($1_VERSION_INFO_RESOURCE),\ RC_FLAGS:=$(RC_FLAGS)\ /D "JDK_FNAME=$1$(EXE_SUFFIX)" \ @@ -86,13 +134,22 @@ $7,\ MANIFEST:=$(JDK_TOPDIR)/src/windows/resource/java.manifest) - BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin/$1$(EXE_SUFFIX) + BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1) + + ifeq ($(OPENJDK_TARGET_OS),macosx) + $$(BUILD_LAUNCHER_$1) : $(JDK_OUTPUTDIR)/objs/libjli_static.a + endif + + ifeq ($(OPENJDK_TARGET_OS),windows) + $$(BUILD_LAUNCHER_$1) : $(JDK_OUTPUTDIR)/objs/libjava/java.lib \ + $$($1_WINDOWS_JLI_LIB) + endif endef ########################################################################################## -XLIBS:=-lX11 -ifeq ($(PLATFORM),macosx) +XLIBS:=$(X_LIBS) -lX11 +ifeq ($(OPENJDK_TARGET_OS),macosx) DPACKAGEPATH:=-DPACKAGE_PATH='"$(PACKAGE_PATH)"' XLIBS:= endif @@ -108,17 +165,17 @@ $(JDK_OUTPUTDIR)/objs/jli_static.lib,$(JAVA_RC_FLAGS),\ $(JDK_TOPDIR)/src/windows/resource/java.rc)) -ifeq ($(HOST_OS),windows) +ifeq ($(OPENJDK_TARGET_OS),windows) $(eval $(call SetupLauncher,javaw,\ -DEXPAND_CLASSPATH_WILDCARDS,,,user32.lib comctl32.lib,\ $(JDK_OUTPUTDIR)/objs/jli_static.lib,$(JAVA_RC_FLAGS),\ $(JDK_TOPDIR)/src/windows/resource/java.rc)) endif -ifeq ($(PLATFORM),solaris) +ifeq ($(OPENJDK_TARGET_OS),solaris) THREAD_LIB:=-lthread endif -ifeq ($(PLATFORM),linux) +ifeq ($(OPENJDK_TARGET_OS),linux) THREAD_LIB:=-lpthread endif @@ -271,7 +328,7 @@ $(eval $(call SetupLauncher,jcmd,\ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jcmd.JCmd"$(COMMA) }')) -ifeq ($(PLATFORM),windows) +ifeq ($(OPENJDK_TARGET_OS),windows) $(eval $(call SetupLauncher,kinit,\ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Kinit"$(COMMA) }')) @@ -286,8 +343,10 @@ # The order of the object files on the link command line affects the size of the resulting # binary (at least on linux) which causes the size to differ between old and new build. ifeq ($(USE_EXTERNAL_LIBZ), true) +UNPACKEXE_CFLAGS := -DSYSTEM_ZLIB UNPACKEXE_ZIPOBJS := -lz else +UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5 UNPACKEXE_ZIPOBJS := $(JDK_OUTPUTDIR)/objs/libzip/zcrc32$(OBJ_SUFFIX) \ $(JDK_OUTPUTDIR)/objs/libzip/deflate$(OBJ_SUFFIX) \ $(JDK_OUTPUTDIR)/objs/libzip/trees$(OBJ_SUFFIX) \ @@ -299,27 +358,31 @@ $(JDK_OUTPUTDIR)/objs/libzip/inftrees$(OBJ_SUFFIX) \ $(JDK_OUTPUTDIR)/objs/libzip/inffast$(OBJ_SUFFIX) +endif -$(JDK_OUTPUTDIR)/bin/unpack200$(EXE_SUFFIX): $(UNPACKEXE_ZIPOBJS) - +ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc) + UNPACKEXE_CFLAGS += -xregs=no%appl endif $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE,\ SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack,\ EXCLUDE_FILES:=jni.cpp,\ LANG:=C,\ - CFLAGS:=$(CXXFLAGS_JDKEXE) $(CXX_O_FLAG_NORM) \ - -DFULL \ - -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5,\ + OPTIMIZATION := LOW, \ + CFLAGS:=$(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE)\ + -DFULL, \ CFLAGS_release:=-DPRODUCT,\ CFLAGS_linux:=-fPIC,\ + CFLAGS_solaris := -KPIC, \ + CFLAGS_macosx := -fPIC, \ MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libunpack/mapfile-vers-unpack200, \ LDFLAGS:=$(LDFLAGS_JDKEXE) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_SUFFIX:=$(UNPACKEXE_ZIPOBJS) $(LIBCXX),\ LDFLAGS_SUFFIX_solaris:=-lc,\ - BIN:=$(JDK_OUTPUTDIR)/objs/unpackexe,\ - EXE:=$(JDK_OUTPUTDIR)/objs/unpack200$(EXE_SUFFIX),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/unpackexe,\ + OUTPUT_DIR:=$(JDK_OUTPUTDIR)/bin,\ + PROGRAM:=unpack200,\ VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ RC_FLAGS:=$(RC_FLAGS)\ /D "JDK_FNAME=unpack200.exe" \ @@ -327,7 +390,13 @@ /D "JDK_FTYPE=0x1L",\ MANIFEST:=$(JDK_TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest)) -BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin/unpack200$(EXE_SUFFIX) +ifneq ($(USE_EXTERNAL_LIBZ), true) + +$(BUILD_UNPACKEXE) : $(UNPACKEXE_ZIPOBJS) + +endif + +BUILD_LAUNCHERS += $(BUILD_UNPACKEXE) ########################################################################################## @@ -335,7 +404,7 @@ BUILD_JEXEC := BUILD_JEXEC_SRC := BUILD_JEXEC_INC := -BUILD_JEXEC_DST := $(JDK_OUTPUTDIR)/lib/$(LIBARCH)/jexec$(EXE_SUFFIX) +BUILD_JEXEC_DST_DIR := $(JDK_OUTPUTDIR)/lib/$(LIBARCH) # # UNHANDLED: @@ -345,30 +414,30 @@ # # jdk/make/java/Makefile # -ifeq ($(PLATFORM), solaris) +ifeq ($(OPENJDK_TARGET_OS), solaris) ifeq ($(ARCH_DATA_MODEL), 32) BUILD_JEXEC := 1 endif endif -ifeq ($(PLATFORM), linux) +ifeq ($(OPENJDK_TARGET_OS), linux) BUILD_JEXEC := 1 -endif # PLATFORM +endif # OPENJDK_TARGET_OS # # jdk/make/java/jexec/Makefile # ifeq ($(BUILD_JEXEC), 1) - ifeq ($(PLATFORM),windows) - else ifeq ($(PLATFORM),macosx) + ifeq ($(OPENJDK_TARGET_OS),windows) + else ifeq ($(OPENJDK_TARGET_OS),macosx) BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/macosx/bin else BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/solaris/bin endif - ifeq ($(PLATFORM), linux) - BUILD_JEXEC_DST := $(JDK_OUTPUTDIR)/lib/jexec$(EXE_SUFFIX) + ifeq ($(OPENJDK_TARGET_OS), linux) + BUILD_JEXEC_DST_DIR := $(JDK_OUTPUTDIR)/lib BUILD_JEXEC_INC += -I$(JDK_TOPDIR)/src/share/bin endif endif @@ -382,13 +451,15 @@ SRC:=$(BUILD_JEXEC_SRC),\ INCLUDE_FILES:=jexec.c,\ LANG:=C,\ - CFLAGS:=$(CFLAGS_JDKEXE) $(C_O_FLAG_NORM) \ + OPTIMIZATION := LOW, \ + CFLAGS:=$(CFLAGS_JDKEXE)\ $(BUILD_JEXEC_INC), \ LDFLAGS:=$(LDFLAGS_JDKEXE), \ - BIN:=$(JDK_OUTPUTDIR)/objs/jexec_obj,\ - EXE:=$(BUILD_JEXEC_DST))) + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/jexec_obj,\ + OUTPUT_DIR:=$(BUILD_JEXEC_DST_DIR),\ + PROGRAM:=jexec)) - BUILD_LAUNCHERS += $(BUILD_JEXEC_DST) + BUILD_LAUNCHERS += $(BUILD_JEXEC) endif ########################################################################################## @@ -397,10 +468,10 @@ # The java-rmi.cgi script in bin/ only gets delivered in certain situations # JAVA_RMI_CGI:=$(JDK_OUTPUTDIR)/bin/java-rmi.cgi -ifeq ($(PLATFORM), linux) +ifeq ($(OPENJDK_TARGET_OS), linux) BUILD_LAUNCHERS += $(JAVA_RMI_CGI) endif -ifeq ($(PLATFORM), solaris) +ifeq ($(OPENJDK_TARGET_OS), solaris) ifeq ($(ARCH_DATA_MODEL), 32) BUILD_LAUNCHERS += $(JAVA_RMI_CGI) endif @@ -413,12 +484,13 @@ # images bin dir. This weird behavior is mimicked here in the converted makefiles for # now. Should probably just be deleted. # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6512052 -ifeq ($(HOST_OS_API),winapi) +ifeq ($(OPENJDK_TARGET_OS_API),winapi) $(eval $(call SetupLauncher,java-rmi,\ -DEXPAND_CLASSPATH_WILDCARDS,\ - $(call SET_SHARED_LIBRARY_MAPFILE,$(JDK_TOPDIR)/makefiles/java/main/java/mapfile-$(ARCH)))) + $(call SET_SHARED_LIBRARY_MAPFILE,$(JDK_TOPDIR)/makefiles/java/main/java/mapfile-$(ARCH)),\ + ,,,,,$(JDK_OUTPUTDIR)/objs)) - $(JAVA_RMI_CGI): $(JDK_OUTPUTDIR)/objs/java-rmi$(EXE_SUFFIX) + $(JAVA_RMI_CGI): $(BUILD_LAUNCHER_java-rmi) $(MKDIR) -p $(@D) $(CP) $< $@ @@ -432,11 +504,6 @@ ########################################################################################## -$(JDK_OUTPUTDIR)/bin/% : $(JDK_OUTPUTDIR)/objs/% - $(ECHO) Copying $(@F) - $(MKDIR) -p $(@D) - $(CP) $< $@ - $(BUILD_LAUNCHERS) : $(JDK_TOPDIR)/makefiles/CompileLaunchers.gmk all: $(BUILD_LAUNCHERS)