OSDN Git Service

.
[csp-qt/common_source_project-fm7.git] / source / build-cmake / config_build.sh
1 #!/bin/bash
2
3 CMAKE=/usr/bin/cmake
4 CCMAKE_CC=gcc-6
5 CCMAKE_CXX=g++-6
6 LLVM_VERSION=7
7 LIB_INSTALL="/usr/local/lib/x86_64-linux-gnu/"
8 MAKE_STATUS_FILE="./000_make_status_config_build.log"
9 AFFINITY_MAKE="make" 
10
11 BUILD_TYPE="Relwithdebinfo"
12
13 #MAJOR_ARCH="IA32"
14 MAJOR_ARCH="AMD64"
15 #MAJOR_ARCH="ARM32"
16 #MAJOR_ARCH="ARM64"
17
18 CMAKE_APPENDFLAG=""
19
20 echo "Make status." > ${MAKE_STATUS_FILE}
21 echo "Started at `date --rfc-2822`:" >> ${MAKE_STATUS_FILE}
22
23 if [ -e ./buildvars.dat ] ; then
24     . ./buildvars.dat
25 else
26     echo "WARN: Config file does not exist." >> ${MAKE_STATUS_FILE}
27     echo "WARN: Read configs from templete." >> ${MAKE_STATUS_FILE}
28     . ./buildvars.dat.tmpl
29 fi
30
31 #Check if LD_LIBRARY_PATH includes in LIB_INSTALL
32
33 typeset -i __res
34 __res=0;
35 nr_list=`/bin/ls /etc/ld.so.conf.d/*.conf`
36 __DIR=`echo ${LIB_INSTALL} | sed 's/\/$//'`
37 echo ${__DIR}
38 for __FILE in ${nr_list} ; do \
39   if [ -z `echo ${__FILE} | grep "zz_"` ] ; then
40      _t=`grep -e ${__DIR} ${__FILE}`
41      if grep -e ${__DIR} ${__FILE} > /dev/null ; then
42         __res=1
43      fi
44   fi
45 done
46
47 if [ ${__res} -eq 0 ] ; then
48   if [ -z `printenv LD_LIBRARY_PATH | grep ${LIB_INSTALL}` ] ; then
49     echo 'WARN: NO ${LIB_INSTALL} exists $LD_LIBRARY_PATH' >> ${MAKE_STATUS_FILE}
50     __res=0
51   else
52     __res=1
53   fi
54 fi
55
56 if [ ${__res} -eq 0 ] ; then
57    echo "FALLBACK ${LIB_INSTALL} to /usr/local/lib ." >> ${MAKE_STATUS_FILE}
58    LIB_INSTALL="/usr/local/lib"
59 fi
60
61 case ${BUILD_TOOLCHAIN} in
62    "LLVM" | "llvm" | "CLANG" | "clang" )
63           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_win32_cross_linux_llvm.cmake"
64           . ./params/buildvars_linux_params_llvm.dat
65           echo "Setup for LLVM"
66           ;;
67    "GCC" | "gcc" | "GNU" )
68           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
69           . ./params/buildvars_linux_params_gcc.dat
70           echo "Setup for GCC"
71           ;;
72    * )
73           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
74           . ./params/buildvars_linux_params_gcc.dat
75           echo "ASSUME GCC"
76           ;;
77 esac   
78
79 case ${STRIP_SYMBOLS} in
80    "Yes" | "yes" | "YES" )
81      MAKEFLAGS_BASE2="-s ${MAKEFLAGS_BASE2}"
82      MAKEFLAGS_LINK_BASE="-s ${MAKEFLAGS_LINK_BASE2}"
83      MAKEFLAGS_DLL_LINK_BASE="-s ${MAKEFLAGS_DLL_LINK_BASE}"
84      MAKEFLAGS_DLL_BASE="-s ${MAKEFLAGS_DLL_BASE}"
85    ;;
86    "No" | "no" | "NO" | * )
87      MAKEFLAGS_BASE2="${MAKEFLAGS_BASE2}"
88      MAKEFLAGS_LINK_BASE="${MAKEFLAGS_LINK_BASE2}"
89      MAKEFLAGS_DLL_LINK_BASE="${MAKEFLAGS_DLL_LINK_BASE}"
90      MAKEFLAGS_DLL_BASE="${MAKEFLAGS_DLL_BASE}"
91    ;;
92 esac
93 #################
94 #
95 #
96 MAKEFLAGS_CXX="${MAKEFLAGS_BASE2}"
97 MAKEFLAGS_CC="${MAKEFLAGS_BASE2}"
98 MAKEFLAGS_LIB_CXX="${MAKEFLAGS_DLL_BASE}"
99 MAKEFLAGS_LIB_CC="${MAKEFLAGS_DLL_BASE}"
100
101 ###################
102 #
103 #
104 if [ -n "${FFMPEG_DIR}" ]; then \
105    CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DLIBAV_ROOT_DIR=${FFMPEG_DIR}"
106 fi
107 if [ -n "${QT5_DIR}" ]; then \
108    CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG}  -DQT5_ROOT_PATH=${QT5_DIR}"
109 fi
110
111 #################################
112 #
113 #
114 function build_dll() {
115     # $1 = dir
116     mkdir -p $1/build
117     cd $1/build
118     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
119     ${CMAKE} -DCMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
120              -DCMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
121              -DCOTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES=1 \
122              -DCOTIRE_ADD_CLEAN=0 \
123              "-DLIBCSP_INSTALL_DIR:STRING=${LIB_INSTALL}" \
124              ${CMAKE_FLAGS1} \
125              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
126              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
127              "${CMAKE_FLAGS4}" \
128              ${CMAKE_APPENDFLAG} \
129              .. | tee make.log
130     
131     ${CMAKE} -DCMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
132              -DCMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
133              -DCOTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES=1 \
134              -DCOTIRE_ADD_CLEAN=0 \
135              "-DLIBCSP_INSTALL_DIR:STRING=${LIB_INSTALL}" \
136              ${CMAKE_FLAGS1} \
137              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
138              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
139              "${CMAKE_FLAGS4}" \
140              ${CMAKE_APPENDFLAG} \
141              .. | tee -a make.log
142     
143     make clean
144     ${AFFINITY_MAKE} ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
145     _STATUS=${PIPESTATUS[0]}
146     echo -e "$1 at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
147     case ${_STATUS} in
148         0 ) sudo make install 2>&1 | tee -a ./make.log ;;
149         * ) 
150             echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
151             exit ${_STATUS}
152             ;;
153     esac
154     
155    make clean
156     cd ../..
157 }
158
159 case ${BUILD_TYPE} in
160     "Debug" | "DEBUG" | "debug" ) 
161             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=debug"
162             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_DEBUG:STRING"
163             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_DEBUG:STRING"
164             ;;
165     "Release" | "RELEASE" | "release" ) 
166             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Release"
167             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELEASE:STRING"
168             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELEASE:STRING"
169             ;;
170     "Relwithdebinfo" | "RELWITHDEBINFO" | "relwithdebinfo" ) 
171             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Relwithdebinfo"
172             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING"
173             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING"
174             ;;
175      * )
176             echo "Specify BUILD_TYPE in buildvars.dat to Debug, Release, Relwithdebinfo."
177             exit -1
178             ;;
179 esac
180
181 # libCSPGui
182 case ${USE_COMMON_DEVICE_LIB} in
183    "Yes" | "yes" | "YES" )
184    CMAKE_FLAGS4="-DUSE_DEVICES_SHARED_LIB=ON"
185    build_dll libCSPcommon_vm
186    ;;
187    * )
188    CMAKE_FLAGS4=""
189    ;;
190 esac
191
192 case ${USE_COMMON_DEVICE_LIB} in
193    "Yes" | "yes" | "YES" )
194            build_dll libCSPfmgen
195            build_dll libCSPavio
196            build_dll libCSPgui
197            build_dll libCSPosd
198            build_dll libCSPemu_utils
199            ;;
200    "No" | "no" | "NO" | * )
201            build_dll libCSPavio
202            build_dll libCSPgui
203            build_dll libCSPosd
204            ;;
205 esac
206
207 typeset -i SUCCESS_COUNT
208 SUCCESS_COUNT=0
209
210 typeset -i FAIL_COUNT
211 FAIL_COUNT=0
212
213 for SRCDATA in $@ ; do\
214
215     mkdir -p ${SRCDATA}/build
216     cd ${SRCDATA}/build
217     
218     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
219     ${CMAKE} -D CMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
220              -D CMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
221              -DCOTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES=1 \
222              -DCOTIRE_ADD_CLEAN=0 \
223              ${CMAKE_FLAGS1} \
224              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
225              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
226              "${CMAKE_FLAGS4}" \
227              ${CMAKE_APPENDFLAG} \
228              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${MAKEFLAGS_LINK_BASE}" \
229              .. | tee make.log
230     ${CMAKE} -D CMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
231              -D CMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
232              ${CMAKE_FLAGS1} \
233              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
234              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
235              "${CMAKE_FLAGS4}" \
236              ${CMAKE_APPENDFLAG} \
237              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${MAKEFLAGS_LINK_BASE}" \
238              .. | tee -a make.log
239     
240     
241     make clean
242     
243     ${AFFINITY_MAKE}  ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
244     _STATUS=${PIPESTATUS[0]}
245     echo -e "${SRCDATA} at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
246
247     case ${_STATUS} in
248       0 )
249          SUCCESSS_COUNT=$((++SUCCESS_COUNT))
250          sudo make install 2>&1 | tee -a ./make.log 
251          ;;
252       * ) 
253            FAIL_COUNT=$((++FAIL_COUNT))
254            echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
255            #exit ${_STATUS}
256            ;;
257     esac
258     
259     make clean
260     cd ../..
261 done
262 echo -e "VM BUILD:Successed ${SUCCESS_COUNT} / Failed ${FAIL_COUNT}" >> ./${MAKE_STATUS_FILE}
263 echo -e "End at `date --rfc-2822`." >> ./${MAKE_STATUS_FILE}
264
265 exit 0
266