aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Koo <steven.koo@ni.com>2021-03-10 12:21:33 -0600
committerAaron Rossetto <aaron.rossetto@ni.com>2021-03-19 15:40:09 -0500
commit9aafc0ace2272746d708dcac6e5daaa50b7da4c7 (patch)
treee26c85e334ca523312719bdae382dda8c18a90c7
parentada6a4e46770d22d528b2b6fbc2bdd71e5e3064d (diff)
downloaduhd-9aafc0ace2272746d708dcac6e5daaa50b7da4c7.tar.gz
uhd-9aafc0ace2272746d708dcac6e5daaa50b7da4c7.tar.bz2
uhd-9aafc0ace2272746d708dcac6e5daaa50b7da4c7.zip
uhd: enable vcpkg support on windows
vcpkg can be used for the Windows C++ dependencies for uhd with this commit. To use vcpkg on Windows: 1) Copy the custom triplets in host/cmake/vcpkg/ to the vcpkg/triplets/ folder. 2) Install boost and libusb for the custom triplet "vcpkg install libusb:uhd-x64-windows-static-md boost:uhd-x64-windows-static-md" 3) Call CMake with vcpkg toolchain file flags: -DVCPKG_TARGET_TRIPLET=uhd-x64-windows-static-md -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALL_DIR%/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 16 2019" -A x64 Replace the -G with the installed version of Visual Studio and matching architecture. Then build normally by running vcvarsall.bat and msbuild. Signed-off-by: Steven Koo <steven.koo@ni.com>
-rw-r--r--host/cmake/Modules/UHDBoost.cmake26
-rw-r--r--host/cmake/vcpkg/uhd-x64-windows-static-md.cmake14
-rw-r--r--host/cmake/vcpkg/uhd-x86-windows-static-md.cmake14
-rw-r--r--host/include/uhd/config.h7
-rw-r--r--host/include/uhd/config.hpp7
-rw-r--r--host/utils/CMakeLists.txt1
6 files changed, 59 insertions, 10 deletions
diff --git a/host/cmake/Modules/UHDBoost.cmake b/host/cmake/Modules/UHDBoost.cmake
index 5ebb4acef..eed94cbfe 100644
--- a/host/cmake/Modules/UHDBoost.cmake
+++ b/host/cmake/Modules/UHDBoost.cmake
@@ -118,12 +118,26 @@ endif(UNIX AND NOT BOOST_ROOT AND EXISTS "/usr/lib64")
# special Microsoft Visual C handling
if(MSVC)
- set(BOOST_ALL_DYN_LINK "${BOOST_ALL_DYN_LINK}" CACHE BOOL "boost enable dynamic linking")
- if(BOOST_ALL_DYN_LINK)
- add_definitions(-DBOOST_ALL_DYN_LINK) #setup boost auto-linking in msvc
- else(BOOST_ALL_DYN_LINK)
- set(UHD_BOOST_REQUIRED_COMPONENTS) #empty components list for static link
- endif(BOOST_ALL_DYN_LINK)
+ if(VCPKG_TARGET_TRIPLET)
+ message(STATUS " VCPKG Libs")
+ string(FIND ${VCPKG_TARGET_TRIPLET} "static" vcpkg_check_static)
+ string(FIND ${VCPKG_TARGET_TRIPLET} "static-md" vcpkg_check_static_md)
+ if((NOT vcpkg_check_static EQUAL -1) AND vcpkg_check_static_md EQUAL -1)
+ # Statically linked CRT
+ message(STATUS " VCPKG static CRT triplet found. Configuring compiler flags.")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
+ endif((NOT vcpkg_check_static EQUAL -1) AND vcpkg_check_static_md EQUAL -1)
+ else(VCPKG_TARGET_TRIPLET)
+ set(BOOST_ALL_DYN_LINK "${BOOST_ALL_DYN_LINK}" CACHE BOOL "boost enable dynamic linking")
+ if(BOOST_ALL_DYN_LINK)
+ message(STATUS " Dynamic Libs")
+ add_definitions(-DBOOST_ALL_DYN_LINK) #setup boost auto-linking in msvc
+ else(BOOST_ALL_DYN_LINK)
+ message(STATUS " Static Libs")
+ set(UHD_BOOST_REQUIRED_COMPONENTS) #empty components list for static link
+ endif(BOOST_ALL_DYN_LINK)
+ endif(VCPKG_TARGET_TRIPLET)
endif(MSVC)
# Starting in CMake 3.15.0, if policy 'CMP0093' is available and set
diff --git a/host/cmake/vcpkg/uhd-x64-windows-static-md.cmake b/host/cmake/vcpkg/uhd-x64-windows-static-md.cmake
new file mode 100644
index 000000000..ef577045d
--- /dev/null
+++ b/host/cmake/vcpkg/uhd-x64-windows-static-md.cmake
@@ -0,0 +1,14 @@
+set(VCPKG_TARGET_ARCHITECTURE x64)
+set(VCPKG_CRT_LINKAGE dynamic)
+set(VCPKG_LIBRARY_LINKAGE static)
+# uhd dynamic links for boost-test and libusb.
+# The other boost dependencies are static.
+# This maintains historical compatibility
+# with previous binaries.
+if (PORT STREQUAL boost-test)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+if (PORT STREQUAL libusb)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
diff --git a/host/cmake/vcpkg/uhd-x86-windows-static-md.cmake b/host/cmake/vcpkg/uhd-x86-windows-static-md.cmake
new file mode 100644
index 000000000..c8d09179f
--- /dev/null
+++ b/host/cmake/vcpkg/uhd-x86-windows-static-md.cmake
@@ -0,0 +1,14 @@
+set(VCPKG_TARGET_ARCHITECTURE x86)
+set(VCPKG_CRT_LINKAGE dynamic)
+set(VCPKG_LIBRARY_LINKAGE static)
+# uhd dynamic links for boost-test and libusb.
+# The other boost dependencies are static.
+# This maintains historical compatibility
+# with previous binaries.
+if (PORT STREQUAL boost-test)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+if (PORT STREQUAL libusb)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
diff --git a/host/include/uhd/config.h b/host/include/uhd/config.h
index bacda212f..c7184ea4d 100644
--- a/host/include/uhd/config.h
+++ b/host/include/uhd/config.h
@@ -12,8 +12,11 @@
#include <iso646.h>
// Define ssize_t
-#include <stddef.h>
-typedef ptrdiff_t ssize_t;
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+# include <BaseTsd.h>
+typedef SSIZE_T ssize_t;
+#endif /* _SSIZE_T_DEFINED */
#endif /* _MSC_VER */
diff --git a/host/include/uhd/config.hpp b/host/include/uhd/config.hpp
index 99c3731c1..8504e0c18 100644
--- a/host/include/uhd/config.hpp
+++ b/host/include/uhd/config.hpp
@@ -38,8 +38,11 @@
# include <ciso646>
// define ssize_t
-# include <cstddef>
-typedef ptrdiff_t ssize_t;
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+# include <BaseTsd.h>
+typedef SSIZE_T ssize_t;
+#endif /* _SSIZE_T_DEFINED */
#endif // BOOST_MSVC
diff --git a/host/utils/CMakeLists.txt b/host/utils/CMakeLists.txt
index 4bbcd252b..ab7d645f4 100644
--- a/host/utils/CMakeLists.txt
+++ b/host/utils/CMakeLists.txt
@@ -53,6 +53,7 @@ set(util_share_sources_py
uhd_power_cal.py
)
if(ENABLE_USB)
+ find_package(LIBUSB)
list(APPEND util_share_sources
fx2_init_eeprom.cpp
)