Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Support Libusb1 on windows #46

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 5 additions & 5 deletions BuildSysCMakeLib.cmake
Expand Up @@ -271,11 +271,11 @@ FUNCTION(BUILDSYS_BUILD_LIB)

# This allows use to build static/shared libraries of the same name.
# See http://www.itk.org/Wiki/CMake_FAQ#How_do_I_make_my_shared_and_static_libraries_have_the_same_root_name.2C_but_different_suffixes.3F
IF(USE_STATIC_SUFFIX AND LIB_TYPE STREQUAL "STATIC")
IF(USE_STATIC_SUFFIX AND LIB_TYPE STREQUAL "STATIC")
SET_TARGET_PROPERTIES (${CURRENT_LIB} PROPERTIES OUTPUT_NAME ${BUILDSYS_LIB_NAME}_s)
ELSE()
ELSE()
SET_TARGET_PROPERTIES (${CURRENT_LIB} PROPERTIES OUTPUT_NAME ${BUILDSYS_LIB_NAME})
ENDIF()
ENDIF()
SET_TARGET_PROPERTIES (${CURRENT_LIB} PROPERTIES CLEAN_DIRECT_OUTPUT 1)

# Add version, if we're given one
Expand All @@ -300,7 +300,7 @@ FUNCTION(BUILDSYS_BUILD_LIB)

# Libraries we should link again
IF(BUILDSYS_LIB_LINK_LIBS)
TARGET_LINK_LIBRARIES(${CURRENT_LIB} ${BUILDSYS_LIB_LINK_LIBS})
TARGET_LINK_LIBRARIES(${CURRENT_LIB} ${BUILDSYS_LIB_LINK_LIBS})
ENDIF()

# Defines and compiler flags, if any
Expand Down Expand Up @@ -447,12 +447,12 @@ FUNCTION(BUILDSYS_BUILD_EXE)
INSTALL(FILES ${EXE_OUTPUT_NAME} RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR} OPTIONAL)
ENDIF()


# If the executable depends on anything, set up dependency
IF(BUILDSYS_EXE_DEPENDS)
ADD_DEPENDENCIES(${BUILDSYS_EXE_NAME} ${BUILDSYS_EXE_DEPENDS})
ENDIF()

# If the executable is part of a group, add it to it
IF(BUILDSYS_EXE_GROUP)
IF(NOT TARGET ${BUILDSYS_EXE_GROUP})
MESSAGE(STATUS "Creating build group ${BUILDSYS_EXE_GROUP}")
Expand Down
47 changes: 25 additions & 22 deletions CMakeLists.txt
Expand Up @@ -18,23 +18,20 @@ ENDIF(COMMAND cmake_policy)
######################################################################################

#Project declaration

PROJECT(LIBNIFALCON)
INITIALIZE_BUILD()

#Common Options

OPTION_LIBRARY_BUILD_STATIC(ON)
#We can't build shared on MSVC yet
IF(NOT MSVC)
#We can't build shared on MSVC yet
OPTION_LIBRARY_BUILD_SHARED(ON)
ENDIF(NOT MSVC)
OPTION_GPROF(OFF)
#OPTION_CREATE_VERSION_FILE(ON "${CMAKE_CURRENT_SOURCE_DIR}/src/version.cc")

#Project specific options

OPTION(FORCE_FTD2XX_BUILD "Force building FTD2XX libraries on non-windows platforms" OFF)
OPTION(FORCE_FTD2XX_BUILD "Force building against FTD2XX libraries instead of the default libusb1" OFF)
OPTION(STATIC_LINK_SUFFIXES "Add a symbolic link with [library_name]_s on static libraries (for ease in building staticly linked binaries under gcc)" OFF)
OPTION(BUILD_SWIG_BINDINGS "Build Java/Python bindings for libnifalcon" OFF)
OPTION(BUILD_EXAMPLES "Build libnifalcon examples" ON)
Expand All @@ -44,23 +41,29 @@ OPTION(BUILD_EXAMPLES "Build libnifalcon examples" ON)
######################################################################################

#Find communications libraries
IF(WIN32 OR FORCE_FTD2XX_BUILD)
FIND_PACKAGE(libftd2xx REQUIRED)
IF(LIBFTD2XX_FOUND)
INCLUDE_DIRECTORIES(${LIBFTD2XX_INCLUDE_DIRS})
SET(LIBNIFALCON_REQ_LIBS ${LIBFTD2XX_LIBRARIES})
ENDIF(LIBFTD2XX_FOUND)
ELSEIF(UNIX)
FIND_PACKAGE(libusb-1.0 REQUIRED)
IF(LIBUSB_1_FOUND)
INCLUDE_DIRECTORIES(${LIBUSB_1_INCLUDE_DIRS})
SET(LIBNIFALCON_REQ_LIBS ${LIBUSB_1_LIBRARIES})
ENDIF(LIBUSB_1_FOUND)
ENDIF()

IF(NOT LIBFTD2XX_FOUND AND NOT LIBUSB_1_FOUND)
MESSAGE(FATAL_ERROR "Either ftd2xx or libusb-1.0 is required to build libnifalcon. Check the README file for info.")
ENDIF(NOT LIBFTD2XX_FOUND AND NOT LIBUSB_1_FOUND)
if(WIN32 OR FORCE_FTD2XX_BUILD)
find_package(libftd2xx REQUIRED)
if(LIBFTD2XX_FOUND)
message(STATUS "Found libftd2xx:")
message(STATUS " - Includes: ${LIBFTD2XX_INCLUDE_DIRS}")
message(STATUS " - Libraries: ${LIBFTD2XX_LIBRARIES}")
include_directories(${LIBFTD2XX_INCLUDE_DIRS})
set(LIBNIFALCON_REQ_LIBS ${LIBFTD2XX_LIBRARIES})
else()
message(FATAL_ERROR "libftd2xx is required to build libnifalcon. Check the README file for info.")
endif()
else()
find_package(libusb-1.0 REQUIRED)
if(LIBUSB1_FOUND)
message(STATUS "Found libusb-1.0:")
message(STATUS " - Includes: ${LIBUSB1_INCLUDE_DIRS}")
message(STATUS " - Libraries: ${LIBUSB1_LIBRARIES}")
include_directories(${LIBUSB1_INCLUDE_DIRS})
set(LIBNIFALCON_REQ_LIBS ${LIBUSB1_LIBRARIES})
else()
message(FATAL_ERROR "libusb-1.0 is required to build libnifalcon. Check the README file for info.")
endif()
endif()

######################################################################################
# Project specific globals
Expand Down
71 changes: 23 additions & 48 deletions cmake_modules/Findlibftd2xx.cmake
Expand Up @@ -16,60 +16,35 @@
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#


if (LIBFTD2XX_LIBRARIES AND LIBFTD2XX_INCLUDE_DIRS)
# in cache already
set(LIBFTD2XX_FOUND TRUE)
else (LIBFTD2XX_LIBRARIES AND LIBFTD2XX_INCLUDE_DIRS)
find_path(LIBFTD2XX_INCLUDE_DIR
NAMES
find_path(LIBFTD2XX_INCLUDE_DIR
NAMES
ftd2xx.h
PATHS
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
)

SET(FTD2XX_LIBNAME ftd2xx)
IF(WIN32)
SET(FTD2XX_LIBNAME ftd2xx.lib)
ENDIF(WIN32)

find_library(LIBFTD2XX_LIBRARY
NAMES
${FTD2XX_LIBNAME}
PATHS
)
mark_as_advanced(LIBFTD2XX_INCLUDE_DIR)

find_library(LIBFTD2XX_LIBRARY
NAMES
ftd2xx
libftd2xx
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)

if(LIBFTD2XX_INCLUDE_DIR)
set(LIBFTD2XX_INCLUDE_DIRS
${LIBFTD2XX_INCLUDE_DIR}
)
endif(LIBFTD2XX_INCLUDE_DIR)
set(LIBFTD2XX_LIBRARIES
${LIBFTD2XX_LIBRARY}
)

if (LIBFTD2XX_INCLUDE_DIRS AND LIBFTD2XX_LIBRARIES)
set(LIBFTD2XX_FOUND TRUE)
endif (LIBFTD2XX_INCLUDE_DIRS AND LIBFTD2XX_LIBRARIES)

if (LIBFTD2XX_FOUND)
if (NOT libftd2xx_FIND_QUIETLY)
message(STATUS "Found libftd2xx: ${LIBFTD2XX_LIBRARIES}")
endif (NOT libftd2xx_FIND_QUIETLY)
else (LIBFTD2XX_FOUND)
if (libftd2xx_FIND_REQUIRED)
message(FATAL_ERROR "Could not find libftd2xx")
endif (libftd2xx_FIND_REQUIRED)
endif (LIBFTD2XX_FOUND)

# show the LIBFTD2XX_INCLUDE_DIRS and LIBFTD2XX_LIBRARIES variables only in the advanced view
mark_as_advanced(LIBFTD2XX_INCLUDE_DIRS LIBFTD2XX_LIBRARIES)

endif (LIBFTD2XX_LIBRARIES AND LIBFTD2XX_INCLUDE_DIRS)
)
mark_as_advanced(LIBFTD2XX_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LIBFTD2XX
REQUIRED_VARS
LIBFTD2XX_LIBRARY
LIBFTD2XX_INCLUDE_DIR
)

set(LIBFTD2XX_INCLUDE_DIRS ${LIBFTD2XX_INCLUDE_DIR})
set(LIBFTD2XX_LIBRARIES ${LIBFTD2XX_LIBRARY})
96 changes: 38 additions & 58 deletions cmake_modules/Findlibusb-1.0.cmake
@@ -1,10 +1,10 @@
# - Try to find libusb-1.0
# Once done this will define
#
# LIBUSB_1_FOUND - system has libusb
# LIBUSB_1_INCLUDE_DIRS - the libusb include directory
# LIBUSB_1_LIBRARIES - Link these to use libusb
# LIBUSB_1_DEFINITIONS - Compiler switches required for using libusb
# LIBUSB1_FOUND - system has libusb
# LIBUSB1_INCLUDE_DIRS - the libusb include directory
# LIBUSB1_LIBRARIES - Link these to use libusb
# LIBUSB1_DEFINITIONS - Compiler switches required for using libusb
#
# Adapted from cmake-modules Google Code project
#
Expand All @@ -16,57 +16,37 @@
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#


if (LIBUSB_1_LIBRARIES AND LIBUSB_1_INCLUDE_DIRS)
# in cache already
set(LIBUSB_FOUND TRUE)
else (LIBUSB_1_LIBRARIES AND LIBUSB_1_INCLUDE_DIRS)
find_path(LIBUSB_1_INCLUDE_DIR
NAMES
libusb-1.0/libusb.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libusb-1.0
)

find_library(LIBUSB_1_LIBRARY
NAMES
usb-1.0
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)

set(LIBUSB_1_INCLUDE_DIRS
${LIBUSB_1_INCLUDE_DIR}
)
set(LIBUSB_1_LIBRARIES
${LIBUSB_1_LIBRARY}
)

if (LIBUSB_1_INCLUDE_DIRS AND LIBUSB_1_LIBRARIES)
set(LIBUSB_1_FOUND TRUE)
endif (LIBUSB_1_INCLUDE_DIRS AND LIBUSB_1_LIBRARIES)

if (LIBUSB_1_FOUND)
if (NOT libusb_1_FIND_QUIETLY)
message(STATUS "Found libusb-1.0:")
message(STATUS " - Includes: ${LIBUSB_1_INCLUDE_DIRS}")
message(STATUS " - Libraries: ${LIBUSB_1_LIBRARIES}")
endif (NOT libusb_1_FIND_QUIETLY)
else (LIBUSB_1_FOUND)
if (libusb_1_FIND_REQUIRED)
message(FATAL_ERROR "Could not find libusb")
endif (libusb_1_FIND_REQUIRED)
endif (LIBUSB_1_FOUND)

# show the LIBUSB_1_INCLUDE_DIRS and LIBUSB_1_LIBRARIES variables only in the advanced view
mark_as_advanced(LIBUSB_1_INCLUDE_DIRS LIBUSB_1_LIBRARIES)

endif (LIBUSB_1_LIBRARIES AND LIBUSB_1_INCLUDE_DIRS)
find_path(LIBUSB1_INCLUDE_DIR
NAMES
libusb.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libusb-1.0
)
mark_as_advanced(LIBUSB1_INCLUDE_DIR)

find_library(LIBUSB1_LIBRARY
NAMES
usb-1.0
libusb-1.0
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
mark_as_advanced(LIBUSB1_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libusb1
REQUIRED_VARS
LIBUSB1_LIBRARY
LIBUSB1_INCLUDE_DIR
)

set(LIBUSB1_INCLUDE_DIRS ${LIBUSB1_INCLUDE_DIR})
set(LIBUSB1_LIBRARIES ${LIBUSB1_LIBRARY})