[11u] RFR: 8210459, 8218807, 8223678: Support for creating Visual Studio Code projects
Volker Simonis
volker.simonis at gmail.com
Mon Dec 30 20:18:24 UTC 2019
Hi,
I'd like to downport the support for Visual Studio Code project
creation to 11u. I think we will have to support 11u for quite some
years and it makes sense to have as good as possible tool support in
11u as well.
This mail is especially intended to get a review from the build team
that the few changes to the patches are OK:
https://bugs.openjdk.java.net/browse/JDK-8210459
http://cr.openjdk.java.net/~simonis/webrevs/2019/8210459/
https://bugs.openjdk.java.net/browse/JDK-8218807
http://cr.openjdk.java.net/~simonis/webrevs/2019/8218807/
https://bugs.openjdk.java.net/browse/JDK-8223678
http://cr.openjdk.java.net/~simonis/webrevs/2019/8223678/
The downport consists of three changes which are additive (i.e. later
changes depend on earlier ones). That's why I decided to post just one
RFR, because looking at a single change makes no sense without the
corresponding context. The changes mostly apply cleanly except for
very few places where we need manual adjustments because of changed
context.
These changes only touch make files and actually only add new features
to the make system, so the normal build results shouldn't be affected.
I've tested that the build still works on Linux and Windows and "make
test-make" succeeds.
Following some details on the three changes:
8210459: Add support for generating compile_commands.json
The initial change which creates the compile_commands.json file (i.e.
"make compile_commands"). This file can be used for many tools (e.g.
CLion IDE, clangd, etc..)
Applies cleanly except for the following hunk, which has a different context:
ORIGINAL
========
CFLAGS_solaris := -KPIC, \
CFLAGS_macosx := -fPIC, \
DISABLED_WARNINGS_clang := format-nonliteral, \
- LDFLAGS := $(UNPACKEXE_ZIPOBJS) \
- $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
+ LDFLAGS := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
JDK11u
======
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
CFLAGS_macosx := -fPIC, \
- LDFLAGS := $(UNPACKEXE_ZIPOBJS) \
- $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
+ LDFLAGS := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
8218807: Compilation database (compile_commands.json) may contain obsolete items
This is a simple fix for 8210459 and applies cleanly
8223678: Add Visual Studio Code workspace generation support (for native code)
This change actually creates the VS Code project files (i.e. "make
vscode-project-ccls"). See
http://hg.openjdk.java.net/jdk/jdk/raw-file/tip/doc/ide.html for more
details.
Applies cleanly except the following two hunks. The first one had to
be moved back from "make/common/Utils.gmk" to
"make/common/MakeBase.gmk" where it still applies cleanly, because the
"RelativePath" macro is still in "MakeBase.gmk" in jdk11u.
ORIGINAL
========
diff -r a82a367b2d8c -r 2ae056696b15 make/common/Utils.gmk
--- a/make/common/Utils.gmk Mon Jun 03 17:14:23 2019 -0700
+++ b/make/common/Utils.gmk Mon Jun 03 10:28:03 2019 +0200
@@ -122,7 +122,8 @@
# $2 - Directory to compute the relative path from
RelativePath = \
$(eval $1_prefix := $(call FindCommonPathPrefix, $1, $2)) \
- $(eval $1_dotdots := $(call DirToDotDot, $(patsubst $($(strip
$1)_prefix)/%, %, $2))) \
+ $(eval $1_dotdots := $(call DirToDotDot, $(patsubst $($(strip
$1)_prefix)%, %, $2))) \
+ $(eval $1_dotdots := $(if $($(strip $1)_dotdots),$($(strip
$1)_dotdots),.)) \
$(eval $1_suffix := $(patsubst $($(strip $1)_prefix)/%, %, $1)) \
$($(strip $1)_dotdots)/$($(strip $1)_suffix)
JDK11u
======
diff -r 8599975f5b33 make/common/MakeBase.gmk
--- a/make/common/MakeBase.gmk Tue Feb 12 08:40:43 2019 +0100
+++ b/make/common/MakeBase.gmk Mon Dec 23 22:10:46 2019 +0100
@@ -611,7 +611,8 @@
# $2 - Directory to compute the relative path from
RelativePath = \
$(eval $1_prefix := $(call FindCommonPathPrefix, $1, $2)) \
- $(eval $1_dotdots := $(call DirToDotDot, $(patsubst $($(strip
$1)_prefix)/%, %, $2))) \
+ $(eval $1_dotdots := $(call DirToDotDot, $(patsubst $($(strip
$1)_prefix)%, %, $2))) \
+ $(eval $1_dotdots := $(if $($(strip $1)_dotdots),$($(strip
$1)_dotdots),.)) \
$(eval $1_suffix := $(patsubst $($(strip $1)_prefix)/%, %, $1)) \
$($(strip $1)_dotdots)/$($(strip $1)_suffix)
For the second changed hunk, the simple call of the "AssertEquals"
macro had to be renamed to "assert-equals" and wrapped with "eval"
because the corresponding macros haven't been updated in jdk11u yet.
Notice that these are only test changes (for testing the make system
iteslf) and don't effect the build at all.
ORIGINAL
========
diff -r a82a367b2d8c -r 2ae056696b15 test/make/TestMakeBase.gmk
--- a/test/make/TestMakeBase.gmk Mon Jun 03 17:14:23 2019 -0700
+++ b/test/make/TestMakeBase.gmk Mon Jun 03 10:28:03 2019 +0200
@@ -361,6 +361,18 @@
RelativePath, \
)
+$(call AssertEquals, \
+ $(call RelativePath, /foo/bar/baz/banan/kung, /foo/bar/baz), \
+ ./banan/kung, \
+ RelativePath, \
+)
+
+$(call AssertEquals, \
+ $(call RelativePath, /foo/bar/baz/banan/kung, /foo/bar/baz/), \
+ ./banan/kung, \
+ RelativePath, \
+)
JDK11u
======
diff -r 8599975f5b33 test/make/TestMakeBase.gmk
--- a/test/make/TestMakeBase.gmk Tue Feb 12 08:40:43 2019 +0100
+++ b/test/make/TestMakeBase.gmk Mon Dec 23 22:10:46 2019 +0100
@@ -325,13 +325,25 @@
RelativePath, \
))
+$(eval $(call assert-equals, \
+ $(call RelativePath, /foo/bar/baz/banan/kung, /foo/bar/baz), \
+ ./banan/kung, \
+ RelativePath, \
+))
+
+$(eval $(call assert-equals, \
+ $(call RelativePath, /foo/bar/baz/banan/kung, /foo/bar/baz/), \
+ ./banan/kung, \
+ RelativePath, \
+))
Finally, I've added an additional fix to this last change, whch fixes
the make tests (i.e. "make test-make"). These tests are currently
broken in jdk11u. They have been broken by JDK-8212028 (which has
already been downported to jdk11u) and fixed in jdk 12 as part of
"8210958: Rename "make run-test" to "make test"" (which hasn't been
downported yet and probably won't be donwported at all). Because the
fix is trivial (that's why it was done as part of 8210958 without an
extra bug ID) and because I wanted to run "make test-make" in jdk11u
as well to verify my changes, I've decided to downport this fix as
part of 8223678:
diff -r 8599975f5b33 test/make/TestMakeBase.gmk
--- a/test/make/TestMakeBase.gmk Tue Feb 12 08:40:43 2019 +0100
+++ b/test/make/TestMakeBase.gmk Mon Dec 23 22:10:46 2019 +0100
KWBASE := APA=banan;GURKA=tomat;COUNT=1%202%203%204%205;SUM=1+2+3+4+5;MANY_WORDS=I
have the best words.
$(eval $(call ParseKeywordVariable, KWBASE, \
- KEYWORDS := APA GURKA SUM, \
+ SINGLE_KEYWORDS := APA GURKA SUM, \
STRING_KEYWORDS := COUNT MANY_WORDS, \
))
@@ -364,7 +376,7 @@
KWBASE_WEIRD := ;;APA=banan;;;GURKA=apelsin;APA=skansen;;
$(eval $(call ParseKeywordVariable, KWBASE_WEIRD, \
- KEYWORDS := APA GURKA SUM, \
+ SINGLE_KEYWORDS := APA GURKA SUM, \
STRING_KEYWORDS := COUNT, \
))
More information about the jdk-updates-dev
mailing list