OSDN Git Service

[BUILD] Update batch files.
[csp-qt/common_source_project-fm7.git] / source / build-cmake / config_build_cross_win32.sh
1 #!/bin/bash
2
3 CMAKE=/usr/bin/cmake
4
5 BUILD_TYPE="Relwithdebinfo"
6 CMAKE_APPENDFLAG=""
7 export WINEDEBUG="-all"
8 CMAKE_LINKFLAG=""
9 CMAKE_APPENDFLAG=""
10 MAKEFLAGS_GENERAL="-j4"
11 MAKE_STATUS_FILE="./000_make_status_config_build_cross_win32.log"
12
13 export WCLANG_FORCE_CXX_EXCEPTIONS=1
14
15 mkdir -p ./bin-win32/
16
17 if [ -e ./buildvars_mingw_cross_win32.dat ] ; then
18     . ./buildvars_mingw_cross_win32.dat
19 fi
20 case ${BUILD_TOOLCHAIN} in
21    "LLVM" | "llvm" | "CLANG" | "clang" )
22           TOOLCHAIN_SCRIPT="../../cmake/toolchain_win32_cross_linux_llvm.cmake"
23           . ./params/buildvars_mingw_params_llvm.dat
24           echo "Setup for LLVM"
25           ;;
26    "GCC" | "gcc" | "GNU" )
27           TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
28           . ./params/buildvars_mingw_params_gcc.dat
29           echo "Setup for GCC"
30           ;;
31    * )
32           TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
33           . ./params/buildvars_mingw_params_gcc.dat
34           echo "ASSUME GCC"
35           ;;
36 esac   
37
38 CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DLIBAV_ROOT_DIR=${FFMPEG_DIR}"
39
40 case ${USE_LTO} in
41    "Yes" | "yes" | "YES" )
42      MAKEFLAGS_BASE2="-flto ${MAKEFLAGS_BASE2}"
43      MAKEFLAGS_LINK_BASE="-flto ${MAKEFLAGS_BASE2}"
44    ;;
45    "No" | "no" | "NO" | * )
46      MAKEFLAGS_BASE2="-flto ${MAKEFLAGS_BASE2}"
47      MAKEFLAGS_LINK_BASE="-flto ${MAKEFLAGS_BASE2}"
48    ;;
49 esac
50
51 case ${STRIP_SYMBOLS} in
52    "Yes" | "yes" | "YES" )
53      MAKEFLAGS_BASE2="-s ${MAKEFLAGS_BASE2}"
54      MAKEFLAGS_LINK_BASE="-s ${MAKEFLAGS_LINK_BASE}"
55    ;;
56    "No" | "no" | "NO" | * )
57      MAKEFLAGS_BASE2="-g -ggdb ${MAKEFLAGS_BASE2}"
58      MAKEFLAGS_LINK_BASE="-g -ggdb ${MAKEFLAGS_LINK_BASE}"
59    ;;
60 esac
61 ###########################
62 #
63 #
64 MAKEFLAGS_CXX="${MAKEFLAGS_BASE2} "
65 MAKEFLAGS_CC="${MAKEFLAGS_BASE2}"
66 MAKEFLAGS_LIB_CXX="${ADDITIONAL_MAKEFLAGS_LINK_LIB} ${MAKEFLAGS_BASE2}"
67 MAKEFLAGS_LIB_CC="${ADDITIONAL_MAKEFLAGS_LINK_LIB}  ${MAKEFLAGS_BASE2}"
68
69 CMAKE_LINKFLAG="${ADDITIONAL_MAKEFLAGS_LINK_EXE}  ${MAKEFLAGS_LINK_BASE}"
70 CMAKE_DLL_LINKFLAG="${ADDITIONAL_MAKEFLAGS_LINK_DLL}  ${MAKEFLAGS_LINK_BASE}"
71
72 # To use MOC, please enable wine as interpreter of EXEs , below:
73 # $ sudo update-binfmts --install Win32_Wine /usr/bin/wine --extension exe . 
74 # Compatible with GCC-4.9 (-fabi-version=8)
75 MAKEFLAGS_CXX="${MAKEFLAGS_CXX} -DWINVER=0x501"
76 MAKEFLAGS_CC="${MAKEFLAGS_CC} -DWINVER=0x501"
77
78 MAKEFLAGS_LIB_CXX="${MAKEFLAGS_LIB_CXX} -DWINVER=0x501"
79 MAKEFLAGS_LIB_CC="${MAKEFLAGS_LIB_CC} -DWINVER=0x501"
80
81 function build_dll() {
82     mkdir -p $1/build-win32
83     cd $1/build-win32
84     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
85     ${CMAKE} -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_SCRIPT} \
86              ${CMAKE_FLAGS1} \
87              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
88              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
89              "${CMAKE_FLAGS4}" \
90              "-DUSE_SDL2=ON" \
91              ${CMAKE_APPENDFLAG} \
92              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_LINKFLAG}" \
93              "-DCMAKE_CROSSCOMPILING=true"\
94         .. | tee make.log
95     
96     ${CMAKE} ${CMAKE_FLAGS1} \
97              "${CMAKE_FLAGS2}=${MAKEFLAGS_LIB_CXX}" \
98              "${CMAKE_FLAGS3}=${MAKEFLAGS_LIB_CC}" \
99              "${CMAKE_FLAGS4}" \
100              "-DUSE_SDL2=ON" \
101              ${CMAKE_APPENDFLAG} \
102              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_LINKFLAG}" \
103              .. | tee -a make.log
104     
105     make clean
106     
107     make ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
108     _STATUS=${PIPESTATUS[0]}
109     echo -e "$1 at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
110    case ${_STATUS} in
111      0 )
112           ;;
113      * ) 
114           echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
115           #exit ${_STATUS}
116           ;;
117     esac
118     cd ../../
119 }
120
121 case ${BUILD_TYPE} in
122     "Debug" | "DEBUG" | "debug" ) 
123             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=debug"
124             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_DEBUG:STRING"
125             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_DEBUG:STRING"
126             ;;
127     "Release" | "RELEASE" | "release" ) 
128             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Release"
129             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELEASE:STRING"
130             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELEASE:STRING"
131             ;;
132     "Relwithdebinfo" | "RELWITHDEBINFO" | "relwithdebinfo" ) 
133             CMAKE_FLAGS1="-DCMAKE_BUILD_TYPE:STRING=Relwithdebinfo"
134             CMAKE_FLAGS2="-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING"
135             CMAKE_FLAGS3="-DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING"
136             ;;
137      * )
138             echo "Specify BUILD_TYPE in buildvars.dat to Debug, Release, Relwithdebinfo."
139             exit -1
140             ;;
141 esac
142
143 # libCSPGui
144 case ${USE_COMMON_DEVICE_LIB} in
145    "Yes" | "yes" | "YES" )
146    CMAKE_FLAGS4="-DUSE_DEVICES_SHARED_LIB=ON"
147    ;;
148    * )
149    CMAKE_FLAGS4=""
150    ;;
151 esac
152
153 echo "Make status." > ${MAKE_STATUS_FILE}
154 echo "Started at `date --rfc-2822`:" >> ${MAKE_STATUS_FILE}
155 build_dll libCSPemu_utils
156 echo $PWD
157 cp  ./libCSPemu_utils/build-win32/qt/emuutils/*.h   ./bin-win32/
158 cp  ./libCSPemu_utils/build-win32/qt/emuutils/*.dll ./bin-win32/
159 cp  ./libCSPemu_utils/build-win32/qt/emuutils/*.a   ./bin-win32/
160
161 build_dll libCSPfmgen
162 cp ./libCSPfmgen/build-win32/vm/fmgen/*.h   ./bin-win32/
163 cp ./libCSPfmgen/build-win32/vm/fmgen/*.dll ./bin-win32/
164 cp ./libCSPfmgen/build-win32/vm/fmgen/*.a   ./bin-win32/
165
166 case ${USE_COMMON_DEVICE_LIB} in
167    "Yes" | "yes" | "YES" )
168    build_dll libCSPcommon_vm
169 #   cp ./libCSPcommon_vm/build-win32/vm/common_vm/*.h   ./bin-win32/
170 #   cp ./libCSPcommon_vm/build-win32/vm/common_vm/*.dll ./bin-win32/
171    cp ./libCSPcommon_vm/build-win32/vm/common_vm/*.a   ./bin-win32/
172    ;;
173    * )
174    ;;
175 esac
176
177 build_dll libCSPavio
178 #cp ./libCSPavio/build-win32/qt/avio/*.h   ./bin-win32/
179 #cp ./libCSPavio/build-win32/qt/avio/*.dll ./bin-win32/
180 cp ./libCSPavio/build-win32/qt/avio/*.a   ./bin-win32/
181
182 build_dll libCSPosd
183 #cp ./libCSPosd/build-win32/qt/osd/*.h   ./bin-win32/
184 #cp ./libCSPosd/build-win32/qt/osd/*.dll ./bin-win32/
185 cp ./libCSPosd/build-win32/qt/osd/*.a   ./bin-win32/
186
187 build_dll libCSPgui
188 cp ./libCSPgui/build-win32/qt/gui/*.h   ./bin-win32/
189 cp ./libCSPgui/build-win32/qt/gui/*.dll ./bin-win32/
190 cp ./libCSPgui/build-win32/qt/gui/*.a   ./bin-win32/
191
192 for SRCDATA in $@ ; do\
193
194     mkdir -p ${SRCDATA}/build-win32
195     cd ${SRCDATA}/build-win32
196     
197     echo ${CMAKE_FLAGS1} ${CMAKE_FLAGS2}
198     ${CMAKE} -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_SCRIPT} \
199              ${CMAKE_FLAGS1} \
200              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
201              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
202              "${CMAKE_FLAGS4}" \
203              "-DUSE_SDL2=ON" \
204              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_LINKFLAG}" \
205              ${CMAKE_APPENDFLAG} \
206              .. | tee make.log
207
208     ${CMAKE} ${CMAKE_FLAGS1} \
209              "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
210              "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
211              "${CMAKE_FLAGS4}" \
212              "-DUSE_SDL2=ON" \
213              "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_LINKFLAG}" \
214              ${CMAKE_APPENDFLAG} \
215              .. | tee -a make.log
216
217     make clean
218     
219     make ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
220     _STATUS=${PIPESTATUS[0]}
221     echo -e "${SRCDATA} at `date --rfc-2822`:" "${_STATUS}" >> ../../${MAKE_STATUS_FILE}
222     case ${_STATUS} in
223       0 ) cp ./qt/common/*.exe ../../bin-win32/ ;;
224       * )
225           echo -e "Abort at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
226           #exit ${_STATUS}
227           ;;
228     esac
229     
230     make clean
231     cd ../..
232 done
233
234 echo -e "End at `date --rfc-2822`." >> ../../${MAKE_STATUS_FILE}
235
236 for ii in libCSPavio libCSPgui libCSPosd libCSPemu_utils; do
237     cd $ii/build-win32
238     make clean
239     cd ../..
240 done
241
242 exit 0
243