1818# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21- # SOFTWARE.
21+ # SOFTWARE.
22+
23+ #! /bin/sh
24+
25+ echo " ###############################################################################" > /dev/null
26+ echo " # Script Summary: #" > /dev/null
27+ echo " # Author: yu.zuo #" > /dev/null
28+ echo " # Update Date: 2020.05.28 #" > /dev/null
29+ echo " # Script version: 1.0.0 #" > /dev/null
30+ echo " # Url: https://github.com/AsteriskZuo/simple-build-ios-and-android-script #" > /dev/null
31+ echo " # #" > /dev/null
32+ echo " # Brief introduction: #" > /dev/null
33+ echo " # Build android protobuf shell script. #" > /dev/null
34+ echo " # #" > /dev/null
35+ echo " # Prerequisites: #" > /dev/null
36+ echo " # GNU bash (version 3.2.57 test success on macOS) #" > /dev/null
37+ echo " # #" > /dev/null
38+ echo " # Reference: #" > /dev/null
39+ echo " # Url: https://github.com/AsteriskZuo/openssl_for_ios_and_android #" > /dev/null
40+ echo " ###############################################################################" > /dev/null
41+
42+ # set -x
43+
44+ protobuf_zip_file=" "
45+ protobuf_zip_file_no_suffix=" "
46+ protobuf_zip_file_path=" "
47+ protobuf_zip_file_no_suffix_path=" "
48+ protobuf_input_dir=" "
49+ protobuf_output_dir=" "
50+
51+ function android_protobuf_printf_variable() {
52+ log_var_print " protobuf_input_dir = $protobuf_input_dir "
53+ log_var_print " protobuf_output_dir = $protobuf_output_dir "
54+ log_var_print " protobuf_zip_file = $protobuf_zip_file "
55+ log_var_print " protobuf_zip_file_no_suffix = $protobuf_zip_file_no_suffix "
56+ log_var_print " protobuf_zip_file_path = $protobuf_zip_file_path "
57+ log_var_print " protobuf_zip_file_no_suffix_path = $protobuf_zip_file_no_suffix_path "
58+ }
59+
60+ function android_protobuf_pre_tool_check() {
61+
62+ local protobuf_version=$( protoc --version)
63+ util_is_in " $COMMON_LIBRARY_VERSION " " $protobuf_version " || common_die " Protobuf is not installed on the system, see the protobuf installation instructions. (ref: https://github.com/protocolbuffers/protobuf/blob/master/src/README.md)"
64+
65+ protobuf_input_dir=" ${COMMON_INPUT_DIR} /${COMMON_LIBRARY_NAME} "
66+ protobuf_output_dir=" ${COMMON_OUTPUT_DIR} /${COMMON_PLATFORM_TYPE} /${COMMON_LIBRARY_NAME} "
67+
68+ protobuf_zip_file=" ${COMMON_DOWNLOAD_ADRESS##*/ } "
69+ protobuf_zip_file_no_suffix=$( util_remove_substr " cpp-" ${protobuf_zip_file% .tar.gz} )
70+ protobuf_zip_file_path=" ${protobuf_input_dir} /${protobuf_zip_file} "
71+ protobuf_zip_file_no_suffix_path=" ${protobuf_input_dir} /${protobuf_zip_file_no_suffix} "
72+
73+ util_create_dir " ${protobuf_input_dir} "
74+ util_create_dir " ${protobuf_output_dir} "
75+
76+ android_protobuf_printf_variable
77+
78+ }
79+
80+ function android_protobuf_pre_download_zip() {
81+ local library_id=$1
82+ util_download_file " $COMMON_DOWNLOAD_ADRESS " " $protobuf_zip_file_path "
83+ }
84+
85+ function android_protobuf_build_unzip() {
86+ local library_id=$1
87+ util_unzip " $protobuf_zip_file_path " " ${protobuf_input_dir} " " $protobuf_zip_file_no_suffix "
88+ }
89+
90+ function android_protobuf_build_config_make() {
91+ local library_id=$1
92+ local library_arch=$2
93+
94+ local library_arch_path=" ${protobuf_output_dir} /${library_arch} "
95+ util_remove_dir " $library_arch_path "
96+ util_create_dir " ${library_arch_path} /log"
97+
98+ android_set_toolchain " ${COMMON_LIBRARY_NAME} " " ${library_arch} " " ${ANDROID_API} "
99+ android_set_cpu_feature " ${COMMON_LIBRARY_NAME} " " ${library_arch} " " ${ANDROID_API} "
100+
101+ export LDFLAGS=" $LDFLAGS -Wunused-command-line-argument -llog"
102+
103+ android_printf_arch_variable
104+
105+ pushd .
106+ cd " $protobuf_zip_file_no_suffix_path "
107+
108+ if [[ " ${library_arch} " == " x86-64" ]]; then
109+
110+ ./configure --host=$( android_get_build_host " ${library_arch} " ) --prefix=" ${library_arch_path} " --with-protoc=protobuf_command > " ${library_arch_path} /log/output.log" 2>&1 || common_die " configure error!"
111+
112+ elif [[ " ${library_arch} " == " x86" ]]; then
113+
114+ ./configure --host=$( android_get_build_host " ${library_arch} " ) --prefix=" ${library_arch_path} " --with-protoc=protobuf_command > " ${library_arch_path} /log/output.log" 2>&1 || common_die " configure error!"
115+
116+ elif [[ " ${library_arch} " == " armeabi-v7a" ]]; then
117+
118+ ./configure --host=$( android_get_build_host " ${library_arch} " ) --prefix=" ${library_arch_path} " --with-protoc=protobuf_command > " ${library_arch_path} /log/output.log" 2>&1 || common_die " configure error!"
119+
120+ elif [[ " ${library_arch} " == " arm64-v8a" ]]; then
121+
122+ ./configure --host=$( android_get_build_host " ${library_arch} " ) --prefix=" ${library_arch_path} " --with-protoc=protobuf_command > " ${library_arch_path} /log/output.log" 2>&1 || common_die " configure error!"
123+
124+ else
125+ common_die " not support $library_arch "
126+ fi
127+
128+ echo " [${COMMON_LIBRARY_NAME} _make_clean]" >> " ${library_arch_path} /log/output.log"
129+ make clean >> " ${library_arch_path} /log/output.log" 2>&1 || common_die " make clean error!"
130+
131+ echo " [${COMMON_LIBRARY_NAME} _make]" >> " ${library_arch_path} /log/output.log"
132+ make -j$( util_get_cpu_count) >> " ${library_arch_path} /log/output.log" 2>&1 || common_die " make error!"
133+
134+ # echo "[${COMMON_LIBRARY_NAME}_make_check]" >>"${library_arch_path}/log/output.log"
135+ # make check >>"${library_arch_path}/log/output.log" 2>&1 || common_die "make check error!"
136+
137+ echo " [${COMMON_LIBRARY_NAME} _make_install]" >> " ${library_arch_path} /log/output.log"
138+ make install >> " ${library_arch_path} /log/output.log" 2>&1 || common_die " make install error!"
139+
140+ popd
141+ }
142+
143+ function android_protobuf_archive() {
144+ local library_name=$1
145+ }
0 commit comments