Make make ECLIPSE-lunch build a .classpath for all the java stuff that will be included in the
build.

Change-Id: I5a6066fa2afc9cb7bea794770bbb589615a1f9eb
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 580126b..c361d93 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -482,6 +482,8 @@
 
 # Don't use += on subvars, or else they'll end up being
 # recursively expanded.
+ALL_MODULES.$(LOCAL_MODULE).CLASS := \
+    $(ALL_MODULES.$(LOCAL_MODULE).CLASS) $(LOCAL_MODULE_CLASS)
 ALL_MODULES.$(LOCAL_MODULE).PATH := \
     $(ALL_MODULES.$(LOCAL_MODULE).PATH) $(LOCAL_PATH)
 ALL_MODULES.$(LOCAL_MODULE).TAGS := \
@@ -499,6 +501,8 @@
 ALL_MODULES.$(LOCAL_MODULE).INTERMEDIATE_SOURCE_DIR := \
     $(ALL_MODULES.$(LOCAL_MODULE).INTERMEDIATE_SOURCE_DIR) $(LOCAL_INTERMEDIATE_SOURCE_DIR)
 
+INSTALLABLE_FILES.$(LOCAL_INSTALLED_MODULE).MODULE := $(LOCAL_MODULE)
+
 ###########################################################
 ## Take care of LOCAL_MODULE_TAGS
 ###########################################################
diff --git a/core/tasks/ide.mk b/core/tasks/ide.mk
index 57a4609..e557e60 100644
--- a/core/tasks/ide.mk
+++ b/core/tasks/ide.mk
@@ -30,16 +30,27 @@
   endif
   eclipse_project_modules := $(call filter-ide-modules,ECLIPSE,$(eclipse_project_goals))
 
+  ifneq ($(filter lunch,$(eclipse_project_modules)),)
+    eclipse_project_modules := $(filter-out lunch,$(eclipse_project_modules))
+    installed_modules := $(foreach m,$(ALL_DEFAULT_INSTALLED_MODULES),\
+        $(INSTALLABLE_FILES.$(m).MODULE))
+    java_modules := $(foreach m,$(installed_modules),\
+        $(if $(filter JAVA_LIBRARIES APPS,$(ALL_MODULES.$(m).CLASS)),$(m),))
+    eclipse_project_modules := $(sort $(eclipse_project_modules) $(java_modules))
+  endif
+
   source_paths := $(foreach m,$(eclipse_project_modules),$(ALL_MODULES.$(m).PATH)) \
-              $(foreach m,$(eclipse_project_modules),$(ALL_MODULES.$(m).INTERMEDIATE_SOURCE_DIR))
+              $(foreach m,$(eclipse_project_modules),$(ALL_MODULES.$(m).INTERMEDIATE_SOURCE_DIR)) \
+              $(INTERNAL_SDK_SOURCE_DIRS)
+  source_paths := $(sort $(source_paths))
 
 .classpath: PRIVATE_MODULES := $(eclipse_project_modules)
-.classpath: PRIVATE_DIRS := $(source_paths) $(INTERNAL_SDK_SOURCE_DIRS)
+.classpath: PRIVATE_DIRS := $(source_paths)
 
 # the mess below with ./src tries to guess whether the src
 $(eclipse_project_goals): .classpath
 .classpath: FORCE
-	$(hide) echo Generating .classpath for modules: $(PRIVATE_MODULES)
+	$(hide) echo Generating .classpath for eclipse
 	$(hide) echo '<classpath>' > $@
 	$(hide) for p in $(PRIVATE_DIRS) ; do \
 		echo -n '  <classpathentry kind="src" path="' >> $@ ; \