@@ -85,8 +85,8 @@ LDFLAGS=''
8585
8686log () {
8787 level=" ${1} " ; shift
88- printf ' %s: %s\n' " ${level^^ } " " ${@ } " >&2
89- [ " ${level} " != ' error ' ]
88+ printf ' %s: %s\n' " ${level} " " ${@ } " >&2
89+ [ " ${level} " != ' ERROR ' ]
9090}
9191
9292# Extract an archive into the given subdirectory of the build dir and cd to it
@@ -120,7 +120,7 @@ extract() {
120120 rmdir " ${2} -dmg"
121121 ;;
122122 * )
123- log error " Unknown archive type for ${1} "
123+ log ERROR " Unknown archive type for ${1} "
124124 ;;
125125 esac
126126 cd " ${2} "
@@ -132,13 +132,13 @@ download() {
132132 while [ ! -f " ${tarball_file} " ]; do
133133 if [ -z " ${1:- } " ]
134134 then
135- log error " No more mirror to download ${tarball_file} from"
135+ log ERROR " No more mirror to download ${tarball_file} from"
136136 fi
137137 local download_url=" ${1} " ; shift
138138 log status " Downloading ${download_url} "
139139 if ! " ${CURL} " -R -L --fail -o " ${tarball_file} " " ${download_url} "
140140 then
141- log warning " Failed to download ${download_url} "
141+ log WARNING " Failed to download ${download_url} "
142142 rm -f " ${tarball_file} "
143143 fi
144144 done
@@ -167,6 +167,7 @@ download_extract() {
167167}
168168
169169# Build pkg-config
170+ # Still needed, at least on macos, for opusfile
170171build_pkgconfig () {
171172 local dir_name=" pkg-config-${PKGCONFIG_VERSION} "
172173 local archive_name=" ${dir_name} .tar.gz"
@@ -178,7 +179,7 @@ build_pkgconfig() {
178179
179180 cd " ${dir_name} "
180181 # The default -O2 is dropped when there's user-provided CFLAGS.
181- CFLAGS=" ${CFLAGS} -O2" ./configure --host=" ${HOST} " --prefix=" ${PREFIX} " --libdir=" ${PREFIX} /lib" --with-internal-glib
182+ CFLAGS=" ${CFLAGS} -O2 -Wno-error=int-conversion " ./configure --host=" ${HOST} " --prefix=" ${PREFIX} " --libdir=" ${PREFIX} /lib" --with-internal-glib
182183 make
183184 make install
184185}
@@ -198,7 +199,7 @@ build_nasm() {
198199 cp " ${dir_name} /nasm" " ${PREFIX} /bin"
199200 ;;
200201 * )
201- log error ' Unsupported platform for NASM'
202+ log ERROR ' Unsupported platform for NASM'
202203 ;;
203204 esac
204205}
@@ -340,7 +341,7 @@ build_sdl2() {
340341 case " ${PLATFORM} " in
341342 windows-* -mingw)
342343 cd " ${dir_name} "
343- make install-package arch= " ${HOST} " prefix= " ${PREFIX} "
344+ cp -rv " ${HOST} " / * " ${PREFIX} / "
344345 ;;
345346 windows-* -msvc)
346347 cd " ${dir_name} "
@@ -357,7 +358,7 @@ build_sdl2() {
357358 local sdl2_lib_dir=' lib/x64'
358359 ;;
359360 * )
360- log error ' Unsupported platform for SDL2'
361+ log ERROR ' Unsupported platform for SDL2'
361362 ;;
362363 esac
363364
@@ -396,10 +397,16 @@ build_glew() {
396397 " ${download_only} " && return
397398
398399 cd " ${dir_name} "
400+ # env hack: CFLAGS.EXTRA is populated with some flags, which are sometimess necessary for
401+ # compilation, in the makefile with +=. If CFLAGS.EXTRA is set on the command line, those
402+ # += will be ignored. But if it is set via the environment, the two sources are actually
403+ # concatenated how we would like. Bash doesn't allow variables with a dot so use env.
404+ # The hack doesn't work on Mac's ancient Make (the env var has no effect), so we have to
405+ # manually re-add the required flags there.
399406 case " ${PLATFORM} " in
400407 windows-* -* )
401- make SYSTEM=" linux-mingw${BITNESS} " GLEW_DEST=" ${PREFIX} " CC=" ${CC} " AR=" ${AR} " RANLIB=" ${RANLIB} " STRIP=" ${HOST} -strip" LD=" ${LD} " CFLAGS.EXTRA= " ${CFLAGS} " LDFLAGS.EXTRA= " ${LDFLAGS }"
402- make install SYSTEM=" linux-mingw${BITNESS} " GLEW_DEST=" ${PREFIX} " CC=" ${CC} " AR=" ${AR} " RANLIB=" ${RANLIB} " STRIP=" ${HOST} -strip" LD=" ${LD} " CFLAGS.EXTRA= " ${CFLAGS} " LDFLAGS.EXTRA= " ${LDFLAGS }"
408+ env CFLAGS.EXTRA= " ${CFLAGS} " LDFLAGS.EXTRA= " ${LDFLAGS} " make SYSTEM=" linux-mingw${BITNESS} " GLEW_DEST=" ${PREFIX} " CC=" ${CC} " AR=" ${AR} " RANLIB=" ${RANLIB} " STRIP=" ${HOST} -strip" LD=" ${LD} "
409+ env CFLAGS.EXTRA= " ${CFLAGS} " LDFLAGS.EXTRA= " ${LDFLAGS} " make install SYSTEM=" linux-mingw${BITNESS} " GLEW_DEST=" ${PREFIX} " CC=" ${CC} " AR=" ${AR} " RANLIB=" ${RANLIB} " STRIP=" ${HOST} -strip" LD=" ${LD} "
403410 mv " ${PREFIX} /lib/glew32.dll" " ${PREFIX} /bin/"
404411 rm " ${PREFIX} /lib/libglew32.a"
405412 cp lib/libglew32.dll.a " ${PREFIX} /lib/"
@@ -410,11 +417,12 @@ build_glew() {
410417 install_name_tool -id " @rpath/libGLEW.${GLEW_VERSION} .dylib" " ${PREFIX} /lib/libGLEW.${GLEW_VERSION} .dylib"
411418 ;;
412419 linux-* -* )
413- make GLEW_DEST=" ${PREFIX} " CC=" ${CC} " LD=" ${CC} " CFLAGS.EXTRA=" ${CFLAGS} " LDFLAGS.EXTRA=" ${LDFLAGS} "
414- make install GLEW_DEST=" ${PREFIX} " CC=" ${CC} " LD=" ${CC} " CFLAGS.EXTRA=" ${CFLAGS} " LDFLAGS.EXTRA=" ${LDFLAGS} " LIBDIR=" ${PREFIX} /lib"
420+ local strip=" ${HOST/ -unknown-/ -} -strip"
421+ env CFLAGS.EXTRA=" ${CFLAGS} " LDFLAGS.EXTRA=" ${LDFLAGS} " make GLEW_DEST=" ${PREFIX} " CC=" ${CC} " LD=" ${CC} " STRIP=" ${strip} "
422+ env CFLAGS.EXTRA=" ${CFLAGS} " LDFLAGS.EXTRA=" ${LDFLAGS} " make install GLEW_DEST=" ${PREFIX} " CC=" ${CC} " LD=" ${CC} " LIBDIR=" ${PREFIX} /lib"
415423 ;;
416424 * )
417- log error ' Unsupported platform for GLEW'
425+ log ERROR ' Unsupported platform for GLEW'
418426 ;;
419427 esac
420428}
@@ -460,7 +468,7 @@ build_jpeg() {
460468 # Other platforms can build but we need need to explicitly
461469 # set CMAKE_SYSTEM_NAME for CMAKE_CROSSCOMPILING to be set
462470 # and CMAKE_SYSTEM_PROCESSOR to not be ignored by cmake.
463- log error ' Unsupported platform for JPEG'
471+ log ERROR ' Unsupported platform for JPEG'
464472 ;;
465473 esac
466474
@@ -482,7 +490,7 @@ build_jpeg() {
482490 local SYSTEM_PROCESSOR=' arm'
483491 ;;
484492 * )
485- log error ' Unsupported platform for JPEG'
493+ log ERROR ' Unsupported platform for JPEG'
486494 ;;
487495 esac
488496
@@ -539,7 +547,7 @@ build_openal() {
539547 -DCMAKE_BUILD_TYPE=Release -DALSOFT_EXAMPLES=OFF)
540548 ;;
541549 * )
542- log error ' Unsupported platform for OpenAL'
550+ log ERROR ' Unsupported platform for OpenAL'
543551 ;;
544552 esac
545553
@@ -695,7 +703,7 @@ build_wasisdk() {
695703 * -amd64-* )
696704 ;;
697705 * )
698- log error " wasi doesn't have release for ${PLATFORM} "
706+ log ERROR " wasi doesn't have release for ${PLATFORM} "
699707 ;;
700708 esac
701709
@@ -735,7 +743,7 @@ build_wasmtime() {
735743 local WASMTIME_ARCH=aarch64
736744 ;;
737745 * )
738- log error " wasmtime doesn't have release for ${PLATFORM} "
746+ log ERROR " wasmtime doesn't have release for ${PLATFORM} "
739747 ;;
740748 esac
741749
@@ -863,7 +871,7 @@ build_naclruntime() {
863871 local NACL_ARCH=x86-64
864872 ;;
865873 * )
866- log error ' Unsupported platform for naclruntime'
874+ log ERROR ' Unsupported platform for naclruntime'
867875 ;;
868876 esac
869877
@@ -881,6 +889,30 @@ build_naclruntime() {
881889 cp " scons-out/opt-linux-${NACL_ARCH} /staging/sel_ldr" " ${PREFIX} /nacl_loader"
882890}
883891
892+ # Check for DLL dependencies on MinGW stuff. For MSVC platforms this is bad because it should work
893+ # without having MinGW installed. For MinGW platforms it is still bad because it might not work
894+ # when building with different flavors, or newer/older versions.
895+ build_depcheck () {
896+ " ${download_only} " && return
897+
898+ case " ${PLATFORM} " in
899+ windows-* -* )
900+ local good=true
901+ for dll in $( find " ${PREFIX} /bin" -type f -name ' *.dll' ) ; do
902+ # https://wiki.unvanquished.net/wiki/MinGW#Built-in_DLL_dependencies
903+ if objdump -p " ${dll} " | grep -oP ' (?<=DLL Name: )(libgcc_s|libstdc|libssp|libwinpthread).*' ; then
904+ echo " ${dll} depends on above DLLs"
905+ good=false
906+ fi
907+ done
908+ " ${good} " || log ERROR ' Built DLLs depend on MinGW runtime DLLs'
909+ ;;
910+ * )
911+ log ERROR ' Unsupported platform for depcheck'
912+ ;;
913+ esac
914+ }
915+
884916# The import libraries generated by MinGW seem to have issues, so we use LLVM's version instead.
885917# So LLVM must be installed, e.g. 'sudo apt install llvm'
886918build_genlib () {
@@ -903,7 +935,7 @@ build_genlib() {
903935 local MACHINE=' i386:x86-64'
904936 ;;
905937 * )
906- log error ' Unsupported platform for genlib'
938+ log ERROR ' Unsupported platform for genlib'
907939 ;;
908940 esac
909941
@@ -917,7 +949,7 @@ build_genlib() {
917949 done
918950 ;;
919951 * )
920- log error ' Unsupported platform for genlib'
952+ log ERROR ' Unsupported platform for genlib'
921953 ;;
922954 esac
923955}
@@ -971,6 +1003,9 @@ build_install() {
9711003 find " ${PKG_PREFIX} /bin" -name ' *.dll' -execdir " ${HOST} -strip" --strip-unneeded -- {} \;
9721004 find " ${PKG_PREFIX} /lib" -name ' *.a' -execdir rm -f -- {} \;
9731005 find " ${PKG_PREFIX} /lib" -name ' *.exp' -execdir rm -f -- {} \;
1006+
1007+ # Fix import lib paths to use MSVC-style instead of MinGW ones (see 'genlib' target)
1008+ find " ${PKG_PREFIX} /lib/cmake" -name ' *.cmake' -execdir sed -i -E ' s@[.]dll[.]a\b@.lib@g' {} \;
9741009 ;;
9751010 esac
9761011
@@ -1038,7 +1073,7 @@ common_setup_arch() {
10381073 CXXFLAGS+=' -march=armv7-a -mfpu=neon'
10391074 ;;
10401075 * )
1041- log error ' Unsupported platform'
1076+ log ERROR ' Unsupported platform'
10421077 ;;
10431078 esac
10441079}
@@ -1140,13 +1175,13 @@ setup_linux-arm64-default() {
11401175 common_setup linux aarch64-unknown-linux-gnu
11411176}
11421177
1143- base_windows_amd64_msvc_packages=' pkgconfig zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk genlib'
1178+ base_windows_amd64_msvc_packages=' zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk depcheck genlib'
11441179all_windows_amd64_msvc_packages=" ${base_windows_amd64_msvc_packages} "
11451180
11461181base_windows_i686_msvc_packages=" ${base_windows_amd64_msvc_packages} "
11471182all_windows_i686_msvc_packages=" ${base_windows_amd64_msvc_packages} "
11481183
1149- base_windows_amd64_mingw_packages=' zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk'
1184+ base_windows_amd64_mingw_packages=' zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk depcheck '
11501185all_windows_amd64_mingw_packages=" ${base_windows_amd64_mingw_packages} "
11511186
11521187base_windows_i686_mingw_packages=" ${base_windows_amd64_mingw_packages} "
0 commit comments