Refactoring for build settings

Tidy up install paths & directories:
-> modprobe.d & udev rules
  (both are now ON per default on Linux)
-> stlink-gui supplements
-> man pages
- Fixed paths according to GNUInstallDirs
- cmake: Restructured library config
- Test files & gui now use shared library
pull/960/head
nightwalker-87 2020-05-19 11:28:35 +02:00
rodzic 1b3200d5bc
commit 7ef06378aa
10 zmienionych plików z 55 dodań i 80 usunięć

Wyświetl plik

@ -35,11 +35,11 @@ elif [ "$TRAVIS_OS_NAME" == "linux" ]; then
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR
make && cd - make && cd -
echo "--> Building Release..." echo "--> Building Release with package..."
mkdir -p build/Release && cd build/Release mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install" echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR
make && make package && cd - make package && cd -
elif [ "$TRAVIS_OS_NAME" == "osx" ]; then elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew install libusb brew install libusb
@ -50,11 +50,11 @@ elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR
make && cd - make && cd -
echo "--> Building Release..." echo "--> Building Release with package..."
mkdir -p build/Release && cd build/Release mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install" echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install $DIR
make && make package && cd - make package && cd -
else # local test-build else # local test-build
echo "--> Building Debug..." echo "--> Building Debug..."
@ -63,9 +63,9 @@ else # local test-build
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install ../../ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/install ../../
make && cd - make && cd -
echo "--> Building Release..." echo "--> Building Release with package..."
mkdir -p build/Release && cd build/Release mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install" echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install ../../ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install ../../
make && make package && cd - make package && cd -
fi fi

Wyświetl plik

@ -9,7 +9,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
### ###
# General project settings # General project settings
### ###
@ -32,16 +31,7 @@ else ()
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG")
endif () endif ()
## Set installation directories for libraries ## Set installation directories for header files ### TODO: Clean this up...
if (IS_DIRECTORY ${LIB_INSTALL_DIR})
set(LIB_INSTALL_DIR ${LIB_INSTALL_DIR} CACHE PATH "Main library directory")
set(STLINK_LIBRARY_PATH "${LIB_INSTALL_DIR}")
else ()
set(LIB_INSTALL_DIR "lib" CACHE PATH "Main library directory")
set(STLINK_LIBRARY_PATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}")
endif ()
## Set installation directories for header files
if (IS_DIRECTORY ${INCLUDE_INSTALL_DIR}) if (IS_DIRECTORY ${INCLUDE_INSTALL_DIR})
set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR} CACHE PATH "Main include directory") set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR} CACHE PATH "Main include directory")
set(STLINK_INCLUDE_PATH "${INCLUDE_INSTALL_DIR}") set(STLINK_INCLUDE_PATH "${INCLUDE_INSTALL_DIR}")
@ -95,13 +85,14 @@ endif ()
include_directories(${LIBUSB_INCLUDE_DIR}) include_directories(${LIBUSB_INCLUDE_DIR})
# ==== # ====
include_directories(include) ### TODO: Clean this up... include_directories(${PROJECT_SOURCE_DIR}/include) ### TODO: Clean this up...
include_directories(${PROJECT_BINARY_DIR}/include/stlink) include_directories(${PROJECT_BINARY_DIR}/include/stlink)
include_directories(include/stlink) include_directories(${PROJECT_SOURCE_DIR}/include/stlink)
include_directories(include/stlink/tools) include_directories(${PROJECT_SOURCE_DIR}/include/stlink/tools)
# ==== # ====
include_directories(src) include_directories(src)
include_directories(src/tools) ### TODO: Clean this up...
set(STLINK_HEADERS set(STLINK_HEADERS
include/stlink.h include/stlink.h
@ -145,29 +136,30 @@ if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
endif () endif ()
###
# Libraries
###
set(STLINK_LIBRARY_PATH ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Main library install directory")
# Set the environment variable LD_LIBRARY_PATH to point to /usr/local/lib (per default).
execute_process (COMMAND bash -c "export LD_LIBRARY_PATH="${CMAKE_INSTALL_LIBDIR}"")
### ###
# Shared library # Shared library
### ###
# Set library name
if (NOT WIN32) if (NOT WIN32)
set(STLINK_LIB_SHARED ${PROJECT_NAME}) set(STLINK_LIB_SHARED ${PROJECT_NAME})
else (WIN32) else (WIN32)
set(STLINK_LIB_SHARED ${PROJECT_NAME}-shared) set(STLINK_LIB_SHARED ${PROJECT_NAME}-shared)
endif () endif ()
add_library( add_library(${STLINK_LIB_SHARED} SHARED ${STLINK_HEADERS} ${STLINK_SOURCE})
${STLINK_LIB_SHARED} SHARED
${STLINK_HEADERS} # header files for ide projects generated by cmake
${STLINK_SOURCE}
)
target_link_libraries(
${STLINK_LIB_SHARED}
${LIBUSB_LIBRARY}
)
set(STLINK_SHARED_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) set(STLINK_SHARED_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
message(STATUS "STLINK_LIB_SHARED: ${STLINK_LIB_SHARED}") message(STATUS "STLINK_LIB_SHARED: ${STLINK_LIB_SHARED}")
message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}") message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}")
message(STATUS "VERSION: ${STLINK_SHARED_VERSION}") message(STATUS "VERSION: ${STLINK_SHARED_VERSION}")
@ -176,6 +168,7 @@ set_target_properties(
${STLINK_LIB_SHARED} PROPERTIES ${STLINK_LIB_SHARED} PROPERTIES
SOVERSION ${PROJECT_VERSION_MAJOR} SOVERSION ${PROJECT_VERSION_MAJOR}
VERSION ${STLINK_SHARED_VERSION} VERSION ${STLINK_SHARED_VERSION}
OUTPUT_NAME ${PROJECT_NAME}
) )
# Link shared library # Link shared library
@ -197,19 +190,12 @@ install(TARGETS ${STLINK_LIB_SHARED} DESTINATION ${STLINK_LIBRARY_PATH})
# Static library # Static library
### ###
# Install static library per default # Set library name
set(STLINK_STATIC_LIB ON CACHE BOOL "Install static lib")
set(STLINK_LIB_STATIC ${PROJECT_NAME}-static) set(STLINK_LIB_STATIC ${PROJECT_NAME}-static)
add_library( add_library(${STLINK_LIB_STATIC} STATIC ${STLINK_HEADERS} ${STLINK_SOURCE})
${STLINK_LIB_STATIC} STATIC
${STLINK_HEADERS} # header files for ide projects generated by cmake
${STLINK_SOURCE}
)
set(STLINK_STATIC_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) set(STLINK_STATIC_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
message(STATUS "STLINK_LIB_STATIC: ${STLINK_LIB_STATIC}") message(STATUS "STLINK_LIB_STATIC: ${STLINK_LIB_STATIC}")
message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}") message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}")
message(STATUS "VERSION: ${STLINK_STATIC_VERSION}") message(STATUS "VERSION: ${STLINK_STATIC_VERSION}")
@ -233,9 +219,7 @@ else ()
target_link_libraries(${STLINK_LIB_STATIC} ${LIBUSB_LIBRARY} ${SSP_LIB}) target_link_libraries(${STLINK_LIB_STATIC} ${LIBUSB_LIBRARY} ${SSP_LIB})
endif () endif ()
if (STLINK_STATIC_LIB) install(TARGETS ${STLINK_LIB_STATIC} ARCHIVE DESTINATION ${STLINK_LIBRARY_PATH})
install(TARGETS ${STLINK_LIB_STATIC} ARCHIVE DESTINATION ${STLINK_LIBRARY_PATH})
endif ()
### ###
@ -263,30 +247,24 @@ else ()
target_link_libraries(st-util ${STLINK_LIB_SHARED} ${SSP_LIB}) target_link_libraries(st-util ${STLINK_LIB_SHARED} ${SSP_LIB})
endif () endif ()
install(TARGETS st-flash DESTINATION bin) install(TARGETS st-flash DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS st-info DESTINATION bin) install(TARGETS st-info DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS st-util DESTINATION bin) install(TARGETS st-util DESTINATION ${CMAKE_INSTALL_BINDIR})
### ###
# udev and modprobe.d configuration # Device configuration (Linux only)
### ###
if (CMAKE_SYSTEM_NAME STREQUAL "Linux") if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
## modprobe.d rules ## Install modprobe.d conf files / rules to /usr/local/etc/stlink (default)
set(STLINK_MODPROBED_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/modprobe.d" CACHE PATH "modprobe.d directory") set(STLINK_MODPROBED_DIR "${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME}/modprobe.d" CACHE PATH "modprobe.d directory")
option(STLINK_INSTALL_MODPROBE_CONF "Install modprobe conf files" ON) install(FILES ${CMAKE_SOURCE_DIR}/config/modprobe.d/stlink_v1.conf DESTINATION ${STLINK_MODPROBED_DIR})
if (STLINK_INSTALL_MODPROBE_CONF)
install(FILES ${CMAKE_SOURCE_DIR}/etc/modprobe.d/stlink_v1.conf DESTINATION ${STLINK_MODPROBED_DIR}/)
endif ()
## udev rules ## Install udev rules files / rules to /usr/local/etc/stlink (default)
set(STLINK_UDEV_RULES_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/udev/rules.d" CACHE PATH "udev rules directory") set(STLINK_UDEV_RULES_DIR "${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME}/udev/rules.d" CACHE PATH "udev rules directory")
option(STLINK_INSTALL_UDEV_RULES "Install udev rules files" ON) file(GLOB RULES_FILES ${CMAKE_SOURCE_DIR}/config/udev/rules.d/*.rules)
if (STLINK_INSTALL_UDEV_RULES) install(FILES ${RULES_FILES} DESTINATION ${STLINK_UDEV_RULES_DIR})
file(GLOB RULES_FILES ${CMAKE_SOURCE_DIR}/etc/udev/rules.d/*.rules)
install(FILES ${RULES_FILES} DESTINATION ${STLINK_UDEV_RULES_DIR}/)
endif ()
endif () endif ()

Wyświetl plik

@ -30,7 +30,7 @@ foreach (manpage ${MANPAGES})
endif () endif ()
if (f AND NOT WIN32) if (f AND NOT WIN32)
install(FILES ${f} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) install(FILES ${f} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/man/man1)
unset(f) unset(f)
endif () endif ()
endforeach () endforeach ()

Wyświetl plik

@ -16,26 +16,23 @@ set(GUI_SOURCES gui.c gui.h)
## stlink-gui-local ## stlink-gui-local
add_executable(stlink-gui-local ${GUI_SOURCES}) add_executable(stlink-gui-local ${GUI_SOURCES})
set_target_properties( set_target_properties(stlink-gui-local PROPERTIES
stlink-gui-local PROPERTIES # Note: ${CMAKE_CURRENT_SOURCE_DIR} is src/stlink-gui
COMPILE_DEFINITIONS STLINK_UI_DIR="${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS STLINK_UI_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
# Note: ${CMAKE_CURRENT_SOURCE_DIR} is src/stlink-gui target_link_libraries(stlink-gui-local ${STLINK_LIB_SHARED} ${SSP_LIB} ${GTK3_LDFLAGS})
)
target_link_libraries(stlink-gui-local ${STLINK_LIB_STATIC} ${GTK3_LDFLAGS} ${SSP_LIB})
## stlink-gui ## stlink-gui
add_executable(stlink-gui ${GUI_SOURCES}) add_executable(stlink-gui ${GUI_SOURCES})
set_target_properties( set_target_properties(stlink-gui PROPERTIES
stlink-gui PROPERTIES COMPILE_DEFINITIONS STLINK_UI_DIR="${CMAKE_INSTALL_BINDIR}")
COMPILE_DEFINITIONS STLINK_UI_DIR="${CMAKE_INSTALL_PREFIX}/bin" target_link_libraries(stlink-gui ${STLINK_LIB_SHARED} ${SSP_LIB} ${GTK3_LDFLAGS})
# Note: ${CMAKE_INSTALL_PREFIX} defaults to /usr/local
)
target_link_libraries(stlink-gui ${STLINK_LIB_STATIC} ${GTK3_LDFLAGS} ${SSP_LIB})
install(TARGETS stlink-gui DESTINATION bin) install(TARGETS stlink-gui DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES stlink-gui.ui DESTINATION bin) install(FILES stlink-gui.ui DESTINATION ${CMAKE_INSTALL_BINDIR})
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install(FILES stlink-gui.desktop DESTINATION share/applications) # Install desktop application entry # Install desktop application entry
install(FILES icons/stlink-gui.svg DESTINATION share/icons/hicolor/scalable/apps) # Install icon install(FILES stlink-gui.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/applications)
# Install icons
install(FILES icons/stlink-gui.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/icons/hicolor/scalable/apps)
endif () endif ()

Wyświetl plik

@ -6,11 +6,11 @@ set(TESTEXEC usb sg)
foreach (test ${TESTEXEC}) foreach (test ${TESTEXEC})
add_executable(test-${test} ${test}.c) add_executable(test-${test} ${test}.c)
add_dependencies(test-${test} ${STLINK_LIB_STATIC}) add_dependencies(test-${test} ${STLINK_LIB_SHARED})
target_link_libraries(test-${test} ${STLINK_LIB_STATIC} ${SSP_LIB}) target_link_libraries(test-${test} ${STLINK_LIB_SHARED} ${SSP_LIB})
add_test(test-${test} ${CMAKE_BINARY_DIR}/bin/test-${test}) add_test(test-${test} ${CMAKE_BINARY_DIR}/bin/test-${test})
endforeach () endforeach ()
add_executable(test-flash flash.c "${CMAKE_SOURCE_DIR}/src/tools/flash_opts.c") add_executable(test-flash flash.c "${CMAKE_SOURCE_DIR}/src/tools/flash_opts.c")
target_link_libraries(test-flash ${STLINK_LIB_STATIC} ${SSP_LIB}) target_link_libraries(test-flash ${STLINK_LIB_SHARED} ${SSP_LIB})
add_test(test-flash ${CMAKE_BINARY_DIR}/bin/test-flash) add_test(test-flash ${CMAKE_BINARY_DIR}/bin/test-flash)