diff --git a/CMake/External/External_FTD2XX.cmake b/CMake/External/External_FTD2XX.cmake new file mode 100644 index 0000000000000000000000000000000000000000..b36a0527f8220c50654529639d102e6c29867ffd --- /dev/null +++ b/CMake/External/External_FTD2XX.cmake @@ -0,0 +1,51 @@ +if(NOT WIN32) + message(WARNING "System not supported. Only Windows is supported for External_FTD2XX.cmake.") + message(WARNING "FTD2XX should not be needed on your system.") + return() +endif() + +#----------------------------------------------------------------------------- +# Set project prefix path +#----------------------------------------------------------------------------- +set(FTD2XX_PREFIX ${CMAKE_BINARY_DIR}/External/FTD2XX) +set(FTD2XX_EXTRACT_DIR ${FTD2XX_PREFIX}/ftd2xx-2.12.18) + +#----------------------------------------------------------------------------- +# Set install commands +#----------------------------------------------------------------------------- +set(ftd2xx_libdir "i386") +if(${CMAKE_GENERATOR} MATCHES "Win64") + set(ftd2xx_libdir "amd64") +endif() + +set(copy_ftd2xx_shared_command + ${CMAKE_COMMAND} -E copy_directory + ${FTD2XX_EXTRACT_DIR}/${ftd2xx_libdir} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR} + ) + +set(copy_ftd2xx_static_command + ${CMAKE_COMMAND} -E rename + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/ftd2xx.lib + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/ftd2xx.lib + ) + +#----------------------------------------------------------------------------- +# Add External Project +#----------------------------------------------------------------------------- +include(imstkAddExternalProject) +imstk_add_external_project( FTD2XX + URL http://www.ftdichip.com/Drivers/CDM/CDM%20v2.12.18%20WHQL%20Certified.zip + URL_MD5 E1A194765D7BCC58968D523484B74140 + DOWNLOAD_DIR ${FTD2XX_PREFIX} + SOURCE_DIR ${FTD2XX_EXTRACT_DIR} + BINARY_DIR ${FTD2XX_EXTRACT_DIR} + UPDATE_COMMAND ${SKIP_STEP_COMMAND} + CONFIGURE_COMMAND ${SKIP_STEP_COMMAND} + BUILD_COMMAND ${SKIP_STEP_COMMAND} + INSTALL_COMMAND + ${copy_ftd2xx_shared_command} + COMMAND ${copy_ftd2xx_static_command} + RELATIVE_INCLUDE_PATH "/" + #VERBOSE + ) diff --git a/CMake/External/External_LibNiFalcon.cmake b/CMake/External/External_LibNiFalcon.cmake index 709409a6c0a9cb866d0476b1b5f715c6e2b4505c..6c46c1578cf2869170bb67b76321787ab58a6ed7 100644 --- a/CMake/External/External_LibNiFalcon.cmake +++ b/CMake/External/External_LibNiFalcon.cmake @@ -3,7 +3,7 @@ #----------------------------------------------------------------------------- set(LIBNIFALCON_DEPENDENCIES "") if(WIN32) - list(APPEND LIBNIFALCON_DEPENDENCIES "Libusb") + list(APPEND LIBNIFALCON_DEPENDENCIES "FTD2XX") endif(WIN32) include(imstkAddExternalProject) diff --git a/CMake/FindVRPN.cmake b/CMake/FindVRPN.cmake index 91193a15c4ec2b469aa43952f2a20d52169b127d..3dcbab62131b44d3d33443ab8ba2846cfc888e6d 100644 --- a/CMake/FindVRPN.cmake +++ b/CMake/FindVRPN.cmake @@ -19,12 +19,18 @@ find_path(VRPN_INCLUDE_DIR vrpn_Configure.h ) mark_as_advanced(VRPN_INCLUDE_DIR) +list(APPEND VRPN_INCLUDE_DIRS + ${VRPN_INCLUDE_DIR} + ${VRPN_INCLUDE_DIR}/quat + ${VRPN_INCLUDE_DIR}/atmellib + ) find_path(LIBNIFALCON_INCLUDE_DIR NAMES falcon/core/FalconDevice.h ) mark_as_advanced(LIBNIFALCON_INCLUDE_DIR) +list(APPEND VRPN_INCLUDE_DIRS ${LIBNIFALCON_INCLUDE_DIR}) find_path(LIBUSB1_INCLUDE_DIR NAMES @@ -32,17 +38,16 @@ find_path(LIBUSB1_INCLUDE_DIR libusb-1.0/libusb.h ) mark_as_advanced(LIBUSB1_INCLUDE_DIR) +list(APPEND VRPN_INCLUDE_DIRS ${LIBUSB1_INCLUDE_DIR}) -#----------------------------------------------------------------------------- -# Set up include dirs -#----------------------------------------------------------------------------- -list(APPEND VRPN_INCLUDE_DIRS - ${VRPN_INCLUDE_DIR} - ${VRPN_INCLUDE_DIR}/quat - ${VRPN_INCLUDE_DIR}/atmellib - ${LIBNIFALCON_INCLUDE_DIR} - ${LIBUSB1_INCLUDE_DIR} - ) +if(WIN32) + find_path(LIBFTD2XX_INCLUDE_DIR + NAMES + ftd2xx.h + ) + mark_as_advanced(LIBFTD2XX_INCLUDE_DIR) + list(APPEND VRPN_INCLUDE_DIRS ${LIBFTD2XX_INCLUDE_DIR}) +endif() #----------------------------------------------------------------------------- # Find library @@ -53,6 +58,7 @@ find_library(VRPN_LIBRARY vrpnserverd ) mark_as_advanced(VRPN_LIBRARY) +list(APPEND VRPN_LIBRARIES ${VRPN_LIBRARY}) find_library(QUAT_LIBRARY NAMES @@ -60,6 +66,7 @@ find_library(QUAT_LIBRARY quatd ) mark_as_advanced(QUAT_LIBRARY) +list(APPEND VRPN_LIBRARIES ${QUAT_LIBRARY}) find_library(LIBNIFALCON_LIBRARY NAMES @@ -67,6 +74,7 @@ find_library(LIBNIFALCON_LIBRARY nifalcon ) mark_as_advanced(LIBNIFALCON_LIBRARY) +list(APPEND VRPN_LIBRARIES ${LIBNIFALCON_LIBRARY}) #works on windows, but sounds like it is needed only on linux, check vrpn/submodules/hidapi.cmake find_library(LIBUSB1_LIBRARY @@ -75,6 +83,17 @@ find_library(LIBUSB1_LIBRARY usb-1.0 ) mark_as_advanced(LIBUSB1_LIBRARY) +list(APPEND VRPN_LIBRARIES ${LIBUSB1_LIBRARY}) + +if(WIN32) + find_library(LIBFTD2XX_LIBRARY + NAMES + ftd2xx + libftd2xx + ) + mark_as_advanced(LIBFTD2XX_LIBRARY) + list(APPEND VRPN_LIBRARIES ${LIBFTD2XX_LIBRARY}) +endif() #check vrpn/submodules/hidapi.cmake if(WIN32) @@ -87,19 +106,9 @@ elseif(APPLE) find_library(MACHID_IOKit_LIBRARY IOKit) set(HIDAPI_LIBRARY ${MACHID_CoreFoundation_LIBRARY} ${MACHID_IOKit_LIBRARY}) endif() +list(APPEND VRPN_LIBRARIES ${HIDAPI_LIBRARY}) mark_as_advanced(HIDAPI_LIBRARY) -#----------------------------------------------------------------------------- -# Set up libraries -#----------------------------------------------------------------------------- -list(APPEND VRPN_LIBRARIES - ${VRPN_LIBRARY} - ${QUAT_LIBRARY} - ${LIBNIFALCON_LIBRARY} - ${LIBUSB1_LIBRARY} - ${HIDAPI_LIBRARY} - ) - #----------------------------------------------------------------------------- # Phantom Omni support #----------------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index d0055b8a3bcf317a80d8f4c73f7343bb522d71bf..67551f277efb3115109878b7cf3c37fff7c879e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,8 @@ endif() if(WIN32) imstk_define_dependency(PThreads) - imstk_define_dependency(Libusb) + imstk_define_dependency(Libusb) #for VRPN + imstk_define_dependency(FTD2XX) #for LibNiFalcon endif() imstk_define_dependency(g3log)