jaxp/make/Makefile
changeset 21875 f5b0b2f02db6
parent 12005 a754d69d5e60
equal deleted inserted replaced
21549:aaf663f591ab 21875:f5b0b2f02db6
     1 #
     1 #
     2 # Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
     2 # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     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
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.  Oracle designates this
     7 # published by the Free Software Foundation.  Oracle designates this
    21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    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
    22 # or visit www.oracle.com if you need additional information or have any
    23 # questions.
    23 # questions.
    24 #
    24 #
    25 
    25 
    26 # Makefile wrapper around Ant build.xml file
    26 # Locate this Makefile
       
    27 ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))), )
       
    28   makefile_path := $(CURDIR)/$(lastword $(MAKEFILE_LIST))
       
    29 else
       
    30   makefile_path := $(lastword $(MAKEFILE_LIST))
       
    31 endif
       
    32 repo_dir := $(patsubst %/make/Makefile, %, $(makefile_path))
    27 
    33 
    28 #
    34 # What is the name of this subsystem (langtools, corba, etc)?
    29 # On Solaris, the 'make' utility from Sun will not work with these makefiles.
    35 subsystem_name := $(notdir $(repo_dir))
    30 #    This little rule is only understood by Sun's make, and is harmless
       
    31 #    when seen by the GNU make tool. If using Sun's make, this causes the
       
    32 #    make command to fail.
       
    33 #
       
    34 SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
       
    35 
    36 
    36 ifdef QUIET
    37 # Try to locate top-level makefile
    37   ANT_OPTIONS += -quiet
    38 top_level_makefile := $(repo_dir)/../Makefile
       
    39 ifneq ($(wildcard $(top_level_makefile)), )
       
    40   $(info Will run $(subsystem_name) target on top-level Makefile)
       
    41   $(info WARNING: This is a non-recommended way of building!)
       
    42   $(info ===================================================)
       
    43 else
       
    44   $(info Cannot locate top-level Makefile. Is this repo not checked out as part of a complete forest?)
       
    45   $(error Build from top-level Makefile instead)
    38 endif
    46 endif
    39 
    47 
    40 ifdef VERBOSE
    48 all:
    41   ANT_OPTIONS += -verbose
    49 	@$(MAKE) -f $(top_level_makefile) $(subsystem_name)
    42 endif
       
    43 
       
    44 ifeq ($(VARIANT), OPT)
       
    45   ifneq ($(DEBUG_CLASSFILES), true)
       
    46     ANT_OPTIONS += -Djavac.debug=false
       
    47   endif
       
    48 endif
       
    49 
       
    50 # Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN)
       
    51 # and the somewhat misnamed CLASS_VERSION (-target NN)
       
    52 ifdef TARGET_CLASS_VERSION
       
    53   ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION)
       
    54 else
       
    55   ifdef JAVAC_TARGET_ARG
       
    56     ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG)
       
    57   endif
       
    58 endif
       
    59 
       
    60 ifdef SOURCE_LANGUAGE_VERSION
       
    61   ANT_OPTIONS += -Djavac.source=$(SOURCE_LANGUAGE_VERSION)
       
    62 else
       
    63   ifdef JAVAC_SOURCE_ARG 
       
    64     ANT_OPTIONS += -Djavac.source=$(JAVAC_SOURCE_ARG)
       
    65   endif
       
    66 endif 
       
    67 
       
    68 # If downloads are allowed
       
    69 ifeq ($(ALLOW_DOWNLOADS),true)
       
    70   ANT_OPTIONS += -Dallow.downloads=true
       
    71 endif
       
    72 
       
    73 # Figure out the platform we are using
       
    74 _SYSTEM_UNAME := $(shell uname)
       
    75 _PLATFORM_KIND = unix
       
    76 ifeq ($(_SYSTEM_UNAME), Windows_NT)
       
    77   _PLATFORM_KIND = windows
       
    78 endif
       
    79 ifneq (,$(findstring CYGWIN,$(_SYSTEM_UNAME)))
       
    80   _PLATFORM_KIND = windows
       
    81 endif
       
    82 
       
    83 # Where is /java in case we need it
       
    84 ifdef ALT_SLASH_JAVA
       
    85   _SLASHJAVA = $(ALT_SLASH_JAVA)
       
    86 else
       
    87   ifeq ($(_PLATFORM_KIND), windows)
       
    88     _SLASHJAVA=J:/
       
    89   else
       
    90     _SLASHJAVA=/java
       
    91   endif
       
    92 endif
       
    93 
       
    94 ifdef ALT_OUTPUTDIR
       
    95   OUTPUTDIR = $(ALT_OUTPUTDIR)
       
    96   ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR)
       
    97 else
       
    98   OUTPUTDIR = ..
       
    99 endif
       
   100 
       
   101 ifdef ALT_LANGTOOLS_DIST
       
   102   ifdef ALT_BOOTDIR
       
   103     ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
       
   104     ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR)
       
   105   endif
       
   106   ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap
       
   107 else
       
   108   ifdef ALT_JDK_IMPORT_PATH
       
   109     ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH)
       
   110     ANT_OPTIONS += -Djdk.home=$(ALT_JDK_IMPORT_PATH)
       
   111   endif
       
   112 endif
       
   113 
       
   114 ifdef ANT_HOME
       
   115   ANT = $(ANT_HOME)/bin/ant
       
   116   ifneq ($(shell test -x $(ANT); echo $$?), 0)
       
   117     $(error "$(ANT) not found; please update ANT_HOME")
       
   118   endif
       
   119 else
       
   120   ANT = ant
       
   121   ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0)
       
   122     $(error "'ant' not found; please set ANT_HOME or put 'ant' on your PATH")
       
   123   endif
       
   124 endif
       
   125 
       
   126 # Default target and expected 'do everything' target
       
   127 default: all
       
   128 
       
   129 # All ant targets of interest
       
   130 ANT_TARGETS = all build dist clobber clean sanity
       
   131 
       
   132 # Create a make target for each
       
   133 $(ANT_TARGETS):
       
   134 	cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) -version
       
   135 	cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@
       
   136 
       
   137 # Just for compat reasons, delete in future.
       
   138 drop_included:
       
   139 source:
       
   140 
       
   141 # Help target
       
   142 define helpenvline
       
   143 @echo "    $1";echo "        $2"
       
   144 endef
       
   145 help:
       
   146 	@echo "----------------------------------------------------------"
       
   147 	@echo " "
       
   148 	@echo "Help information for this Makefile:"
       
   149 	@echo " "
       
   150 	@echo "  Targets (see ant project information for descriptions):"
       
   151 	@echo "    $(ANT_TARGETS)"
       
   152 	@echo " "
       
   153 	@echo "  Environment or command line variables (all optional):"
       
   154 	$(call helpenvline, ALT_BOOTDIR,\
       
   155 	       "JAVA_HOME to use when running ant")
       
   156 	$(call helpenvline, ALT_LANGTOOLS_DIST,\
       
   157 	       "path to langtools repository dist directory")
       
   158 	$(call helpenvline, ALT_OUTPUTDIR,\
       
   159 	       "path to root of output")
       
   160 	$(call helpenvline, DEBUG_CLASSFILES,\
       
   161 	       "if set makes sure ant property javac.debug is true")
       
   162 	$(call helpenvline, JAVAC_SOURCE_ARG,\
       
   163 	       "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source")
       
   164 	$(call helpenvline, JAVAC_TARGET_ARG,\
       
   165 	       "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target")
       
   166 	$(call helpenvline, SOURCE_LANGUAGE_VERSION,\
       
   167 	       "if set uses this to set ant property javac.source")
       
   168 	$(call helpenvline, QUIET,\
       
   169 	       "if set will pass -quiet to ant")
       
   170 	$(call helpenvline, TARGET_CLASS_VERSION,\
       
   171 	       "JAVA_HOME to use when running ant")
       
   172 	$(call helpenvline, VARIANT,\
       
   173 	       "if set to OPT means optimized build will set javac.debug to false")
       
   174 	$(call helpenvline, VERBOSE,\
       
   175 	       "if set will pass -verbose to ant")
       
   176 	@echo " "
       
   177 	@echo "----------------------------------------------------------"
       
   178 	@echo " "
       
   179 	@echo "Ant project file help information:"
       
   180 	@echo " "
       
   181 	@$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p
       
   182 	@echo " "
       
   183 	@echo "----------------------------------------------------------"
       
   184 
       
   185 # Targets for Sun's internal JPRT build system
       
   186 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip
       
   187 jprt_build_product jprt_build_debug jprt_build_fastdebug: all
       
   188 	$(RM) $(JPRT_ARCHIVE_BUNDLE)
       
   189 	( cd $(OUTPUTDIR)/dist && \
       
   190 	   zip -q -r $(JPRT_ARCHIVE_BUNDLE) . )
       
   191 
       
   192 # Declare these phony (not filenames)
       
   193 .PHONY: $(ANT_TARGETS) \
       
   194 	jprt_build_product jprt_build_debug jprt_build_fastdebug