mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
v.pref, v.builder: support -no-std
(skips passing -std=c99
to the C backend)
This commit is contained in:
parent
b1186cca3f
commit
eef7eea7bc
@ -35,7 +35,7 @@ see also `v help build`.
|
|||||||
Supported only on `linux` targets currently.
|
Supported only on `linux` targets currently.
|
||||||
|
|
||||||
-bare-builtin-dir <bare-builtin-dir>
|
-bare-builtin-dir <bare-builtin-dir>
|
||||||
Use with `-freestanding`. This specifies the directory to the
|
Use with `-freestanding`. This specifies the directory to the
|
||||||
implementation of some basic builtin functions. The list is as follows:
|
implementation of some basic builtin functions. The list is as follows:
|
||||||
bare_print(buf &byte, len u64)
|
bare_print(buf &byte, len u64)
|
||||||
Print len charecters from the buffer pointed to by buf to stdout.
|
Print len charecters from the buffer pointed to by buf to stdout.
|
||||||
@ -50,7 +50,7 @@ see also `v help build`.
|
|||||||
__free(ptr &C.void)
|
__free(ptr &C.void)
|
||||||
Free the block of memory ptr allocated by malloc.
|
Free the block of memory ptr allocated by malloc.
|
||||||
realloc(old_area &C.void, new_size size_t) &C.void
|
realloc(old_area &C.void, new_size size_t) &C.void
|
||||||
Allocates a new area of size new_size, copies old_area
|
Allocates a new area of size new_size, copies old_area
|
||||||
to the new area, and returns a pointer to the new area.
|
to the new area, and returns a pointer to the new area.
|
||||||
[export: 'calloc']
|
[export: 'calloc']
|
||||||
__calloc(nmemb size_t, size size_t) &C.void
|
__calloc(nmemb size_t, size size_t) &C.void
|
||||||
@ -75,20 +75,20 @@ see also `v help build`.
|
|||||||
vsnprintf(str &char, size size_t, format &char, ap va_list) int
|
vsnprintf(str &char, size size_t, format &char, ap va_list) int
|
||||||
See `man vsnprintf`.
|
See `man vsnprintf`.
|
||||||
bare_backtrace() string
|
bare_backtrace() string
|
||||||
Return a backtrace that can be printed. If backtraces are not
|
Return a backtrace that can be printed. If backtraces are not
|
||||||
supported, return a message stating that backtraces do not work.
|
supported, return a message stating that backtraces do not work.
|
||||||
[export: 'exit']
|
[export: 'exit']
|
||||||
__exit(code int)
|
__exit(code int)
|
||||||
Exit with code code. code is allowed to be ignored.
|
Exit with code code. code is allowed to be ignored.
|
||||||
|
|
||||||
The module decleration should be `builtin`. The default Linux
|
The module decleration should be `builtin`. The default Linux
|
||||||
implementation can be found in `vlib/builtin/linux_bare`.
|
implementation can be found in `vlib/builtin/linux_bare`.
|
||||||
|
|
||||||
-os <os>, -target-os <os>
|
-os <os>, -target-os <os>
|
||||||
Change the target OS that V tries to compile for.
|
Change the target OS that V tries to compile for.
|
||||||
By default, the target OS is the host system.
|
By default, the target OS is the host system.
|
||||||
When OS is `cross`, V will attempt to output cross-platform C code.
|
When OS is `cross`, V will attempt to output cross-platform C code.
|
||||||
|
|
||||||
Here is a list of the operating systems, supported by V:
|
Here is a list of the operating systems, supported by V:
|
||||||
(CI tests runs on every commit/PR for each of these):
|
(CI tests runs on every commit/PR for each of these):
|
||||||
`windows`, `linux`, `macos`
|
`windows`, `linux`, `macos`
|
||||||
@ -137,7 +137,7 @@ see also `v help build`.
|
|||||||
and unsafe{free(x)} calls manually in this mode).
|
and unsafe{free(x)} calls manually in this mode).
|
||||||
Some short lived applications, like compilers and other CLI tools are
|
Some short lived applications, like compilers and other CLI tools are
|
||||||
more performant without autofree.
|
more performant without autofree.
|
||||||
|
|
||||||
-gc <mode>
|
-gc <mode>
|
||||||
Use and link an optional garbage collector. Only the Boehm–Demers–Weiser
|
Use and link an optional garbage collector. Only the Boehm–Demers–Weiser
|
||||||
garbage collector is supported currently with the following sub-options:
|
garbage collector is supported currently with the following sub-options:
|
||||||
@ -152,12 +152,12 @@ see also `v help build`.
|
|||||||
You need to install a `libgc-dev` package first, or install it manually from:
|
You need to install a `libgc-dev` package first, or install it manually from:
|
||||||
|
|
||||||
https://github.com/ivmai/bdwgc
|
https://github.com/ivmai/bdwgc
|
||||||
|
|
||||||
Note, `-gc boehm` is complementary to -autofree. The Boehm garbage
|
Note, `-gc boehm` is complementary to -autofree. The Boehm garbage
|
||||||
collector is conservative, and it may make your program significantly
|
collector is conservative, and it may make your program significantly
|
||||||
slower if it does many small allocations in a loop. This option
|
slower if it does many small allocations in a loop. This option
|
||||||
is intended *mainly* for reducing the memory usage of programs, that
|
is intended *mainly* for reducing the memory usage of programs, that
|
||||||
process large amounts of text in *batch mode* on low/limited memory
|
process large amounts of text in *batch mode* on low/limited memory
|
||||||
environments like small VPSes, and for which a few ms of garbage
|
environments like small VPSes, and for which a few ms of garbage
|
||||||
collection pauses from time to time *do not matter much*.
|
collection pauses from time to time *do not matter much*.
|
||||||
|
|
||||||
@ -237,12 +237,19 @@ see also `v help build`.
|
|||||||
you use -no-rsp, V will pass the C compiler options directly to the C
|
you use -no-rsp, V will pass the C compiler options directly to the C
|
||||||
compiler, on the command line, without writing an .rsp file first.
|
compiler, on the command line, without writing an .rsp file first.
|
||||||
|
|
||||||
-assert aborts
|
-no-std
|
||||||
|
By default, V passes -std=c99 to the C backend, but some compilers do
|
||||||
|
not support that, even though they may be able to compile the produced
|
||||||
|
code, or have other options that can be tuned to allow it.
|
||||||
|
Passing -no-std will remove that flag, and you can then use -cflags ''
|
||||||
|
to pass the other options for your specific C compiler.
|
||||||
|
|
||||||
|
-assert aborts
|
||||||
Call abort() after an assertion failure. Debuggers usually
|
Call abort() after an assertion failure. Debuggers usually
|
||||||
install signal handlers for SIGABRT, so your program will stop and you
|
install signal handlers for SIGABRT, so your program will stop and you
|
||||||
will get a backtrace. If you are running your program outside of a
|
will get a backtrace. If you are running your program outside of a
|
||||||
debugger, you will most likely get a core dump file.
|
debugger, you will most likely get a core dump file.
|
||||||
|
|
||||||
-assert backtraces
|
-assert backtraces
|
||||||
Call print_backtrace() after an assertion failure. Note that
|
Call print_backtrace() after an assertion failure. Note that
|
||||||
backtraces are not implemented yet on all combinations of
|
backtraces are not implemented yet on all combinations of
|
||||||
|
@ -186,7 +186,10 @@ fn (mut v Builder) setup_ccompiler_options(ccompiler string) {
|
|||||||
mut debug_options := ['-g']
|
mut debug_options := ['-g']
|
||||||
mut optimization_options := ['-O2']
|
mut optimization_options := ['-O2']
|
||||||
// arguments for the C compiler
|
// arguments for the C compiler
|
||||||
ccoptions.args = [v.pref.cflags, '-std=gnu99']
|
ccoptions.args = [v.pref.cflags]
|
||||||
|
if !v.pref.no_std {
|
||||||
|
ccoptions.args << '-std=c99'
|
||||||
|
}
|
||||||
ccoptions.wargs = [
|
ccoptions.wargs = [
|
||||||
'-Wall',
|
'-Wall',
|
||||||
'-Wextra',
|
'-Wextra',
|
||||||
|
@ -173,6 +173,7 @@ pub mut:
|
|||||||
fatal_errors bool // unconditionally exit after the first error with exit(1)
|
fatal_errors bool // unconditionally exit after the first error with exit(1)
|
||||||
reuse_tmpc bool // do not use random names for .tmp.c and .tmp.c.rsp files, and do not remove them
|
reuse_tmpc bool // do not use random names for .tmp.c and .tmp.c.rsp files, and do not remove them
|
||||||
no_rsp bool // when true, pass C backend options directly on the CLI (do not use `.rsp` files for them, some older C compilers do not support them)
|
no_rsp bool // when true, pass C backend options directly on the CLI (do not use `.rsp` files for them, some older C compilers do not support them)
|
||||||
|
no_std bool // when true, do not pass -std=c99 to the C backend
|
||||||
use_color ColorOutput // whether the warnings/errors should use ANSI color escapes.
|
use_color ColorOutput // whether the warnings/errors should use ANSI color escapes.
|
||||||
is_parallel bool
|
is_parallel bool
|
||||||
error_limit int
|
error_limit int
|
||||||
@ -478,6 +479,9 @@ pub fn parse_args(known_external_commands []string, args []string) (&Preferences
|
|||||||
'-no-rsp' {
|
'-no-rsp' {
|
||||||
res.no_rsp = true
|
res.no_rsp = true
|
||||||
}
|
}
|
||||||
|
'-no-std' {
|
||||||
|
res.no_std = true
|
||||||
|
}
|
||||||
'-keepc' {
|
'-keepc' {
|
||||||
res.reuse_tmpc = true
|
res.reuse_tmpc = true
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user