BLUELOVETH пре 2 година
родитељ
комит
5f0bf65da7
3 измењених фајлова са 18 додато и 3 уклоњено
  1. 12 2
      CMakeLists.txt
  2. 4 1
      c_bindings/pocketpy_c.h
  3. 2 0
      docs/LuaC-API/introduction.md

+ 12 - 2
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()

+ 4 - 1
c_bindings/pocketpy_c.h

@@ -7,7 +7,10 @@ extern "C" {
 
 #include <stdbool.h>
 #include <stdint.h>
-#include "export.h"
+
+#ifndef PK_EXPORT
+#define PK_EXPORT
+#endif
 
 typedef struct pkpy_vm_handle pkpy_vm;
 

+ 2 - 0
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)`