본문 바로가기

Linux/Android

make file 디버깅, LOCAL_PATH , CLEAR_VARS 정체 확인하기

요약 : Makefile내에 $(waning 디버깅 메세지 ) 적으면 로그로 나온다.

출처 : http://furmuwon.egloos.com/10675703

이 글은 나의 메모 이기 때문에 확실한 정보가 아닐 수 있다.

Makefile 자체를 debugging 하는 방법은 다음과 같이 Makefile 구문내에 적어주면 된다.

$(warning ######  my debug start)
$(warning ######  Check LOCAL_PATH:($(LOCAL_PATH)))

출력은 이렇게..

Makefile:3: ######  my debug start
Makefile:4: ######  Check 1 LOCAL_PATH:(hardware/어쩌구/저쩌구)

단순 텍스트 출력및 makefile 현재 라인까지의 로컬 변수 내용까지 확인 가능 하다.

Android.mk 에서 아래와 같은 구문이 나왔다.

include $(CLEAR_VARS)

인터넷을 검색해 보면 

Local Variables: Clear local variables with CLEAR_VARS (include $(CLEAR_VARS)). 라는데

 잘 이해가 안되어 위의 Makefile debug 구문을 Android.mk 에 넣어 봤다. 

어떤 Android.mk

$(warning ######  Start)
$(warning ######  Check 1 LOCAL_PATH:($(LOCAL_PATH)) )
$(warning ######  Check 1 CLEAR_VARS:($(CLEAR_VARS)) )

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

$(warning ######  Check 2 LOCAL_PATH:($(LOCAL_PATH)) )
$(warning ######  Check 2 CLEAR_VARS:($(CLEAR_VARS)) )

make 하고 돌리니 이렇게 출력이..

Android.mk:1: ######  Start
Android.mk:2: ######  Check 1 LOCAL_PATH:(hardware/Prev)
Android.mk:3: ######  Check 1 CLEAR_VARS:(build/core/clear_vars.mk)
Android.mk:8: ######  Check 2 LOCAL_PATH:(hardware/Current)
Android.mk:9: ######  Check 2 CLEAR_VARS:(build/core/clear_vars.mk)

결국 Android root 디렉토리 밑의 build.core/clear_vars.mk 를 include 한다.

clear_vars.mk 를 열어 보니

###########################################################
## Clear out values of all variables used by rule templates.
###########################################################

LOCAL_MODULE:=
LOCAL_MODULE_PATH:=
LOCAL_MODULE_STEM:=
LOCAL_DONT_CHECK_MODULE:=
LOCAL_CHECKED_MODULE:=
.
.
.
생략


요약하면

Android.mk file 을 작성 할 때 이전에 선언 되어 있던 Makefile 변수를 clear 하고 싶다면
clear_vars.mk 에 적어 주고 include $(CLEAR_VARS) 하면 된다.