This commit is contained in:
blueloveTH 2023-07-09 01:56:40 +08:00
parent 0e736b2f71
commit d64d955fb8
4 changed files with 29 additions and 11 deletions

View File

@ -14,8 +14,6 @@ jobs:
cd build cd build
cmake .. cmake ..
cmake --build . --config Release cmake --build . --config Release
cmake .. -DPK_BUILD_SHARED_LIB=1
cmake --build . --config Release
cp Release/pocketpy.exe ../output/windows/x86_64 cp Release/pocketpy.exe ../output/windows/x86_64
cp Release/pocketpy.dll ../output/windows/x86_64 cp Release/pocketpy.dll ../output/windows/x86_64
cp Release/pocketpy.exe ../ cp Release/pocketpy.exe ../
@ -53,8 +51,6 @@ jobs:
cd build cd build
cmake .. cmake ..
cmake --build . --config Release cmake --build . --config Release
cmake .. -DPK_BUILD_SHARED_LIB=1
cmake --build . --config Release
cp pocketpy ../output/linux/x86_64 cp pocketpy ../output/linux/x86_64
cp libpocketpy.so ../output/linux/x86_64 cp libpocketpy.so ../output/linux/x86_64
cp pocketpy ../ cp pocketpy ../

View File

@ -20,7 +20,7 @@ endif()
if(MSVC) if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR- /EHsc /utf-8 /O2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR- /EHsc /utf-8 /O2")
else() else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fexceptions -O2 -ldl") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fexceptions -O2")
endif() endif()
option(PK_EXPORT_C_API "Export C API" ON) option(PK_EXPORT_C_API "Export C API" ON)
@ -40,10 +40,18 @@ aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC)
option(PK_BUILD_SHARED_LIB "Build shared library" OFF) option(PK_BUILD_SHARED_LIB "Build shared library" OFF)
option(PK_BUILD_STATIC_LIB "Build static library" OFF) option(PK_BUILD_STATIC_LIB "Build static library" OFF)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
if(PK_BUILD_SHARED_LIB) if(PK_BUILD_SHARED_LIB)
add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC} ${PK_LIB_CPP}) add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC} ${PK_LIB_CPP})
elseif(PK_BUILD_STATIC_LIB) elseif(PK_BUILD_STATIC_LIB)
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} ${PK_LIB_CPP}) add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} ${PK_LIB_CPP})
else() else()
add_executable(${PROJECT_NAME} ${POCKETPY_SRC} src2/main.cpp) add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC} ${PK_LIB_CPP})
endif() add_executable(${PROJECT_NAME}_EXE src2/main.cpp)
set_target_properties(${PROJECT_NAME}_EXE PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME}_EXE ${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME}_EXE ${CMAKE_DL_LIBS})
endif()
target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS})

View File

@ -246,8 +246,8 @@ struct MemoryPool{
} }
}; };
inline MemoryPool<64> pool64; PK_EXPORT inline MemoryPool<64> pool64;
inline MemoryPool<128> pool128; PK_EXPORT inline MemoryPool<128> pool128;
template <typename T> template <typename T>
struct shared_ptr { struct shared_ptr {

View File

@ -7,9 +7,23 @@ std::string f_input(){
return pkpy::platform_getline(); return pkpy::platform_getline();
} }
int main(int argc, char** argv){ #define ABS_PATH(x) std::filesystem::absolute(x).c_str()
pkpy::VM* vm = pkpy_new_vm();
int main(int argc, char** argv){
#if _WIN32
SetConsoleOutputCP(CP_UTF8);
void* p = LoadLibraryA(ABS_PATH("pocketpy.dll"));
#elif __linux__
void* p = dlopen(ABS_PATH("libpocketpy.so"), RTLD_NOW | RTLD_GLOBAL);
#elif __APPLE__
void* p = dlopen(ABS_PATH("libpocketpy.dylib"), RTLD_NOW | RTLD_GLOBAL);
#endif
if(p == nullptr){
std::cerr << "unable to load dynamic library" << std::endl;
return 1;
}
pkpy::VM* vm = pkpy_new_vm();
pkpy::_bind(vm, vm->builtins, "input() -> str", &f_input); pkpy::_bind(vm, vm->builtins, "input() -> str", &f_input);
if(argc == 1){ if(argc == 1){