diff --git a/core/base_rules.mk b/core/base_rules.mk index eda08bca7..700917db7 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -505,6 +505,8 @@ ALL_MODULES.$(LOCAL_MODULE).REQUIRED := \ $(ALL_MODULES.$(LOCAL_MODULE).REQUIRED) $(LOCAL_REQUIRED_MODULES) ALL_MODULES.$(LOCAL_MODULE).EVENT_LOG_TAGS := \ $(ALL_MODULES.$(LOCAL_MODULE).EVENT_LOG_TAGS) $(event_log_tags) +ALL_MODULES.$(LOCAL_MODULE).INTERMEDIATE_SOURCE_DIR := \ + $(ALL_MODULES.$(LOCAL_MODULE).EVENT_LOG_TAGS) $(LOCAL_INTERMEDIATE_SOURCE_DIR) ########################################################### ## Take care of LOCAL_MODULE_TAGS diff --git a/core/clear_vars.mk b/core/clear_vars.mk index f58e3ddd2..82894f6c5 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -51,6 +51,7 @@ LOCAL_PREBUILT_JAVA_LIBRARIES:= LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:= LOCAL_PREBUILT_STRIP_COMMENTS:= LOCAL_INTERMEDIATE_SOURCES:= +LOCAL_INTERMEDIATE_SOURCE_DIRS:= LOCAL_JAVACFLAGS:= LOCAL_JAVA_LIBRARIES:= LOCAL_NO_STANDARD_LIBRARIES:= diff --git a/core/java.mk b/core/java.mk index e7a1a51dc..e4dc62918 100644 --- a/core/java.mk +++ b/core/java.mk @@ -91,6 +91,7 @@ LOCAL_INTERMEDIATE_TARGETS += \ $(built_dex) \ $(built_dex_intermediate) +LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src # TODO: It looks like the only thing we need from base_rules is # all_java_sources. See if we can get that by adding a @@ -108,7 +109,7 @@ include $(BUILD_SYSTEM)/base_rules.mk $(LOCAL_INTERMEDIATE_TARGETS): \ PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes $(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src + PRIVATE_SOURCE_INTERMEDIATES_DIR := $(LOCAL_INTERMEDIATE_SOURCE_DIR) # Since we're using intermediates.COMMON, make sure that it gets cleaned # properly. diff --git a/core/main.mk b/core/main.mk index 14f4f5458..078aae5bd 100644 --- a/core/main.mk +++ b/core/main.mk @@ -49,6 +49,10 @@ BUILD_SYSTEM := $(TOPDIR)build/core DEFAULT_GOAL := droid $(DEFAULT_GOAL): +# Used to force goals to build. Only use for conditionally defined goals. +.PHONY: FORCE +FORCE: + # Set up various standard variables based on configuration # and host information. include $(BUILD_SYSTEM)/config.mk diff --git a/core/tasks/ide.mk b/core/tasks/ide.mk new file mode 100644 index 000000000..57a460929 --- /dev/null +++ b/core/tasks/ide.mk @@ -0,0 +1,51 @@ +# +# Copyright (C) 2010 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +define filter-ide-goals +$(strip $(filter $(1)-%,$(MAKECMDGOALS))) +endef + +define filter-ide-modules +$(strip $(subst -,$(space),$(patsubst $(1)-%,%,$(2)))) +endef + +# eclipse +eclipse_project_goals := $(call filter-ide-goals,ECLIPSE) +ifdef eclipse_project_goals + ifneq ($(words $(eclipse_project_goals)),1) + $(error Only one ECLIPSE- goal may be specified: $(eclipse_project_goals)) + endif + eclipse_project_modules := $(call filter-ide-modules,ECLIPSE,$(eclipse_project_goals)) + + source_paths := $(foreach m,$(eclipse_project_modules),$(ALL_MODULES.$(m).PATH)) \ + $(foreach m,$(eclipse_project_modules),$(ALL_MODULES.$(m).INTERMEDIATE_SOURCE_DIR)) + +.classpath: PRIVATE_MODULES := $(eclipse_project_modules) +.classpath: PRIVATE_DIRS := $(source_paths) $(INTERNAL_SDK_SOURCE_DIRS) + +# 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 '' > $@ + $(hide) for p in $(PRIVATE_DIRS) ; do \ + echo -n ' ' >> $@ ; \ + done + $(hide) echo '' >> $@ +endif +