# Copyright: 2016-2023 Paul Obermeier (obermeier@tcl3d.org) # Distributed under BSD license. # # BuildType Windows: MsBuild / vs # BuildType Linux : MSys / gcc # BuildType Darwin : MSys / gcc # Changes to source code (see ReplaceLine below): # AllInOne.rc: Change include file from afxres.h to windows.h # # Manual additions: # Added folders VC11, VC12, VC14, VC15 and VC16 in Projects/Win32 to compile # with Visual Studio 2012, 2013, 2015, 2017 and 2019. # VC11 taken from SVN trunk. # VC12, VC14, VC15, VC16 are just copies of folder VC11 with all occurrences # of VC11 replaced with VC12, VC14, VC15, VC16 respectively. proc Init_Xalan { libName libVersion } { SetScriptAuthor $libName "Paul Obermeier" "obermeier@tcl3d.org" SetLibHomepage $libName "https://xalan.apache.org/xalan-c/index.html" SetLibDependencies $libName "Xerces" SetPlatforms $libName "All" SetWinCompilers $libName "vs" } proc Build_Xalan { libName libVersion buildDir instDir devDir distDir } { set buildDirMSys [MSysPath $buildDir] set instDirMSys [MSysPath $instDir] if { [IsWindows] } { switch -exact [GetCompilerVersion -vs] { "vs2008" { set msvc "VC9" } "vs2010" { set msvc "VC10" } "vs2012" { set msvc "VC11" } "vs2013" { set msvc "VC12" } "vs2015" { set msvc "VC14" } "vs2017" { set msvc "VC15" } "vs2019" { set msvc "VC16" } default { ErrorAppend "$libName: Unsupported Visual Studio version \"[GetCompilerVersion -vs]\"" "FATAL" } } } if { [UseStage "Extract" $libName] } { ExtractLibrary $libName $buildDir ReplaceLine "$buildDir/Projects/Win32/Res/AllInOne/AllInOne.rc" \ "#include \"afxres.h\"" \ "#include \"windows.h\"" } UseEnvVar "XERCESCROOT" "[GetOutputDevDir]" UseEnvVar "XALANCROOT" "$buildDir" if { [UseStage "Configure" $libName] } { if { [IsUnix] } { set cmd "" append cmd "$buildDirMSys/runConfigure " append cmd "-p linux -c gcc -x g++ -m inmem -M en_US " append cmd "-b [GetBits] -P $instDirMSys -l \"-L[GetOutputDevDir]/lib\" " if { [IsDebugBuild] } { append cmd "--enable-symbols " } MSysRun $libName "${libName}_Configure" $buildDir "$cmd" } } if { [UseStage "Compile" $libName] } { if { [IsWindows] } { MsBuild $libName "$buildDir/projects/Win32/$msvc" \ "$libName.sln" [GetBuildType] "all" } else { MSysBuild $libName $buildDir "install" } } if { [UseStage "Distribute" $libName] } { if { [IsWindows] } { MultiFileCopy "$buildDir/Build/Win[GetBits]/$msvc/[GetBuildType]" "$instDir/bin" "*" false MultiFileCopy "$buildDir/src/xalanc" "$instDir/include/xalanc" "*.hpp" true MultiFileCopy "$buildDir/Build/Win[GetBits]/$msvc/[GetBuildType]/Nls/Include" "$instDir/include/xalanc" "*" false FileRename "$instDir/include/xalanc/LocalMsgData.hpp" "$instDir/include/xalanc/PlatformSupport/LocalMsgData.hpp" FileRename "$instDir/include/xalanc/LocalMsgIndex.hpp" "$instDir/include/xalanc/PlatformSupport/LocalMsgIndex.hpp" StripLibraries "$instDir" MultiFileCopy "$instDir/bin" "$distDir/lib" "Xalan-C*.dll" MultiFileCopy "$instDir/bin" "$devDir/lib" "Xalan-C*.dll" MultiFileCopy "$instDir/bin" "$distDir/lib" "XalanM*.dll" MultiFileCopy "$instDir/bin" "$devDir/lib" "XalanM*.dll" if { [UseWinCompiler $libName "vs"] } { MultiFileCopy "$instDir/bin" "$devDir/lib" "Xalan-C*.lib" MultiFileCopy "$instDir/bin" "$devDir/lib" "XalanM*.lib" } } else { StripLibraries "$instDir" LibFileCopy "$instDir" "$distDir" "*.dylib *.so*" LibFileCopy "$instDir" "$devDir" "*.dylib *.so* *.a" } MultiFileCopy "$instDir/include" "$devDir/include" "*" true if { [IsDebugBuild] && [UseWinCompiler $libName "vs"] } { MultiFileCopy "$instDir/bin" "$devDir/lib" "xalanc*.pdb" } } return true }