v: add -cstrict for optionally turning on all ccoptions.wargs
							parent
							
								
									5ae3b81337
								
							
						
					
					
						commit
						d90be54850
					
				|  | @ -17,6 +17,10 @@ see also `v help build`. | ||||||
|       Can be specified multiple times to provide multiple flags. |       Can be specified multiple times to provide multiple flags. | ||||||
|       Use quotes to wrap the flag argument if it contains spaces. |       Use quotes to wrap the flag argument if it contains spaces. | ||||||
|        |        | ||||||
|  |    -cstrict | ||||||
|  |       Turn on additional C warnings. This slows down compilation | ||||||
|  |       slightly (~10-10% for gcc), but sometimes provides better diagnosis. | ||||||
|  | 
 | ||||||
|    -showcc |    -showcc | ||||||
|       Prints the C command that is used to build the program. |       Prints the C command that is used to build the program. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -378,14 +378,17 @@ fn (mut v Builder) setup_ccompiler_options(ccompiler string) { | ||||||
| 	} | 	} | ||||||
| 	v.ccoptions = ccoptions | 	v.ccoptions = ccoptions | ||||||
| 	// setup the cache too, so that different compilers/options do not interfere:
 | 	// setup the cache too, so that different compilers/options do not interfere:
 | ||||||
| 	v.pref.cache_manager.set_temporary_options(ccoptions.thirdparty_object_args([ | 	v.pref.cache_manager.set_temporary_options(v.thirdparty_object_args(v.ccoptions, [ | ||||||
| 		ccoptions.guessed_compiler, | 		ccoptions.guessed_compiler, | ||||||
| 	])) | 	])) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn (ccoptions CcompilerOptions) all_args() []string { | fn (v &Builder) all_args(ccoptions CcompilerOptions) []string { | ||||||
| 	mut all := []string{} | 	mut all := []string{} | ||||||
| 	all << ccoptions.env_cflags | 	all << ccoptions.env_cflags | ||||||
|  | 	if v.pref.is_cstrict { | ||||||
|  | 		all << ccoptions.wargs | ||||||
|  | 	} | ||||||
| 	all << ccoptions.args | 	all << ccoptions.args | ||||||
| 	all << ccoptions.o_args | 	all << ccoptions.o_args | ||||||
| 	all << ccoptions.pre_args | 	all << ccoptions.pre_args | ||||||
|  | @ -396,7 +399,7 @@ fn (ccoptions CcompilerOptions) all_args() []string { | ||||||
| 	return all | 	return all | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn (ccoptions CcompilerOptions) thirdparty_object_args(middle []string) []string { | fn (v &Builder) thirdparty_object_args(ccoptions CcompilerOptions, middle []string) []string { | ||||||
| 	mut all := []string{} | 	mut all := []string{} | ||||||
| 	all << ccoptions.env_cflags | 	all << ccoptions.env_cflags | ||||||
| 	all << ccoptions.args | 	all << ccoptions.args | ||||||
|  | @ -611,7 +614,7 @@ fn (mut v Builder) cc() { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		//
 | 		//
 | ||||||
| 		all_args := v.ccoptions.all_args() | 		all_args := v.all_args(v.ccoptions) | ||||||
| 		v.dump_c_options(all_args) | 		v.dump_c_options(all_args) | ||||||
| 		str_args := all_args.join(' ') | 		str_args := all_args.join(' ') | ||||||
| 		// write args to response file
 | 		// write args to response file
 | ||||||
|  | @ -953,7 +956,7 @@ fn (mut v Builder) build_thirdparty_obj_file(path string, moduleflags []cflag.CF | ||||||
| 	all_options << moduleflags.c_options_before_target() | 	all_options << moduleflags.c_options_before_target() | ||||||
| 	all_options << '-o "$opath"' | 	all_options << '-o "$opath"' | ||||||
| 	all_options << '-c "$cfile"' | 	all_options << '-c "$cfile"' | ||||||
| 	cc_options := v.ccoptions.thirdparty_object_args(all_options).join(' ') | 	cc_options := v.thirdparty_object_args(v.ccoptions, all_options).join(' ') | ||||||
| 	cmd := '$v.pref.ccompiler $cc_options' | 	cmd := '$v.pref.ccompiler $cc_options' | ||||||
| 	$if trace_thirdparty_obj_files ? { | 	$if trace_thirdparty_obj_files ? { | ||||||
| 		println('>>> build_thirdparty_obj_files cmd: $cmd') | 		println('>>> build_thirdparty_obj_files cmd: $cmd') | ||||||
|  |  | ||||||
|  | @ -166,6 +166,7 @@ pub mut: | ||||||
| 	cache_manager       vcache.CacheManager | 	cache_manager       vcache.CacheManager | ||||||
| 	is_help             bool // -h, -help or --help was passed
 | 	is_help             bool // -h, -help or --help was passed
 | ||||||
| 	gc_mode             GarbageCollectionMode = .no_gc // .no_gc, .boehm, .boehm_leak, ...
 | 	gc_mode             GarbageCollectionMode = .no_gc // .no_gc, .boehm, .boehm_leak, ...
 | ||||||
|  | 	is_cstrict          bool                  // turn on more C warnings; slightly slower
 | ||||||
| 	// checker settings:
 | 	// checker settings:
 | ||||||
| 	checker_match_exhaustive_cutoff_limit int = 10 | 	checker_match_exhaustive_cutoff_limit int = 10 | ||||||
| } | } | ||||||
|  | @ -227,6 +228,9 @@ pub fn parse_args(known_external_commands []string, args []string) (&Preferences | ||||||
| 			'-silent' { | 			'-silent' { | ||||||
| 				res.output_mode = .silent | 				res.output_mode = .silent | ||||||
| 			} | 			} | ||||||
|  | 			'-cstrict' { | ||||||
|  | 				res.is_cstrict = true | ||||||
|  | 			} | ||||||
| 			'-gc' { | 			'-gc' { | ||||||
| 				gc_mode := cmdline.option(current_args, '-gc', '') | 				gc_mode := cmdline.option(current_args, '-gc', '') | ||||||
| 				match gc_mode { | 				match gc_mode { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue