From 3b6e57670cfc8b45b0be228198ebe6033bed3064 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Thu, 16 Jan 2025 14:25:52 +0000 Subject: [PATCH] 8347825: Make IDEA ide support use proper build system mechanisms Reviewed-by: mcimadamore, erikj --- bin/idea.sh | 4 +- make/Main.gmk | 10 +++- .../idea/jdk/{idea.gmk => IdeaGenConfig.gmk} | 47 +++++++++---------- test/make/TestIdea.gmk | 6 +-- 4 files changed, 37 insertions(+), 30 deletions(-) rename make/ide/idea/jdk/{idea.gmk => IdeaGenConfig.gmk} (60%) diff --git a/bin/idea.sh b/bin/idea.sh index c85ae294454..1ebe9d96c7f 100644 --- a/bin/idea.sh +++ b/bin/idea.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2009, 2020, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -99,7 +99,7 @@ if [ "$VERBOSE" = "true" ] ; then echo "idea template dir: $IDEA_TEMPLATE" fi -cd $TOP ; make -f "$IDEA_MAKE/idea.gmk" -I $MAKE_DIR/.. idea MAKEOVERRIDES= OUT=$IDEA_OUTPUT/env.cfg MODULES="$*" $CONF_ARG || exit 1 +cd $TOP ; make idea-gen-config IDEA_OUTPUT=$IDEA_OUTPUT MODULES="$*" $CONF_ARG || exit 1 cd $SCRIPT_DIR . $IDEA_OUTPUT/env.cfg diff --git a/make/Main.gmk b/make/Main.gmk index 7675fe6fcf7..79b2932439c 100644 --- a/make/Main.gmk +++ b/make/Main.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -356,6 +356,14 @@ $(eval $(call SetupTarget, vscode-project-ccls, \ DEPS := compile-commands, \ )) +################################################################################ +# IDEA IntelliJ projects + +$(eval $(call SetupTarget, idea-gen-config, \ + MAKEFILE := ide/idea/jdk/IdeaGenConfig, \ + ARGS := IDEA_OUTPUT="$(IDEA_OUTPUT)" MODULES="$(MODULES)", \ +)) + ################################################################################ # Build demos targets diff --git a/make/ide/idea/jdk/idea.gmk b/make/ide/idea/jdk/IdeaGenConfig.gmk similarity index 60% rename from make/ide/idea/jdk/idea.gmk rename to make/ide/idea/jdk/IdeaGenConfig.gmk index b27de609c49..8318463776f 100644 --- a/make/ide/idea/jdk/idea.gmk +++ b/make/ide/idea/jdk/IdeaGenConfig.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,36 +23,35 @@ # questions. # -include Makefile -include make/MainSupport.gmk +default: all -.PHONY: idea +include $(SPEC) +include MakeBase.gmk -ifeq ($(SPEC), ) - ifneq ($(words $(SPECS)), 1) - @echo "Error: Multiple build specification files found. Please select one explicitly." - @exit 2 - endif - idea: - @cd $(topdir) - @$(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/ide/idea/jdk/idea.gmk SPEC=$(SPECS) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) MODULES="$(MODULES)" idea -else #with SPEC - include make/common/Modules.gmk +include Modules.gmk - ifeq ($(MODULES), ) - SEL_MODULES := $(call FindAllModules) - else - SEL_MODULES := $(MODULES) - endif +# MODULES and IDEA_OUTPUT is passed on the command line +ifeq ($(MODULES), ) + override MODULES := $(call FindAllModules) +endif - idea: +ifeq ($(IDEA_OUTPUT), ) + override IDEA_OUTPUT := $(WORKSPACE_ROOT)/.idea +endif + +OUT := $(IDEA_OUTPUT)/env.cfg + +idea: + $(RM) $(OUT) $(ECHO) "SUPPORT=$(SUPPORT_OUTPUTDIR)" >> $(OUT) - $(ECHO) "MODULE_ROOTS=\"$(foreach mod, $(SEL_MODULES), $(call FindModuleSrcDirs, $(mod)))\"" >> $(OUT) - $(ECHO) "MODULE_NAMES=\"$(strip $(foreach mod, $(SEL_MODULES), $(mod)))\"" >> $(OUT) - $(ECHO) "SEL_MODULES=\"$(SEL_MODULES)\"" >> $(OUT) + $(ECHO) "MODULE_ROOTS=\"$(foreach mod, $(MODULES), $(call FindModuleSrcDirs, $(mod)))\"" >> $(OUT) + $(ECHO) "MODULE_NAMES=\"$(strip $(foreach mod, $(MODULES), $(mod)))\"" >> $(OUT) + $(ECHO) "SEL_MODULES=\"$(MODULES)\"" >> $(OUT) $(ECHO) "BOOT_JDK=\"$(BOOT_JDK)\"" >> $(OUT) $(ECHO) "CYGPATH=\"$(PATHTOOL)\"" >> $(OUT) $(ECHO) "SPEC=\"$(SPEC)\"" >> $(OUT) $(ECHO) "JT_HOME=\"$(JT_HOME)\"" >> $(OUT) -endif +all: idea + +.PHONY: default all idea diff --git a/test/make/TestIdea.gmk b/test/make/TestIdea.gmk index fce8769b239..e175bbba21b 100644 --- a/test/make/TestIdea.gmk +++ b/test/make/TestIdea.gmk @@ -33,9 +33,9 @@ clean-idea: verify-idea: $(MKDIR) -p $(IDEA_OUTPUT_DIR) - MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea1 - MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea2 java.base - MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea3 java.base jdk.compiler + cd $(WORKSPACE_ROOT) && HAS_SPEC= MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea1 + cd $(WORKSPACE_ROOT) && HAS_SPEC= MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea2 java.base + cd $(WORKSPACE_ROOT) && HAS_SPEC= MAKEFLAGS= MFLAGS= $(BASH) $(TOPDIR)/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea3 java.base jdk.compiler TEST_TARGETS += verify-idea