cmake_minimum_required(VERSION 2.8.11) project(stlink) find_package(PkgConfig) pkg_check_modules(libusb REQUIRED libusb-1.0) pkg_check_modules(gtk gtk+-3.0) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -Wextra") set(HFILES src/stlink-common.h src/stlink-usb.h src/stlink-sg.h src/uglylogging.h src/mmap.h) set(CFILES src/stlink-common.c src/stlink-usb.c src/stlink-sg.c src/uglylogging.c src/st-info.c) include_directories(${libusb_INCLUDE_DIRS}) include_directories(src) include_directories(mingw) add_library(stlink STATIC ${HFILES} # header files for ide projects generated by cmake ${CFILES}) target_link_libraries(stlink ${libusb_LDFLAGS}) add_executable(st-flash flash/main.c) target_link_libraries(st-flash stlink) add_executable(st-util gdbserver/gdb-remote.c gdbserver/gdb-remote.h gdbserver/gdb-server.c gdbserver/gdb-server.h) target_link_libraries(st-util stlink) install(TARGETS stlink st-flash st-util RUNTIME DESTINATION bin ARCHIVE DESTINATION lib) if(NOT MINGW) list(APPEND CFILES src/st-term.c) add_executable(st-term src/st-term.c) target_link_libraries(st-term stlink) install(TARGETS st-term RUNTIME DESTINATION bin) endif() if(gtk_FOUND) include_directories(${gtk_INCLUDE_DIRS}) set(GUI_SOURCES gui/stlink-gui.c 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 gui/stlink-gui.ui DESTINATION ${INSTALLED_UI_DIR}) endif()