Compare commits
28
Commits
dee130197c
..
v1.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccde2f73e9 | ||
|
|
3b44bd97f7 | ||
|
|
c5fea61784 | ||
|
|
07c4aa316a | ||
|
|
5d1ef621db | ||
|
|
8fe1b36cdc | ||
|
|
b717c5f163 | ||
|
|
5ddc63abdf | ||
|
|
4e61ef5655 | ||
|
|
361158c343 | ||
|
|
5fd55496bf | ||
|
|
f0d0c4fb1e | ||
|
|
26862bf05f | ||
|
|
b90c98d3ad | ||
|
|
04770e5df2 | ||
|
|
5a92e2ccfa | ||
|
|
b98236466c | ||
|
|
badb4ebf61 | ||
|
|
5aba22d8e9 | ||
|
|
052df2fc21 | ||
|
|
8c670003b8 | ||
|
|
b3578b0b53 | ||
|
|
714281dbf1 | ||
|
|
f6684bebc9 | ||
|
|
323b6bd464 | ||
|
|
29c49057b4 | ||
|
|
0e0047b946 | ||
|
|
18bc4eb08f |
@@ -15,8 +15,6 @@ jobs:
|
|||||||
- name: Auto-tag from merged PR
|
- name: Auto-tag from merged PR
|
||||||
id: autotag
|
id: autotag
|
||||||
run: |
|
run: |
|
||||||
set -e
|
|
||||||
|
|
||||||
# 已有标签 → 跳过
|
# 已有标签 → 跳过
|
||||||
EXISTING=$(git tag --points-at HEAD | grep '^v' | head -n1)
|
EXISTING=$(git tag --points-at HEAD | grep '^v' | head -n1)
|
||||||
if [ -n "$EXISTING" ]; then
|
if [ -n "$EXISTING" ]; then
|
||||||
@@ -25,7 +23,7 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 非 merge commit → 跳过(直接 push 不处理)
|
# 非 merge commit → 跳过
|
||||||
PARENTS=$(git log --format="%P" -1 | wc -w)
|
PARENTS=$(git log --format="%P" -1 | wc -w)
|
||||||
if [ "$PARENTS" -lt 2 ]; then
|
if [ "$PARENTS" -lt 2 ]; then
|
||||||
echo "Not a merge commit, skip auto-tag"
|
echo "Not a merge commit, skip auto-tag"
|
||||||
@@ -34,7 +32,7 @@ jobs:
|
|||||||
|
|
||||||
# 从 merge commit message 提取 PR 号
|
# 从 merge commit message 提取 PR 号
|
||||||
COMMIT_MSG=$(git log --format="%B" -1)
|
COMMIT_MSG=$(git log --format="%B" -1)
|
||||||
PR_NUM=$(echo "$COMMIT_MSG" | grep -oP '#\K\d+' | head -1)
|
PR_NUM=$(echo "$COMMIT_MSG" | grep -oP '#\K\d+' | head -1) || true
|
||||||
if [ -z "$PR_NUM" ]; then
|
if [ -z "$PR_NUM" ]; then
|
||||||
echo "No PR number found in merge message"
|
echo "No PR number found in merge message"
|
||||||
exit 0
|
exit 0
|
||||||
@@ -55,15 +53,12 @@ jobs:
|
|||||||
VERSION="$PR_BODY"
|
VERSION="$PR_BODY"
|
||||||
echo "Found version: $VERSION"
|
echo "Found version: $VERSION"
|
||||||
|
|
||||||
# 创建本地标签
|
# 创建本地标签(不推送远端)
|
||||||
|
# Gitea Create Release API 会自动在远端创建标签
|
||||||
git config user.email "ci@datarouter"
|
git config user.email "ci@datarouter"
|
||||||
git config user.name "DataRouter CI"
|
git config user.name "DataRouter CI"
|
||||||
git tag -a "$VERSION" -m "Release $VERSION"
|
git tag -a "$VERSION" -m "Release $VERSION" 2>/dev/null || true
|
||||||
echo "Created local tag: $VERSION"
|
echo "Created local tag: $VERSION"
|
||||||
|
|
||||||
# 推送到远端(不会触发本 workflow — 仅匹配 branches: [main])
|
|
||||||
git push "https://${TOKEN}@${{ gitea.server_url }}/${{ gitea.repository }}" "$VERSION"
|
|
||||||
echo "Pushed tag: $VERSION"
|
|
||||||
echo "tag=$VERSION" >> "$GITHUB_OUTPUT"
|
echo "tag=$VERSION" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
# ── 读取标签(已有标签 / auto-tag 创建的标签)──
|
# ── 读取标签(已有标签 / auto-tag 创建的标签)──
|
||||||
@@ -90,7 +85,7 @@ jobs:
|
|||||||
"linux-arm64|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-linux-arm64.cmake" \
|
"linux-arm64|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-linux-arm64.cmake" \
|
||||||
"linux-armhf|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-linux-armhf.cmake" \
|
"linux-armhf|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-linux-armhf.cmake" \
|
||||||
"windows-amd64|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-windows-amd64.cmake -DBUILD_EXAMPLES=OFF" \
|
"windows-amd64|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-windows-amd64.cmake -DBUILD_EXAMPLES=OFF" \
|
||||||
"baremetal-arm32|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-baremetal-arm32.cmake -DBUILD_EXAMPLES=OFF -DBUILD_SHARED=OFF"
|
"baremetal-arm32|OFF|-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-baremetal-arm32.cmake -DBUILD_EXAMPLES=OFF"
|
||||||
do
|
do
|
||||||
IFS='|' read -r name testing extra <<< "$entry"
|
IFS='|' read -r name testing extra <<< "$entry"
|
||||||
echo ">>> Building $name"
|
echo ">>> Building $name"
|
||||||
@@ -102,11 +97,26 @@ jobs:
|
|||||||
cmake --install "build-$name" --prefix "dist/$pkg"
|
cmake --install "build-$name" --prefix "dist/$pkg"
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: Cortex-M compile matrix
|
- name: Cortex-M build & package
|
||||||
run: |
|
run: |
|
||||||
cmake -S . -B build-cortex-m -DDR_COMPILE_CHECK=ON
|
for name in cm3 cm4-soft cm4-hard cm7-soft cm7-hard; do
|
||||||
cmake --build build-cortex-m --parallel $(nproc)
|
case $name in
|
||||||
echo "--- Cortex-M build matrix: all variants passed ---"
|
cm3) flags="-mcpu=cortex-m3 -mthumb -mfloat-abi=soft" ;;
|
||||||
|
cm4-soft) flags="-mcpu=cortex-m4 -mthumb -mfloat-abi=soft" ;;
|
||||||
|
cm4-hard) flags="-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard" ;;
|
||||||
|
cm7-soft) flags="-mcpu=cortex-m7 -mthumb -mfloat-abi=soft" ;;
|
||||||
|
cm7-hard) flags="-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard" ;;
|
||||||
|
esac
|
||||||
|
echo ">>> Building $name"
|
||||||
|
cmake -S . -B "build-$name" \
|
||||||
|
-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF \
|
||||||
|
-DCMAKE_C_COMPILER=arm-none-eabi-gcc \
|
||||||
|
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
|
||||||
|
-DCMAKE_C_FLAGS="$flags"
|
||||||
|
cmake --build "build-$name"
|
||||||
|
cmake --install "build-$name" --prefix "dist/datarouter-$name"
|
||||||
|
done
|
||||||
|
echo "--- Cortex-M package build: all variants passed ---"
|
||||||
|
|
||||||
- name: Create release & upload assets
|
- name: Create release & upload assets
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+53
-2
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.10)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
project(DataRouter C)
|
project(DataRouter VERSION 1.1.0 LANGUAGES C)
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
|
||||||
@@ -56,7 +56,10 @@ endif()
|
|||||||
# ── 常规库构建 ────────────────────────────────────────────────
|
# ── 常规库构建 ────────────────────────────────────────────────
|
||||||
|
|
||||||
add_library(DataRouter STATIC datarouter.c)
|
add_library(DataRouter STATIC datarouter.c)
|
||||||
target_include_directories(DataRouter PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(DataRouter PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
|
)
|
||||||
|
|
||||||
if(BUILD_EXAMPLES OR NOT DEFINED BUILD_EXAMPLES)
|
if(BUILD_EXAMPLES OR NOT DEFINED BUILD_EXAMPLES)
|
||||||
add_executable(example example.c)
|
add_executable(example example.c)
|
||||||
@@ -69,3 +72,51 @@ if(BUILD_TESTING OR NOT DEFINED BUILD_TESTING)
|
|||||||
target_link_libraries(test_datarouter DataRouter)
|
target_link_libraries(test_datarouter DataRouter)
|
||||||
add_test(NAME datarouter COMMAND test_datarouter)
|
add_test(NAME datarouter COMMAND test_datarouter)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# ── 安装规则(用于打包发布) ─────────────────────────────
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
set(DataRouter_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/DataRouter")
|
||||||
|
|
||||||
|
install(TARGETS DataRouter
|
||||||
|
EXPORT DataRouterTargets
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/datarouter.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/datarouter_config.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/datarouter_config_template.h
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
# ── CMake 包配置文件(find_package(DataRouter) 用) ────
|
||||||
|
|
||||||
|
set(PACKAGE_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
set(PACKAGE_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/DataRouterConfig.cmake.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfig.cmake
|
||||||
|
INSTALL_DESTINATION ${DataRouter_INSTALL_CMAKEDIR}
|
||||||
|
PATH_VARS PACKAGE_INCLUDE_INSTALL_DIR PACKAGE_LIB_INSTALL_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
write_basic_package_version_file(
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfigVersion.cmake
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
COMPATIBILITY AnyNewerVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
install(EXPORT DataRouterTargets
|
||||||
|
FILE DataRouterTargets.cmake
|
||||||
|
DESTINATION ${DataRouter_INSTALL_CMAKEDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfig.cmake
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfigVersion.cmake
|
||||||
|
DESTINATION ${DataRouter_INSTALL_CMAKEDIR}
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@PACKAGE_INIT@
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
set_and_check(DataRouter_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
set(DataRouter_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||||
set_and_check(DataRouter_LIBRARY_DIR "@PACKAGE_LIB_INSTALL_DIR@")
|
set(DataRouter_LIBRARY_DIR "@PACKAGE_LIB_INSTALL_DIR@")
|
||||||
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/DataRouterTargets.cmake" OPTIONAL)
|
include("${CMAKE_CURRENT_LIST_DIR}/DataRouterTargets.cmake" OPTIONAL)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user