Browse Source

Ci mips mips64 (#1948)

tags/20200727
nihui GitHub 5 years ago
parent
commit
aee9f8a637
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 354 additions and 39 deletions
  1. +88
    -0
      .github/workflows/linux-mips-cpu-gcc.yml
  2. +0
    -20
      .github/workflows/linux-mips32-mti.yml
  3. +88
    -0
      .github/workflows/linux-mips64-cpu-gcc.yml
  4. +114
    -0
      .github/workflows/test-coverage.yml
  5. +16
    -0
      toolchains/mips64el-linux-gnuabi64.toolchain.cmake
  6. +16
    -0
      toolchains/mipsel-linux-gnu.toolchain.cmake
  7. +0
    -19
      toolchains/mipsisa32r6-linux-gnu.toolchain.cmake
  8. +16
    -0
      toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake
  9. +16
    -0
      toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake

+ 88
- 0
.github/workflows/linux-mips-cpu-gcc.yml View File

@@ -0,0 +1,88 @@
name: linux-mips-cpu-gcc
on: [push, pull_request]
jobs:
linux-gcc-mipsel:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mipsel-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mipsel-linux-user --disable-system
make -j2
make install
cp -r mipsel-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mipsel-gnu-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mipsel-linux-gnu

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsel-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsel-linux-gnu" ctest --output-on-failure -j 2

linux-gcc-mipsisa32r6el:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mipsel-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mipsel-linux-user --disable-system
make -j2
make install
cp -r mipsel-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mipsisa32r6el-gnu-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mipsisa32r6el-linux-gnu

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j 2

+ 0
- 20
.github/workflows/linux-mips32-mti.yml View File

@@ -1,20 +0,0 @@
name: linux-mips32-mti
on: [push, pull_request]
jobs:
linux-mips-mti:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: mips-mti-compiler
continue-on-error: true
run: |
wget https://codescape.mips.com/components/toolchain/2019.09-01/Codescape.GNU.Tools.Package.2019.09-01.for.MIPS.MTI.Linux.CentOS-6.x86_64.tar.gz -O mips-mti-linux-gnu.tar.gz
tar -zxf mips-mti-linux-gnu.tar.gz
- name: configure
continue-on-error: true
run: |
export PATH=`pwd`/mips-mti-linux-gnu/2019.09-01/bin:$PATH
mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mips-mti-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF ..
- name: build
continue-on-error: true
run: cmake --build build -j 2

+ 88
- 0
.github/workflows/linux-mips64-cpu-gcc.yml View File

@@ -0,0 +1,88 @@
name: linux-mips64-cpu-gcc
on: [push, pull_request]
jobs:
linux-gcc-mips64el:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mips64el-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mips64el-linux-user --disable-system
make -j2
make install
cp -r mips64el-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mips64el-gnuabi64-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mips64el-linux-gnuabi64

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mips64el-linux-gnuabi64.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mips64el-linux-gnuabi64" ctest --output-on-failure -j 2

linux-gcc-mipsisa64r6el:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mips64el-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mips64el-linux-user --disable-system
make -j2
make install
cp -r mips64el-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mipsisa64r6el-gnuabi64-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mipsisa64r6el-linux-gnuabi64

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j 2

+ 114
- 0
.github/workflows/test-coverage.yml View File

@@ -230,3 +230,117 @@ jobs:
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: build/lcov.info

linux-gcc-mipsisa32r6el:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: lcov
run: sudo apt-get install lcov
- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mipsel-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mipsel-linux-user --disable-system
make -j2
make install
cp -r mipsel-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mipsisa32r6el-gnu-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mipsisa32r6el-linux-gnu

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j 2

- name: lcov-collect
run: |
cd build
lcov -d ./src -c -o lcov.info
lcov -r lcov.info '/usr/*' -o lcov.info
lcov --list lcov.info
- name: codecov
uses: codecov/codecov-action@v1.0.11
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: build/lcov.info

linux-gcc-mipsisa64r6el:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2

- name: lcov
run: sudo apt-get install lcov
- name: cache-qemu
id: cache-qemu
uses: actions/cache@v1
with:
path: qemu-install
key: qemu-mips64el-install-1
- name: checkout-qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: qemu/qemu
path: qemu
ref: 8746309137ba470d1b2e8f5ce86ac228625db940
- name: qemu
if: steps.cache-qemu.outputs.cache-hit != 'true'
run: |
cd qemu
./configure --prefix=install --target-list=mips64el-linux-user --disable-system
make -j2
make install
cp -r mips64el-linux-user/install $GITHUB_WORKSPACE/qemu-install

- name: mipsisa64r6el-gnuabi64-toolchain
run: |
sudo apt-get update
sudo apt-get install g++-mipsisa64r6el-linux-gnuabi64

- name: configure
run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- name: build
run: cmake --build build -j 2

- name: test
run: |
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j 2

- name: lcov-collect
run: |
cd build
lcov -d ./src -c -o lcov.info
lcov -r lcov.info '/usr/*' -o lcov.info
lcov --list lcov.info
- name: codecov
uses: codecov/codecov-action@v1.0.11
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: build/lcov.info

+ 16
- 0
toolchains/mips64el-linux-gnuabi64.toolchain.cmake View File

@@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR mips64el)

set(CMAKE_C_COMPILER "mips64el-linux-gnuabi64-gcc")
set(CMAKE_CXX_COMPILER "mips64el-linux-gnuabi64-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=mips64")
set(CMAKE_CXX_FLAGS "-march=mips64")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

+ 16
- 0
toolchains/mipsel-linux-gnu.toolchain.cmake View File

@@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR mipsel)

set(CMAKE_C_COMPILER "mipsel-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "mipsel-linux-gnu-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=mips32")
set(CMAKE_CXX_FLAGS "-march=mips32")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

+ 0
- 19
toolchains/mipsisa32r6-linux-gnu.toolchain.cmake View File

@@ -1,19 +0,0 @@
# set cross-compiled system type, it's better not use the type which cmake cannot recognized.
SET ( CMAKE_SYSTEM_NAME Linux )
SET ( CMAKE_SYSTEM_PROCESSOR mips )
# make sure mipsisa32r6-linux-gnu-gcc and mipsisa32r6-linux-gnu-g++ can be found in $PATH:
SET ( CMAKE_C_COMPILER "mipsisa32r6-linux-gnu-gcc" )
SET ( CMAKE_CXX_COMPILER "mipsisa32r6-linux-gnu-g++" )

# set searching rules for cross-compiler
SET ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
SET ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
SET ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

# set ${CMAKE_C_FLAGS} and ${CMAKE_CXX_FLAGS}flag for cross-compiled process
SET ( CMAKE_CXX_FLAGS "-std=c++11 -march=mips32r6 -mmsa -fopenmp ${CMAKE_CXX_FLAGS}" )

# other settings
add_definitions(-D__MIPS_MSA)
add_definitions(-DLINUX)
SET ( LINUX true)

+ 16
- 0
toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake View File

@@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR mipsisa32r6el)

set(CMAKE_C_COMPILER "mipsisa32r6el-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "mipsisa32r6el-linux-gnu-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=mips32r6")
set(CMAKE_CXX_FLAGS "-march=mips32r6")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

+ 16
- 0
toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake View File

@@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR mipsisa64r6el)

set(CMAKE_C_COMPILER "mipsisa64r6el-linux-gnuabi64-gcc")
set(CMAKE_CXX_COMPILER "mipsisa64r6el-linux-gnuabi64-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=mips64r6 -mmsa -mhard-float -mfp64 -mnan=2008")
set(CMAKE_CXX_FLAGS "-march=mips64r6 -mmsa -mhard-float -mfp64 -mnan=2008")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

Loading…
Cancel
Save