56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
# Step 1: Dependency Smoke Tests
|
|
|
|
## 읽어야 할 파일
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/PRD.md`
|
|
- `/docs/ARCHITECTURE.md`
|
|
- `/docs/ADR.md`
|
|
- `/docs/HARNESS.md`
|
|
- `/docs/superpowers/plans/2026-07-29-fesa-phase-1.md`
|
|
- `/CMakeLists.txt`
|
|
- `/CMakePresets.json`
|
|
- `/cmake/FesaDependencies.cmake`
|
|
- `/.harness/config.json`
|
|
- `/tests/CMakeLists.txt`
|
|
|
|
이전 step의 CMake target과 preset을 그대로 확장하라.
|
|
|
|
## 작업
|
|
|
|
사전 설치된 oneMKL, oneTBB, HDF5 C API, GoogleTest/GoogleMock을 CMake imported
|
|
target으로 찾고 링크 계약을 검증한다.
|
|
|
|
- `tests/unit/dependencies/dependency_smoke_test.cpp`를 먼저 작성한다.
|
|
- 테스트는 MKL의 작은 vector 연산, TBB의 제한된 parallel loop, HDF5 임시 파일
|
|
생성·닫기, GoogleTest 실행을 확인한다.
|
|
- `FesaDependencies.cmake`는 `MKL::MKL`, TBB imported target, HDF5 C target,
|
|
GoogleTest target을 제공해야 한다.
|
|
- oneMKL은 LP64, dynamic link, TBB threading 조합을 사용한다.
|
|
- runtime DLL 또는 architecture 불일치는 configure diagnostic으로 보고한다.
|
|
|
|
## Acceptance Criteria
|
|
|
|
```powershell
|
|
cmake --preset windows-debug
|
|
cmake --build --preset windows-debug
|
|
ctest --preset windows-debug -R DependencySmoke --output-on-failure
|
|
ctest --preset windows-debug --output-on-failure
|
|
```
|
|
|
|
네 의존성을 실제 호출하는 smoke test가 통과해야 하며 새 MSVC 경고가 없어야 한다.
|
|
|
|
## 검증 절차
|
|
|
|
1. smoke test를 먼저 추가하고 link 또는 실행 실패를 확인한다.
|
|
2. dependency discovery와 target link만 최소 수정한다.
|
|
3. 전체 configure/build/test를 새로 실행한다.
|
|
4. 성공 시 정확한 imported target과 탐색 파일을 summary에 기록한다.
|
|
5. 패키지나 MSVC가 없으면 세 차례 임의 수정하지 말고 `blocked`로 종료한다.
|
|
|
|
## 금지사항
|
|
|
|
- FetchContent, vcpkg, Conan 또는 다운로드를 추가하지 마라. 이유: ADR-002 위반이다.
|
|
- vendor 절대경로를 public header에 노출하지 마라. 이유: backend 격리를 깨뜨린다.
|
|
- solver 기능을 구현하지 마라. 이유: 이 step은 build dependency 계약만 다룬다.
|