diff --git a/CMakeLists.txt b/CMakeLists.txt index 565d09b3..7f2144d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,17 +32,27 @@ else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fexceptions -O2") endif() +option(PK_EXPORT_C_API "Build C API" OFF) + include_directories(${CMAKE_CURRENT_LIST_DIR}/include) +if(PK_EXPORT_C_API) + message(STATUS "Exporting C API") + include_directories(${CMAKE_CURRENT_LIST_DIR}/c_bindings) + set(PK_LIB_CPP ${CMAKE_CURRENT_LIST_DIR}/c_bindings/pocketpy_c.cpp) +else() + set(PK_LIB_CPP ${CMAKE_CURRENT_LIST_DIR}/src2/lib.cpp) +endif() + aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC) option(PK_BUILD_SHARED_LIB "Build shared library" OFF) option(PK_BUILD_STATIC_LIB "Build static library" OFF) if(PK_BUILD_SHARED_LIB) - add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC} src2/lib.cpp) + add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC} ${PK_LIB_CPP}) elseif(PK_BUILD_STATIC_LIB) - add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} src2/lib.cpp) + add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} ${PK_LIB_CPP}) else() add_executable(${PROJECT_NAME} ${POCKETPY_SRC} src2/main.cpp) endif() \ No newline at end of file diff --git a/c_bindings/pocketpy_c.h b/c_bindings/pocketpy_c.h index 8189d72b..cf4e8997 100644 --- a/c_bindings/pocketpy_c.h +++ b/c_bindings/pocketpy_c.h @@ -7,7 +7,10 @@ extern "C" { #include #include -#include "export.h" + +#ifndef PK_EXPORT +#define PK_EXPORT +#endif typedef struct pkpy_vm_handle pkpy_vm; diff --git a/docs/LuaC-API/introduction.md b/docs/LuaC-API/introduction.md index 38b9322d..49129e10 100644 --- a/docs/LuaC-API/introduction.md +++ b/docs/LuaC-API/introduction.md @@ -12,6 +12,8 @@ true if it succeeded false if it did not. Special thanks for [@koltenpearson](https://github.com/koltenpearson) for bringing us the Lua Style API implementation. !!! +Set option `PK_EXPORT_C_API` to `ON` to enable the C API in cmake build process. + ## Basic Functions #### `pkpy_vm* pkpy_vm_create(bool use_stdio, bool enable_os)`