Start building library
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
project(
|
project(
|
||||||
project-name
|
weaseljson
|
||||||
VERSION 0.0.0
|
VERSION 0.0.1
|
||||||
DESCRIPTION ""
|
DESCRIPTION "A constant memory streaming json parser."
|
||||||
HOMEPAGE_URL ""
|
HOMEPAGE_URL "https://git.weaselab.dev/weaselab/weaseljson"
|
||||||
LANGUAGES C CXX)
|
LANGUAGES C CXX)
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
@@ -44,6 +44,55 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
|
|||||||
include(CTest)
|
include(CTest)
|
||||||
include(doctest)
|
include(doctest)
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME}-object OBJECT src/lib.cpp)
|
||||||
|
target_compile_options(${PROJECT_NAME}-object PRIVATE -fno-exceptions
|
||||||
|
-fvisibility=hidden)
|
||||||
|
target_include_directories(${PROJECT_NAME}-object
|
||||||
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
|
||||||
|
if(NOT LD_EXE)
|
||||||
|
set(LD_EXE ld)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "")
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
|
||||||
|
COMMAND ${LD_EXE} -r $<TARGET_OBJECTS:${PROJECT_NAME}-object> -o
|
||||||
|
${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
|
||||||
|
DEPENDS $<TARGET_OBJECTS:${PROJECT_NAME}-object>
|
||||||
|
COMMAND_EXPAND_LISTS)
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} SHARED ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
|
||||||
|
else()
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(HAS_VERSION_SCRIPT)
|
||||||
|
target_link_options(
|
||||||
|
${PROJECT_NAME} PRIVATE
|
||||||
|
LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME}-static STATIC ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
|
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE CXX)
|
||||||
|
else()
|
||||||
|
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE C)
|
||||||
|
endif()
|
||||||
|
if(NOT APPLE)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${PROJECT_NAME}-static
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_OBJCOPY}
|
||||||
|
--keep-global-symbols=${CMAKE_CURRENT_SOURCE_DIR}/symbol-exports.txt
|
||||||
|
$<TARGET_FILE:${PROJECT_NAME}-static> || echo
|
||||||
|
"Proceeding with all symbols global in static library")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_executable(mytest src/test.cpp)
|
add_executable(mytest src/test.cpp)
|
||||||
target_include_directories(mytest PRIVATE include)
|
target_include_directories(mytest PRIVATE include)
|
||||||
target_link_libraries(mytest PRIVATE doctest nanobench simdjson)
|
target_link_libraries(mytest PRIVATE doctest nanobench simdjson)
|
||||||
|
|||||||
25
src/lib.cpp
Normal file
25
src/lib.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "parser3.h"
|
||||||
|
#include "weaseljson.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
/** Create a parser. Increasing stack size increases memory usage but also
|
||||||
|
* increases the depth of nested json accepted. `callbacks` and `data` must
|
||||||
|
* outlive the returned parser. */
|
||||||
|
__attribute__((visibility("default"))) WeaselJsonParser *
|
||||||
|
WeaselJsonParser_create(int stackSize, const WeaselJsonCallbacks *callbacks,
|
||||||
|
void *data) {}
|
||||||
|
|
||||||
|
/** Restore the parser to its newly-created state */
|
||||||
|
__attribute__((visibility("default"))) void
|
||||||
|
WeaselJsonParser_reset(WeaselJsonParser *parser) {}
|
||||||
|
|
||||||
|
/** Destroy the parser */
|
||||||
|
__attribute__((visibility("default"))) void
|
||||||
|
WeaselJsonParser_destroy(WeaselJsonParser *parser) {}
|
||||||
|
|
||||||
|
/** Incrementally parse `len` more bytes starting at `buf`. `buf` may be
|
||||||
|
* modified. Call with `len` 0 to indicate end of data */
|
||||||
|
__attribute__((visibility("default"))) WeaselJsonStatus
|
||||||
|
WeaselJsonParser_parse(WeaselJsonParser *parser, char *buf, int len) {}
|
||||||
|
}
|
||||||
4
symbol-exports.txt
Normal file
4
symbol-exports.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
WeaselJsonParser_create
|
||||||
|
WeaselJsonParser_reset
|
||||||
|
WeaselJsonParser_destroy
|
||||||
|
WeaselJsonParser_parse
|
||||||
Reference in New Issue
Block a user