From ac2744e24f6dfa2627103acc167e386ad5096200 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sun, 2 Jul 2023 19:48:36 +0800 Subject: [PATCH] :sparkles: change build scripts --- .github/workflows/c-cpp.yml | 8 +- CMakeLists.txt | 48 +- main.cpp | 178 ----- makefile | 32 +- module/fib.cpp | 2 +- module/keyboard.cpp | 2 +- module/makefile | 39 +- module/matrix.cpp | 2 +- module/nasocket.cpp | 2 +- nasal.h | 255 ------- nasal_ast.h | 301 -------- nasal_builtin.h | 1400 ----------------------------------- nasal_codegen.h | 1088 --------------------------- nasal_dbg.h | 321 -------- nasal_err.h | 228 ------ nasal_gc.h | 928 ----------------------- nasal_import.h | 226 ------ nasal_lexer.h | 506 ------------- nasal_opcode.h | 233 ------ nasal_opt.h | 75 -- nasal_parse.h | 1111 --------------------------- nasal_vm.h | 1287 -------------------------------- src/ast_dumper.cpp | 12 + src/nasal_new_ast.cpp | 9 + src/nasal_new_ast.h | 15 +- src/nasal_new_codegen.cpp | 10 + src/nasal_new_gc.h | 1 - src/nasal_new_header.h | 4 +- src/optimizer.cpp | 119 ++- src/optimizer.h | 69 +- test/calc.nas | 4 +- test/md5compare.nas | 5 +- 32 files changed, 231 insertions(+), 8289 deletions(-) delete mode 100644 main.cpp delete mode 100644 nasal.h delete mode 100644 nasal_ast.h delete mode 100644 nasal_builtin.h delete mode 100644 nasal_codegen.h delete mode 100644 nasal_dbg.h delete mode 100644 nasal_err.h delete mode 100644 nasal_gc.h delete mode 100644 nasal_import.h delete mode 100644 nasal_lexer.h delete mode 100644 nasal_opcode.h delete mode 100644 nasal_opt.h delete mode 100644 nasal_parse.h delete mode 100644 nasal_vm.h diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index f1291c3..58c2c5a 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -16,9 +16,9 @@ jobs: - uses: actions/checkout@v2 - name: make run: | - make -j + make -j4 cd module - make all -j + make all -j4 cd .. make test tar -czf nasal-mac-nightly.tgz . @@ -42,9 +42,9 @@ jobs: - uses: actions/checkout@v2 - name: make run: | - make -j + make -j4 cd module - make all -j + make all -j4 cd .. make test touch nasal-linux-x86_64-nightly.tgz diff --git a/CMakeLists.txt b/CMakeLists.txt index 90dd40c..fdd7981 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,22 +9,12 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_FLAGS_RELEASE_INIT "-Wshadow -Wall") +add_compile_options(-fPIC) + # generate release executables set(CMAKE_BUILD_TYPE "Release") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/module) - -add_library(fib SHARED ${CMAKE_SOURCE_DIR}/module/fib.cpp) -target_include_directories(fib PRIVATE ${CMAKE_SOURCE_DIR}/src) - -add_library(key SHARED ${CMAKE_SOURCE_DIR}/module/keyboard.cpp) -target_include_directories(key PRIVATE ${CMAKE_SOURCE_DIR}/src) - -add_library(mat SHARED ${CMAKE_SOURCE_DIR}/module/matrix.cpp) -target_include_directories(mat PRIVATE ${CMAKE_SOURCE_DIR}/src) - -add_library(nasock SHARED ${CMAKE_SOURCE_DIR}/module/nasocket.cpp) -target_include_directories(nasock PRIVATE ${CMAKE_SOURCE_DIR}/src) +# build nasal used object set(NASAL_OBJECT_SOURCE_FILE ${CMAKE_SOURCE_DIR}/src/ast_dumper.cpp ${CMAKE_SOURCE_DIR}/src/ast_visitor.cpp @@ -42,18 +32,16 @@ set(NASAL_OBJECT_SOURCE_FILE ${CMAKE_SOURCE_DIR}/src/nasal_new_vm.cpp ${CMAKE_SOURCE_DIR}/src/optimizer.cpp ${CMAKE_SOURCE_DIR}/src/symbol_finder.cpp) - -add_executable(nasal ${CMAKE_SOURCE_DIR}/src/nasal_new_main.cpp) - add_library(nasal-object STATIC ${NASAL_OBJECT_SOURCE_FILE}) target_include_directories(nasal-object PRIVATE ${CMAKE_SOURCE_DIR}/src) +# build nasal +add_executable(nasal ${CMAKE_SOURCE_DIR}/src/nasal_new_main.cpp) target_link_libraries(nasal nasal-object) if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") target_link_libraries(nasal dl) endif() target_include_directories(nasal PRIVATE ${CMAKE_SOURCE_DIR}/src) - if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") add_custom_command( TARGET nasal POST_BUILD @@ -61,4 +49,28 @@ if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") ${CMAKE_SOURCE_DIR}/build/nasal ${CMAKE_SOURCE_DIR}/nasal ) -endif() \ No newline at end of file +endif() + +# build module +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/module) + +set(MODULE_USED_OBJECT_SOURCE_FILE + ${CMAKE_SOURCE_DIR}/src/nasal_new_misc.cpp + ${CMAKE_SOURCE_DIR}/src/nasal_new_gc.cpp) +add_library(module-used-object STATIC ${MODULE_USED_OBJECT_SOURCE_FILE}) + +add_library(fib SHARED ${CMAKE_SOURCE_DIR}/module/fib.cpp) +target_include_directories(fib PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_link_libraries(fib module-used-object) + +add_library(key SHARED ${CMAKE_SOURCE_DIR}/module/keyboard.cpp) +target_include_directories(key PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_link_libraries(key module-used-object) + +add_library(mat SHARED ${CMAKE_SOURCE_DIR}/module/matrix.cpp) +target_include_directories(mat PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_link_libraries(mat module-used-object) + +add_library(nasock SHARED ${CMAKE_SOURCE_DIR}/module/nasocket.cpp) +target_include_directories(nasock PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_link_libraries(nasock module-used-object) \ No newline at end of file diff --git a/main.cpp b/main.cpp deleted file mode 100644 index 084e28d..0000000 --- a/main.cpp +++ /dev/null @@ -1,178 +0,0 @@ -#include "nasal.h" -#include "nasal_err.h" -#include "nasal_lexer.h" -#include "nasal_ast.h" -#include "nasal_parse.h" -#include "nasal_import.h" -#include "nasal_opt.h" -#include "nasal_gc.h" -#include "nasal_builtin.h" -#include "nasal_codegen.h" -#include "nasal_vm.h" -#include "nasal_dbg.h" - -#include -#include - -const u32 VM_AST =0x01; -const u32 VM_CODE =0x02; -const u32 VM_TIME =0x04; -const u32 VM_EXEC =0x08; -const u32 VM_DETAIL=0x10; -const u32 VM_DEBUG =0x20; - -std::ostream& help(std::ostream& out) { - out - <<" ,--#-,\n" - <<"<3 / \\____\\ <3\n" - <<" |_|__A_|\n" -#ifdef _WIN32 - <<"use command to use unicode.\n" -#endif - <<"\nnasal