Merge pull request #392 from xor-gate/travis
[fw/stlink] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.7)
2 project(stlink)
3
4 find_package(PkgConfig)
5
6 pkg_check_modules(libusb REQUIRED libusb-1.0)
7 pkg_check_modules(gtk gtk+-3.0)
8
9 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -Wextra")
10
11 set(HFILES src/stlink-common.h
12            src/stlink-usb.h
13            src/stlink-sg.h
14            src/uglylogging.h
15            src/mmap.h)
16
17 set(CFILES src/stlink-common.c
18            src/stlink-usb.c
19            src/stlink-sg.c
20            src/uglylogging.c
21            src/st-info.c)
22
23 include_directories(${libusb_INCLUDE_DIRS})
24 include_directories(src)
25 include_directories(mingw)
26
27 add_library(stlink STATIC
28             ${HFILES} # header files for ide projects generated by cmake
29             ${CFILES})
30 target_link_libraries(stlink ${libusb_LDFLAGS})
31
32 add_executable(st-flash flash/main.c)
33 target_link_libraries(st-flash stlink)
34
35 add_executable(st-util gdbserver/gdb-remote.c
36                        gdbserver/gdb-remote.h
37                        gdbserver/gdb-server.c
38                        gdbserver/gdb-server.h)
39 target_link_libraries(st-util stlink)
40
41 add_executable(st-info src/st-info.c)
42 target_link_libraries(st-info stlink)
43
44 add_executable(st-probe src/st-probe.c)
45 target_link_libraries(st-probe stlink)
46
47 install(TARGETS  stlink st-flash st-util st-info st-probe
48         RUNTIME DESTINATION bin
49         ARCHIVE DESTINATION lib)
50
51 if(NOT MINGW)
52   list(APPEND CFILES src/st-term.c)
53   add_executable(st-term src/st-term.c)
54   target_link_libraries(st-term stlink)
55
56   install(TARGETS st-term
57           RUNTIME DESTINATION bin)
58 endif()
59
60 if(gtk_FOUND)
61   include_directories(${gtk_INCLUDE_DIRS})
62   set(GUI_SOURCES gui/stlink-gui.c
63                   gui/stlink-gui.h)
64
65   add_executable(stlink-gui-local ${GUI_SOURCES})
66   set_target_properties(stlink-gui-local PROPERTIES
67                         COMPILE_FLAGS -DSTLINK_UI_DIR=\\"${CMAKE_CURRENT_SOURCE_DIR}/gui\\")
68   target_link_libraries(stlink-gui-local stlink ${gtk_LDFLAGS})
69
70   set(INSTALLED_UI_DIR ${CMAKE_INSTALL_PREFIX}/share)
71   add_executable(stlink-gui ${GUI_SOURCES})
72   set_target_properties(stlink-gui PROPERTIES
73                         COMPILE_FLAGS -DSTLINK_UI_DIR=\\"${INSTALLED_UI_DIR}\\")
74   target_link_libraries(stlink-gui stlink ${gtk_LDFLAGS})
75
76   install(TARGETS stlink-gui
77           RUNTIME DESTINATION bin)
78   install(FILES gui/stlink-gui.ui
79           DESTINATION ${INSTALLED_UI_DIR})
80 endif()
81