diff --git a/CMakeLists.txt b/CMakeLists.txt index 420a92d..c5d36d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ set(NASAL_OBJECT_SOURCE_FILE ${CMAKE_SOURCE_DIR}/src/natives/math_lib.cpp ${CMAKE_SOURCE_DIR}/src/natives/dylib_lib.cpp ${CMAKE_SOURCE_DIR}/src/natives/regex_lib.cpp + ${CMAKE_SOURCE_DIR}/src/natives/subprocess.cpp ${CMAKE_SOURCE_DIR}/src/natives/unix_lib.cpp ${CMAKE_SOURCE_DIR}/src/repl/repl.cpp ${CMAKE_SOURCE_DIR}/src/util/fs.cpp diff --git a/makefile b/makefile index 17a35e8..7cde7a3 100644 --- a/makefile +++ b/makefile @@ -37,6 +37,7 @@ NASAL_HEADER = \ src/natives/unix_lib.h\ src/natives/coroutine.h\ src/natives/regex_lib.h\ + src/natives/subprocess.h\ src/repl/repl.h\ src/util/fs.h\ src/util/util.h @@ -61,6 +62,7 @@ NASAL_OBJECT = \ build/math_lib.o\ build/unix_lib.o\ build/dylib_lib.o\ + build/subprocess.o\ build/json_lib.o\ build/coroutine.o\ build/nasal_type.o\ @@ -212,6 +214,14 @@ build/regex_lib.o: \ src/natives/regex_lib.h src/natives/regex_lib.cpp | build $(CXX) $(CXXFLAGS) src/natives/regex_lib.cpp -o build/regex_lib.o +build/subprocess.o: \ + src/nasal.h\ + src/nasal_type.h\ + src/nasal_gc.h\ + src/natives/subprocess.h src/natives/subprocess.cpp | build + $(CXX) $(CXXFLAGS) src/natives/subprocess.cpp -o build/subprocess.o + + build/fg_props.o: \ src/nasal.h\ src/nasal_type.h\ diff --git a/src/nasal_codegen.cpp b/src/nasal_codegen.cpp index 9209a96..e68b3db 100644 --- a/src/nasal_codegen.cpp +++ b/src/nasal_codegen.cpp @@ -39,6 +39,7 @@ void codegen::init_native_function() { load_native_function_table(unix_lib_native); load_native_function_table(json_lib_native); load_native_function_table(regex_lib_native); + load_native_function_table(subprocess_native); } void codegen::check_id_exist(identifier* node) { diff --git a/src/nasal_codegen.h b/src/nasal_codegen.h index ffa2ab7..2eb44f3 100644 --- a/src/nasal_codegen.h +++ b/src/nasal_codegen.h @@ -18,6 +18,7 @@ #include "natives/dylib_lib.h" #include "natives/regex_lib.h" #include "natives/unix_lib.h" +#include "natives/subprocess.h" #include #include @@ -57,7 +58,9 @@ private: "__dlopen", "__dlclose", "__dlcallv", "__dlcall", // unix "__pipe", "__fork", "__waitpid", "__chdir", - "__environ", "__getcwd", "__getenv" + "__environ", "__getcwd", "__getenv", + // subprocess + "__subprocess_run" }; // file mapper for file -> index diff --git a/src/natives/subprocess.cpp b/src/natives/subprocess.cpp new file mode 100644 index 0000000..0e999a3 --- /dev/null +++ b/src/natives/subprocess.cpp @@ -0,0 +1,14 @@ +#include "natives/subprocess.h" + +namespace nasal { + +var builtin_subprocess_run(context* ctx, gc* ngc) { + return nil; +} + +nasal_builtin_table subprocess_native[] = { + {"__subprocess_run", builtin_subprocess_run}, + {nullptr, nullptr} +}; + +} \ No newline at end of file diff --git a/src/natives/subprocess.h b/src/natives/subprocess.h new file mode 100644 index 0000000..f1a2680 --- /dev/null +++ b/src/natives/subprocess.h @@ -0,0 +1,13 @@ +#pragma once + +#include "nasal.h" +#include "nasal_gc.h" +#include "natives/builtin.h" + +namespace nasal { + +var builtin_subprocess_run(context*, gc*); + +extern nasal_builtin_table subprocess_native[]; + +} \ No newline at end of file diff --git a/std/subprocess.nas b/std/subprocess.nas new file mode 100644 index 0000000..b418896 --- /dev/null +++ b/std/subprocess.nas @@ -0,0 +1,3 @@ +var run = func() { + return __subprocess_run(); +} \ No newline at end of file