Skip to content

Commit b80bde3

Browse files
committed
GitHub Actions: add cross compile for FreeBSD, OpenBSD, NetBSD workflows
This allows users get our executable for FreeBSD, OpenBSD, NetBSD in a different maner. Signed-off-by: leleliu008 <[email protected]>
1 parent 684ed1d commit b80bde3

File tree

3 files changed

+354
-0
lines changed

3 files changed

+354
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: cross compile for NetBSD on Ubuntu
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
build:
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
netbsd-release-version: [9.3]
15+
16+
runs-on: ubuntu-latest
17+
18+
env:
19+
CC: clang --target=amd64-unknown-netbsd --sysroot=${{ github.workspace }}/amd64-unknown-netbsd-sysroot
20+
CFLAGS: -I${{ github.workspace }}/amd64-unknown-netbsd-3rdroot/include -v -fPIC
21+
LDFLAGS: -L${{ github.workspace }}/amd64-unknown-netbsd-3rdroot/lib -Wl,-v
22+
PKG_CONFIG_PATH: ${{ github.workspace }}/amd64-unknown-netbsd-3rdroot/lib/pkgconfig
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
with:
27+
repository: universal-ctags/ctags
28+
29+
- run: sudo apt-get -y update
30+
- run: sudo apt-get -y install clang cmake make automake autoconf pkg-config curl file
31+
32+
- run: install -d amd64-unknown-netbsd-sysroot
33+
- run: install -d amd64-unknown-netbsd-3rdroot
34+
35+
- name: install amd64-unknown-netbsd-sysroot
36+
run: |
37+
major="$(printf '%s\n' ${{ matrix.netbsd-release-version }} | cut -d. -f1)"
38+
minor="$(printf '%s\n' ${{ matrix.netbsd-release-version }} | cut -d. -f2)"
39+
40+
for item in base comp
41+
do
42+
FILENAME="$item.tar.xz"
43+
curl -LO "https://ftp.netbsd.org/pub/NetBSD/NetBSD-${{ matrix.netbsd-release-version }}/amd64/binary/sets/$FILENAME"
44+
tar vxf "$FILENAME" -C amd64-unknown-netbsd-sysroot
45+
done
46+
47+
- name: build zlib
48+
run: |
49+
install -d src/zlib
50+
cd src/zlib
51+
curl -L -o src.tar.gz https://zlib.net/fossils/zlib-1.3.tar.gz
52+
tar vxf src.tar.gz --strip-components=1
53+
sed -i 's|/share/pkgconfig|/lib/pkgconfig|' CMakeLists.txt
54+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF
55+
cmake --build build.d
56+
cmake --install build.d
57+
58+
- name: build libiconv
59+
run: |
60+
install -d src/libiconv
61+
cd src/libiconv
62+
curl -L -o src.tar.gz https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz
63+
tar vxf src.tar.gz --strip-components=1
64+
./configure --host=amd64-unknown-netbsd --prefix=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot --enable-extra-encodings --enable-static --disable-shared
65+
make V=1
66+
make install
67+
68+
- name: build libxml2
69+
run: |
70+
install -d src/libxml2
71+
cd src/libxml2
72+
curl -L -o src.tar.gz https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.6.tar.xz
73+
tar vxf src.tar.gz --strip-components=1
74+
./configure --host=amd64-unknown-netbsd --prefix=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot --with-zlib --without-lzma --without-python --without-readline --without-coverage --enable-ipv6 --enable-static --disable-shared LIBS=-liconv
75+
make V=1
76+
make install
77+
78+
- name: build libyaml
79+
run: |
80+
install -d src/libyaml
81+
cd src/libyaml
82+
curl -L -o src.tar.gz https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz
83+
tar vxf src.tar.gz --strip-components=1
84+
./configure --host=amd64-unknown-netbsd --prefix=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot
85+
make V=1
86+
make install
87+
88+
- name: build jansson
89+
run: |
90+
install -d src/jansson
91+
cd src/jansson
92+
curl -L -o src.tar.gz https://github.com/akheron/jansson/releases/download/v2.14/jansson-2.14.tar.gz
93+
tar vxf src.tar.gz --strip-components=1
94+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DJANSSON_BUILD_DOCS=OFF -DJANSSON_COVERAGE=OFF -DJANSSON_EXAMPLES=OFF -DJANSSON_WITHOUT_TESTS=ON
95+
cmake --build build.d
96+
cmake --install build.d
97+
98+
- name: build libpcre2
99+
run: |
100+
install -d src/libpcre2
101+
cd src/libpcre2
102+
curl -L -o src.tar.gz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.bz2
103+
tar vxf src.tar.gz --strip-components=1
104+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-netbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DCMAKE_C_STANDARD=99 -DCMAKE_C_STANDARD_REQUIRED=ON -DPCRE2_BUILD_PCRE2_8=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2_BUILD_PCRE2GREP=OFF -DPCRE2_BUILD_TESTS=OFF -DPCRE2_SUPPORT_VALGRIND=OFF -DPCRE2_SUPPORT_UNICODE=ON
105+
cmake --build build.d
106+
cmake --install build.d
107+
108+
- run: ./autogen.sh
109+
- run: |
110+
./configure --host=amd64-unknown-netbsd --prefix=${{ github.workspace }}/uctags-netbsd-amd64 --enable-static || {
111+
cat config.log
112+
exit 1
113+
}
114+
- run: make V=1
115+
- run: make install
116+
117+
- run: readelf -h ctags
118+
- run: readelf -d ctags
119+
- run: file ctags | grep NetBSD
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: cross compile for FreeBSD on Ubuntu
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
build:
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
freebsd-release-version: [13.2]
15+
16+
runs-on: ubuntu-latest
17+
18+
env:
19+
CC: clang --target=amd64-unknown-freebsd --sysroot=${{ github.workspace }}/amd64-unknown-freebsd-sysroot
20+
CFLAGS: -I${{ github.workspace }}/amd64-unknown-freebsd-3rdroot/include -v -fPIC
21+
LDFLAGS: -L${{ github.workspace }}/amd64-unknown-freebsd-3rdroot/lib -Wl,-v
22+
PKG_CONFIG_PATH: ${{ github.workspace }}/amd64-unknown-freebsd-3rdroot/lib/pkgconfig
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
with:
27+
repository: universal-ctags/ctags
28+
29+
- run: sudo apt-get -y update
30+
- run: sudo apt-get -y install clang cmake make automake autoconf curl file
31+
32+
- run: install -d amd64-unknown-freebsd-sysroot
33+
- run: install -d amd64-unknown-freebsd-3rdroot
34+
35+
- run: curl -L -o amd64-unknown-freebsd-sysroot.txz https://archive.freebsd.org/old-releases/amd64/${{ matrix.freebsd-release-version }}-RELEASE/base.txz
36+
- run: tar vxf amd64-unknown-freebsd-sysroot.txz -C amd64-unknown-freebsd-sysroot
37+
38+
- name: build zlib
39+
run: |
40+
install -d src/zlib
41+
cd src/zlib
42+
curl -L -o src.tar.gz https://zlib.net/fossils/zlib-1.3.tar.gz
43+
tar vxf src.tar.gz --strip-components=1
44+
sed -i 's|/share/pkgconfig|/lib/pkgconfig|' CMakeLists.txt
45+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF
46+
cmake --build build.d
47+
cmake --install build.d
48+
49+
- name: build libiconv
50+
run: |
51+
install -d src/libiconv
52+
cd src/libiconv
53+
curl -L -o src.tar.gz https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz
54+
tar vxf src.tar.gz --strip-components=1
55+
./configure --host=amd64-unknown-freebsd --prefix=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot --enable-extra-encodings --enable-static --disable-shared
56+
make V=1
57+
make install
58+
59+
- name: build libxml2
60+
run: |
61+
install -d src/libxml2
62+
cd src/libxml2
63+
curl -L -o src.tar.gz https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.6.tar.xz
64+
tar vxf src.tar.gz --strip-components=1
65+
./configure --host=amd64-unknown-freebsd --prefix=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot --with-zlib --without-lzma --without-python --without-readline --without-coverage --enable-ipv6 --enable-static --disable-shared LIBS=-liconv
66+
make V=1
67+
make install
68+
69+
- name: build libyaml
70+
run: |
71+
install -d src/libyaml
72+
cd src/libyaml
73+
curl -L -o src.tar.gz https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz
74+
tar vxf src.tar.gz --strip-components=1
75+
./configure --host=amd64-unknown-freebsd --prefix=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot
76+
make V=1
77+
make install
78+
79+
- name: build jansson
80+
run: |
81+
install -d src/jansson
82+
cd src/jansson
83+
curl -L -o src.tar.gz https://github.com/akheron/jansson/releases/download/v2.14/jansson-2.14.tar.gz
84+
tar vxf src.tar.gz --strip-components=1
85+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DJANSSON_BUILD_DOCS=OFF -DJANSSON_COVERAGE=OFF -DJANSSON_EXAMPLES=OFF -DJANSSON_WITHOUT_TESTS=ON
86+
cmake --build build.d
87+
cmake --install build.d
88+
89+
- name: build libpcre2
90+
run: |
91+
install -d src/libpcre2
92+
cd src/libpcre2
93+
curl -L -o src.tar.gz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.bz2
94+
tar vxf src.tar.gz --strip-components=1
95+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-freebsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DCMAKE_C_STANDARD=99 -DCMAKE_C_STANDARD_REQUIRED=ON -DPCRE2_BUILD_PCRE2_8=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2_BUILD_PCRE2GREP=OFF -DPCRE2_BUILD_TESTS=OFF -DPCRE2_SUPPORT_VALGRIND=OFF -DPCRE2_SUPPORT_UNICODE=ON
96+
cmake --build build.d
97+
cmake --install build.d
98+
99+
- run: ./autogen.sh
100+
- run: |
101+
./configure --host=amd64-unknown-freebsd --prefix=${{ github.workspace }}/uctags-freebsd-amd64 --enable-static || {
102+
cat config.log
103+
exit 1
104+
}
105+
- run: make V=1
106+
- run: make install
107+
108+
- run: readelf -h ctags
109+
- run: readelf -d ctags
110+
- run: file ctags | grep FreeBSD
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
name: cross compile for OpenBSD on Ubuntu
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
build:
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
openbsd-release-version: [7.4]
15+
16+
runs-on: ubuntu-latest
17+
18+
env:
19+
CC: clang --target=amd64-unknown-openbsd --sysroot=${{ github.workspace }}/amd64-unknown-openbsd-sysroot
20+
CFLAGS: -I${{ github.workspace }}/amd64-unknown-openbsd-3rdroot/include -v -fPIC
21+
LDFLAGS: -L${{ github.workspace }}/amd64-unknown-openbsd-3rdroot/lib -Wl,-v
22+
PKG_CONFIG_PATH: ${{ github.workspace }}/amd64-unknown-openbsd-3rdroot/lib/pkgconfig
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
with:
27+
repository: universal-ctags/ctags
28+
29+
- run: sudo apt-get -y update
30+
- run: sudo apt-get -y install clang cmake make automake autoconf pkg-config curl file
31+
32+
- run: install -d amd64-unknown-openbsd-sysroot
33+
- run: install -d amd64-unknown-openbsd-3rdroot
34+
35+
- name: install amd64-unknown-openbsd-sysroot
36+
run: |
37+
major="$(printf '%s\n' ${{ matrix.openbsd-release-version }} | cut -d. -f1)"
38+
minor="$(printf '%s\n' ${{ matrix.openbsd-release-version }} | cut -d. -f2)"
39+
40+
for item in base comp
41+
do
42+
FILENAME="$item$major$minor.tgz"
43+
curl -LO "https://cdn.openbsd.org/pub/OpenBSD/${{ matrix.openbsd-release-version }}/amd64/$FILENAME"
44+
tar vxf "$FILENAME" -C amd64-unknown-openbsd-sysroot
45+
done
46+
47+
- name: build zlib
48+
run: |
49+
install -d src/zlib
50+
cd src/zlib
51+
curl -L -o src.tar.gz https://zlib.net/fossils/zlib-1.3.tar.gz
52+
tar vxf src.tar.gz --strip-components=1
53+
sed -i 's|/share/pkgconfig|/lib/pkgconfig|' CMakeLists.txt
54+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF
55+
cmake --build build.d
56+
cmake --install build.d
57+
58+
- name: build libiconv
59+
run: |
60+
install -d src/libiconv
61+
cd src/libiconv
62+
curl -L -o src.tar.gz https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz
63+
tar vxf src.tar.gz --strip-components=1
64+
./configure --host=amd64-unknown-openbsd --prefix=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot --enable-extra-encodings --enable-static --disable-shared
65+
make V=1
66+
make install
67+
68+
- name: build libxml2
69+
run: |
70+
install -d src/libxml2
71+
cd src/libxml2
72+
curl -L -o src.tar.gz https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.6.tar.xz
73+
tar vxf src.tar.gz --strip-components=1
74+
./configure --host=amd64-unknown-openbsd --prefix=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot --with-zlib --without-lzma --without-python --without-readline --without-coverage --enable-ipv6 --enable-static --disable-shared LIBS=-liconv
75+
make V=1
76+
make install
77+
cd ${{ github.workspace }}/amd64-unknown-openbsd-3rdroot/lib/pkgconfig
78+
sed -i '/^Requires: /d' libxml-2.0.pc
79+
printf 'Requires: zlib\n' >> libxml-2.0.pc
80+
81+
- name: build libyaml
82+
run: |
83+
install -d src/libyaml
84+
cd src/libyaml
85+
curl -L -o src.tar.gz https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz
86+
tar vxf src.tar.gz --strip-components=1
87+
./configure --host=amd64-unknown-openbsd --prefix=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot
88+
make V=1
89+
make install
90+
91+
- name: build jansson
92+
run: |
93+
install -d src/jansson
94+
cd src/jansson
95+
curl -L -o src.tar.gz https://github.com/akheron/jansson/releases/download/v2.14/jansson-2.14.tar.gz
96+
tar vxf src.tar.gz --strip-components=1
97+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DJANSSON_BUILD_DOCS=OFF -DJANSSON_COVERAGE=OFF -DJANSSON_EXAMPLES=OFF -DJANSSON_WITHOUT_TESTS=ON
98+
cmake --build build.d
99+
cmake --install build.d
100+
101+
- name: build libpcre2
102+
run: |
103+
install -d src/libpcre2
104+
cd src/libpcre2
105+
curl -L -o src.tar.gz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.bz2
106+
tar vxf src.tar.gz --strip-components=1
107+
cmake -S . -B build.d -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/amd64-unknown-openbsd-3rdroot -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=OFF -DJANSSON_BUILD_SHARED_LIBS=OFF -DCMAKE_C_STANDARD=99 -DCMAKE_C_STANDARD_REQUIRED=ON -DPCRE2_BUILD_PCRE2_8=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2_BUILD_PCRE2GREP=OFF -DPCRE2_BUILD_TESTS=OFF -DPCRE2_SUPPORT_VALGRIND=OFF -DPCRE2_SUPPORT_UNICODE=ON
108+
cmake --build build.d
109+
cmake --install build.d
110+
111+
- run: rm ${{ github.workspace }}/amd64-unknown-openbsd-3rdroot/lib/lib*.so
112+
113+
- run: ./autogen.sh
114+
- run: |
115+
./configure --host=amd64-unknown-openbsd --prefix=${{ github.workspace }}/uctags-openbsd-amd64 || {
116+
cat config.log
117+
exit 1
118+
}
119+
- run: cat config.log
120+
- run: make V=1
121+
- run: make install
122+
123+
- run: readelf -h ctags
124+
- run: readelf -d ctags
125+
- run: file ctags | grep OpenBSD

0 commit comments

Comments
 (0)