2013년 6월 19일 수요일

makefile 살펴보기 00001

sepolicy_replace_paths :=
$(foreach pf, $(BOARD_SEPOLICY_REPLACE), \
  $(if $(filter $(pf), $(BOARD_SEPOLICY_UNION)), \
    $(error Ambiguous request for sepolicy $(pf). Appears in both \
      BOARD_SEPOLICY_REPLACE and BOARD_SEPOLICY_UNION), \
  ) \
  $(eval _paths := $(filter-out $(BOARD_SEPOLICY_IGNORE), \
  $(wildcard $(addsuffix /$(pf), $(BOARD_SEPOLICY_DIRS))))) \
  $(eval _occurrences := $(words $(_paths))) \
  $(if $(filter 0,$(_occurrences)), \
    $(error No sepolicy file found for $(pf) in $(BOARD_SEPOLICY_DIRS)), \
  ) \
  $(if $(filter 1, $(_occurrences)), \
    $(eval sepolicy_replace_paths += $(_paths)), \
    $(error Multiple occurrences of replace file $(pf) in $(_paths)) \
  ) \
  $(if $(filter 0, $(words $(wildcard $(addsuffix /$(pf), $(LOCAL_PATH))))), \
    $(error Specified the sepolicy file $(pf) in BOARD_SEPOLICY_REPLACE, \
      but none found in $(LOCAL_PATH)), \
  ) \
)


Sepolicy_replace_path := 시작하는 한줄이기 때문에 끝마다 \ 붙음.
변수 대입 인자 :=
(BOARD_SEPOLICY_REPLACE) 인자들을
Pf 대입하여, BOARD_SEPOLICY_UNION 있는 내용이면 강제 에러 발생, $error 사용법.

11 down vote accepted
From the manual:
$(error Bad svn version v1.4, please install v1.6)
This will result make to a fatal error:
$ make
Makefile:2: *** Bad svn version v1.4, please install v1.6.  Stop.




Eval 키워드는 좌변을 무조건 변수로 만들어 준다. 정도로 이해 바람.

_paths에는 BOARD_SEPOLICY_DIRS / pf변수 (,BOARD_SEPOLICY_REPLACE)  에서 BOARD_SEPOLICY_IGNORE 값이 들어감.
_occurrences에는 _paths 단어수가 들어감.
아래쪽에서 0이면 암것도 없는거고 1이면 해당

$(addsuffix suffix,names...)
매개변수 names는 공백문자들로 분리된, 일단의 이름들로 취급된다; suffix는 유닛으로써 사용된다. suffix의 값은 각 개별 이름의 끝에 더해지고 그들 사이에 단일 스페이스들을 추가한 더 큰 이름들이 그 결과이다. 예를 들어서,
$(addsuffix .c,foo bar)
는 `foo.c bar.c'라는 결과를 만들어낸다.


$(wildcard pattern)
pattern 매개변수는 파일 이름 패턴이다. 전형적으로 와일드 카드 문자들 (쉘 파일 이름 패턴과 동일한) 을 담고 있다. wildcard 함수의 결과는 패턴과 일치하는 현존하는 파일들의 이름들을 스페이스로 분리한 리스트이다. See section 파일 이름에 와일드카드 사용(Using Wildcard Characters in File Names).


$(word n,text)
이것은 text의 n번째 단어를 리턴한다. n의 합법적인 값은 1부터 시작한다. n가 text에 있는 단어들 개수보다 더 크다면 그 값은 빈 것이 된다. 예를 들어서,
$(word 2, foo bar baz)
`bar'를 리턴한다.


$(words text)
이것은 text에 있는 단어들 개수를 리턴한다. 그래서, text의 마지막 단어는 $(word $(words text),text) 로 표현될 수 있다





댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...