On Tue, 7 Mar 2023 16:44:26 GMT, Julian Waters <[email protected]> wrote:

>> Eclipse is a popular and very well-known IDE in the world of Java 
>> development, utilized widely in many contexts, by beginners and experienced 
>> teams alike. Although a relatively lightweight IDE, it features surprisingly 
>> powerful indexing and code analysis capabilities, as well as useful tools, 
>> among which are make integration. While the tools it provides are not always 
>> as sophisticated as other IDEs (IntelliJ IDEA will likely come to mind as 
>> one such competitor), the simplicity of using it, as well as the reliability 
>> of this rugged IDE makes up greatly for the slightly less advanced tooling. 
>> Eclipse requires very little starting infrastructure in the workspace for 
>> all these features and indexing support as well, which makes it a good 
>> candidate for developing on the JDK.
>> 
>> This enhancement adds 4 extra targets to the make system for generating a 
>> basic Eclipse Workspace that provides almost full indexing support for the 
>> JDK, with varying levels as desired, from a minimalistic option only 
>> including the Java Virtual Machine's source code, to generating a workspace 
>> with both Java and C/C++ natures included, which allows for using Eclipse's 
>> unique ability to quickly swap between Java and C/C++ mode to work on both 
>> native and Java sources at the same time. Cross Compiling support is 
>> available, and in its entirety the change touches very little of the 
>> existing make system, barring its own Makefile within the ide subdirectory.
>> 
>> Indexing capabilities utilizing the enhancement:
>> <img width="960" alt="java" 
>> src="https://user-images.githubusercontent.com/32636402/197784819-67ec7de4-7e27-4f33-b738-59b75a9e4403.PNG";>
>> <img width="787" alt="escape" 
>> src="https://user-images.githubusercontent.com/32636402/197784843-df8621a8-7b0a-42da-86f4-3afb92de0f71.PNG";>
>
> Julian Waters has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Address Review and add extra comments

Functionally this looks ok to me, just some comment on cosmetics.

doc/ide.md line 94:

> 92: indexing the Java sources in the JDK (see below), is to enable dark mode
> 93: before doing so. Trust us, it looks much better than Eclipse's default 
> look
> 94: and feel. ;)

Does this change how Eclipse functions with our sources in any way, or is it 
just your opinion that it looks better? If the latter, then I don't think it 
really belongs in this document.

make/ide/eclipse/CreateWorkspace.gmk line 40:

> 38: include hotspot/lib/JvmFlags.gmk
> 39: 
> 40: # Warning: This file does not have the best formatting!

Is this still true? If so, we should fix that so the comment can be removed.

After having read through the file. I find quite a few places where broken up 
lines have 2 space indentation instead of 4. (See 
https://openjdk.org/groups/build/doc/code-conventions.html) Fixing this should 
be pretty quick and simple and will greatly improve readability at least for me 
and Magnus. I will mark some of the typical cases for you.

make/ide/eclipse/CreateWorkspace.gmk line 60:

> 58: # Taken from JdkNativeCompilation.gmk
> 59: FindJavaHeaderDir = \
> 60:   $(if $(strip $1),$(wildcard $(SUPPORT_OUTPUTDIR)/headers/$(strip $1)))

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 64:

> 62: JAVA_DIRS := $(strip $(foreach module, $(call FindAllModules), \
> 63:   $(patsubst $(TOPDIR)/%,%,$(filter-out $(OUTPUTDIR)%, \
> 64:   $(call FindModuleSrcDirs, $(module))))))

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 134:

> 132:     # This is an annoying bug that has not been fixed for some time now
> 133:     $1_CLASSPATH += $$(foreach src,$(JAVA_DIRS), \
> 134:       <classpathentry 
> excluding="module-info.java|module-info.java.extra" kind="src" 
> path="$$(src)"/>$$(NEWLINE))

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 141:

> 139:       REPLACEMENTS := \
> 140:           @@CLASSPATH@@ => $$($1_CLASSPATH), \
> 141:     ))

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 154:

> 152: 
> 153:     $1_BUILD_MANAGERS += \
> 154:       <buildCommand> \

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 168:

> 166: 
> 167:     $1_NATURES += \
> 168:       <nature>org.eclipse.cdt.core.cnature</nature> \

Indent 4.

make/ide/eclipse/CreateWorkspace.gmk line 233:

> 231:           @@SRC@@ => $$($1_NATIVE_SRCS) ; \
> 232:           @@MAKE_TARGETS@@ => $$($1_MATCHING_MAKE_TARGETS), \
> 233:     ))

Suggestion:

    $$(eval $$(call SetupTextFileProcessing, $1_CREATE_NATIVE_FILE, \
        SOURCE_FILES := $(TOPDIR)/make/ide/eclipse/native.template, \
        OUTPUT_FILE := $$($1_NATIVE_FILE), \
        REPLACEMENTS := \
            @@DIR@@ => $$(call FixPath, $(TOPDIR)) ; \
            @@ENV@@ => $$($1_ENV) ; \
            @@WORKSPACE@@ => $$($1_WORKSPACE_MAJOR) ; \
            @@MINOR@@ =>  $$($1_WORKSPACE_MINOR) ; \
            @@MAKE@@ => $$($1_MAKE) ; \
            @@SRC@@ => $$($1_NATIVE_SRCS) ; \
            @@MAKE_TARGETS@@ => $$($1_MATCHING_MAKE_TARGETS), \
    ))

make/ide/eclipse/CreateWorkspace.gmk line 315:

> 313:           @@CSETTINGS@@ => $$($1_CSETTINGS) ; \
> 314:           @@CXXSETTINGS@@ => $$($1_CXXSETTINGS), \
> 315:     ))

Suggestion:

    $$(eval $$(call SetupTextFileProcessing, $1_CREATE_SETTINGS_FILE, \
        SOURCE_FILES := $(TOPDIR)/make/ide/eclipse/settings.template, \
        OUTPUT_FILE := $$($1_SETTINGS_FILE), \
        REPLACEMENTS := \
            @@WORKSPACE@@ => $$($1_WORKSPACE_MAJOR) ; \
            @@CSETTINGS@@ => $$($1_CSETTINGS) ; \
            @@CXXSETTINGS@@ => $$($1_CXXSETTINGS), \
    ))

make/ide/eclipse/CreateWorkspace.gmk line 364:

> 362:         @@NATURES@@ => $$($1_NATURES) ; \
> 363:         @@LINKED_RESOURCES@@ => $$($1_LINKED_RESOURCES), \
> 364:   ))

Suggestion:

  $$(eval $$(call SetupTextFileProcessing, $1_CREATE_WORKSPACE_FILE, \
      SOURCE_FILES := $(TOPDIR)/make/ide/eclipse/workspace.template, \
      OUTPUT_FILE := $$($1_WORKSPACE_FILE), \
      REPLACEMENTS := \
          @@BUILD_MANAGERS@@ => $$($1_BUILD_MANAGERS) ; \
          @@NATURES@@ => $$($1_NATURES) ; \
          @@LINKED_RESOURCES@@ => $$($1_LINKED_RESOURCES), \
  ))

make/ide/eclipse/CreateWorkspace.gmk line 390:

> 388:   SHARED := $(SHARED), \
> 389: ))
> 390: endif

The lack of indentation makes this hard to read. This is how I would like the 
first block to look:

ifeq ($(WORKSPACE), java)
  $(eval $(call SetupEclipseWorkspace, SETUP_WORKSPACE, \
      NATURE := JAVA, \
      SHARED := $(SHARED), \
  ))
else ...

-------------

PR: https://git.openjdk.org/jdk/pull/10853

Reply via email to