1 /* Definitions for specs for C++.
2    Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 
4 This file is part of GCC.
5 
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10 
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3.  If not see
18 <http://www.gnu.org/licenses/>.  */
19 
20 /* This is the contribution to the `default_compilers' array in gcc.c for
21    g++.  */
22 
23 #ifndef CPLUSPLUS_CPP_SPEC
24 #define CPLUSPLUS_CPP_SPEC 0
25 #endif
26 
27   {".cc",  "@c++", 0, 0, 0},
28   {".cp",  "@c++", 0, 0, 0},
29   {".cxx", "@c++", 0, 0, 0},
30   {".cpp", "@c++", 0, 0, 0},
31   {".c++", "@c++", 0, 0, 0},
32   {".C",   "@c++", 0, 0, 0},
33   {".CPP", "@c++", 0, 0, 0},
34   {".H",   "@c++-header", 0, 0, 0},
35   {".hpp", "@c++-header", 0, 0, 0},
36   {".hp",  "@c++-header", 0, 0, 0},
37   {".hxx", "@c++-header", 0, 0, 0},
38   {".h++", "@c++-header", 0, 0, 0},
39   {".HPP", "@c++-header", 0, 0, 0},
40   {".tcc", "@c++-header", 0, 0, 0},
41   {".hh",  "@c++-header", 0, 0, 0},
42   {"@c++-header",
43       "%{E|M|MM:cc1plus -E %{fmodules-ts:-fdirectives-only -fmodule-header}"
44       "  %(cpp_options) %2 %(cpp_debug_options)}"
45       "%{!E:%{!M:%{!MM:"
46       "  %{save-temps*|no-integrated-cpp:cc1plus -E"
47       "    %{fmodules-ts:-fdirectives-only -fmodule-header}"
48       "	   %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}"
49       "  cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed"
50       "            %{fmodules-ts:-fdirectives-only}"
51       " 	   %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}"
52       "  %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}"
53       "  %{fmodules-ts:-fmodule-header %{fpreprocessed:-fdirectives-only}}"
54       "  %(cc1_options) %2"
55       "  %{!fsyntax-only:"
56       "    %{!S:-o %g.s%V}"
57       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
58       "	         %{!o*:--output-pch=%i.gch}%W{o*:--output-pch=%*}}}}}"
59       "}}}",
60      CPLUSPLUS_CPP_SPEC, 0, 0},
61   {"@c++-system-header",
62       "%{E|M|MM:cc1plus -E"
63       "  %{fmodules-ts:-fdirectives-only -fmodule-header=system}"
64       "  %(cpp_options) %2 %(cpp_debug_options)}"
65       "%{!E:%{!M:%{!MM:"
66       "  %{save-temps*|no-integrated-cpp:cc1plus -E"
67       "    %{fmodules-ts:-fdirectives-only -fmodule-header=system}"
68       "	   %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}"
69       "  cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed"
70       "            %{fmodules-ts:-fdirectives-only}"
71       " 	   %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}"
72       "  %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}"
73       "  %{fmodules-ts:-fmodule-header=system"
74       "    %{fpreprocessed:-fdirectives-only}}"
75       "  %(cc1_options) %2"
76       "  %{!fsyntax-only:"
77       "    %{!S:-o %g.s%V}"
78       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
79       "	         %{!o*:--output-pch=%i.gch}%W{o*:--output-pch=%*}}}}}"
80       "}}}",
81      CPLUSPLUS_CPP_SPEC, 0, 0},
82   {"@c++-user-header",
83       "%{E|M|MM:cc1plus -E"
84       "  %{fmodules-ts:-fdirectives-only -fmodule-header=user}"
85       "  %(cpp_options) %2 %(cpp_debug_options)}"
86       "%{!E:%{!M:%{!MM:"
87       "  %{save-temps*|no-integrated-cpp:cc1plus -E"
88       "    %{fmodules-ts:-fdirectives-only -fmodule-header=user}"
89       "	   %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}"
90       "  cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed"
91       "            %{fmodules-ts:-fdirectives-only}"
92       " 	   %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}"
93       "  %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}"
94       "  %{fmodules-ts:-fmodule-header=user %{fpreprocessed:-fdirectives-only}}"
95       "  %(cc1_options) %2"
96       "  %{!fsyntax-only:"
97       "    %{!S:-o %g.s%V}"
98       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
99       "	         %{!o*:--output-pch=%i.gch}%W{o*:--output-pch=%*}}}}}"
100       "}}}",
101      CPLUSPLUS_CPP_SPEC, 0, 0},
102   {"@c++",
103       "%{E|M|MM:cc1plus -E %(cpp_options) %2 %(cpp_debug_options)}"
104       "%{!E:%{!M:%{!MM:"
105       "  %{save-temps*|no-integrated-cpp:cc1plus -E"
106       "	   %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}"
107       "  cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed"
108       " 	   %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}"
109       "  %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}"
110       "  %(cc1_options) %2"
111       "  %{!fsyntax-only:"
112       "    %{fmodule-only:%{!S:-o %g.s%V}}"
113       "    %{!fmodule-only:%(invoke_as)}}"
114       "}}}",
115       CPLUSPLUS_CPP_SPEC, 0, 0},
116   {".ii", "@c++-cpp-output", 0, 0, 0},
117   {"@c++-cpp-output",
118       "%{!E:%{!M:%{!MM:"
119       "  cc1plus -fpreprocessed %i %(cc1_options) %2"
120       "  %{!fsyntax-only:"
121       "    %{fmodule-only:%{!S:-o %g.s%V}}"
122       "    %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}"
123       "}}}", 0, 0, 0},
124