depot_tools
크로미움을 설치하고 빌드하기 위해서는 depot_tools라는 것이 필요하다. 간단히
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
을 통해 받아올 수 있다.
설치가 완료되면
$ export PATH="$PATH:/path/to/depot_tools"
으로 PATH를 설정해준다.
Get the code
$ mkdir chromium && cd chromium
크로미움을 받아올 폴더가 필요하다. 원하는 폴더명으로 폴더를 생성한 후 이동하여
$ export PATH="$PATH:/path/to/depot_tools"
로 경로를 설정해준다.
내 경우에는 depot_tools 폴더를 홈 폴더 아래에 설치하여
$ export PATH="$PATH:${HOME}/depot_tools"
로 설정해주니 PATH가 정상적으로 설정되었다.
위의 PATH는 터미널을 껐다 키면 초기화되므로 영구적으로 적용하려면 본인의 쉘에 맞게
~/.bash_profile 또는 ~/.zshrc 의 맨 마지막 부분에 위의 PATH를 넣어주어야한다.
depot_tools의 경로가 설정되었다면 fetch나 gclient같은 명령어를 사용할 수 있다.
앞서 생성한 폴더에서
$ caffeinate fetch chromium
로 크로미움 소스를 받아온다.
약 70GB이기 때문에 상당히 오래걸린다.
다운이 모두 완료되었다면
$ cd src
로 이동하여
$ gn gen out/Default
out/Default라는 빌드 디렉토리를 생성한다.
크로미움은 Ninja라는 빌드 툴을 사용하니 내용을 더 알고 싶다면 링크로 들어가 읽어보는 것을 추천한다.
이제 빌드 준비가 모두 완료되었다. 크로미움 폴더 안에는 빌드할 수 있는 다양한 것들이 있다.
chrome 폴더 안의 BUILD.gn을 살펴보면 executable("chrome_initial")이라는 것이 있고
content/shell 안의 BUILD.gn을 살펴보면 executable("content_shell")
ui/views/examples 안의 BUILD.gn을 살펴보면 executable("views_examples_with_content") 가 있다.
$ gn ls out/Default
으로 빌드 타겟 리스트를 알 수 있다.
크롬은 chrome_initial로 되어있지만 주석을 읽어보면 그냥 chrome으로 빌드하면 되는 것을 알 수 있다.
# Because chrome_initial sets its output name to "chrome", running commands
# such as `ninja chrome` causes chrome_initial to be built instead. All
# deps and data_deps should be added to the chrome_initial target instead.
$ autoninja -C out/Default chrome
를 실행하면 chrome에 대한 빌드가 시작된다.
비슷하게, content_shell을 빌드하고 싶으면 위의 chrome 대신에 content_shell을
views_examples_with_content를 빌드하고 싶으면 chrome 대신에 입력하면 된다.
크로미움을 처음 접한다고 가정했을 때
크롬을 갖고 놀면 어려울 것 같아서 나는 views_examples_with_content을 빌드해보았다.
빌드가 완료되면
$ ./out/Default/views_examples_with_content
로 실행할 수 있다.
크롬은 가이드 문서에 따르면 조금 다르게
$ ./out/Default/Chromium.app/Contents/MacOS/Chromium
로 실행할 수 있나보다.
아래는 실행 결과이다.
이제 이 코드들을 바꿔보며 크로미움 코드에 익숙해지면 된다.
해당 내용은 다음 글에서 다뤄보려고 한다.