jdk/make/java/jli/Makefile
changeset 2 90ce3da70b43
child 39 560da37936db
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 #
       
     2 # Copyright 2005-2006 Sun Microsystems, Inc.  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.  Sun designates this
       
     8 # particular file as subject to the "Classpath" exception as provided
       
     9 # by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    22 # CA 95054 USA or visit www.sun.com if you need additional information or
       
    23 # have any questions.
       
    24 #
       
    25 
       
    26 #
       
    27 # Java Launcher Infrastructure Library (libjli)
       
    28 #
       
    29 # This library provides shared support for the Java launcher in all of
       
    30 # its manifestations (java, javaw, javac, ...).
       
    31 #
       
    32 BUILDDIR = ../..
       
    33 LIBRARY = jli
       
    34 PRODUCT = java
       
    35 
       
    36 #
       
    37 # Must be included before Defs.gmk to be functional.
       
    38 #
       
    39 # Note that for Windows, both a dynamic and static version are built.
       
    40 # Doing the compiles with the static library specified can be overridden
       
    41 # by the link step, but not the reverse.
       
    42 #
       
    43 MS_RUNTIME_STATIC = true
       
    44 
       
    45 include $(BUILDDIR)/common/Defs.gmk
       
    46 
       
    47 ZLIB_VERSION = 1.1.3
       
    48 ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
       
    49 LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
       
    50 LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
       
    51 
       
    52 ifeq ($(ARCH_FAMILY), amd64)
       
    53 ERGO_FAMILY=i586
       
    54 else
       
    55 ERGO_FAMILY=$(ARCH_FAMILY)
       
    56 endif
       
    57 
       
    58 
       
    59 #
       
    60 # Files to compile.
       
    61 #
       
    62 FILES_c = \
       
    63 	java.c \
       
    64 	splashscreen_stubs.c \
       
    65 	java_md.c \
       
    66 	parse_manifest.c \
       
    67 	version_comp.c \
       
    68 	wildcard.c \
       
    69 	jli_util.c \
       
    70 	inflate.c \
       
    71 	infblock.c \
       
    72 	inftrees.c \
       
    73 	infcodes.c \
       
    74 	inffast.c \
       
    75 	infutil.c \
       
    76 	zadler32.c \
       
    77 	zutil.c
       
    78 
       
    79 ifneq ($(PLATFORM), windows)
       
    80 
       
    81 FILES_c += \
       
    82 	$(CTARGDIR)ergo.c \
       
    83 	$(CTARGDIR)ergo_$(ERGO_FAMILY).c
       
    84 endif
       
    85 
       
    86 
       
    87 # Names of arch directories
       
    88 LIBARCH_DEFINES = -DLIBARCHNAME='"$(LIBARCH)"'
       
    89 ifeq ($(PLATFORM), solaris)
       
    90   LIBARCH_DEFINES += -DLIBARCH32NAME='"$(LIBARCH32)"'
       
    91   LIBARCH_DEFINES += -DLIBARCH64NAME='"$(LIBARCH64)"'
       
    92 endif
       
    93 
       
    94 OTHER_CPPFLAGS += $(LIBARCH_DEFINES)
       
    95 
       
    96 
       
    97 ifneq ($(PLATFORM), windows)	# UNIX systems
       
    98 	LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/jli
       
    99 	# Note: its important to keep this order meaning -lc is the
       
   100 	# last library otherwise it could cause compatibility issues
       
   101 	# by pulling in SUNW_private symbols from libc
       
   102 	LDLIBS = -ldl -lc
       
   103 ifeq ($(USE_PTHREADS),true)
       
   104 	LDLIBS += -lpthread
       
   105 endif # USE_PTHREADS 
       
   106 endif # PLATFORM
       
   107 
       
   108 ifeq ($(PLATFORM), windows)
       
   109 	EXTRA_LIBS = advapi32.lib \
       
   110 		     user32.lib
       
   111 
       
   112 	JAVALIB =
       
   113 	OTHER_LCF =  -export:JLI_Launch \
       
   114 		     -export:JLI_ManifestIterate \
       
   115 		     -export:JLI_SetTraceLauncher
       
   116 
       
   117 	# Files from zlib built here do not compile with warning level 3
       
   118 	# if warnings are fatal
       
   119 	COMPILER_WARNINGS_FATAL=false
       
   120 endif
       
   121 
       
   122 OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
       
   123 OTHER_INCLUDES += -I$(LAUNCHER_PLATFORM_SRC)
       
   124 OTHER_INCLUDES += -I$(ZIP_SRC)
       
   125 
       
   126 #
       
   127 # Library to compile.
       
   128 #
       
   129 include $(BUILDDIR)/common/Mapfile-vers.gmk
       
   130 include $(BUILDDIR)/common/Library.gmk
       
   131 
       
   132 #
       
   133 # On Windows, some executable objects need to be statically linked against
       
   134 # the jli library.  Hence, we need both a standard library (archive) and
       
   135 # an import library (associated with a dll).  These both usually have the
       
   136 # extension .LIB, so they need to be placed in different directories.  The
       
   137 # import library is build (as usual) in the $(OBJDIR) directory while the
       
   138 # standard library is built in a "static" subdirectory.  The standard library
       
   139 # is not delivered as part of the product, but is only needed as part of
       
   140 # the build process.  The import library is built by the standard rules
       
   141 # in Library.gmk.  The additional rules which follow build the standard
       
   142 # library.
       
   143 #
       
   144 ifeq ($(PLATFORM), windows)
       
   145 
       
   146 STATIC_LIBRARY_DIR = $(OBJDIR)/static
       
   147 STATIC_LIBRARY_NAME = $(LIBPREFIX)$(LIBRARY).lib
       
   148 STATIC_LIBRARY = $(STATIC_LIBRARY_DIR)/$(STATIC_LIBRARY_NAME)
       
   149 
       
   150 $(STATIC_LIBRARY_DIR): $(OBJDIR)
       
   151 	@$(prep-target)
       
   152 	@$(MKDIR) $(STATIC_LIBRARY_DIR)
       
   153 
       
   154 $(STATIC_LIBRARY): $(STATIC_LIBRARY_DIR)
       
   155 	@$(prep-target)
       
   156 	$(LIBEXE) -nologo -out:$@ $(FILES_o)
       
   157 
       
   158 library:: $(STATIC_LIBRARY)
       
   159 
       
   160 endif	# PLATFORM
       
   161 
       
   162 #
       
   163 # Add to ambient vpath so we pick up the library files
       
   164 #
       
   165 vpath %.c $(LAUNCHER_SHARE_SRC) $(ZIP_SRC) $(LAUNCHER_PLATFORM_SRC)