Skip to content

Commit

Permalink
Merge pull request #63 from Picovoice/collect-artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
ksyeo1010 committed Jun 21, 2023
2 parents 7b8f774 + 9f42c4f commit e78d33b
Show file tree
Hide file tree
Showing 28 changed files with 198 additions and 28 deletions.
32 changes: 32 additions & 0 deletions .github/actions/c-template/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: C Template

inputs:
pv_platform:
required: true
output_dir:
required: true

runs:
using: "composite"
steps:
- name: Create build directory
run: cmake -B ./build -S . -DPV_PLATFORM="${{ inputs.pv_platform }}" -DOUTPUT_DIR="${{ inputs.output_dir }}"
shell: bash

- name: Build
run: cmake --build ./build
shell: bash

- name: Run get audio devices
run: ./demo --show_audio_devices
working-directory: build
shell: bash

- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.pv_platform }}
path: |
lib/${{ inputs.output_dir }}/libpv_recorder.*
lib/node/${{ inputs.output_dir }}/pv_recorder.node
retention-days: 3
128 changes: 103 additions & 25 deletions .github/workflows/c.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,41 +25,119 @@ jobs:

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]

os: [ubuntu-latest, windows-latest]
include:
- os: ubuntu-latest
pv_platform: linux
output_dir: linux/x86_64
- os: windows-latest
pv_platform: windows
output_dir: windows/amd64
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Create build directory
run: cmake -B ./build
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Build
run: cmake --build ./build

- name: Run get audio devices
run: ./demo --show_audio_devices
working-directory: build
- uses: ./.github/actions/c-template
name: Build and test
with:
pv_platform: ${{ matrix.pv_platform }}
output_dir: ${{ matrix.output_dir }}

build-self-hosted:
runs-on: ${{ matrix.machine }}

strategy:
matrix:
machine: [rpi2, rpi3-32, rpi3-64, rpi4-32, rpi4-64, jetson, beaglebone]
include:
- machine: rpi2
pv_platform: raspberry-pi2
output_dir: raspberry-pi/cortex-a7
- machine: rpi3-32
pv_platform: raspberry-pi3
output_dir: raspberry-pi/cortex-a53
- machine: rpi3-64
pv_platform: raspberry-pi3-64
output_dir: raspberry-pi/cortex-a53-aarch64
- machine: rpi4-32
pv_platform: raspberry-pi4
output_dir: raspberry-pi/cortex-a72
- machine: rpi4-64
pv_platform: raspberry-pi4-64
output_dir: raspberry-pi/cortex-a72-aarch64
- machine: jetson
pv_platform: jetson-nano
output_dir: jetson/cortex-a57-aarch64
- machine: beaglebone
pv_platform: beaglebone
output_dir: beaglebone

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- uses: ./.github/actions/c-template
name: Build and test
with:
pv_platform: ${{ matrix.pv_platform }}
output_dir: ${{ matrix.output_dir }}

build-mac:
runs-on: pv-ios
strategy:
matrix:
pv_platform: [mac-arm64, mac-x86_64]
include:
- pv_platform: mac-arm64
output_dir: mac/arm64
- pv_platform: mac-x86_64
output_dir: mac/x86_64
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- uses: ./.github/actions/c-template
name: Build and test
with:
pv_platform: ${{ matrix.pv_platform }}
output_dir: ${{ matrix.output_dir }}

build-rpi0:
runs-on: rpi3-32
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- uses: ./.github/actions/c-template
name: Build and test
with:
pv_platform: raspberry-pi
output_dir: raspberry-pi/arm11

collect-artifacts:
runs-on: ubuntu-latest
needs: [build-github-hosted, build-self-hosted, build-mac, build-rpi0]

steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download artifacts
uses: actions/download-artifact@v3
with:
path: artifacts

- name: Create build directory
run: cmake -B ./build
- name: Make collection directory
run: mkdir -p all-libs/lib

- name: Build
run: cmake --build ./build
- name: Collect artifacts
shell: bash
run: |
for DIR in artifacts/*; do cp -a $DIR/* all-libs/lib/; done
- name: Run get audio devices
run: ./demo --show_audio_devices
working-directory: build
- name: Upload all artifacts
uses: actions/upload-artifact@v3
with:
name: all-libs
path: all-libs
retention-days: 3
64 changes: 61 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,64 @@ set(CMAKE_BUILD_TYPE Release)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")

if(NOT PV_PLATFORM)
message(FATAL_ERROR "No `PV_PLATFORM` value was given.")
endif()

if (${PV_PLATFORM} STREQUAL "beaglebone")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_BEAGLEBONE__)
add_compile_options(-mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon)
add_link_options(-mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon)
elseif (${PV_PLATFORM} STREQUAL "mac-arm64")
add_definitions(-D__PV_PLATFORM_DARWIN__)
set(CMAKE_OSX_ARCHITECTURES "arm64")
elseif (${PV_PLATFORM} STREQUAL "mac-x86_64")
add_definitions(-D__PV_PLATFORM_DARWIN__)
set(CMAKE_OSX_ARCHITECTURES "x86_64")
elseif (${PV_PLATFORM} STREQUAL "linux")
add_definitions(-D__PV_PLATFORM_LINUX__)
elseif (${PV_PLATFORM} STREQUAL "jetson-nano")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_JETSON__)
add_compile_options(-mcpu=cortex-a57 -mtune=cortex-a57)
add_link_options(-mcpu=cortex-a57 -mtune=cortex-a57)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp)
add_link_options(-mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi2")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=cortex-a7 -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4)
add_link_options(-mcpu=cortex-a7 -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi3")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=cortex-a53 -mtune=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8)
add_link_options(-mcpu=cortex-a53 -mtune=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi3-64")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=cortex-a53 -mtune=cortex-a53)
add_link_options(-mcpu=cortex-a53 -mtune=cortex-a53)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi4")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=cortex-a72 -mtune=cortex-a72 -mfloat-abi=hard -mfpu=neon-fp-armv8)
add_link_options(-mcpu=cortex-a72 -mtune=cortex-a72 -mfloat-abi=hard -mfpu=neon-fp-armv8)
elseif (${PV_PLATFORM} STREQUAL "raspberry-pi4-64")
set(PV_LINK_ATOMIC ON)
add_definitions(-D__PV_PLATFORM_RASPBERRYPI__)
add_compile_options(-mcpu=cortex-a72 -mtune=cortex-a72)
add_link_options(-mcpu=cortex-a72 -mtune=cortex-a72)
elseif (${PV_PLATFORM} STREQUAL "windows")
add_definitions(-D__PV_PLATFORM_WINDOWS__)
else ()
message(FATAL_ERROR "Unknown platform `${PV_PLATFORM}`.")
endif ()

add_library(pv_recorder_object OBJECT src/pv_circular_buffer.c src/pv_recorder.c)

target_include_directories(pv_recorder_object PUBLIC include)
Expand All @@ -16,7 +74,7 @@ add_library(pv_recorder SHARED $<TARGET_OBJECTS:pv_recorder_object>)
set_target_properties(pv_recorder PROPERTIES
PUBLIC_HEADER include/pv_recorder.h)

if (NOT WIN32)
if (NOT ${PV_PLATFORM} STREQUAL "windows")
target_link_libraries(pv_recorder pthread dl m)
endif()

Expand All @@ -32,9 +90,9 @@ add_executable(demo example/demo.c)

target_include_directories(demo PUBLIC include)

if (NOT WIN32)
if (NOT ${PV_PLATFORM} STREQUAL "windows")
target_link_libraries(demo pv_recorder pthread dl m)
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") AND (UNIX AND NOT APPLE))
if(PV_LINK_ATOMIC)
target_link_libraries(demo pv_recorder atomic)
endif()
else()
Expand Down
Binary file modified lib/beaglebone/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/jetson/cortex-a57-aarch64/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/linux/x86_64/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/mac/arm64/libpv_recorder.dylib
100755 → 100644
Binary file not shown.
Binary file modified lib/mac/x86_64/libpv_recorder.dylib
100755 → 100644
Binary file not shown.
Binary file modified lib/node/beaglebone/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/jetson/cortex-a57-aarch64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/linux/x86_64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/mac/arm64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/mac/x86_64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file added lib/node/raspberry-pi/arm11/pv_recorder.node
Binary file not shown.
Binary file modified lib/node/raspberry-pi/cortex-a53-aarch64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/raspberry-pi/cortex-a53/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/raspberry-pi/cortex-a7/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/raspberry-pi/cortex-a72-aarch64/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/raspberry-pi/cortex-a72/pv_recorder.node
100755 → 100644
Binary file not shown.
Binary file modified lib/node/windows/amd64/pv_recorder.node
Binary file not shown.
Binary file modified lib/raspberry-pi/arm11/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/raspberry-pi/cortex-a53-aarch64/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/raspberry-pi/cortex-a53/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/raspberry-pi/cortex-a7/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/raspberry-pi/cortex-a72-aarch64/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/raspberry-pi/cortex-a72/libpv_recorder.so
100755 → 100644
Binary file not shown.
Binary file modified lib/windows/amd64/libpv_recorder.dll
Binary file not shown.
2 changes: 2 additions & 0 deletions resources/spell-check/.cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
}
],
"ignorePaths": [
"../../CMakeLists.txt",

// submodules
"../../src/miniaudio",

Expand Down

0 comments on commit e78d33b

Please sign in to comment.