From 0e1f624bfff89c023ffde1fb12cb5d419d19c716 Mon Sep 17 00:00:00 2001 From: Nikita Gubarkov Date: Sat, 29 May 2021 07:40:47 +0300 Subject: [PATCH] Added Clion project setup (cherry picked from commit db962149ecf008ba690973a3a86c58b22721f80d) --- bin/idea.sh | 20 +++++++ make/ide/idea/jdk/IdeaGenConfig.gmk | 1 + .../jdk/template/{ => jdk-clion/.idea}/.name | 0 .../jdk/template/jdk-clion/.idea/misc.xml | 25 +++++++++ .../idea/jdk/template/jdk-clion/.idea/vcs.xml | 16 ++++++ .../template/jdk-clion/.idea/workspace.xml | 55 +++++++++++++++++++ .../jdk/template/jdk-clion/update-project.sh | 29 ++++++++++ make/ide/idea/jdk/template/vcs.xml | 4 +- 8 files changed, 148 insertions(+), 2 deletions(-) rename make/ide/idea/jdk/template/{ => jdk-clion/.idea}/.name (100%) create mode 100644 make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml create mode 100644 make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml create mode 100644 make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml create mode 100644 make/ide/idea/jdk/template/jdk-clion/update-project.sh diff --git a/bin/idea.sh b/bin/idea.sh index 459f45e7e3db..07cfb158726a 100644 --- a/bin/idea.sh +++ b/bin/idea.sh @@ -169,6 +169,8 @@ if [ "$ABSOLUTE_PATHS" = true ] ; then MODULE_DIR="$PROJECT_DIR" TOPLEVEL_MODULE_DIR="$TOPLEVEL_PROJECT_DIR" cd "$IDEA_OUTPUT_PARENT" && cd "$RELATIVE_BUILD_DIR" && BUILD_DIR="`pwd`" + CLION_SCRIPT_TOPDIR="$OPENJDK_DIR" + CLION_PROJECT_DIR="$PROJECT_DIR" else if [ "$RELATIVE_PROJECT_DIR" = "." ] ; then PROJECT_DIR="" @@ -185,6 +187,8 @@ else TOPLEVEL_MODULE_DIR="\$MODULE_DIR\$$TOPLEVEL_PROJECT_DIR" TOPLEVEL_PROJECT_DIR="\$PROJECT_DIR\$$TOPLEVEL_PROJECT_DIR" BUILD_DIR="\$PROJECT_DIR\$/$RELATIVE_BUILD_DIR" + CLION_SCRIPT_TOPDIR="$CLION_RELATIVE_PROJECT_DIR" + CLION_PROJECT_DIR="\$PROJECT_DIR\$/$CLION_SCRIPT_TOPDIR" fi if [ "$VERBOSE" = true ] ; then echo "Project root: $PROJECT_DIR" @@ -214,6 +218,9 @@ add_replacement() { eval TO$NUM_REPLACEMENTS='$2' } +add_replacement "###PATHTOOL###" "$PATHTOOL" +add_replacement "###CLION_SCRIPT_TOPDIR###" "$CLION_SCRIPT_TOPDIR" +add_replacement "###CLION_PROJECT_DIR###" "$CLION_PROJECT_DIR" add_replacement "###PROJECT_DIR###" "$PROJECT_DIR" add_replacement "###MODULE_DIR###" "$MODULE_DIR" add_replacement "###TOPLEVEL_PROJECT_DIR###" "$TOPLEVEL_PROJECT_DIR" @@ -221,6 +228,7 @@ add_replacement "###TOPLEVEL_MODULE_DIR###" "$TOPLEVEL_MODULE_DIR" add_replacement "###MODULE_NAMES###" "$MODULE_NAMES" add_replacement "###VCS_TYPE###" "$VCS_TYPE" add_replacement "###BUILD_DIR###" "$BUILD_DIR" +add_replacement "###RELATIVE_BUILD_DIR###" "$RELATIVE_BUILD_DIR" if [ "x$PATHTOOL" != "x" ]; then add_replacement "###BASH_RUNNER_PREFIX###" "\$PROJECT_DIR\$/.idea/bash.bat" else @@ -301,3 +309,15 @@ if [ "x$PATHTOOL" != "x" ]; then echo "$WINENV_ROOT\bin\bash.exe -l -c \"cd %CD:\=/%/ && %*\"" >> "$IDEA_OUTPUT/bash.bat" fi fi + + + +if [ "$VERBOSE" = true ] ; then + IDEA_PROJECT_DIR="`dirname $IDEA_OUTPUT`" + if [ "x$PATHTOOL" != "x" ]; then + IDEA_PROJECT_DIR="`$PATHTOOL -am $IDEA_PROJECT_DIR`" + fi + echo " +Now you can open \"$IDEA_PROJECT_DIR\" as IDEA project +You can also run 'bash \"$IDEA_OUTPUT/jdk-clion/update-project.sh\"' to generate Clion project" +fi \ No newline at end of file diff --git a/make/ide/idea/jdk/IdeaGenConfig.gmk b/make/ide/idea/jdk/IdeaGenConfig.gmk index 7565cb7a566e..bb832b66b89f 100644 --- a/make/ide/idea/jdk/IdeaGenConfig.gmk +++ b/make/ide/idea/jdk/IdeaGenConfig.gmk @@ -54,6 +54,7 @@ idea: $(ECHO) "RELATIVE_PROJECT_DIR=\"$(call RelativePath,$(TOPLEVEL_DIR),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT) # $(ECHO) "RELATIVE_PROJECT_DIR=\"$(call RelativePath,$(topdir),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT) $(ECHO) "RELATIVE_BUILD_DIR=\"$(call RelativePath,$(OUTPUTDIR),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT) + $(ECHO) "CLION_RELATIVE_PROJECT_DIR=\"$(call RelativePath,$(topdir),$(IDEA_OUTPUT_PARENT)/.idea/jdk-clion)\"" >> $(OUT) $(ECHO) "PATHTOOL=\"$(PATHTOOL)\"" >> $(OUT) $(ECHO) "JT_HOME=\"$(JT_HOME)\"" >> $(OUT) $(ECHO) "WINENV_ROOT=\"$(WINENV_ROOT)\"" >> $(OUT) diff --git a/make/ide/idea/jdk/template/.name b/make/ide/idea/jdk/template/jdk-clion/.idea/.name similarity index 100% rename from make/ide/idea/jdk/template/.name rename to make/ide/idea/jdk/template/jdk-clion/.idea/.name diff --git a/make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml b/make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml new file mode 100644 index 000000000000..787e31971f49 --- /dev/null +++ b/make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml b/make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml new file mode 100644 index 000000000000..726bb30b95c9 --- /dev/null +++ b/make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml b/make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml new file mode 100644 index 000000000000..221cc601bdf0 --- /dev/null +++ b/make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/make/ide/idea/jdk/template/jdk-clion/update-project.sh b/make/ide/idea/jdk/template/jdk-clion/update-project.sh new file mode 100644 index 000000000000..571145aabdf9 --- /dev/null +++ b/make/ide/idea/jdk/template/jdk-clion/update-project.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +TOPDIR="###CLION_SCRIPT_TOPDIR###" +BUILD_DIR="###RELATIVE_BUILD_DIR###" +PATHTOOL="###PATHTOOL###" + + + +cd "`dirname $0`" +SCRIPT_DIR="`pwd`" +cd "$TOPDIR" + +echo "Updating Clion project files in \"$SCRIPT_DIR\" for project \"`pwd`\"" + +set -o pipefail +make compile-commands SPEC="$BUILD_DIR/spec.gmk" | sed 's/^/ /' || exit 1 + +if [ "x$PATHTOOL" != "x" ]; then + CLION_PROJECT_DIR="`$PATHTOOL -am $SCRIPT_DIR`" + sed "s/\\\\\\\\\\\\\\\\/\\\\\\\\/g" "$BUILD_DIR/compile_commands.json" > "$SCRIPT_DIR/compile_commands.json" +else + CLION_PROJECT_DIR="$SCRIPT_DIR" + cp "$BUILD_DIR/compile_commands.json" "$SCRIPT_DIR" +fi + +echo " +Now you can open \"$CLION_PROJECT_DIR\" as Clion project +If Clion complains about missing files when loading a project, building it may help: + cd \"`pwd`\" && make SPEC=\"$BUILD_DIR/spec.gmk\"" diff --git a/make/ide/idea/jdk/template/vcs.xml b/make/ide/idea/jdk/template/vcs.xml index 9ba53c5f1f1e..31bda57fe54a 100644 --- a/make/ide/idea/jdk/template/vcs.xml +++ b/make/ide/idea/jdk/template/vcs.xml @@ -4,8 +4,8 @@