1
0
mirror of https://github.com/janet-lang/janet synced 2024-11-29 03:19:54 +00:00

Make the assembler optional during compilation.

This commit is contained in:
Calvin Rose 2018-09-29 10:58:57 -04:00
parent 03b01c6c0b
commit e963672977
6 changed files with 18 additions and 10 deletions

View File

@ -24,6 +24,9 @@
#include <janet/janet.h>
#include "util.h"
/* Conditionally compile this file */
#ifdef JANET_ASSEMBLER
/* Definition for an instruction in the assembler */
typedef struct JanetInstructionDef JanetInstructionDef;
struct JanetInstructionDef {
@ -932,3 +935,5 @@ int janet_lib_asm(JanetArgs args) {
janet_cfuns(env, NULL, cfuns);
return 0;
}
#endif

View File

@ -48,12 +48,6 @@
[name & more]
(tuple.slice (array.concat @['def name :private] more) 0))
(defmacro defasm
"Define a function using assembly"
[name & body]
(def tab (apply table body))
(tuple 'def name (tuple asm (tuple 'quote tab))))
(defn defglobal
"Dynamically create a global def."
[name value]

View File

@ -594,9 +594,11 @@ JanetTable *janet_core_env(void) {
janet_lib_os(args);
janet_lib_parse(args);
janet_lib_compile(args);
janet_lib_asm(args);
janet_lib_string(args);
janet_lib_marsh(args);
#ifdef JANET_ASSEMBLER
janet_lib_asm(args);
#endif
}
/* Allow references to the environment */

View File

@ -53,7 +53,9 @@ int janet_lib_os(JanetArgs args);
int janet_lib_string(JanetArgs args);
int janet_lib_marsh(JanetArgs args);
int janet_lib_parse(JanetArgs args);
#ifdef JANET_ASSEMBLER
int janet_lib_asm(JanetArgs args);
#endif
int janet_lib_compile(JanetArgs args);
#endif

View File

@ -109,6 +109,11 @@ extern "C" {
#define JANET_DYNAMIC_MODULES
#endif
/* Enable or disable the assembler. Enabled by default. */
#ifndef JANET_NO_ASSEMBLER
#define JANET_ASSEMBLER
#endif
/* How to export symbols */
#ifndef JANET_API
#ifdef JANET_WINDOWS
@ -852,8 +857,8 @@ JANET_API void janet_parser_flush(JanetParser *parser);
JANET_API JanetParser *janet_check_parser(Janet x);
/* Assembly */
#ifdef JANET_ASSEMBLER
typedef struct JanetAssembleResult JanetAssembleResult;
typedef struct JanetAssembleOptions JanetAssembleOptions;
enum JanetAssembleStatus {
JANET_ASSEMBLE_OK,
JANET_ASSEMBLE_ERROR
@ -866,9 +871,9 @@ struct JanetAssembleResult {
JANET_API JanetAssembleResult janet_asm(Janet source, int flags);
JANET_API Janet janet_disasm(JanetFuncDef *def);
JANET_API Janet janet_asm_decode_instruction(uint32_t instr);
#endif
/* Compilation */
typedef struct JanetCompileOptions JanetCompileOptions;
typedef struct JanetCompileResult JanetCompileResult;
enum JanetCompileStatus {
JANET_COMPILE_OK,

View File

@ -46,7 +46,7 @@
(+= i (dohandler (string.slice arg 1 2) i))
(do
(:= *no-file* false)
(import* _env arg :exit *exit-on-error*)
(import* _env arg :prefix "" :exit *exit-on-error*)
(++ i))))
(when (or *should-repl* *no-file*)