浏览代码

A build of the shell can now print the current version that was built if built with CMake

main
Ludovic 'Archivist' Lagouardette 3 周前
父节点
当前提交
4239de9251
共有 2 个文件被更改,包括 23 次插入0 次删除
  1. +8
    -0
      CMakeLists.txt
  2. +15
    -0
      sh.c

+ 8
- 0
CMakeLists.txt 查看文件

@ -18,11 +18,19 @@ add_library(ink lib.c include/ink.h)
add_definitions(-DINK_STEP_BATCH_COUNT=20)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
add_executable(ink_exe main.c)
target_link_libraries(ink_exe PUBLIC ink)
target_include_directories(ink PUBLIC include)
add_executable(inksh sh.c)
target_compile_definitions(inksh PRIVATE
"-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
target_link_libraries(inksh PUBLIC ink)
# Functional tests

+ 15
- 0
sh.c 查看文件

@ -8,6 +8,10 @@
#define INK_SH_READ_BUFF 32768
#endif // INK_SH_READ_BUFF
#ifndef GIT_COMMIT_HASH
#define GIT_COMMIT_HASH "?"
#endif
int get_type_by_name(struct context* ctx, const char* name);
static void print_string(struct context* ctx, const struct elem string) {
@ -127,6 +131,16 @@ static void call_word(struct context* ctx) {
ink_push_fn(ctx, frame);
}
static void print_releasever(struct context* ctx) {
const char * commit = GIT_COMMIT_HASH;
while (*commit) {
ctx->putchar(ctx, *commit++);
}
ctx->putchar(ctx, '\n');
}
int main(int argc, char** argv) {
char read_buffer[INK_SH_READ_BUFF];
struct context* ctx;
@ -135,6 +149,7 @@ int main(int argc, char** argv) {
ink_add_native(ctx, "words?", list_words);
ink_add_native(ctx, "words!", resolve_word);
ink_add_native(ctx, "words.call", call_word);
ink_add_native(ctx, "version", print_releasever);
end_argv = argv + argc;
size_t cnt;
int no_exit = 1;

正在加载...
取消
保存