Created
June 13, 2016 09:30
-
-
Save xor-gate/c2fbd68439476c932b0df92e5abfcfa2 to your computer and use it in GitHub Desktop.
CMake libusb windows
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
project(stlink C) | |
cmake_minimum_required(VERSION 3.1) | |
set (CMAKE_C_STANDARD 99) | |
include(CheckCCompilerFlag) | |
find_package(PkgConfig) | |
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_SOURCE_DIR}/cmake/modules") | |
file(DOWNLOAD | |
https://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.20/libusb-1.0.20.7z/download | |
${CMAKE_BINARY_DIR}/libusb-1.0.20.7z | |
SHOW_PROGRESS | |
) | |
execute_process(COMMAND "C:\\Program Files\\7-Zip\\7z.exe" x -y libusb-1.0.20.7z | |
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
) | |
find_package(LibUSB REQUIRED) | |
pkg_check_modules(gtk gtk+-3.0) | |
function(add_cflag_if_supported flag) | |
string(REPLACE "-" "_" flagclean ${flag}) | |
string(REPLACE "=" "_" flagclean ${flagclean}) | |
string(REPLACE "+" "_" flagclean ${flagclean}) | |
string(REPLACE "," "_" flagclean ${flagclean}) | |
string(TOUPPER ${flagclean} flagclean) | |
check_c_compiler_flag(${flag} C_SUPPORTS${flagclean}) | |
if (C_SUPPORTS${flagclean}) | |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" PARENT_SCOPE) | |
endif() | |
endfunction() | |
add_cflag_if_supported("-std=gnu99") | |
add_cflag_if_supported("-Wall") | |
add_cflag_if_supported("-Wextra") | |
add_cflag_if_supported("-Wshadow") | |
add_cflag_if_supported("-D_FORTIFY_SOURCE=2") | |
add_cflag_if_supported("-fstrict-aliasing") | |
add_cflag_if_supported("-Wformat") | |
add_cflag_if_supported("-Wformat-security") | |
add_cflag_if_supported("-Wmaybe-uninitialized") | |
add_cflag_if_supported("-Wmissing-variable-declarations") | |
add_cflag_if_supported("-Wshorten-64-to-32") | |
add_cflag_if_supported("-Wimplicit-function-declaration") | |
add_cflag_if_supported("-Wredundant-decls") | |
add_cflag_if_supported("-Wundef") | |
add_cflag_if_supported("-fPIC") | |
if(${CMAKE_BUILD_TYPE} MATCHES "Debug") | |
include(CTest) | |
add_cflag_if_supported("-ggdb") | |
add_cflag_if_supported("-O0") | |
elseif() | |
add_cflag_if_supported("-O2") | |
endif() | |
set(STLINK_HEADERS | |
include/stlink.h | |
include/stlink/usb.h | |
include/stlink/sg.h | |
include/stlink/logging.h | |
include/stlink/mmap.h | |
include/stlink/chipid.h | |
) | |
set(STLINK_SOURCE | |
src/chipid.c | |
src/common.c | |
src/usb.c | |
src/sg.c | |
src/logging.c | |
) | |
include_directories(${LIBUSB_INCLUDE_DIR}) | |
include_directories(include) | |
include_directories(src/mingw) | |
add_library(${PROJECT_NAME} STATIC | |
${STLINK_HEADERS} # header files for ide projects generated by cmake | |
${STLINK_SOURCE}) | |
target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARY}) | |
add_executable(st-flash src/tools/flash.c) | |
target_link_libraries(st-flash ${PROJECT_NAME}) | |
add_executable(st-info src/tools/info.c) | |
target_link_libraries(st-info ${PROJECT_NAME}) | |
add_executable(st-util src/gdbserver/gdb-remote.c | |
src/gdbserver/gdb-remote.h | |
src/gdbserver/gdb-server.c | |
src/gdbserver/gdb-server.h) | |
target_link_libraries(st-util ${PROJECT_NAME}) | |
install(TARGETS ${PROJECT_NAME} st-flash st-util st-info | |
RUNTIME DESTINATION bin | |
ARCHIVE DESTINATION lib | |
) | |
if(NOT MINGW) | |
list(APPEND STLINK_SOURCE src/tools/term.c) | |
add_executable(st-term src/tools/term.c) | |
target_link_libraries(st-term ${PROJECT_NAME}) | |
install(TARGETS st-term | |
RUNTIME DESTINATION bin) | |
endif() | |
if(gtk_FOUND) | |
include_directories(${gtk_INCLUDE_DIRS}) | |
set(GUI_SOURCES src/tools/gui/stlink-gui.c | |
src/tools/gui/stlink-gui.h) | |
add_executable(stlink-gui-local ${GUI_SOURCES}) | |
set_target_properties(stlink-gui-local PROPERTIES | |
COMPILE_FLAGS -DSTLINK_UI_DIR=\\"${CMAKE_CURRENT_SOURCE_DIR}/gui\\") | |
target_link_libraries(stlink-gui-local stlink ${gtk_LDFLAGS}) | |
set(INSTALLED_UI_DIR ${CMAKE_INSTALL_PREFIX}/share) | |
add_executable(stlink-gui ${GUI_SOURCES}) | |
set_target_properties(stlink-gui PROPERTIES | |
COMPILE_FLAGS -DSTLINK_UI_DIR=\\"${INSTALLED_UI_DIR}\\") | |
target_link_libraries(stlink-gui stlink ${gtk_LDFLAGS}) | |
install(TARGETS stlink-gui | |
RUNTIME DESTINATION bin) | |
install(FILES src/tools/gui/stlink-gui.ui | |
DESTINATION ${INSTALLED_UI_DIR}) | |
endif() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# FindLibUSB.cmake - Try to find the Hiredis library | |
# Once done this will define | |
# | |
# LIBUSB_FOUND - System has libusb | |
# LIBUSB_INCLUDE_DIR - The libusb include directory | |
# LIBUSB_LIBRARIES - The libraries needed to use libusb | |
# LIBUSB_DEFINITIONS - Compiler switches required for using libusb | |
find_path(LIBUSB_INCLUDE_DIR | |
NAMES libusb.h | |
PATHS | |
/usr | |
/usr/local | |
/opt | |
"${CMAKE_BINARY_DIR}\\include" | |
PATH_SUFFIXES libusb-1.0 | |
) | |
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") | |
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") | |
find_library(LIBUSB_LIBRARY | |
NAMES usb-1.0 | |
PATHS | |
/usr | |
/usr/local | |
/opt | |
"${CMAKE_BINARY_DIR}/MS64/static" | |
"${CMAKE_BINARY_DIR}/MS64/dll" | |
) | |
message(${LIBUSB_INCLUDE_DIR}) | |
message("${CMAKE_BINARY_DIR}\\MS64\\dll") | |
message("LIBUSB_LIBRARY: ${LIBUSB_LIBRARY}") | |
INCLUDE(FindPackageHandleStandardArgs) | |
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) | |
MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment