This commit is contained in:
blueloveTH 2024-05-18 17:30:20 +08:00
parent e4cbb88e1d
commit 4909a7f61b
7 changed files with 14 additions and 72 deletions

View File

@ -16,6 +16,7 @@ else()
endif() endif()
endif() endif()
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC) aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC)
option(PK_USE_CJSON "" OFF) option(PK_USE_CJSON "" OFF)
@ -56,43 +57,17 @@ if(PK_BUILD_SHARED_LIB)
elseif(PK_BUILD_STATIC_LIB) elseif(PK_BUILD_STATIC_LIB)
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC}) add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
else() else()
add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
set(PROJECT_EXE_NAME main) set(PROJECT_EXE_NAME main)
add_executable(${PROJECT_EXE_NAME} src2/main.cpp) add_executable(${PROJECT_EXE_NAME} src2/main.cpp)
target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME}) # shared linked main
target_link_libraries(${PROJECT_EXE_NAME} ${CMAKE_DL_LIBS}) 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() endif()
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
$<INSTALL_INTERFACE:include>
)
if(PK_USE_CJSON) if(PK_USE_CJSON)
target_link_libraries(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE:cjson>) target_link_libraries(${PROJECT_NAME} PRIVATE cjson)
endif() 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()

View File

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

View File

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

View File

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

View File

@ -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."

View File

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

View File

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