diff options
Diffstat (limited to 'bindings/csharp/CMakeLists.txt')
-rw-r--r-- | bindings/csharp/CMakeLists.txt | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/bindings/csharp/CMakeLists.txt b/bindings/csharp/CMakeLists.txt new file mode 100644 index 0000000..7e9d19b --- /dev/null +++ b/bindings/csharp/CMakeLists.txt @@ -0,0 +1,70 @@ +cmake_minimum_required(VERSION 2.8.7) +project(libiio-sharp NONE) + +if (WIN32) + set(MCS_EXECUTABLE_NAME csc) +else() + set(MCS_EXECUTABLE_NAME mcs) +endif() + +find_program(MCS_EXECUTABLE + NAMES ${MCS_EXECUTABLE_NAME} + HINTS "C:/Windows/Microsoft.NET/Framework/v4.0.30319" + PATHS ENV MCS_EXECUTABLE_PATH + DOC "C# compiler") +mark_as_advanced(MCS_EXECUTABLE) + +if (MCS_EXECUTABLE) + option(CSHARP_BINDINGS "Install C# bindings" ON) + + if (CSHARP_BINDINGS) + set(LIBIIO_CS_PC_IN "${CMAKE_CURRENT_SOURCE_DIR}/libiio-sharp.pc.cmakein") + set(LIBIIO_CS_PC "${CMAKE_CURRENT_BINARY_DIR}/libiio-sharp-${VERSION}.pc") + configure_file(${LIBIIO_CS_PC_IN} ${LIBIIO_CS_PC} @ONLY) + if(NOT SKIP_INSTALL_ALL) + install(FILES ${LIBIIO_CS_PC} DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") + endif() + + set(LIBIIO_CS_DLL_CONFIG_IN "${CMAKE_CURRENT_SOURCE_DIR}/libiio-sharp.dll.config.cmakein") + set(LIBIIO_CS_DLL_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/libiio-sharp.dll.config") + configure_file(${LIBIIO_CS_DLL_CONFIG_IN} ${LIBIIO_CS_DLL_CONFIG} @ONLY) + if(NOT SKIP_INSTALL_ALL) + install(FILES ${LIBIIO_CS_DLL_CONFIG} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cli/libiio-sharp-${VERSION}) + endif() + + set(LIBIIO_CS_VERSION ${VERSION}.0.0) + set(LIBIIO_CS_INFO_IN ${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cs.in) + set(LIBIIO_CS_INFO ${CMAKE_CURRENT_BINARY_DIR}/AssemblyInfo.cs) + configure_file(${LIBIIO_CS_INFO_IN} ${LIBIIO_CS_INFO} @ONLY) + + set(LIBIIO_CS_DLL "${CMAKE_CURRENT_BINARY_DIR}/libiio-sharp.dll") + set(LIBIIO_CS_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/Attr.cs + ${CMAKE_CURRENT_SOURCE_DIR}/Channel.cs + ${CMAKE_CURRENT_SOURCE_DIR}/Context.cs + ${CMAKE_CURRENT_SOURCE_DIR}/Device.cs + ${CMAKE_CURRENT_SOURCE_DIR}/IOBuffer.cs + ${CMAKE_CURRENT_SOURCE_DIR}/Trigger.cs + ${LIBIIO_CS_INFO} + ) + + foreach(SRC ${LIBIIO_CS_SOURCES}) + file(TO_NATIVE_PATH ${SRC} TMP) + set(LIBIIO_CS_SOURCES_REALPATH ${LIBIIO_CS_SOURCES_REALPATH} ${TMP}) + endforeach(SRC) + + file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/key.snk SIGN_KEY) + file(TO_NATIVE_PATH ${LIBIIO_CS_DLL} LIBIIO_CS_DLL_OUT) + + add_custom_command(OUTPUT ${LIBIIO_CS_DLL} + COMMAND ${MCS_EXECUTABLE} /target:library /out:${LIBIIO_CS_DLL_OUT} /debug /keyfile:${SIGN_KEY} ${LIBIIO_CS_SOURCES_REALPATH} + DEPENDS ${LIBIIO_CS_SOURCES} + ) + + add_custom_target(libiio-sharp ALL DEPENDS ${LIBIIO_CS_DLL}) + + if(NOT SKIP_INSTALL_ALL) + install(FILES ${LIBIIO_CS_DLL} ${LIBIIO_CS_DLL}.mdb DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cli/libiio-sharp-${VERSION}) + endif() + endif() +endif() |