# Copyright: 2017-2023 Alexander Schoepe, Bochum, DE (schoepe@users.sourceforge.net) # Distributed under BSD license. # # BuildType: MSys / gcc # # Manual changes to source code: # src/annotate.c: Added implementation of getline for Windows. # getline is not available with MinGW. Needed for version 2.3.2. proc Init_libgd { libName libVersion } { SetScriptAuthor $libName "Alexander Schoepe" "schoepe@users.sourceforge.net" SetLibHomepage $libName "https://libgd.github.io" SetLibDependencies $libName "ZLib" "TIFF" "JPEG" "PNG" "libwebp" "Freetype" SetPlatforms $libName "All" SetWinCompilers $libName "gcc" } proc Build_libgd { libName libVersion buildDir instDir devDir distDir } { set buildDirMSys [MSysPath $buildDir] set instDirMSys [MSysPath $instDir] if { [UseStage "Extract" $libName] } { ExtractLibrary $libName $buildDir if { [UseMSys2] } { SingleFileCopy "[GetMSysBinDir]/msys-iconv-2.dll" "$devDir/lib" "libiconv.dll" } } if { [UseStage "Configure" $libName] } { set cmd "" if { [IsWindows] } { append cmd "CC='gcc -static-libgcc -Wl,-Bstatic,--whole-archive -liconv -Wl,--no-whole-archive' " } append cmd "$buildDirMSys/configure " append cmd "--enable-shared " append cmd "--prefix=$instDirMSys " if { [IsWindows] } { append cmd "--with-zlib=[MSysPath $devDir] " append cmd "--with-freetype=[MSysPath $devDir] " append cmd "--with-png=[MSysPath $devDir] " append cmd "--with-jpeg=[MSysPath $devDir] " append cmd "--with-tiff=[MSysPath $devDir] " append cmd "--with-webp=[MSysPath $devDir] " } if { [IsDarwin] } { append cmd "--with-png=[MSysPath $devDir] " append cmd "--with-webp=[MSysPath $devDir] " } if { [IsWindows] } { append cmd "--host=[GetMingwVersion] " } if { [IsDebugBuild] } { append cmd "--enable-symbols " } MSysRun $libName "${libName}_Configure" $buildDir "$cmd" } if { [UseStage "Compile" $libName] } { MSysBuild $libName $buildDir "install" if { [NeedDll2Lib $libName] } { Dll2Lib $libName "$instDir/bin" "$libName-*.dll" "$libName.def" "$libName.lib" } } if { [UseStage "Distribute" $libName] } { StripLibraries "$instDir" # Note: Copying *.a files is needed for other MSys compiled libraries. if { [IsWindows] } { MultiFileCopy "$instDir/bin" "$distDir/lib" "$libName-*.dll" MultiFileCopy "$instDir/bin" "$devDir/lib" "$libName-*.dll" MultiFileCopy "$instDir/lib" "$devDir/lib" "$libName.*.a" if { [UseWinCompiler $libName "vs"] || [NeedDll2Lib $libName] } { MultiFileCopy "$instDir/bin" "$devDir/lib" "*.lib" } } else { LibFileCopy "$instDir" "$distDir" "${libName}.*dylib ${libName}.so*" LibFileCopy "$instDir" "$devDir" "${libName}.*dylib ${libName}.so*" LibFileCopy "$instDir" "$devDir" "${libName}.a" } MultiFileCopy "$instDir/include" "$devDir/include" # Copying gdlib-config might be needed by other packages. if { [VersionCompare "2.3" $libVersion] > 0 } { # Versions 2.X. SingleFileCopy "$instDir/bin/gdlib-config" "$devDir/bin" } else { foreach libDir { lib lib64 } { set pcFile [file join $instDir $libDir "pkgconfig" "gdlib.pc"] if { [file exists $pcFile] } { SingleFileCopy "$pcFile" "$devDir/bin" } } } } return true }