simplify cflag parsing
							parent
							
								
									be60193588
								
							
						
					
					
						commit
						717740cfcf
					
				| 
						 | 
				
			
			@ -74,6 +74,7 @@ fn (table mut Table) parse_cflag(cflag string, mod string) ?bool {
 | 
			
		|||
	allowed_flags := [
 | 
			
		||||
		'framework',
 | 
			
		||||
		'library',
 | 
			
		||||
		'Wl',
 | 
			
		||||
		'I', 'l', 'L',
 | 
			
		||||
	]
 | 
			
		||||
	flag_orig := cflag.trim_space()
 | 
			
		||||
| 
						 | 
				
			
			@ -82,14 +83,13 @@ fn (table mut Table) parse_cflag(cflag string, mod string) ?bool {
 | 
			
		|||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	mut fos := ''
 | 
			
		||||
	mut name := ''
 | 
			
		||||
	if flag.starts_with('linux') || flag.starts_with('darwin') || flag.starts_with('freebsd') || flag.starts_with('windows') {
 | 
			
		||||
		pos := flag.index(' ') or { return none }
 | 
			
		||||
		fos = flag[..pos].trim_space()
 | 
			
		||||
		flag = flag[pos..].trim_space()
 | 
			
		||||
	}
 | 
			
		||||
	for {
 | 
			
		||||
		mut index := -1
 | 
			
		||||
		mut name := ''
 | 
			
		||||
		mut value := ''
 | 
			
		||||
		if flag[0] == `-` {
 | 
			
		||||
			for f in allowed_flags {
 | 
			
		||||
| 
						 | 
				
			
			@ -101,34 +101,23 @@ fn (table mut Table) parse_cflag(cflag string, mod string) ?bool {
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if i := flag.index(' ') {
 | 
			
		||||
			if index == -1 || i < index {
 | 
			
		||||
				index = i
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if i := flag.index(',') {
 | 
			
		||||
			if index == -1 || i < index {
 | 
			
		||||
				index = i
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if index != -1 && flag[index] == ` ` && flag[index+1] == `-` {
 | 
			
		||||
		mut index := flag.index(' -') or { -1 }
 | 
			
		||||
		for index > -1 {
 | 
			
		||||
			mut has_next := false
 | 
			
		||||
			for f in allowed_flags {
 | 
			
		||||
				j := index+f.len
 | 
			
		||||
				if j < flag.len && f == flag[index..j] {
 | 
			
		||||
					index = j
 | 
			
		||||
				i := index+2+f.len
 | 
			
		||||
				if i <= flag.len && f == flag[index+2..i] {
 | 
			
		||||
					value = flag[..index+1].trim_space()
 | 
			
		||||
					flag = flag[index+1..].trim_space()
 | 
			
		||||
					has_next = true
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			value = flag[..index].trim_space()
 | 
			
		||||
			flag = flag[index..].trim_space()
 | 
			
		||||
			if has_next { break }
 | 
			
		||||
			index = flag.index_after(' -', index+1)
 | 
			
		||||
		}
 | 
			
		||||
		else if index != -1 && index < flag.len-2 && flag[index] == `,` {
 | 
			
		||||
			value = flag[..index].trim_space()
 | 
			
		||||
			flag = flag[index+1..].trim_space()
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
		if index == -1 {
 | 
			
		||||
			value = flag.trim_space()
 | 
			
		||||
			index = -1
 | 
			
		||||
		}
 | 
			
		||||
		if (name in ['-I', '-l', '-L']) && value == '' {
 | 
			
		||||
			hint := if name == '-l' { 'library name' } else { 'path' }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import (
 | 
			
		|||
#flag darwin -I/usr/local/include/freetype2
 | 
			
		||||
#flag darwin -I/opt/local/include/freetype2
 | 
			
		||||
#flag freebsd -I/usr/local/include/freetype2
 | 
			
		||||
#flag freebsd -Wl,-L/usr/local/lib
 | 
			
		||||
#flag freebsd -Wl -L/usr/local/lib
 | 
			
		||||
#flag -lfreetype
 | 
			
		||||
 | 
			
		||||
//#flag -I @VROOT/thirdparty/freetype
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
module http
 | 
			
		||||
 | 
			
		||||
#flag windows -I @VROOT/thirdparty/vschannel
 | 
			
		||||
#flag -l ws2_32, crypt32, secur32
 | 
			
		||||
#flag -l ws2_32 -l crypt32 -l secur32
 | 
			
		||||
 
 | 
			
		||||
#include "vschannel.c"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@ module sqlite
 | 
			
		|||
 | 
			
		||||
#flag -lsqlite3
 | 
			
		||||
#flag freebsd -I/usr/local/include
 | 
			
		||||
#flag freebsd -Wl,-L/usr/local/lib,-lsqlite3
 | 
			
		||||
#flag freebsd -Wl -L/usr/local/lib -lsqlite3
 | 
			
		||||
#include "sqlite3.h"
 | 
			
		||||
 | 
			
		||||
struct C.sqlite3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue