1
1
cmake_minimum_required(VERSION 2.8.7)
2
+
project(stlink C)
3
+
set(PROJECT_DESCRIPTION "Open source version of the STMicroelectronics Stlink Tools")
2
4
3
5
project(stlink C)
4
6
include(CheckCCompilerFlag)
@@ -18,7 +20,6 @@ if (DEFINED ENV{TRAVIS_TAG} AND NOT "$ENV{TRAVIS_TAG}" STREQUAL "")
18
20
set (STLINK_PACKAGE_VERSION "$ENV{TRAVIS_TAG}")
19
21
elseif (GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
20
22
# Working off a git repo, using git versioning
21
-
22
23
# Check if HEAD is pointing to a tag
23
24
execute_process (
24
25
COMMAND "${GIT_EXECUTABLE}" describe --always
@@ -40,9 +41,23 @@ elseif (EXISTS ${PROJECT_SOURCE_DIR}/.version)
40
41
# we can extract the package version from .version file.
41
42
file (STRINGS .version STLINK_PACKAGE_VERSION)
42
43
else ()
43
-
set (STLINK_PACKAGE_VERSION "Unknown")
44
+
set (STLINK_PACKAGE_VERSION "999.99.99-unknown")
44
45
endif()
45
46
47
+
# We shall use STLINK_PACKAGE_VERSION* variables to set soversion and other stuff
48
+
# Since these numbers will appear in .so names, e.g. libstlink.so.1.2.0
49
+
# We can't just use STLINK_PACKAGE_VERSION here
50
+
# (Well, we can, but that breaks all the existing conventions)
51
+
# We can't as well use PROJECT_VERSION* variables here, since they are managed
52
+
# by project() directive and the whole version detection relies on PROJECT_SOURCE_DIR
53
+
54
+
string(REPLACE "." ";" STLINK_PACKAGE_VERSION_ARRAY ${STLINK_PACKAGE_VERSION})
55
+
string(REPLACE "-" ";" STLINK_PACKAGE_VERSION_ARRAY "${STLINK_PACKAGE_VERSION_ARRAY}")
56
+
list(GET STLINK_PACKAGE_VERSION_ARRAY 0 STLINK_PACKAGE_VERSION_MAJOR)
57
+
list(GET STLINK_PACKAGE_VERSION_ARRAY 1 STLINK_PACKAGE_VERSION_MINOR)
58
+
list(GET STLINK_PACKAGE_VERSION_ARRAY 2 STLINK_PACKAGE_VERSION_PATCH)
59
+
list(GET STLINK_PACKAGE_VERSION_ARRAY 3 STLINK_PACKAGE_VERSION_TAG)
60
+
46
61
if(WIN32)
47
62
find_package(7Zip REQUIRED)
48
63
message(STATUS "7Zip Location: " ${ZIP_LOCATION})
@@ -133,11 +148,30 @@ include_directories(${LIBUSB_INCLUDE_DIR})
133
148
include_directories(include)
134
149
include_directories(src/mingw)
135
150
136
-
add_library(${PROJECT_NAME} STATIC
151
+
set(STLINK_LIB_STATIC ${PROJECT_NAME}-static)
152
+
153
+
add_library(${PROJECT_NAME} SHARED
137
154
${STLINK_HEADERS} # header files for ide projects generated by cmake
138
155
${STLINK_SOURCE})
139
156
target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARY})
140
157
158
+
if (WIN32 OR MSYS OR MINGW)
159
+
set(STLINK_SHARED_VERSION
160
+
${STLINK_PACKAGE_VERSION_MAJOR}.${STLINK_PACKAGE_VERSION_MINOR})
161
+
else()
162
+
set(STLINK_SHARED_VERSION
163
+
${STLINK_PACKAGE_VERSION_MAJOR}.${STLINK_PACKAGE_VERSION_MINOR}.${STLINK_PACKAGE_VERSION_PATCH})
164
+
endif()
165
+
166
+
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${STLINK_PACKAGE_VERSION_MAJOR}
167
+
VERSION ${STLINK_SHARED_VERSION})
168
+
169
+
add_library(${STLINK_LIB_STATIC} STATIC
170
+
${STLINK_HEADERS} # header files for ide projects generated by cmake
171
+
${STLINK_SOURCE})
172
+
target_link_libraries(${STLINK_LIB_STATIC} ${LIBUSB_LIBRARY})
173
+
set_target_properties(${STLINK_LIB_STATIC} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
174
+
141
175
if (APPLE)
142
176
find_library(ObjC objc)
143
177
find_library(CoreFoundation CoreFoundation)
@@ -166,11 +200,49 @@ else ()
166
200
target_link_libraries(st-util ${PROJECT_NAME})
167
201
endif ()
168
202
169
-
install(TARGETS ${PROJECT_NAME} st-flash st-util st-info
203
+
install(TARGETS ${PROJECT_NAME} ${STLINK_LIB_STATIC} st-flash st-util st-info
170
204
RUNTIME DESTINATION bin
171
-
ARCHIVE DESTINATION lib
205
+
ARCHIVE DESTINATION lib/${CMAKE_LIBRARY_PATH}
206
+
LIBRARY DESTINATION lib/${CMAKE_LIBRARY_PATH}
207
+
)
208
+
# Now, install the development headers
209
+
file(GLOB STLINK_HEADERS
210
+
"${CMAKE_SOURCE_DIR}/include/stlink/*.h"
172
211
)
173
212
213
+
install(FILES ${CMAKE_SOURCE_DIR}/include/stlink.h
214
+
DESTINATION include/${CMAKE_LIBRARY_PATH}/stlink-${STLINK_PACKAGE_VERSION}/)
215
+
216
+
install(FILES ${STLINK_HEADERS}
217
+
DESTINATION include/${CMAKE_LIBRARY_PATH}/stlink-${STLINK_PACKAGE_VERSION}/stlink)
218
+
219
+
if (NOT APPLE AND NOT WIN32)
220
+
set(PKG_CONFIG_LIBDIR
221
+
"\${prefix}/lib/\${deb_host_multiarch}"
222
+
)
223
+
set(PKG_CONFIG_INCLUDEDIR
224
+
"\${prefix}/include/\${deb_host_multiarch}/${PROJECT_NAME}-${STLINK_PACKAGE_VERSION}"
225
+
)
226
+
set(PKG_CONFIG_LIBS
227
+
"-L\${libdir} -l:libstlink.so.${STLINK_PACKAGE_VERSION}"
228
+
)
229
+
set(PKG_CONFIG_CFLAGS
230
+
"-I\${includedir}"
231
+
)
232
+
233
+
set(PKG_CONFIG_REQUIRES
234
+
"libusb-1.0"
235
+
)
236
+
237
+
configure_file(
238
+
"${CMAKE_CURRENT_SOURCE_DIR}/pkg-config.pc.cmake"
239
+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
240
+
)
241
+
242
+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
243
+
DESTINATION lib/${CMAKE_LIBRARY_PATH}/pkgconfig/)
244
+
endif()
245
+
174
246
if(NOT MINGW)
175
247
list(APPEND STLINK_SOURCE src/tools/term.c)
176
248
add_executable(st-term src/tools/term.c)
@@ -215,6 +287,6 @@ if (APPLE)
215
287
set(CPACK_GENERATOR "ZIP")
216
288
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/dist/osx")
217
289
set(CPACK_OUTPUT_FILE_PREFIX "${CMAKE_BINARY_DIR}/dist/osx")
218
-
endif ()
290
+
endif()
219
291
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
220
292
include (CPack)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4