1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

building modules can now be done from any directory

This commit is contained in:
Alexander Medvednikov 2019-11-01 14:16:58 +03:00
parent 15d4f68af6
commit a83e233dea
2 changed files with 7 additions and 7 deletions

View File

@ -16,6 +16,7 @@ fn todo() {
fn (v mut V) cc() { fn (v mut V) cc() {
v.build_thirdparty_obj_files() v.build_thirdparty_obj_files()
vexe := vexe_path() vexe := vexe_path()
vdir := os.dir(vexe)
// Just create a C/JavaScript file and exit // Just create a C/JavaScript file and exit
// for example: `v -o v.c compiler` // for example: `v -o v.c compiler`
if v.out_name.ends_with('.c') || v.out_name.ends_with('.js') { if v.out_name.ends_with('.c') || v.out_name.ends_with('.js') {
@ -25,12 +26,11 @@ fn (v mut V) cc() {
$if !js { $if !js {
if v.out_name.ends_with('.js') { if v.out_name.ends_with('.js') {
vjs_path := vexe + 'js' vjs_path := vexe + 'js'
dir := os.dir(vexe)
if !os.file_exists(vjs_path) { if !os.file_exists(vjs_path) {
println('V.js compiler not found, building...') println('V.js compiler not found, building...')
// Build V.js. Specifying `-os js` makes V include // Build V.js. Specifying `-os js` makes V include
// only _js.v files and ignore _c.v files. // only _js.v files and ignore _c.v files.
ret := os.system('$vexe -o $vjs_path -os js $dir/v.v') ret := os.system('$vexe -o $vjs_path -os js $vdir/v.v')
if ret == 0 { if ret == 0 {
println('Done.') println('Done.')
} else { } else {
@ -67,7 +67,6 @@ fn (v mut V) cc() {
if v.pref.fast { if v.pref.fast {
$if linux { $if linux {
$if !android { $if !android {
vdir := os.dir(vexe)
tcc_3rd := '$vdir/thirdparty/tcc/bin/tcc' tcc_3rd := '$vdir/thirdparty/tcc/bin/tcc'
//println('tcc third "$tcc_3rd"') //println('tcc third "$tcc_3rd"')
tcc_path := '/var/tmp/tcc/bin/tcc' tcc_path := '/var/tmp/tcc/bin/tcc'
@ -141,7 +140,7 @@ fn (v mut V) cc() {
} }
if v.pref.ccompiler != 'msvc' && v.os != .freebsd { if v.pref.ccompiler != 'msvc' && v.os != .freebsd {
//a << '-Werror=implicit-function-declaration' a << '-Werror=implicit-function-declaration'
} }
for f in v.generate_hotcode_reloading_compiler_flags() { for f in v.generate_hotcode_reloading_compiler_flags() {
@ -173,7 +172,6 @@ fn (v mut V) cc() {
} else { } else {
println('$path not found... building module $imp') println('$path not found... building module $imp')
if path.ends_with('vlib/ui.o') { if path.ends_with('vlib/ui.o') {
vdir := os.dir(vexe)
println('copying ui...') println('copying ui...')
os.cp('$vdir/thirdparty/ui/ui.o', path) os.cp('$vdir/thirdparty/ui/ui.o', path)
os.cp('$vdir/thirdparty/ui/ui.vh', v_modules_path + os.cp('$vdir/thirdparty/ui/ui.vh', v_modules_path +

View File

@ -764,6 +764,9 @@ pub fn new_v(args[]string) &V {
os.mkdir(v_modules_path) os.mkdir(v_modules_path)
os.mkdir('$v_modules_path${os.path_separator}cache') os.mkdir('$v_modules_path${os.path_separator}cache')
} }
// Location of all vlib files
vroot := os.dir(vexe_path())
mut vgen_buf := strings.new_builder(1000) mut vgen_buf := strings.new_builder(1000)
vgen_buf.writeln('module main\nimport strings') vgen_buf.writeln('module main\nimport strings')
@ -791,6 +794,7 @@ pub fn new_v(args[]string) &V {
mut mod := '' mut mod := ''
if joined_args.contains('build module ') { if joined_args.contains('build module ') {
build_mode = .build_module build_mode = .build_module
os.chdir(vroot)
// v build module ~/v/os => os.o // v build module ~/v/os => os.o
mod_path := if dir.contains('vlib') { mod_path := if dir.contains('vlib') {
dir.all_after('vlib'+os.path_separator) dir.all_after('vlib'+os.path_separator)
@ -880,8 +884,6 @@ pub fn new_v(args[]string) &V {
else { else {
_os = os_from_string(target_os) _os = os_from_string(target_os)
} }
// Location of all vlib files
vroot := os.dir(vexe_path())
//println('VROOT=$vroot') //println('VROOT=$vroot')
// v.exe's parent directory should contain vlib // v.exe's parent directory should contain vlib
if !os.dir_exists(vroot) || !os.dir_exists(vroot + '/vlib/builtin') { if !os.dir_exists(vroot) || !os.dir_exists(vroot + '/vlib/builtin') {