# Copyright (C) 2019-2023 Paul Obermeier (obermeier@tcl3d.org) # Distributed under BSD license. # BuildType: MSys / gcc proc Init_libffi { libName libVersion } { SetScriptAuthor $libName "Paul Obermeier" "obermeier@tcl3d.org" SetLibHomepage $libName "https://github.com/libffi/libffi" SetLibDependencies $libName "None" SetPlatforms $libName "All" SetWinCompilers $libName "gcc" } proc Build_libffi { libName libVersion buildDir instDir devDir distDir } { set buildDirMSys [MSysPath $buildDir] set instDirMSys [MSysPath $instDir] if { [UseStage "Extract" $libName] } { ExtractLibrary $libName $buildDir } if { [UseStage "Configure" $libName] } { set cmd "" append cmd "$buildDirMSys/configure " append cmd "--prefix=$instDirMSys --exec-prefix=$instDirMSys " append cmd "--enable-shared " if { [IsWindows] } { append cmd "--build=[GetMingwVersion] " } if { [IsDebugBuild] } { append cmd "--enable-debug " } MSysRun $libName "${libName}_Configure" $buildDir "$cmd" } if { [UseStage "Compile" $libName] } { MSysBuild $libName $buildDir "install" if { [NeedDll2Lib $libName] } { set dllFile [FindFile "$instDir/bin" "${libName}*"] Dll2Lib $libName "$instDir/bin" $dllFile "libffi.def" "$instDir/lib/libffi.lib" } } if { [UseStage "Distribute" $libName] } { StripLibraries "$instDir" if { [IsWindows] } { MultiFileCopy "$instDir/bin" "$distDir/lib" "*.dll" MultiFileCopy "$instDir/bin" "$devDir/lib" "*.dll" if { [UseWinCompiler $libName "vs"] || [NeedDll2Lib $libName] } { MultiFileCopy "$instDir/lib" "$devDir/lib" "*.lib" } else { MultiFileCopy "$instDir/lib" "$devDir/lib" "*.a" } MultiFileCopy "$instDir/include" "$devDir/include" "*.h" SingleFileCopy "$instDir/lib/pkgconfig/${libName}.pc" "$devDir/bin" } else { LibFileCopy "$instDir" "$distDir" "*.dylib *.so*" LibFileCopy "$instDir" "$devDir" "*.dylib *.so*" MultiFileCopy "$instDir/include" "$devDir/include" "*.h" # SUSE installs into lib64. Debian installs into lib. foreach libDir { lib lib64 } { if { [file isdirectory [file join $instDir $libDir]] } { SingleFileCopy "$instDir/$libDir/pkgconfig/${libName}.pc" "$devDir/bin" break } } } } return true }