# Copyright: 2016-2023 Paul Obermeier (obermeier@tcl3d.org) # Distributed under BSD license. # # BuildType Windows: CMake / vs # CMake / gcc # BuildType Linux : CMake / gcc # BuildType Darwin : CMake / gcc # Changes to source code (manual additions): # Added folders vc9, vc10, vc11, vc12, vc14, vc15, vc16 in directory msvc # to compile with appropriate Visual Studio versions. proc Init_FTGL { libName libVersion } { SetScriptAuthor $libName "Paul Obermeier" "obermeier@tcl3d.org" SetLibHomepage $libName "https://sourceforge.net/projects/ftgl/" SetLibDependencies $libName "Freetype" SetPlatforms $libName "All" SetWinCompilers $libName "gcc" "vs" } proc Build_FTGL { libName libVersion buildDir instDir devDir distDir } { if { [UseStage "Extract" $libName] } { ExtractLibrary $libName $buildDir } UseEnvVar "FREETYPE" "[GetOutputInstDir]/Freetype" if { [UseStage "Configure" $libName] } { set opts [list] set libFreetype "freetype[GetImportLibSuffix]" if { [UseWinCompiler $libName "gcc"] } { lappend opts "-DCMAKE_CXX_FLAGS=-static-libstdc++ " lappend opts "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-static-libstdc++" set libFreetype "libfreetype.dll.a" } if { [IsWindows] } { # On Unix systems we use the system freetype libraries. lappend opts \ "-DFREETYPE_LIBRARY=$devDir/lib/${libFreetype}" \ "-DFREETYPE_INCLUDE_DIR_freetype2=$devDir/include/freetype/config" \ "-DFREETYPE_INCLUDE_DIR_ft2build=$devDir/include/freetype" } CMakeConfig $libName "$buildDir" "$buildDir" "$instDir" {*}$opts [GetCMakeMSysOption $libName] } if { [UseStage "Compile" $libName] } { CMakeBuild $libName "$buildDir" "install" [GetBuildType] [GetCMakeMSysOption $libName] } if { [UseStage "Distribute" $libName] } { if { [IsWindows] } { StripLibraries "$instDir/bin" MultiFileCopy "$instDir/bin" "$distDir/lib" "*.dll" MultiFileCopy "$instDir/bin" "$devDir/lib" "*.dll *.a" if { [UseWinCompiler $libName "vs"] } { MultiFileCopy "$instDir/bin" "$devDir/lib" "*.lib" } } else { StripLibraries "$instDir/bin" MultiFileCopy "$instDir/bin" "$distDir/lib" "*.dylib *.so*" MultiFileCopy "$instDir/bin" "$devDir/lib" "*.dylib *.so*" } MultiFileCopy "$buildDir/src" "$devDir/include/FTGL" "*.h" false } return true }