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