Skip to content

Commit 53825a2

Browse files
committed
protobuf
1 parent 48e0d87 commit 53825a2

4 files changed

Lines changed: 181 additions & 4 deletions

File tree

.github/workflows/build-oneDNN.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ jobs:
2828

2929
- name: Install or Download Dependencies
3030
run: |
31-
choco install curl unzip 7zip
32-
choco install cmake
31+
choco install curl unzip 7zip -y
32+
choco install cmake -y
3333
cmake --version
3434
mkdir deps
3535
cd deps && mkdir mingw64 && cd ..

.github/workflows/build-opencv.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ jobs:
2828

2929
- name: Install or Download Dependencies
3030
run: |
31-
choco install curl unzip 7zip
32-
choco install cmake
31+
choco install curl unzip 7zip -y
32+
choco install cmake -y
3333
cmake --version
3434
mkdir deps
3535
cd deps && mkdir mingw64 && cd ..
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
name: Build protobuf-lite with mingw64 and msvc2019
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- '.github/workflows/build-protobuf-lite.yml'
8+
9+
env:
10+
PROTOBUF_VERSION: "21.12"
11+
12+
jobs:
13+
delete_assets:
14+
name: Delete Assets
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v3
18+
- uses: andreaswilli/delete-release-assets-action@v4.0.0
19+
with:
20+
github_token: ${{ secrets.GITHUB_TOKEN }}
21+
tag: protobuf-${{ env.PROTOBUF_VERSION }}
22+
deleteOnlyFromDrafts: false
23+
24+
build_with_windows-2019:
25+
needs: delete_assets
26+
runs-on: windows-2019
27+
steps:
28+
- uses: actions/checkout@v3
29+
30+
- name: Install or Download Dependencies
31+
run: |
32+
choco install curl unzip 7zip -y
33+
choco install cmake -y
34+
cmake --version
35+
mkdir deps
36+
cd deps && mkdir mingw64 && cd ..
37+
curl -L https://download.qt.io/official_releases/jom/jom.zip -o jom.zip
38+
unzip jom.zip -d ${{ github.workspace }}/deps/jom
39+
curl -L https://github.com/protocolbuffers/protobuf/releases/download/v${{ env.PROTOBUF_VERSION }}/protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}.tar.gz -o protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}.tar.gz
40+
curl -L https://github.com/nonwill/mingw-distro/releases/download/mingw64-gcc-crt_latest/mingw-w64+gcc-i686-all.7z -o mingw-w64_gcc-i686-all.7z
41+
curl -L https://github.com/nonwill/mingw-distro/releases/download/mingw64-gcc-crt_latest/mingw-w64+gcc-x86_64-all.7z -o mingw-w64_gcc-x86_64-all.7z
42+
dir
43+
${{ github.workspace }}/deps/jom/jom.exe /VERSION
44+
45+
- name: MinGW Build Protocol Buffers-${{ env.PROTOBUF_VERSION }}
46+
shell: bash
47+
run: |
48+
export WSP_ROOT=$PWD
49+
export USER_MINGW_DIR=$WSP_ROOT/deps/mingw64
50+
tar -xf protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}.tar.gz
51+
rm -f protobuf-${{ env.PROTOBUF_VERSION }}.tar.gz
52+
mkdir build
53+
echo ~~~~~~~~~~~~ mingw32 build prepare ~~~~~~~~~~~~
54+
7z x mingw-w64_gcc-i686-all.7z -r -o$USER_MINGW_DIR
55+
rm -f mingw-w64_gcc-i686-all.7z
56+
export PATH=$USER_MINGW_DIR/bin:$PATH
57+
gcc -v
58+
echo ~~~~~~~~~~~~ mingw32 build begin ~~~~~~~~~~~~
59+
cd build
60+
cmake ../protobuf-3.${{ env.PROTOBUF_VERSION }} \
61+
-G "MinGW Makefiles" \
62+
-DCMAKE_INSTALL_PREFIX=$WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64 \
63+
`cat ../protobuf-options.txt` && \
64+
mingw32-make -j4 && mingw32-make install
65+
rm -rf ./*
66+
cd ..
67+
strip $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64/bin/*.exe
68+
cd $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64
69+
7z -mx5 a ../protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}-mingw64-i686.7z *
70+
cd ..
71+
echo ~~~~~~~~~~~~ mingw32 build end ~~~~~~~~~~~~
72+
rm -rf $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64
73+
rm -rf $USER_MINGW_DIR/*
74+
echo ~~~~~~~~~~~~ mingw64 build prepare ~~~~~~~~~~~~
75+
7z x mingw-w64_gcc-x86_64-all.7z -r -o$USER_MINGW_DIR
76+
rm -f mingw-w64_gcc-x86_64-all.7z
77+
gcc -v
78+
echo ~~~~~~~~~~~~ mingw64 build begin ~~~~~~~~~~~~
79+
cd build
80+
cmake ../protobuf-3.${{ env.PROTOBUF_VERSION }} \
81+
-G "MinGW Makefiles" \
82+
-DCMAKE_INSTALL_PREFIX=$WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64 \
83+
`cat ../protobuf-options.txt` && \
84+
mingw32-make -j4 && mingw32-make install
85+
rm -rf ./*
86+
cd ..
87+
strip $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64/bin/*.exe
88+
cd $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64
89+
7z -mx5 a ../protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}-mingw64-x86_64.7z *
90+
cd ..
91+
echo ~~~~~~~~~~~~ mingw64 build end ~~~~~~~~~~~~
92+
rm -rf $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-mingw64
93+
rm -rf $USER_MINGW_DIR/*
94+
95+
- name: Setup msvc2019 x64 Environment
96+
uses: ilammy/msvc-dev-cmd@v1
97+
98+
- name: Get date and Cl version
99+
id: vars
100+
shell: bash
101+
run: |
102+
echo "update_date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
103+
echo "vc_install_dir=$VCToolsInstallDir" >> $GITHUB_OUTPUT
104+
echo "cl_exe_info=$(cl > cl_version 2>&1 && head -n 1 cl_version)" >> $GITHUB_OUTPUT
105+
106+
- name: msvc2019 x64 Build Protocol Buffers-${{ env.PROTOBUF_VERSION }}
107+
shell: bash
108+
run: |
109+
export WSP_ROOT=$PWD
110+
export PATH=$WSP_ROOT/deps/jom:$PATH
111+
echo ~~~~~~~~~~~~ msvc2019 build begin ~~~~~~~~~~~~
112+
cl
113+
cd build
114+
cmake ../protobuf-3.${{ env.PROTOBUF_VERSION }} \
115+
-G "NMake Makefiles" \
116+
-DCMAKE_MAKE_PROGRAM=$WSP_ROOT/deps/jom/jom.exe \
117+
-DCMAKE_INSTALL_PREFIX=$WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x64 \
118+
`cat ../protobuf-options.txt` && \
119+
jom -j4 && jom install
120+
rm -rf ./*
121+
cd ..
122+
cd $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x64
123+
7z -mx5 a ../protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}-msvc2019-x64.7z *
124+
cd ..
125+
echo ~~~~~~~~~~~~ msvc2019 build end ~~~~~~~~~~~~
126+
rm -rf $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x64
127+
128+
- name: Setup msvc2019 x86 Environment
129+
uses: ilammy/msvc-dev-cmd@v1
130+
with:
131+
arch: amd64_x86
132+
133+
- name: msvc2019 x86 Build Protocol Buffers-${{ env.PROTOBUF_VERSION }}
134+
shell: bash
135+
run: |
136+
export WSP_ROOT=$PWD
137+
export PATH=$WSP_ROOT/deps/jom:$PATH
138+
echo ~~~~~~~~~~~~ msvc2019 build begin ~~~~~~~~~~~~
139+
cl
140+
cd build
141+
cmake ../protobuf-3.${{ env.PROTOBUF_VERSION }} \
142+
-G "NMake Makefiles" \
143+
-DCMAKE_MAKE_PROGRAM=$WSP_ROOT/deps/jom/jom.exe \
144+
-DCMAKE_INSTALL_PREFIX=$WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x86 \
145+
`cat ../protobuf-options.txt` && \
146+
jom -j4 && jom install
147+
rm -rf ./*
148+
cd ..
149+
cd $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x86
150+
7z -mx5 a ../protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}-msvc2019-x86.7z *
151+
cd ..
152+
echo ~~~~~~~~~~~~ msvc2019 build end ~~~~~~~~~~~~
153+
rm -rf $WSP_ROOT/protobuf-${{ env.PROTOBUF_VERSION }}-msvc2019-x86
154+
155+
- name: Upload protobuf-${{ env.PROTOBUF_VERSION }}
156+
uses: softprops/action-gh-release@v2
157+
with:
158+
tag_name: protobuf-3.${{ env.PROTOBUF_VERSION }}
159+
name: Latest build of Protocol Buffers cpp-3.${{ env.PROTOBUF_VERSION }}
160+
body: |
161+
date: ${{ steps.vars.outputs.update_date }}
162+
cl.exe: ${{ steps.vars.outputs.cl_exe_info }}
163+
draft: false
164+
prerelease: false
165+
files: |
166+
./protobuf-cpp-3.${{ env.PROTOBUF_VERSION }}-*.7z

protobuf-options.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-DCMAKE_BUILD_TYPE=Release
2+
-Dprotobuf_INSTALL=ON
3+
-Dprotobuf_BUILD_PROTOC_BINARIES=ON
4+
-Dprotobuf_BUILD_SHARED_LIBS=OFF
5+
-Dprotobuf_MSVC_STATIC_RUNTIME=OFF
6+
-Dprotobuf_BUILD_CONFORMANCE=OFF
7+
-Dprotobuf_BUILD_EXAMPLES=OFF
8+
-Dprotobuf_BUILD_TESTS=OFF
9+
-Dprotobuf_DISABLE_RTTI=OFF
10+
-Dprotobuf_VERBOSE=OFF
11+
-Dprotobuf_WITH_ZLIB=OFF

0 commit comments

Comments
 (0)