Linux/Android
make file 디버깅, LOCAL_PATH , CLEAR_VARS 정체 확인하기
뭉기
2011. 9. 14. 17:59
요약 : Makefile내에 $(waning 디버깅 메세지 ) 적으면 로그로 나온다.
출처 : http://furmuwon.egloos.com/10675703
출처 : 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) 하면 된다.