2018-05-04 07:28:18 +08:00
|
|
|
set(FDB_C_SRCS
|
|
|
|
fdb_c.cpp
|
|
|
|
foundationdb/fdb_c.h
|
|
|
|
ThreadCleanup.cpp)
|
|
|
|
|
|
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/foundationdb)
|
|
|
|
|
2019-02-06 11:29:01 +08:00
|
|
|
set(asm_file ${CMAKE_CURRENT_BINARY_DIR}/fdb_c.g.S)
|
|
|
|
|
|
|
|
set(platform "linux")
|
2018-05-04 07:28:18 +08:00
|
|
|
if(APPLE)
|
|
|
|
set(platform "osx")
|
2019-02-06 11:29:01 +08:00
|
|
|
elseif(WIN32)
|
|
|
|
set(platform "windows")
|
|
|
|
set(asm_file ${CMAKE_CURRENT_BINARY_DIR}/fdb_c.g.asm)
|
2018-05-04 07:28:18 +08:00
|
|
|
endif()
|
|
|
|
|
2019-02-06 11:29:01 +08:00
|
|
|
add_custom_command(OUTPUT ${asm_file} ${CMAKE_CURRENT_BINARY_DIR}/fdb_c_function_pointers.g.h
|
2018-05-04 07:28:18 +08:00
|
|
|
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_asm.py ${platform}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fdb_c.cpp
|
2019-02-06 11:29:01 +08:00
|
|
|
${asm_file}
|
2018-05-04 07:28:18 +08:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/fdb_c_function_pointers.g.h
|
|
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_asm.py ${CMAKE_CURRENT_SOURCE_DIR}/fdb_c.cpp
|
|
|
|
COMMENT "Generate C bindings")
|
2019-02-06 11:29:01 +08:00
|
|
|
add_custom_target(fdb_c_generated DEPENDS ${asm_file}
|
2018-05-04 07:28:18 +08:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/fdb_c_function_pointers.g.h)
|
|
|
|
|
2019-02-05 13:25:10 +08:00
|
|
|
vexillographer_compile(TARGET fdb_c_options LANG c OUT ${CMAKE_CURRENT_BINARY_DIR}/foundationdb/fdb_c_options.g.h
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/foundationdb/fdb_c_options.g.h)
|
2018-05-04 07:28:18 +08:00
|
|
|
|
2018-05-05 06:35:27 +08:00
|
|
|
include(GenerateExportHeader)
|
|
|
|
|
2019-02-06 11:29:01 +08:00
|
|
|
add_library(fdb_c SHARED ${FDB_C_SRCS} ${asm_file})
|
2018-05-04 07:28:18 +08:00
|
|
|
add_dependencies(fdb_c fdb_c_generated fdb_c_options)
|
|
|
|
target_link_libraries(fdb_c PUBLIC fdbclient)
|
2018-05-05 06:35:27 +08:00
|
|
|
target_include_directories(fdb_c PUBLIC
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/foundationdb)
|
2019-02-06 11:29:01 +08:00
|
|
|
if(WIN32)
|
|
|
|
enable_language(ASM_MASM)
|
|
|
|
set_property(SOURCE ${asm_file} PROPERTY LANGUAGE ASM_MASM)
|
|
|
|
endif()
|
2019-02-10 07:13:25 +08:00
|
|
|
|
|
|
|
add_executable(fdb_c_performance_test test/performance_test.c test/test.h)
|
|
|
|
target_link_libraries(fdb_c_performance_test PRIVATE fdb_c)
|
|
|
|
add_executable(fdb_c_ryw_benchmark test/ryw_benchmark.c test/test.h)
|
|
|
|
target_link_libraries(fdb_c_ryw_benchmark PRIVATE fdb_c)
|
|
|
|
|
2018-05-05 06:35:27 +08:00
|
|
|
# TODO: re-enable once the old vcxproj-based build system is removed.
|
|
|
|
#generate_export_header(fdb_c EXPORT_MACRO_NAME "DLLEXPORT"
|
|
|
|
# EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/foundationdb/fdb_c_export.h)
|
2018-05-06 00:43:50 +08:00
|
|
|
install(TARGETS fdb_c
|
|
|
|
EXPORT fdbc
|
|
|
|
DESTINATION ${FDB_LIB_DIR}
|
|
|
|
COMPONENT clients)
|
|
|
|
install(
|
|
|
|
FILES foundationdb/fdb_c.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/foundationdb/fdb_c_options.g.h
|
|
|
|
${CMAKE_SOURCE_DIR}/fdbclient/vexillographer/fdb.options
|
|
|
|
DESTINATION ${FDB_INCLUDE_INSTALL_DIR}/foundationdb COMPONENT clients)
|
|
|
|
#install(EXPORT fdbc DESTINATION ${FDB_LIB_DIR}/foundationdb COMPONENT clients)
|