mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
@VMODULE relative paths in #flag lines
This commit is contained in:
parent
67a13fc916
commit
2ce6b190dd
@ -14,6 +14,7 @@ import (
|
||||
|
||||
struct Parser {
|
||||
file_path string // "/home/user/hello.v"
|
||||
file_path_dir string // "/home/user"
|
||||
file_name string // "hello.v"
|
||||
file_platform string // ".v", "_windows.v", "_nix.v", "_darwin.v", "_linux.v" ...
|
||||
// When p.file_pcguard != '', it contains a
|
||||
@ -180,6 +181,7 @@ fn (v mut V) new_parser_from_file(path string) Parser {
|
||||
p = {
|
||||
p |
|
||||
file_path:path,
|
||||
file_path_dir:filepath.dir( path ),
|
||||
file_name:path.all_after(os.path_separator),
|
||||
file_platform:path_platform,
|
||||
file_pcguard:path_pcguard,
|
||||
|
@ -243,6 +243,7 @@ fn (p mut Parser) chash() {
|
||||
if p.first_pass() {
|
||||
mut flag := hash[5..]
|
||||
// expand `@VROOT` `@VMOD` to absolute path
|
||||
flag = flag.replace('@VMODULE', p.file_path_dir)
|
||||
flag = flag.replace('@VROOT', p.vroot)
|
||||
flag = flag.replace('@VPATH', p.pref.vpath)
|
||||
flag = flag.replace('@VLIB_PATH', p.pref.vlib_path)
|
||||
|
3
vlib/compiler/tests/project_with_c_code/.gitignore
vendored
Normal file
3
vlib/compiler/tests/project_with_c_code/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
main
|
||||
mod1/c/implementation.o
|
||||
main_test
|
8
vlib/compiler/tests/project_with_c_code/main.v
Normal file
8
vlib/compiler/tests/project_with_c_code/main.v
Normal file
@ -0,0 +1,8 @@
|
||||
module main
|
||||
|
||||
import mod1
|
||||
|
||||
fn main(){
|
||||
res := mod1.vadd(1,2)
|
||||
println( res )
|
||||
}
|
5
vlib/compiler/tests/project_with_c_code/main_test.v
Normal file
5
vlib/compiler/tests/project_with_c_code/main_test.v
Normal file
@ -0,0 +1,5 @@
|
||||
import mod1
|
||||
|
||||
fn test_using_c_code_in_the_same_module_works(){
|
||||
assert 1003 == mod1.vadd(1,2)
|
||||
}
|
6
vlib/compiler/tests/project_with_c_code/mod1/c/header.h
Normal file
6
vlib/compiler/tests/project_with_c_code/mod1/c/header.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef ADD_H
|
||||
#define ADD_H
|
||||
|
||||
int cadd(int a, int b);
|
||||
|
||||
#endif
|
@ -0,0 +1,5 @@
|
||||
#include "header.h"
|
||||
|
||||
int cadd(int a, int b) {
|
||||
return a + b;
|
||||
}
|
12
vlib/compiler/tests/project_with_c_code/mod1/wrapper.v
Normal file
12
vlib/compiler/tests/project_with_c_code/mod1/wrapper.v
Normal file
@ -0,0 +1,12 @@
|
||||
module mod1
|
||||
|
||||
#flag -I @VMODULE/c
|
||||
#flag @VMODULE/c/implementation.o
|
||||
|
||||
#include "header.h"
|
||||
|
||||
fn C.cadd(int,int) int
|
||||
|
||||
pub fn vadd(a int, b int) int {
|
||||
return 1000 + C.cadd(a,b)
|
||||
}
|
Loading…
Reference in New Issue
Block a user