Support for passing different options to the C compiler backend.
Example: 'v -c_options=-Os' will pass -Os to the C compiler. In effect the C compiler will optimize the generated binary for size.pull/1190/head
							parent
							
								
									47b0221b82
								
							
						
					
					
						commit
						17580f3013
					
				|  | @ -88,6 +88,9 @@ mut: | |||
| 	sanitize       bool // use Clang's new "-fsanitize" option
 | ||||
| 	is_debug       bool // keep compiled C files
 | ||||
| 	no_auto_free   bool // `v -nofree` disable automatic `free()` insertion for better performance in some applications  (e.g. compilers) 
 | ||||
| 	c_options      string // Additional options which will be passed to the C compiler.
 | ||||
|                         // For example, passing -c_options=-Os will cause the C compiler to optimize the generated binaries for size.
 | ||||
|                         // You could pass several -c_options=XXX arguments. They will be merged with each other.
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -529,7 +532,7 @@ fn (v mut V) cc() { | |||
| 	}  | ||||
| 	linux_host := os.user_os() == 'linux' | ||||
| 	v.log('cc() isprod=$v.pref.is_prod outname=$v.out_name') | ||||
| 	mut a := ['-w'] // arguments for the C compiler
 | ||||
| 	mut a := [v.pref.c_options, '-w'] // arguments for the C compiler
 | ||||
| 	flags := v.table.flags.join(' ') | ||||
| 	//mut shared := ''
 | ||||
| 	if v.pref.is_so { | ||||
|  | @ -960,6 +963,14 @@ fn new_v(args[]string) *V { | |||
| 			files << f | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	mut c_options := '' | ||||
| 	for ci, cv in args { | ||||
| 		if cv.starts_with('-c_options=') { | ||||
| 			c_options += cv.replace('-c_options=','') + ' ' | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	obfuscate := args.contains('-obf') | ||||
| 	pref := &Preferences { | ||||
| 		is_test: is_test | ||||
|  | @ -979,6 +990,7 @@ fn new_v(args[]string) *V { | |||
| 		is_run: args.contains('run') | ||||
| 		is_repl: args.contains('-repl') | ||||
| 		build_mode: build_mode | ||||
| 		c_options: c_options | ||||
| 	}   | ||||
| 
 | ||||
| 	if pref.is_so { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue