Clang Project

clang_source_code/test/Modules/explicit-build-relpath.cpp
1// RUN: rm -rf %t
2// RUN: mkdir %t
3// RUN: cd %t
4
5// ----------------------
6// Build modules A and B.
7// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
8// RUN:            -fmodule-name=a -emit-module %S/Inputs/explicit-build/module.modulemap -o a.pcm
9//
10// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
11// RUN:            -fmodule-file=a.pcm \
12// RUN:            -fmodule-name=b -emit-module %S/Inputs/explicit-build/module.modulemap -o b-rel.pcm
13//
14// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
15// RUN:            -fmodule-file=%t/a.pcm \
16// RUN:            -fmodule-name=b -emit-module %S/Inputs/explicit-build/module.modulemap -o b-abs.pcm
17
18// ------------------------------------------
19// Mix and match relative and absolute paths.
20// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
21// RUN:            -I%S/Inputs/explicit-build \
22// RUN:            -fmodule-file=%t/a.pcm \
23// RUN:            -fmodule-file=a.pcm \
24// RUN:            -verify %s
25//
26// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
27// RUN:            -I%S/Inputs/explicit-build \
28// RUN:            -fmodule-file=%t/a.pcm \
29// RUN:            -fmodule-file=b-rel.pcm \
30// RUN:            -verify %s
31//
32// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
33// RUN:            -I%S/Inputs/explicit-build \
34// RUN:            -fmodule-file=a.pcm \
35// RUN:            -fmodule-file=b-abs.pcm \
36// RUN:            -verify %s
37//
38// RUN: not %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \
39// RUN:            -I%S/Inputs/explicit-build \
40// RUN:            -fmodule-file=b-rel.pcm \
41// RUN:            -fmodule-file=b-abs.pcm \
42// RUN:            -verify %s 2>&1 | FileCheck %s
43// CHECK: module 'b' is defined in both '{{.*}}b-rel.pcm' and '{{.*}}b-abs.pcm'
44
45#include "a.h"
46static_assert(a == 1, "");
47// expected-no-diagnostics
48