OSDN Git Service

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