aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/tinkerforge/CMakeLists.txt63
-rw-r--r--ports/tinkerforge/CONTROL3
-rw-r--r--ports/tinkerforge/portfile.cmake36
-rw-r--r--ports/tinkerforge/tinkerforgeConfig.cmake.in5
4 files changed, 107 insertions, 0 deletions
diff --git a/ports/tinkerforge/CMakeLists.txt b/ports/tinkerforge/CMakeLists.txt
new file mode 100644
index 000000000..671f7d145
--- /dev/null
+++ b/ports/tinkerforge/CMakeLists.txt
@@ -0,0 +1,63 @@
+cmake_minimum_required (VERSION 3.13 FATAL_ERROR)
+include(GNUInstallDirs)
+
+if(WIN32)
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}")
+endif()
+
+if(NOT TARGET_INSTALL_DIR)
+ set(TARGET_INSTALL_DIR "share/${PROJECT_NAME}")
+endif()
+
+if(NOT CONFIG_INSTALL_DIR)
+ set(CONFIG_INSTALL_DIR "share/${PROJECT_NAME}")
+endif()
+
+if(NOT INCLUDE_INSTALL_DIR)
+ set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}")
+endif()
+
+project(tinkerforge LANGUAGES C VERSION 2.1.25)
+
+file(GLOB CPP_FILES source/*.c)
+file(GLOB H_FILES source/*.h)
+file(GLOB DEF_FILE source/*.def)
+
+add_library(${PROJECT_NAME} ${CPP_FILES} ${H_FILES} ${DEF_FILE})
+target_include_directories(${PROJECT_NAME} PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/source>
+ $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}>)
+target_link_libraries(${PROJECT_NAME} PUBLIC Ws2_32)
+##---------------------------------------------------------------------------------------##
+##----- Package definition.
+##---------------------------------------------------------------------------------------##
+include(CMakePackageConfigHelpers)
+
+#Export as Package
+set_target_properties (${PROJECT_NAME} PROPERTIES EXPORT_NAME ${PROJECT_NAME})
+export(TARGETS ${PROJECT_NAME} NAMESPACE ${PROJECT_NAME}:: FILE cmake/${PROJECT_NAME}Targets.cmake)
+export(PACKAGE ${PROJECT_NAME})
+
+#Config files for find_package
+configure_package_config_file(
+ ${PROJECT_NAME}Config.cmake.in cmake/${PROJECT_NAME}Config.cmake
+ INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}/${PROJECT_NAME}Config.cmake"
+ PATH_VARS TARGET_INSTALL_DIR INCLUDE_INSTALL_DIR
+)
+write_basic_package_version_file(cmake/${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMinorVersion)
+
+#Install the target and all it build outputs.
+install (TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Runtime
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Development
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT Runtime
+ PUBLIC_HEADER DESTINATION "${INCLUDE_INSTALL_DIR}" COMPONENT Development
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT Runtime)
+#Install public headers
+install(FILES ${H_FILES} DESTINATION "${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}")
+#Install the config files for find_package
+install(FILES "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
+ "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
+ DESTINATION "${CONFIG_INSTALL_DIR}")
+#install the targets file included by the config
+install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION "${TARGET_INSTALL_DIR}") \ No newline at end of file
diff --git a/ports/tinkerforge/CONTROL b/ports/tinkerforge/CONTROL
new file mode 100644
index 000000000..5eb67e96b
--- /dev/null
+++ b/ports/tinkerforge/CONTROL
@@ -0,0 +1,3 @@
+Source: tinkerforge
+Version: 2.1.25
+Description: Tinkerforge C API bindings for bricks and bricklets
diff --git a/ports/tinkerforge/portfile.cmake b/ports/tinkerforge/portfile.cmake
new file mode 100644
index 000000000..128f72e32
--- /dev/null
+++ b/ports/tinkerforge/portfile.cmake
@@ -0,0 +1,36 @@
+vcpkg_fail_port_install(ON_TARGET "uwp")
+
+set(VERSION 2_1_25)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://download.tinkerforge.com/bindings/c/tinkerforge_c_bindings_${VERSION}.zip"
+ FILENAME "tinkerforge-${VERSION}.zip"
+ SHA512 c02b789bd466803d60aeb39a544b0aa17af811377b065a0b273bcfc15c5844f8cfe981d8143743e32bd05470c2c6af297df50924da0d2895a4cdf4bc9e9bd0b8
+)
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF tinker-${VERSION}
+ NO_REMOVE_ONE_LEVEL
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION ${SOURCE_PATH})
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/tinkerforgeConfig.cmake.in" DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+)
+
+vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets(CONFIG_PATH share)
+
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/debug/include
+ ${CURRENT_PACKAGES_DIR}/debug/share
+)
+
+file(INSTALL ${SOURCE_PATH}/license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+
+vcpkg_copy_pdbs()
diff --git a/ports/tinkerforge/tinkerforgeConfig.cmake.in b/ports/tinkerforge/tinkerforgeConfig.cmake.in
new file mode 100644
index 000000000..440db8a6c
--- /dev/null
+++ b/ports/tinkerforge/tinkerforgeConfig.cmake.in
@@ -0,0 +1,5 @@
+@PACKAGE_INIT@
+
+include ("@PACKAGE_TARGET_INSTALL_DIR@@PROJECT_NAME@Targets.cmake")
+set_and_check(REFL_ENUM_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
+check_required_components("@PROJECT_NAME@")