hotspot/makefiles/ide/CreateVSProject.gmk
changeset 37437 f824aabc7af8
equal deleted inserted replaced
37436:1d902bc02bc2 37437:f824aabc7af8
       
     1 #
       
     2 # Copyright (c) 2016, 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 # This must be the first rule
       
    27 default: all
       
    28 
       
    29 include $(SPEC)
       
    30 include MakeBase.gmk
       
    31 include JavaCompilation.gmk
       
    32 include SetupJavaCompilers.gmk
       
    33 
       
    34 ifeq ($(OPENJDK_TARGET_OS), windows)
       
    35   # The next part is a bit hacky. We include the CompileJvm.gmk to be
       
    36   # able to extact flags, but we do not wish to execute the rules.
       
    37 
       
    38   # Use client as base for defines and includes
       
    39   JVM_VARIANT=client
       
    40 
       
    41   include HotspotCommon.gmk
       
    42   include lib/CompileJvm.gmk
       
    43 
       
    44   # Reset targets so we don't build libjvm.
       
    45   TARGETS :=
       
    46 
       
    47   # Helper macro to convert a unix path to a Windows path, suitable for
       
    48   # inclusion in a command line.
       
    49   FixPath = \
       
    50     $(strip $(subst \,\\,$(shell $(CYGPATH) -w $1)))
       
    51 
       
    52   JVM_DEFINES_client := $(patsubst -D%,%, $(filter -D%, $(JVM_CFLAGS)))
       
    53   EXTRACTED_DEFINES_client := $(addprefix -define , $(JVM_DEFINES_client))
       
    54 
       
    55   JVM_INCLUDES_client := $(patsubst -I%,%, $(filter -I%, $(JVM_CFLAGS)))
       
    56   EXTRACTED_INCLUDES_client := $(foreach path, $(JVM_INCLUDES_client), -absoluteInclude $(call FixPath, $(path)))
       
    57 
       
    58   # Hand-code variant-specific arguments, based on the fact that we use
       
    59   # client for general arguments. Not optimal but other solutions require
       
    60   # major changes in ProjectCreator.
       
    61   ADDITIONAL_VARIANT_ARGS := \
       
    62       -define_server COMPILER2 \
       
    63       -ignorePath_client adfiles \
       
    64       -ignorePath_client c2_ \
       
    65       -ignorePath_client runtime_ \
       
    66       -ignorePath_client libadt \
       
    67       -ignorePath_client opto \
       
    68       #
       
    69 
       
    70   IGNORED_PLATFORMS_ARGS := \
       
    71     -ignorePath aarch64 \
       
    72     -ignorePath aix \
       
    73     -ignorePath arm \
       
    74     -ignorePath bsd \
       
    75     -ignorePath linux \
       
    76     -ignorePath posix \
       
    77     -ignorePath ppc \
       
    78     -ignorePath shark \
       
    79     -ignorePath solaris \
       
    80     -ignorePath sparc \
       
    81     -ignorePath x86_32 \
       
    82     -ignorePath zero \
       
    83       #
       
    84 
       
    85   ################################################################################
       
    86   # Build the ProjectCreator java tool.
       
    87 
       
    88   TOOLS_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/support/tools_classes
       
    89 
       
    90   $(eval $(call SetupJavaCompilation, BUILD_PROJECT_CREATOR, \
       
    91       SETUP := GENERATE_OLDBYTECODE, \
       
    92       ADD_JAVAC_FLAGS := -Xlint:-auxiliaryclass, \
       
    93       SRC := $(HOTSPOT_TOPDIR)/makefiles/src/classes, \
       
    94       BIN := $(TOOLS_OUTPUTDIR), \
       
    95   ))
       
    96 
       
    97   TARGETS += $(BUILD_PROJECT_CREATOR)
       
    98 
       
    99   # Run the ProjectCreator tool
       
   100   PROJECT_CREATOR_TOOL := $(JAVA_SMALL) -cp $(TOOLS_OUTPUTDIR) build.tools.projectcreator.ProjectCreator
       
   101 
       
   102   IDE_OUTPUTDIR := $(BUILD_OUTPUT)/ide/hotspot-visualstudio
       
   103 
       
   104   VCPROJ_FILE := $(IDE_OUTPUTDIR)/jvm.vcxproj
       
   105 
       
   106   PROJECT_CREATOR_CLASS := build.tools.projectcreator.WinGammaPlatformVC10
       
   107 
       
   108   # We hard-code gensrc dir to server (since this includes adfiles)
       
   109   PROJECT_CREATOR_ARGS := \
       
   110       -sourceBase $(call FixPath, $(HOTSPOT_TOPDIR)) \
       
   111       -startAt src \
       
   112       -relativeSrcInclude src \
       
   113       -hidePath .hg \
       
   114       -hidePath .jcheck \
       
   115       -hidePath jdk.hotspot.agent \
       
   116       -hidePath jdk.vm.ci \
       
   117       -hidePath jdk.jfr \
       
   118       -compiler VC10 \
       
   119       -jdkTargetRoot $(call FixPath, $(JDK_OUTPUTDIR)) \
       
   120       -platformName x64 \
       
   121       -buildBase $(call FixPath, $(IDE_OUTPUTDIR)/vs-output) \
       
   122       -buildSpace $(call FixPath, $(IDE_OUTPUTDIR)) \
       
   123       -makeBinary $(call FixPath, $(MAKE)) \
       
   124       -makeOutput $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-%f/libjvm) \
       
   125       -absoluteInclude $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-server/gensrc) \
       
   126       -absoluteSrcInclude $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-server/gensrc) \
       
   127       $(EXTRACTED_DEFINES_client) \
       
   128       $(EXTRACTED_INCLUDES_client) \
       
   129       $(ADDITIONAL_VARIANT_ARGS) \
       
   130       $(IGNORED_PLATFORMS_ARGS) \
       
   131       #
       
   132 
       
   133   VCPROJ_VARDEPS := $(PROJECT_CREATOR_CLASS) $(PROJECT_CREATOR_ARGS)
       
   134   VCPROJ_VARDEPS_FILE := $(call DependOnVariable, VCPROJ_VARDEPS, \
       
   135     $(VCPROJ_FILE).vardeps)
       
   136 
       
   137   $(VCPROJ_FILE): $(BUILD_PROJECT_CREATOR) $(VCPROJ_VARDEPS_FILE)
       
   138 	$(call MakeDir, $(@D))
       
   139 	$(call ExecuteWithLog, $@, \
       
   140 	    $(PROJECT_CREATOR_TOOL) $(PROJECT_CREATOR_CLASS) \
       
   141 	    $(PROJECT_CREATOR_ARGS) -projectFileName $(call FixPath, $@)) \
       
   142 	    $(LOG_INFO)
       
   143 
       
   144   TARGETS += $(VCPROJ_FILE)
       
   145 
       
   146   all: $(TARGETS)
       
   147 
       
   148 else
       
   149   all:
       
   150 	$(info Hotspot Visual Studio generation only supported on Windows)
       
   151 endif
       
   152 
       
   153 .PHONY: all