Guest User

rollut.sh

a guest
Mar 1st, 2025
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 11.15 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. config=( "debug" "release" )
  4. link=( "static" "shared")
  5. runtime=( "static" "shared" )
  6.  
  7. generate_bat()
  8. {
  9.     project=$1
  10.     project_path=$2
  11.     project_buildline=$3
  12.    
  13.     for c in "${config[@]}"
  14.     do
  15.         for l in "${link[@]}"
  16.         do
  17.             for r in "${runtime[@]}"
  18.             do
  19.             build_shared='False'
  20.             build_static='True'
  21.             if [[ "$l" == "shared" ]]; then
  22.                 build_shared='True'
  23.                 build_static='False'
  24.             fi
  25.            
  26.             cmake_runtime_link=''
  27.             build_runtime_static='True'
  28.             build_runtime_shared='False'
  29.             if [[ "$r" == "shared" ]]; then
  30.                 cmake_runtime_link='DLL'
  31.                 build_runtime_static='False'
  32.                 build_runtime_shared='True'
  33.             fi
  34.            
  35.             cmake_runtime_config=''
  36.             if [[ "$c" == "debug" ]]; then
  37.                 cmake_runtime_config='Debug'
  38.             fi
  39.  
  40.                 cat <<EOD
  41. set PROJECT=$project
  42. set PROJECT_DIR="$project_path"
  43. set RUNTIME=$r
  44. set LINKAGE=$l
  45. set CONFIGURATION=$c
  46. set BUILD_SHARED_LIBS=$build_shared
  47. set BUILD_STATIC_LIBS=$build_static
  48. set BUILD_RUNTIME_STATIC=$build_runtime_static
  49. set BUILD_RUNTIME_SHARED=$build_runtime_shared
  50. set CMAKE_RUNTIME=MultiThreaded${cmake_runtime_config}${cmake_runtime_link}
  51.  
  52. $project_buildline
  53.  
  54. EOD
  55.             done
  56.         done
  57.     done
  58. }
  59.  
  60. generate_cygwin()
  61. {
  62.     project=$1
  63.     project_path=$2
  64.     project_buildline=$3
  65.    
  66.     for c in "${config[@]}"
  67.     do
  68.         for l in "${link[@]}"
  69.         do
  70.             for r in "${runtime[@]}"
  71.             do
  72.             build_shared='no'
  73.             build_static='yes'
  74.             msvc_link=""
  75.            
  76.             if [[ "$l" == "shared" ]]; then
  77.                 build_shared='yes'
  78.                 build_static='no'
  79.                 msvc_link="/D_DLL"
  80.             fi
  81.            
  82.             runtime_link='/MT'
  83.             if [[ "$r" == "shared" ]]; then
  84.                 runtime_link='/MD'
  85.             fi
  86.            
  87.             runtime_config=''
  88.             DEFAULT_FLAGS="$DEFAULT_RELEASE_FLAGS"
  89.             if [[ "$c" == "debug" ]]; then
  90.                 runtime_config='d'
  91.                 DEFAULT_FLAGS="$DEFAULT_DEBUG_FLAGS"
  92.             fi
  93.  
  94.                 cat <<EOD
  95. PROJECT=$project
  96. PROJECT_DIR="\$(cygpath -u '$project_path')"
  97.        
  98. RUNTIME=$r
  99. LINKAGE=$l
  100. CONFIGURATION=$c
  101. BUILD_SHARED_LIBS=$build_shared
  102. BUILD_STATIC_LIBS=$build_static
  103.        
  104. (cd \${PROJECT_DIR}; [ ! -f ./configure ] && ./autogen.sh)
  105.  
  106. DEFAULT_FLAGS="$DEFAULT_FLAGS"
  107. RUNTIME_FLAG=${runtime_link}${runtime_config}
  108. CLFLAGS="\${RUNTIME_FLAG} \${DEFAULT_FLAGS}"
  109. LDFLAGS="-L/\${PROJECT}/lib"
  110.  
  111. $project_buildline
  112.  
  113. EOD
  114.             done
  115.         done
  116.     done
  117. }
  118.  
  119.  
  120. HEADER=$(cat <<EOD
  121. rem set "CUDA_BIN_PATH=c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/"
  122. rem set "CUDA_NVCC_EXECUTABLE=%CUDA_BIN_PATH%/bin/nvcc.exe"
  123.  
  124. set CMAKE_GLOBAL_OPTIONS=-DCMAKE_POSITION_INDEPENDENT_CODE=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCUDA_TOOLKIT_ROOT_DIR="c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/"
  125. set INSTALL_DIR="d:/work/env/native.env/vs.env/2019/"
  126. set CURRENT="%CD%"
  127.  
  128. EOD
  129. )
  130.  
  131. line=$(cat <<EOD
  132. cd %PROJECT_DIR% || exit
  133. b2 -j8 link=%LINKAGE% runtime-link=%RUNTIME% threading=multi variant=%CONFIGURATION% --layout=versioned --build-type=minimal --prefix=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --build-dir=%CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% architecture=x86 address-model=64 toolset=msvc-14.2 install
  134. cd %CURRENT% || exit
  135. EOD
  136. )
  137.  
  138. echo "$HEADER" > build.boost.bat
  139. generate_bat 'boost' 'd:/work/env/boost/boost_1_75_0' "$line" >> build.boost.bat
  140.  
  141. line=$(cat <<EOD
  142. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  143. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  144. EOD
  145. )
  146.  
  147. echo "$HEADER" > build.aquila.bat
  148. generate_bat 'aquila' 'D:/work/src/aquila' "$line"  >> build.aquila.bat
  149.  
  150. line=$(cat <<EOD
  151. cmake -G "Visual Studio 16 2019" -T host=x64,cuda=10.1 -A x64 -DUSE_SSE2_INSTRUCTIONS=1 -DUSE_SSE4_INSTRUCTIONS=1 -DUSE_AVX_INSTRUCTIONS=1 -DDLIB_NO_GUI_SUPPORT=Off -DDLIB_ISO_CPP_ONLY=Off -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  152. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  153. EOD
  154. )
  155.  
  156. echo "$HEADER" > build.dlib.bat
  157. generate_bat 'dlib' 'D:/work/src/dlib' "$line"  >> build.dlib.bat
  158.  
  159. line=$(cat <<EOD
  160. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  161. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  162. EOD
  163. )
  164.  
  165. echo "$HEADER" > build.freetype.bat
  166. generate_bat 'freetype' 'D:/work/src/freetype' "$line"  >> build.freetype.bat
  167.  
  168. line=$(cat <<EOD
  169. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  170. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  171. EOD
  172. )
  173.  
  174. echo "$HEADER" > build.gtest.bat
  175. generate_bat 'gtest' 'D:/work/src/googletest' "$line"  >> build.gtest.bat
  176.  
  177. line=$(cat <<EOD
  178. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DJSONCPP_WITH_TESTS=Off -DJSONCPP_WITH_POST_BUILD_UNITTEST=Off -DBUILD_STATIC_LIBS=%BUILD_STATIC_LIBS% -DBUILD_OBJECT_LIBS=Off  -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  179. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  180. EOD
  181. )
  182.  
  183. echo "$HEADER" > build.jsoncpp.bat
  184. generate_bat 'jsoncpp' 'D:/work/src/jsoncpp' "$line"  >> build.jsoncpp.bat
  185.  
  186. line=$(cat <<EOD
  187. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DwxBUILD_SHARED=%BUILD_SHARED_LIBS% -DwxBUILD_USE_STATIC_RUNTIME=%BUILD_RUNTIME_STATIC% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=Off -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  188. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  189. EOD
  190. )
  191.  
  192. echo "$HEADER" > build.wxWidgets.bat
  193. generate_bat 'wxWidgets' 'd:\work\env\wxWidgets\wxWidgets-3.2.1\' "$line"  >> build.wxWidgets.bat
  194.  
  195. line=$(cat <<EOD
  196. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DSPDLOG_BUILD_SHARED=%BUILD_SHARED_LIBS% -DSPDLOG_BUILD_EXAMPLE=Off -DSPDLOG_BUILD_EXAMPLE_HO=Off -DSPDLOG_INSTALL=On -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  197. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  198. EOD
  199. )
  200.  
  201. echo "$HEADER" > build.spdlog.bat
  202. generate_bat 'spdlog' 'D:/work/src/spdlog' "$line"  >> build.spdlog.bat
  203.  
  204. line=$(cat <<EOD
  205. cmake -G "Visual Studio 16 2019" -T host=x64 -A x64 -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_MSVC_RUNTIME_LIBRARY=%CMAKE_RUNTIME% -DCMAKE_BUILD_TYPE=%CONFIGURATION% %CMAKE_GLOBAL_OPTIONS% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -B %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% -S %PROJECT_DIR%
  206. cmake --build %CURRENT%/%LINKAGE%-%CONFIGURATION%-%RUNTIME%-runtime\%PROJECT% --config %CONFIGURATION% --target install
  207. EOD
  208. )
  209.  
  210. echo "$HEADER" > build.zlib.bat
  211. generate_bat 'zlib' 'D:/work/src/zlib' "$line" >> build.zlib.bat
  212.  
  213.  
  214. HEADER=$(cat <<'EOD'
  215. #!/bin/bash
  216.  
  217. # set -x
  218.  
  219. export CC="compile cl /nologo"
  220. export CXX="compile cl /nologo"
  221. export CPPFLAGS="/D_WIN32_WINNT=_WIN32_WINNT_WIN7 /DWIN32 /D_WIN64 /D_UNICODE /D_CRT_SECURE_NO_WARNINGS "
  222.  
  223. export LD="link"
  224. export NM="dumpbin -symbols"
  225. export STRIP=":"
  226. export AR="ar-lib lib"
  227. export RANLIB=":"
  228. export RC="windres --target=pe-x86-64"
  229. export WINDRES="windres --target=pe-x86-64"
  230.  
  231. export GNULIB_SRCDIR="$(cygpath -u 'D:/work/src/gnulib')"
  232.  
  233. DEFAULT_DEBUG_FLAGS='/Z7 /Od /D_DEBUG /RTC1'
  234. DEFAULT_RELEASE_FLAGS='/GL /Gy /Z7 /O2 /DNDEBUG /Oi'
  235.  
  236. INSTALL_DIR="$(cygpath -u 'd:/work/env/native.env/vs.env/2019/')"
  237. EOD
  238. )
  239.  
  240. line=$(cat <<'EOD'
  241.  
  242. mkdir -p "${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/${PROJECT}"
  243. pushd "${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/${PROJECT}" || return
  244.  
  245. "${PROJECT_DIR}"/configure --enable-relocatable  --enable-static=${BUILD_STATIC_LIBS} --enable-shared=${BUILD_SHARED_LIBS} --host=x86_64-w64-mingw32 --prefix=/${PROJECT} CFLAGS="${CLFLAGS}" CXXFLAGS="${CLFLAGS}"
  246. make && make install DESTDIR="${INSTALL_DIR}/${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/" && make clean all
  247.  
  248. popd || return
  249.  
  250. EOD
  251. )
  252.  
  253. echo "$HEADER" > build.libiconv.sh
  254. generate_cygwin 'iconv' 'D:/work/src/libiconv' "$line" >> build.libiconv.sh
  255.  
  256.  
  257. line=$(cat <<'EOD'
  258.  
  259. mkdir -p "${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/${PROJECT}"
  260. pushd "${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/${PROJECT}" || return
  261.  
  262. "${PROJECT_DIR}"/configure --enable-relocatable  --enable-static=${BUILD_STATIC_LIBS} --enable-shared=${BUILD_SHARED_LIBS} --host=i686-w64-mingw32 --without-iconv --without-python --prefix=/${PROJECT} CFLAGS="${CLFLAGS}" CXXFLAGS="${CLFLAGS}"
  263. make && make install DESTDIR="${INSTALL_DIR}/${LINKAGE}-${CONFIGURATION}-${RUNTIME}-runtime/" && make clean all
  264.  
  265. popd || return
  266.  
  267. EOD
  268. )
  269.  
  270. echo "$HEADER" > build.libxml2.sh
  271. generate_cygwin 'libxml2' 'D:/work/src/libxml2' "$line" >> build.libxml2.sh
Advertisement
Add Comment
Please, Sign In to add comment