백엔드 옵션 (--llvm, --whale)
이 문서는 wavec의 백엔드 관련 CLI 옵션을 설명합니다.
중요 원칙:
wavec는 패키지 매니저가 아닙니다.- 백엔드 동작은 가능한 한 명시적 인자로 제어합니다.
- 백엔드 세부 옵션은
--llvm뒤에서만 해석됩니다.
1. 백엔드 선택자
1.1 --llvm
--llvm 자체는 백엔드 옵션 블록의 시작 마커입니다.
wavec --llvm --target=x86_64-unknown-linux-gnu build app.wave -c
위처럼 --llvm 뒤에 오는 인자들 중 지원되는 항목만 LLVM 백엔드 설정으로 처리됩니다.
1.2 --whale (현재 TODO)
현재 --whale은 예약된 더미 플래그입니다.
- 파서는 인식합니다.
- 실제 Whale 백엔드 파이프라인은 아직 연결되어 있지 않습니다.
- 사용 시 TODO 에러로 종료됩니다.
2. --llvm 뒤에서 지원되는 옵션
2.1 타겟/코드젠
--target <triple>/--target=<triple>--cpu <name>/--cpu=<name>--features <csv>/--features=<csv>--abi <name>/--abi=<name>
반영 지점:
- IR 생성(TargetMachine) 단계:
target,cpu,features - 오브젝트/링크 단계(clang 호출):
target,abi
2.2 툴체인/링크
--sysroot <path>/--sysroot=<path>-C linker=<path>-C link-arg=<arg>(반복 가능)-C no-default-libs
반영 지점:
- 오브젝트 생성(clang
-c)에--sysroot - 링크 단계에서 linker override, raw link arg 주입
-C no-default-libs사용 시 자동-lc -lm비활성화
3. 파싱 규칙 (중요)
--llvm를 쓰지 않으면 백엔드 세부 옵션은 global option으로 해석되지 않습니다.
예를 들어 아래는 에러입니다.
wavec --target=x86_64-unknown-linux-gnu build app.wave -c