OSDN Git Service

[VM][FM77AV][VRAM] More use SIMD to be faster.
[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=3.9
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 if [ -e ./buildvars.dat ] ; then
14     . ./buildvars.dat
15 fi
16 case ${BUILD_TOOLCHAIN} in
17    "LLVM" | "llvm" | "CLANG" | "clang" )
18           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_win32_cross_linux_llvm.cmake"
19           . ./params/buildvars_linux_params_llvm.dat
20           echo "Setup for LLVM"
21           ;;
22    "GCC" | "gcc" | "GNU" )
23           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
24           . ./params/buildvars_linux_params_gcc.dat
25           echo "Setup for GCC"
26           ;;
27    * )
28           #TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
29           . ./params/buildvars_linux_params_gcc.dat
30           echo "ASSUME GCC"
31           ;;
32 esac   
33
34 case ${STRIP_SYMBOLS} in
35    "Yes" | "yes" | "YES" )
36      MAKEFLAGS_BASE2="-s ${MAKEFLAGS_BASE2}"
37      MAKEFLAGS_LINK_BASE="-s ${MAKEFLAGS_LINK_BASE2}"
38      MAKEFLAGS_DLL_LINK_BASE="-s ${MAKEFLAGS_DLL_LINK_BASE}"
39      MAKEFLAGS_DLL_BASE="${MAKEFLAGS_DLL_LINK_BASE}"
40    ;;
41    "No" | "no" | "NO" | * )
42      MAKEFLAGS_BASE2="-g -ggdb ${COMPRESS_CFLAGS} ${MAKEFLAGS_BASE2}"
43      MAKEFLAGS_LINK_BASE="-g -ggdb ${COMPRESS_CFLAGS} ${MAKEFLAGS_LINK_BASE2}"
44      MAKEFLAGS_DLL_LINK_BASE="-g -ggdb ${COMPRESS_CFLAGS} ${MAKEFLAGS_DLL_LINK_BASE}"
45      MAKEFLAGS_DLL_BASE="${MAKEFLAGS_DLL_LINK_BASE}"
46    ;;
47 esac
48 #################
49 #
50 #
51 MAKEFLAGS_CXX="${MAKEFLAGS_BASE2}"
52 MAKEFLAGS_CC="${MAKEFLAGS_BASE2}"
53 MAKEFLAGS_LIB_CXX="${MAKEFLAGS_DLL_BASE}"
54 MAKEFLAGS_LIB_CC="${MAKEFLAGS_DLL_BASE}"
55
56 ###################
57 #
58 #
59 if [ -n "${FFMPEG_DIR}" ]; then \
60    CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DLIBAV_ROOT_DIR=${FFMPEG_DIR}"
61 fi
62 if [ -n "${QT5_DIR}" ]; then \
63    CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG}  -DQT5_ROOT_PATH=${QT5_DIR}"
64 fi
65
66 #################################
67 #
68 #
69 function build_dll() {
70     # $1 = dir
71     mkdir -p $1/build
72     cd $1/build
73     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
74     ${CMAKE} -DCMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
75              -DCMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
76              "-DLIBCSP_INSTALL_DIR:STRING=${LIB_INSTALL}" \
77              ${CMAKE_FLAGS1} \
78              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
79              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
80              "${CMAKE_FLAGS4}" \
81              ${CMAKE_APPENDFLAG} \
82              .. | tee make.log
83     
84     ${CMAKE} -DCMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
85              -DCMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
86              "-DLIBCSP_INSTALL_DIR:STRING=${LIB_INSTALL}" \
87              ${CMAKE_FLAGS1} \
88              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
89              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
90              "${CMAKE_FLAGS4}" \
91              ${CMAKE_APPENDFLAG} \
92              .. | tee -a make.log
93     
94     make clean
95     make ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
96     _STATUS=${PIPESTATUS[0]}
97     echo -e "$1 at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
98     case ${_STATUS} in
99         0 ) sudo make install 2>&1 | tee -a ./make.log ;;
100         * ) 
101             echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
102             exit ${_STATUS}
103             ;;
104     esac
105     
106     make clean
107     cd ../..
108 }
109
110 case ${BUILD_TYPE} in
111     "Debug" | "DEBUG" | "debug" ) 
112             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=debug"
113             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_DEBUG:STRING"
114             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_DEBUG:STRING"
115             ;;
116     "Release" | "RELEASE" | "release" ) 
117             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Release"
118             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELEASE:STRING"
119             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELEASE:STRING"
120             ;;
121     "Relwithdebinfo" | "RELWITHDEBINFO" | "relwithdebinfo" ) 
122             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Relwithdebinfo"
123             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING"
124             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING"
125             ;;
126      * )
127             echo "Specify BUILD_TYPE in buildvars.dat to Debug, Release, Relwithdebinfo."
128             exit -1
129             ;;
130 esac
131
132 # libCSPGui
133 echo "Make status." > ${MAKE_STATUS_FILE}
134 echo "Started at `date --rfc-2822`:" >> ${MAKE_STATUS_FILE}
135 case ${USE_COMMON_DEVICE_LIB} in
136    "Yes" | "yes" | "YES" )
137    CMAKE_FLAGS4="-DUSE_DEVICES_SHARED_LIB=ON"
138    build_dll libCSPcommon_vm
139    ;;
140    * )
141    CMAKE_FLAGS4=""
142    ;;
143 esac
144
145 case ${USE_COMMON_DEVICE_LIB} in
146    "Yes" | "yes" | "YES" )
147            build_dll libCSPfmgen
148            build_dll libCSPavio
149            build_dll libCSPgui
150            build_dll libCSPosd
151            build_dll libCSPemu_utils
152            ;;
153    "No" | "no" | "NO" | * )
154            build_dll libCSPavio
155            build_dll libCSPgui
156            build_dll libCSPosd
157            ;;
158 esac
159
160 for SRCDATA in $@ ; do\
161
162     mkdir -p ${SRCDATA}/build
163     cd ${SRCDATA}/build
164     
165     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
166     ${CMAKE} -D CMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
167              -D CMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
168              ${CMAKE_FLAGS1} \
169              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
170              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
171              "${CMAKE_FLAGS4}" \
172              ${CMAKE_APPENDFLAG} \
173              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${MAKEFLAGS_LINK_BASE}" \
174              .. | tee make.log
175     ${CMAKE} -D CMAKE_C_COMPILER:STRING=${CCMAKE_CC}  \
176              -D CMAKE_CXX_COMPILER:STRING=${CCMAKE_CXX} \
177              ${CMAKE_FLAGS1} \
178              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
179              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
180              "${CMAKE_FLAGS4}" \
181              ${CMAKE_APPENDFLAG} \
182              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${MAKEFLAGS_LINK_BASE}" \
183              .. | tee -a make.log
184     
185     
186     make clean
187     
188     make ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
189     _STATUS=${PIPESTATUS[0]}
190     echo -e "${SRCDATA} at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
191
192     case ${_STATUS} in
193       0 ) sudo make install 2>&1 | tee -a ./make.log ;;
194       * ) 
195            echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
196            #exit ${_STATUS}
197            ;;
198     esac
199     
200     make clean
201     cd ../..
202 done
203 echo -e "End at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
204
205 exit 0
206