blueloveTH 1 年間 前
コミット
4909a7f61b
7 ファイル変更14 行追加72 行削除
  1. 8 33
      CMakeLists.txt
  2. 1 5
      benchmarks/fib.py
  3. 2 0
      cmake_build.py
  4. 1 0
      include/pocketpy/vm.h
  5. 0 28
      run_cmake_install_test.sh
  6. 1 1
      src/vm.cpp
  7. 1 5
      src2/main.cpp

+ 8 - 33
CMakeLists.txt

@@ -16,6 +16,7 @@ else()
     endif()
 endif()
 
+include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC)
 
 option(PK_USE_CJSON "" OFF)
@@ -56,43 +57,17 @@ if(PK_BUILD_SHARED_LIB)
 elseif(PK_BUILD_STATIC_LIB)
     add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
 else()
-    add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
     set(PROJECT_EXE_NAME main)
     add_executable(${PROJECT_EXE_NAME} src2/main.cpp)
-    target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME})
-    target_link_libraries(${PROJECT_EXE_NAME} ${CMAKE_DL_LIBS})
+    # shared linked main
+    add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
+    target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME} ${CMAKE_DL_LIBS})
+    # static linked main
+    # add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
+    # target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME})
 endif()
 
-target_include_directories(${PROJECT_NAME} PUBLIC 
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
-    $<INSTALL_INTERFACE:include>
-)
-
 if(PK_USE_CJSON)
-    target_link_libraries(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE:cjson>)
+    target_link_libraries(${PROJECT_NAME} PRIVATE cjson)
 endif()
 
-option(PK_INSTALL "Generate the install target" OFF)
-if (PK_INSTALL)
-    install(
-        TARGETS ${PROJECT_NAME}
-        EXPORT ${PROJECT_NAME}_target
-        ARCHIVE DESTINATION lib
-        LIBRARY DESTINATION lib
-        RUNTIME DESTINATION bin
-    )
-
-    install(
-        DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ 
-        DESTINATION include 
-        FILES_MATCHING PATTERN "*.h"
-        PATTERN "typings" EXCLUDE
-    )
-    
-    # generate config.cmake
-    install(
-        EXPORT ${PROJECT_NAME}_target
-        FILE ${PROJECT_NAME}-config.cmake
-        DESTINATION "share/${PROJECT_NAME}"
-    )
-endif()

+ 1 - 5
benchmarks/fib.py

@@ -3,8 +3,4 @@ def fib(n):
         return n
     return fib(n-1) + fib(n-2)
 
-assert fib(32) == 2178309
-
-# from dis import dis
-# dis(fib)
-# 7049155 calls
+assert fib(36) == 14930352

+ 2 - 0
cmake_build.py

@@ -14,6 +14,8 @@ if len(sys.argv) == 2:
 else:
     config = 'Release'
 
+assert config in ['Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel']
+
 os.chdir("build")
 
 code = os.system(f"cmake .. -DPK_USE_CJSON=ON -DPK_ENABLE_OS=ON -DCMAKE_BUILD_TYPE={config}")

+ 1 - 0
include/pocketpy/vm.h

@@ -158,6 +158,7 @@ public:
     std::map<std::string_view, CodeObject_> __cached_codes;
     std::map<std::string_view, PyVar> __cached_op_funcs;
     FuncDecl_ __dynamic_func_decl;
+    PyVar __vectorcall_buffer[PK_MAX_CO_VARNAMES];
 
 #if PK_ENABLE_PROFILER
     LineProfiler* _profiler = nullptr;

+ 0 - 28
run_cmake_install_test.sh

@@ -1,28 +0,0 @@
-rm -rf install
-mkdir -p install/build
-cd install/build
-cmake ../../ -DCMAKE_INSTALL_PREFIX=../pocketpy -DPK_USE_CJSON=ON -DPK_ENABLE_OS=ON
-cmake --build . --target install --config Release -j 8
-
-if [ -e "../pocketpy/lib/libpocketpy.so" ]; then
-    echo "Library installed successfully."
-else
-    echo "Library installation failed."
-    exit 1
-fi
-
-if [ -e "../pocketpy/include/pocketpy.h" ]; then
-    echo "Header files installed successfully."
-else
-    echo "Header files installation failed."
-    exit 1
-fi
-
-if [ -e "../pocketpy/share/pocketpy/pocketpy-config.cmake" ]; then
-    echo "Config file installed successfully."
-else
-    echo "Config file installation failed."
-    exit 1
-fi
-
-echo "CMake install verified successfully."

+ 1 - 1
src/vm.cpp

@@ -1020,7 +1020,7 @@ PyVar VM::vectorcall(int ARGC, int KWARGC, bool op_call){
     ArgsView kwargs(p1, s_data._sp);
 
     PyVar* _base = args.begin();
-    PyVar buffer[PK_MAX_CO_VARNAMES];
+    PyVar* buffer = __vectorcall_buffer;
 
     if(callable_t == tp_function){
         /*****************_py_call*****************/

+ 1 - 5
src2/main.cpp

@@ -3,11 +3,7 @@
 #include <iostream>
 #include <sstream>
 
-#if __has_include("pocketpy_c.h")
-    #include "pocketpy_c.h"
-#else
-    #include "pocketpy.h"
-#endif
+#include "pocketpy_c.h"
 
 #ifdef _WIN32