diff --git a/CMakeLists.txt b/CMakeLists.txt index e45964c..4d6b324 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ cmake_minimum_required (VERSION 2.6) set(BUILD_BINDINGS_PERL OFF CACHE BOOL "Build the SourcetrailDB Perl bindings.") set(BUILD_BINDINGS_PYTHON OFF CACHE BOOL "Build the SourcetrailDB Python bindings.") set(BUILD_BINDINGS_JAVA OFF CACHE BOOL "Build the SourcetrailDB Java bindings.") +set(BUILD_BINDINGS_CSHARP OFF CACHE BOOL "Build the SourcetrailDB C# bindings.") set(BUILD_EXAMPLES ON CACHE BOOL "Build the examples.") set(PROJECT_NAME "SourcetrailDB") @@ -83,6 +84,16 @@ else() message(STATUS "Building the SourcetrailDB Java bindings will be skipped. You can enable building this target by setting 'BUILD_BINDINGS_JAVA' to 'ON'.") endif() +# --- C# Binding --- +if (BUILD_BINDINGS_CSHARP) + message(STATUS "The SourcetrailDB C# bindings will be built.") + + set(CSHARP_BINDING_TARGET_NAME "bindings_csharp") + set(CSHARP_BINDING_OUTPUT_DIR "") + add_subdirectory("${CMAKE_SOURCE_DIR}/bindings_csharp" "${CMAKE_BINARY_DIR}/bindings_csharp") +else() + message(STATUS "Building the SourcetrailDB C# bindings will be skipped. You can enable building this target by setting 'BUILD_BINDINGS_CSHARP' to 'ON'.") +endif() # --- Examples --- diff --git a/bindings_csharp/CMakeLists.txt b/bindings_csharp/CMakeLists.txt new file mode 100644 index 0000000..44862cb --- /dev/null +++ b/bindings_csharp/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required (VERSION 2.6) + +# --- Setup Paths --- + +set(RESOURCES_SWIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../resources_swig") +set(GENERATED_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/src") +set(CSHARP_BINDING_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE) + +set(SWIG_INTERFACE_FILE "${RESOURCES_SWIG_DIR}/interface/sourcetraildb.i") +set(CSHARP_BINDINGS_NAMESPACE "CoatiSoftware.SourcetrailDB") + +# --- Find Swig --- + +find_package(SWIG REQUIRED) +include(${SWIG_USE_FILE}) + +# --- Configure Target --- + +set_source_files_properties(${SWIG_INTERFACE_FILE} PROPERTIES CPLUSPLUS ON) +set_property(SOURCE ${SWIG_INTERFACE_FILE} PROPERTY COMPILE_OPTIONS -namespace ${CSHARP_BINDINGS_NAMESPACE}) + +include_directories( + "${RESOURCES_SWIG_DIR}/include" + "${CORE_SOURCE_DIR}/include" +) + +swig_add_library( + ${CSHARP_BINDING_TARGET_NAME} + TYPE SHARED + LANGUAGE csharp + OUTPUT_DIR ${CSHARP_BINDING_OUTPUT_DIR} + OUTFILE_DIR ${GENERATED_SRC_DIR} + SOURCES ${SWIG_INTERFACE_FILE} ${RESOURCES_SWIG_DIR}/src/sourcetraildb.cpp +) + +set_target_properties(${CSHARP_BINDING_TARGET_NAME} + PROPERTIES OUTPUT_NAME SourcetrailDB + SWIG_FLAGS ${CSHARP_BINDINGS_NAMESPACE}) + +swig_link_libraries(${CSHARP_BINDING_TARGET_NAME} ${CSHARP_LIBRARIES} ${LIB_CORE_TARGET_NAME})