1 ; Options for the Modula-2 front end.
3 ; Copyright (C) 2016-2023 Free Software Foundation, Inc.
4 ; Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 ; This file is part of GNU Modula-2.
8 ; GNU Modula-2 is free software; you can redistribute it and/or modify
9 ; it under the terms of the GNU General Public License as published by
10 ; the Free Software Foundation; either version 3, or (at your option)
13 ; GNU Modula-2 is distributed in the hope that it will be useful, but
14 ; WITHOUT ANY WARRANTY; without even the implied warranty of
15 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ; General Public License for more details.
18 ; You should have received a copy of the GNU General Public License
19 ; along with GNU Modula-2; see the file COPYING. If not,
20 ; see <https://www.gnu.org/licenses/>. *)
22 ; See the GCC internals manual for a description of this file's format.
24 ; There are two sections:
25 ; 1. Options specific to Modula-2
26 ; 2. Options shared with C or the Driver.
27 ; Please keep any new additions for either case in the relevant section.
28 ; Please try to keep this file in ASCII collating order.
35 compiler checks to force definition module procedure parameter names with their implementation module counterpart
39 compiler warns if a cast is being used on types of differing sizes
43 inform user which parameters will be passed by reference
47 extra compile time semantic checking, typically tries to catch poor programming style
51 automatically initializes all pointers to NIL
55 turns on runtime subrange, array index and indirection via NIL pointer checking
59 turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified
63 use cpp to preprocess the module
67 passed to the preprocessor if -fcpp is used (internal switch)
71 passed to the preprocessor if -fcpp is used (internal switch)
75 call a real function, rather than the builtin equivalent
79 turn on internal debugging of the compiler (internal switch)
83 turn on quadruple tracing (internal switch)
87 turn on the Modula-2 api tracing (internal switch)
89 fdebug-function-line-numbers
91 turn on the Modula-2 function line number generation (internal switch)
95 recognise the specified suffix as a definition module filename
99 display all inbuilt system items
103 allows opaque types to be implemented as any type (a GNU Modula-2 extension)
107 turns on runtime checking to check whether a floating point number will exceed range
111 create a topologically sorted module list from all dependent modules used in the application
115 turns on all range checking for numerical values
119 use ISO dialect of Modula-2
123 specify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso.
127 set all location values to a specific value (internal switch)
131 generate extra nops to improve debugging, producing an instruction for every code related keyword
135 generate error messages which render keywords in lower case
139 specify the module mangled prefix name for all modules in the following include paths
143 ; For internal use only: used by the driver to copy the user facing -I option
147 insert plugin to identify runtime errors at compiletime
151 specify the module mangled prefix name
155 display statistics about the amount of source lines compiled and symbols used
159 experimental flag to turn on the new strict type checker
163 compile all implementation modules and program module at once
167 recognise the specified suffix as implementation and module filenames
171 turns on runtime checking to detect accessing data through a NIL value pointer
175 use PIM [234] dialect of Modula-2
179 use PIM 2 dialect of Modula-2
183 use PIM 3 dialect of Modula-2
187 use PIM 4 dialect of Modula-2
189 fpositive-mod-floor-div
191 force positive result from MOD and DIV result floor
195 link against the pthread library (default on)
199 internal compiler debugging information, dump the list of quadruples
203 turns on all range checking for numerical values
207 turns on runtime checking for functions which finish without executing a RETURN statement
211 specify the list of runtime modules and their initialization order
215 the modules initialization order is dynamically determined by M2RTS and application dependencies
219 generate a C source scaffold for the current module being compiled
223 generate a C++ source scaffold for the current module being compiled
227 generate the main function
231 generate static scaffold initialization and finalization for every module inside main
235 generate a shared library from the module
239 turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)
243 display the location of module source files as they are compiled
247 create a swig interface file for the module
249 funbounded-by-reference
251 optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.
255 orders the initialization/finalializations for scaffold-static or force linking of modules if scaffold-dynamic
259 ; Documented in common.opt
263 turns on all division and modulus by zero checking for ordinal values
267 turns on runtime checking to check whether a whole number will exceed range
271 Link the standard Modula-2 libraries statically in the compilation.
273 ; Here are C options that we also recognise, either within the compiler
274 ; or to build the preprocessor command lines.
278 ; Documented in c.opt
282 ; Documented in common.opt
286 ; Documented in common.opt
290 ; Documented in c.opt
294 ; Documented in c.opt
296 Wuninit-variable-checking
298 turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data.
302 ; Documented in c.opt
306 ; Documented in c.opt
310 ; Documented in c.opt
313 Modula-2 Joined Separate
314 ; Documented in c.opt
317 Modula-2 Joined Separate
322 ; Documented in c.opt
326 ; Documented in c.opt
330 ; Documented in c.opt
334 ; Documented in c.opt
338 ; Documented in c.opt
342 ; Documented in c.opt
346 ; Documented in c.opt
350 ; Documented in c.opt
354 ; Documented in c.opt
358 ; Documented in c.opt
362 ; Documented in c.opt
366 ; Documented in c.opt
370 ; Documented in c.opt
374 ; Documented in c.opt
378 ; Documented in common.opt
382 ; Documented in c.opt
386 ; Documented in c.opt
390 ; Documented in c.opt
394 ; Documented in c.opt
398 ; Documented in c.opt
402 ; Documented in c.opt
406 ; Documented in c.opt
412 Modula-2 Alias(save-temps)
416 save temporary preprocessed files
420 save temporary preprocessed files
424 ; Documented in c.opt
426 ; This comment is to ensure we retain the blank line above.