2020-04-07 00:44:19 +02:00
|
|
|
module builder
|
2019-09-06 14:12:04 +02:00
|
|
|
|
2020-10-25 02:09:07 +02:00
|
|
|
import os
|
2020-04-18 16:29:43 +02:00
|
|
|
import v.cflag
|
2019-09-22 23:51:59 +02:00
|
|
|
|
2019-09-06 14:12:04 +02:00
|
|
|
// get flags for current os
|
2020-10-25 02:09:07 +02:00
|
|
|
fn (mut v Builder) get_os_cflags() []cflag.CFlag {
|
2020-04-26 09:17:13 +02:00
|
|
|
mut flags := []cflag.CFlag{}
|
|
|
|
mut ctimedefines := []string{}
|
2020-02-09 10:08:04 +01:00
|
|
|
if v.pref.compile_defines.len > 0 {
|
|
|
|
ctimedefines << v.pref.compile_defines
|
2019-12-23 11:09:00 +01:00
|
|
|
}
|
2020-10-25 02:09:07 +02:00
|
|
|
for mut flag in v.table.cflags {
|
|
|
|
if flag.value.ends_with('.o') {
|
|
|
|
flag.cached = v.pref.cache_manager.postfix_with_key2cpath('.o', os.real_path(flag.value))
|
|
|
|
}
|
2021-01-23 09:33:22 +01:00
|
|
|
if flag.os == '' || (flag.os == 'linux' && v.pref.os == .linux)
|
|
|
|
|| (flag.os == 'macos' && v.pref.os == .macos)
|
|
|
|
|| (flag.os == 'darwin' && v.pref.os == .macos)
|
|
|
|
|| (flag.os == 'freebsd' && v.pref.os == .freebsd)
|
|
|
|
|| (flag.os == 'windows' && v.pref.os == .windows)
|
|
|
|
|| (flag.os == 'mingw' && v.pref.os == .windows && v.pref.ccompiler != 'msvc')
|
|
|
|
|| (flag.os == 'solaris' && v.pref.os == .solaris) {
|
2019-09-06 14:12:04 +02:00
|
|
|
flags << flag
|
|
|
|
}
|
2019-12-23 11:09:00 +01:00
|
|
|
if flag.os in ctimedefines {
|
|
|
|
flags << flag
|
|
|
|
}
|
2019-09-06 14:12:04 +02:00
|
|
|
}
|
|
|
|
return flags
|
|
|
|
}
|
|
|
|
|
2020-10-25 02:09:07 +02:00
|
|
|
fn (mut v Builder) get_rest_of_module_cflags(c &cflag.CFlag) []cflag.CFlag {
|
2020-04-26 09:17:13 +02:00
|
|
|
mut flags := []cflag.CFlag{}
|
2019-09-22 23:51:59 +02:00
|
|
|
cflags := v.get_os_cflags()
|
|
|
|
for flag in cflags {
|
|
|
|
if c.mod == flag.mod {
|
2019-12-19 22:29:37 +01:00
|
|
|
if c.name == flag.name && c.value == flag.value && c.os == flag.os {
|
|
|
|
continue
|
|
|
|
}
|
2019-09-22 23:51:59 +02:00
|
|
|
flags << flag
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return flags
|
|
|
|
}
|