From 77dc0a58e27fe7c3fcdb67bbee71010c59dd4344 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Mon, 17 May 2010 18:16:11 -0700 Subject: [PATCH] Add a rule that builds an eclipse project file for an app. Type make ECLIPSE--... with the apps as listed in LOCAL_PACKAGE_NAME. Change-Id: Ieb96dfc9dfc13bdf1b3be53572092fc7bc695869 --- core/base_rules.mk | 2 ++ core/clear_vars.mk | 1 + core/java.mk | 3 ++- core/main.mk | 4 ++++ core/tasks/ide.mk | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 core/tasks/ide.mk diff --git a/core/base_rules.mk b/core/base_rules.mk index 0ad797a88..d9290c44a 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -496,6 +496,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 0fe3c8bce..14ead8331 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 baa83ee0c..4955a3394 100644 --- a/core/java.mk +++ b/core/java.mk @@ -87,6 +87,7 @@ LOCAL_INTERMEDIATE_TARGETS += \ $(full_classes_jarjar_jar) \ $(built_dex) +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 @@ -104,7 +105,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 d9e8dd8f4..f52b4735e 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 +