Solved.

It is the Android.mk

====pm-qa Android.mk====
include $(call all-subdir-makefiles)

include $(CLEAR_VARS)
CPUFREQ := cpufreq_01.sh cpufreq_02.sh cpufreq_03.sh cpufreq_04.sh cpufreq_05.sh cpufreq_06.sh cpufreq_07.sh cpufreq_08.sh cpufreq_09.sh

CPUHOTPLUG := cpuhotplug_01.sh cpuhotplug_02.sh cpuhotplug_03.sh cpuhotplug_04.sh cpuhotplug_05.sh cpuhotplug_06.sh cpuhotplug_07.sh cpuhotplug_08.sh 1_sanity_check.sh z_sanity_check.sh

CPUIDLE := cpuidle_01.sh cpuidle_02.sh cpuidle_03.sh cpuidle_killer 

INCLUDE := functions.sh suspend.sh thermal_functions.sh

SCHED_MC := sched_01.sh sched_02.sh sched_03.sh sched_04.sh

SUSPEND := suspend_01.sh suspend_02.sh suspend_03.sh suspend_04.sh suspend_05.sh suspend_06.sh

THERMAL := thermal_01.sh thermal_02.sh thermal_03.sh thermal_04.sh thermal_05.sh thermal_06.sh

UTILS := cpuburn cpucycle heat_cpu nanosleep

systemtarball: $(CPUFREQ) $(CPUHOTPLUG) $(CPUIDLE) $(INCLUDE) $(SCHED_MC) $(SUSPEND) $(THERMAL) $(UTILS)

BRs,
Kejun


On 14 June 2012 11:03, Kejun Zhou <kejun.zhou@linaro.org> wrote:


If I write Android.mk and device/linaro/common/common.mk like following, the pm-qa will not be build.

===device/linaro/common/common.mk===
    powertop \
+    pm-qa \
    mmtest \



====pm-qa Android.mk ====

.PHONY: pm-qa

droid: pm-qa

systemtarball: pm-qa  

#LOCAL_MODULE := pm-qa

pm-qa: \
    $(CPUFREQ) \
    $(CPUHOTPLUG) \
    $(CPUIDLE) \
    $(INCLUDE) \
    $(SCHED_MC) \
    $(SUSPEND) \
    $(THERMAL) \
    $(UTILS)
        mkdir -p ../../$(PRODUCT_OUT)/system/xbin/pm-qa/cpufreq && \
        cp $(CPUFREQ) ../../$(PRODUCT_OUT)/system/xbin/pm-qa/cpufreq


~             

On 12 June 2012 13:13, Zach Pfeffer <zach.pfeffer@linaro.org> wrote:
On 11 June 2012 21:40, Kejun Zhou <kejun.zhou@linaro.org> wrote:
> git://git.linaro.org/tools/pm-qa.git
>
> I think this makefile issue is Android team's task. I don't like to disturb
> PMWG.

First.

We don't disturb each other, we work together to build a solution
that's going to work on the platforms we need the solution to work on.
With that in mind what we have to do is create a single pm-qa
LOCAL_MODULE that's dependent on all the other modules and then
include the pm-qa hook in

device/linaro/common/common.mk

alternatively you can use the busybox method and do something like:


.PHONY: busybox

droid: busybox

systemtarball: busybox

busybox: ...stuff


that doesn't require changes to device/linaro/common/common.mk but is
fairly Linaro specific, so the previous solution is preferred. As a
follow on we don't even need a hook in  device/linaro/common/common.mk
if

LOCAL_MODULE_TAGS := test

...and we build "tests"

in fact you could just update each one of your LOCAL_MODULE_TAGS to be
tests and everything may work. To rebuild android for tests just

export TARGET_BUILD_VARIANT=tests

and then build. Bero and Zyga are working on getting all builds to make tests

>
>
> On 12 June 2012 10:37, Zach Pfeffer <zach.pfeffer@linaro.org> wrote:
>>
>> Kejun,
>>
>> Adding Hongbo and Amit.
>>
>> Which git are you working from?
>>
>> On 11 June 2012 21:07, Kejun Zhou <kejun.zhou@linaro.org> wrote:
>> >
>> >
>> > ---------- Forwarded message ----------
>> > From: Kejun Zhou <kejun.zhou@linaro.org>
>> > Date: 11 June 2012 15:57
>> > Subject: A question about Android build system.
>> > To: Mathieu Poirier <mathieu.poirier@linaro.org>, Bernhard Rosenkränzer
>> > <Bernhard.Rosenkranzer@linaro.org>
>> > Cc: Zach Pfeffer <zach.pfeffer@linaro.org>
>> >
>> >
>> > Hi,
>> > I have a question about adding pm-qa into Android. Could you give me
>> > some
>> > help?
>> > There are many scripts in pm-qa. Each script is independent test case.
>> >
>> > My question is how to make the Android build the pm-qa automatically
>> > without
>> > a modification of target/product/core.mk.
>> >
>> > Take the cpuidle which is one of pm-qa test modules.
>> > (1) There are cpuidle_01.sh, cpuidle_02.sh, cpuidle_03.sh and
>> > cpuidle_killer.c in pm-qa/cpuidle/ folder.
>> >
>> >
>> > (2) The Android.mk lists cpuidle_01.sh, cpuidle_02.sh, cpuidle_03.sh and
>> > cpuidle_killer as independent modules.
>> > ~~~~~cpuidle Android.mk~~~~~~~~~
>> > include $(call all-subdir-makefiles)
>> > LOCAL_PATH:= $(call my-dir)
>> >
>> > module_name = cpuidle
>> >
>> > define $(module_name)_add_executable
>> >     include $(CLEAR_VARS)
>> >     LOCAL_MODULE_TAGS := optional
>> >     LOCAL_MODULE_CLASS := tests
>> >     LOCAL_MODULE := $1.sh
>> >     LOCAL_SRC_FILES := $1.sh
>> >     LOCAL_MODULE_PATH :=
>> > $(TARGET_OUT_OPTIONAL_EXECUTABLES)/pm-qa/$(module_name)
>> >     include $(BUILD_PREBUILT)
>> > endef
>> >
>> > test_num := 01 02 03
>> > $(foreach item,$(test_num),$(eval $(call $(module_name)_add_executable,
>> > $(module_name)_$(item))))
>> >
>> > include $(CLEAR_VARS)
>> > LOCAL_MODULE := cpuidle_killer
>> > LOCAL_SRC_FILES:= cpuidle_killer.c
>> > LOCAL_STATIC_LIBRARIES := libcutils libc
>> > LOCAL_MODULE_TAGS := tests
>> > LOCAL_MODULE_PATH :=
>> > $(TARGET_OUT_OPTIONAL_EXECUTABLES)/pm-qa/$(module_name)
>> > include $(BUILD_EXECUTABLE)
>> >
>> > (3) Is it possible only add the pm-qa/cpuide folder under
>> > (Android_platform)/external/pm-qa, and the Android build system will
>> > build
>> > the pm-qa/cpuidle automatically?
>> >
>> >
>> > BRs,
>> > Kejun
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > linaro-android mailing list
>> > linaro-android@lists.linaro.org
>> > http://lists.linaro.org/mailman/listinfo/linaro-android
>> >
>>
>>
>>
>> --
>> Zach Pfeffer
>> Android Platform Team Lead, Linaro Platform Teams
>> Linaro.org | Open source software for ARM SoCs
>> Follow Linaro: http://www.facebook.com/pages/Linaro
>> http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
>
>



--
Zach Pfeffer
Android Platform Team Lead, Linaro Platform Teams
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog