mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-29 14:00:49 +03:00
0028701: Configuration - add support of VS 2017
Added support of Visual Studio 2017 (15) in CMake build procedure. CMake 3.7.2 or above is required to generate projects for VS 2017. Since version of compiler and toolset remained at 14 (now they are 14.1), and they use the same run-time, the same third-party products as for VS 2015 (14) can be used. Also the name of the folder for installation of OCCT binaries in OCCT-standard layout (default on Windows) remains "vc14". Support of Visual Studio 2017 is added in genproj generator and relevant environment, with format specifier "vc141". The syntax of the genproj command is revised: - UWP is considered as separate platform ("uwp" alternative to "wnt"), not part of IDE specification - Option "IDE" is renamed to "Format" - Obsolete name of local variable "aWokStation" is replaced by equivalent "theFormat" In environment scripts, additional variables are defined (derived from VCVER, see adm/vcver.bat): - VCLIB defines name of the subdirectory specific to VS version; it is the same as VCVER except that for VCVER=vc141 VCLIB=vc14 and for VCVER=141-uwp VCLIB=vc14-uwp - VCFMT is VCVER without optional suffix "-uwp" - VCPROP is "NativeDesktop" for normal builds or "Universal" for UWP builds Command genconf is amended to: - Detect presence of VS 2017 (separately for desktop and UWP) - Use only two first digits after "vc" in format specification for search of third-party libs - Have more space in user interface for VS specification All supported variants of VCVER variable are documented in dev guides / buiding / msvc
This commit is contained in:
211
adm/genproj.tcl
211
adm/genproj.tcl
@@ -255,16 +255,16 @@ proc genAllResources {} {
|
||||
}
|
||||
|
||||
# Wrapper-function to generate VS project files
|
||||
proc genproj {theIDE args} {
|
||||
set aSupportedIDEs { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "vc14-uwp" "cbp" "xcd"}
|
||||
set aSupportedPlatforms { "wnt" "lin" "mac" "ios" "qnx" }
|
||||
proc genproj {theFormat args} {
|
||||
set aSupportedFormats { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "vc141" "cbp" "xcd"}
|
||||
set aSupportedPlatforms { "wnt" "uwp" "lin" "mac" "ios" "qnx" }
|
||||
set isHelpRequire false
|
||||
|
||||
# check IDE argument
|
||||
if { $theIDE == "-h" || $theIDE == "-help" || $theIDE == "--help" } {
|
||||
# check format argument
|
||||
if { $theFormat == "-h" || $theFormat == "-help" || $theFormat == "--help" } {
|
||||
set isHelpRequire true
|
||||
} elseif { [lsearch -exact $aSupportedIDEs $theIDE] < 0 } {
|
||||
puts "Error: genproj: unrecognized IDE \"$theIDE\""
|
||||
} elseif { [lsearch -exact $aSupportedFormats $theFormat] < 0 } {
|
||||
puts "Error: genproj: unrecognized project format \"$theFormat\""
|
||||
set isHelpRequire true
|
||||
}
|
||||
|
||||
@@ -272,9 +272,9 @@ proc genproj {theIDE args} {
|
||||
set aCmpl "gcc"
|
||||
|
||||
# Determine default platform: wnt for vc*, mac for xcd, current for cbp
|
||||
if { [regexp "^vc" $theIDE] } {
|
||||
if { [regexp "^vc" $theFormat] } {
|
||||
set aPlatform "wnt"
|
||||
} elseif { $theIDE == "xcd" || $::tcl_platform(os) == "Darwin" } {
|
||||
} elseif { $theFormat == "xcd" || $::tcl_platform(os) == "Darwin" } {
|
||||
set aPlatform "mac"
|
||||
} elseif { $::tcl_platform(platform) == "windows" } {
|
||||
set aPlatform "wnt"
|
||||
@@ -302,21 +302,22 @@ proc genproj {theIDE args} {
|
||||
}
|
||||
|
||||
if { $isHelpRequire == true } {
|
||||
puts "usage: genproj IDE \[Platform\] \[-static\] \[-h|-help|--help\]
|
||||
puts "usage: genproj Format \[Platform\] \[-static\] \[-h|-help|--help\]
|
||||
|
||||
IDE must be one of:
|
||||
Format must be one of:
|
||||
vc8 - Visual Studio 2005
|
||||
vc9 - Visual Studio 2008
|
||||
vc10 - Visual Studio 2010
|
||||
vc11 - Visual Studio 2012
|
||||
vc12 - Visual Studio 2013
|
||||
vc14 - Visual Studio 2015
|
||||
vc14-uwp - Visual Studio 2015 for Universal Windows Platform project
|
||||
vc141 - Visual Studio 2017
|
||||
cbp - CodeBlocks
|
||||
xcd - XCode
|
||||
|
||||
Platform (optional, only for CodeBlocks and XCode):
|
||||
wnt - Windows
|
||||
Platform (optional):
|
||||
wnt - Windows Desktop
|
||||
uwp - Universal Windows Platform
|
||||
lin - Linux
|
||||
mac - OS X
|
||||
ios - iOS
|
||||
@@ -332,24 +333,24 @@ proc genproj {theIDE args} {
|
||||
return
|
||||
}
|
||||
|
||||
puts "Preparing to generate $theIDE projects for $aPlatform platform..."
|
||||
puts "Preparing to generate $theFormat projects for $aPlatform platform..."
|
||||
|
||||
# path to where to generate projects, hardcoded from current dir
|
||||
# base path to where to generate projects, hardcoded from current dir
|
||||
set anAdmPath [file normalize "${::path}/adm"]
|
||||
|
||||
OS:MKPRC "$anAdmPath" "$theIDE" "$aLibType" "$aPlatform" "$aCmpl"
|
||||
OS:MKPRC "$anAdmPath" "$theFormat" "$aLibType" "$aPlatform" "$aCmpl"
|
||||
|
||||
genprojbat "$theIDE" $aPlatform
|
||||
genprojbat "$theFormat" "$aPlatform"
|
||||
genAllResources
|
||||
}
|
||||
|
||||
proc genprojbat {theIDE thePlatform} {
|
||||
proc genprojbat {theFormat thePlatform} {
|
||||
set aTargetPlatformExt sh
|
||||
if { $thePlatform == "wnt" } {
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
set aTargetPlatformExt bat
|
||||
}
|
||||
|
||||
if {"$theIDE" != "cmake"} {
|
||||
if {"$theFormat" != "cmake"} {
|
||||
# copy env.bat/sh only if not yet present
|
||||
if { ! [file exists "$::path/env.${aTargetPlatformExt}"] } {
|
||||
set anEnvTmplFile [open "$::THE_CASROOT/adm/templates/env.${aTargetPlatformExt}" "r"]
|
||||
@@ -371,10 +372,10 @@ proc genprojbat {theIDE thePlatform} {
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/draw.${aTargetPlatformExt}" "$::path/draw.${aTargetPlatformExt}"
|
||||
}
|
||||
|
||||
if {[regexp {(vc)[0-9]*$} $theIDE] == 1 || [regexp {(vc)[0-9]*-uwp$} $theIDE] == 1} {
|
||||
if { [regexp {^vc} $theFormat] } {
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/msvc.bat" "$::path/msvc.bat"
|
||||
} else {
|
||||
switch -exact -- "$theIDE" {
|
||||
switch -exact -- "$theFormat" {
|
||||
"cbp" {
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/codeblocks.sh" "$::path/codeblocks.sh"
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/codeblocks.bat" "$::path/codeblocks.bat"
|
||||
@@ -399,13 +400,13 @@ proc removeAllOccurrencesOf { theObject theList } {
|
||||
set aTKNullKey "TKNull"
|
||||
set THE_GUIDS_LIST($aTKNullKey) "{00000000-0000-0000-0000-000000000000}"
|
||||
|
||||
# Entry function to generate project files and solutions for IDE
|
||||
# Entry function to generate project files
|
||||
# @param theOutDir Root directory for project files
|
||||
# @param theIDE IDE code name (vc10 for Visual Studio 2010, cbp for Code::Blocks, xcd for XCode)
|
||||
# @param theFormat Project format name (vc.. for Visual Studio projects, cbp for Code::Blocks, xcd for XCode)
|
||||
# @param theLibType Library type - dynamic or static
|
||||
# @param thePlatform Optional target platform for cross-compiling, e.g. ios for iOS
|
||||
# @param theCmpl Compiler option (msvc or gcc)
|
||||
proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
proc OS:MKPRC { theOutDir theFormat theLibType thePlatform theCmpl } {
|
||||
global path
|
||||
set anOutRoot $theOutDir
|
||||
if { $anOutRoot == "" } {
|
||||
@@ -414,14 +415,19 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
|
||||
# Create output directory
|
||||
set aWokStation "$thePlatform"
|
||||
if { [lsearch -exact {vc7 vc8 vc9 vc10 vc11 vc12 vc14 vc14-uwp} $theIDE] != -1 } {
|
||||
if { [regexp {^vc} $theFormat] } {
|
||||
set aWokStation "msvc"
|
||||
}
|
||||
|
||||
set anOutDir "${anOutRoot}/${aWokStation}/${theIDE}"
|
||||
set aSuffix ""
|
||||
set isUWP 0
|
||||
if { $thePlatform == "uwp" } {
|
||||
set aSuffix "-uwp"
|
||||
set isUWP 1
|
||||
}
|
||||
set anOutDir "${anOutRoot}/${aWokStation}/${theFormat}${aSuffix}"
|
||||
|
||||
# read map of already generated GUIDs
|
||||
set aGuidsFilePath [file join $anOutDir "wok_${theIDE}_guids.txt"]
|
||||
set aGuidsFilePath [file join $anOutDir "wok_${theFormat}_guids.txt"]
|
||||
if [file exists "$aGuidsFilePath"] {
|
||||
set aFileIn [open "$aGuidsFilePath" r]
|
||||
set aFileDataRaw [read $aFileIn]
|
||||
@@ -443,7 +449,7 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
}
|
||||
|
||||
# Draw module is turned off due to it is not supported on UWP
|
||||
if { [regexp {(vc)[0-9]*-uwp$} $theIDE] == 1 } {
|
||||
if { $isUWP } {
|
||||
set aDrawIndex [lsearch -exact ${aModules} "Draw"]
|
||||
if { ${aDrawIndex} != -1 } {
|
||||
set aModules [lreplace ${aModules} ${aDrawIndex} ${aDrawIndex}]
|
||||
@@ -469,8 +475,8 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
puts "Collecting required header files into $path/inc ..."
|
||||
osutils:collectinc $aModules $path/inc
|
||||
|
||||
# Generating project files for the selected IDE
|
||||
switch -exact -- "$theIDE" {
|
||||
# Generating project files for the selected format
|
||||
switch -exact -- "$theFormat" {
|
||||
"vc7" -
|
||||
"vc8" -
|
||||
"vc9" -
|
||||
@@ -478,7 +484,7 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
"vc11" -
|
||||
"vc12" -
|
||||
"vc14" -
|
||||
"vc14-uwp" { OS:MKVC $anOutDir $aModules $anAllSolution $theIDE }
|
||||
"vc141" { OS:MKVC $anOutDir $aModules $anAllSolution $theFormat $isUWP}
|
||||
"cbp" { OS:MKCBP $anOutDir $aModules $anAllSolution $thePlatform $theCmpl }
|
||||
"xcd" {
|
||||
set ::THE_GUIDS_LIST($::aTKNullKey) "000000000000000000000000"
|
||||
@@ -497,14 +503,14 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
|
||||
}
|
||||
|
||||
# Function to generate Visual Studio solution and project files
|
||||
proc OS:MKVC { theOutDir {theModules {}} {theAllSolution ""} {theVcVer "vc8"} } {
|
||||
proc OS:MKVC { theOutDir theModules theAllSolution theVcVer isUWP } {
|
||||
|
||||
puts stderr "Generating VS project files for $theVcVer"
|
||||
|
||||
# generate projects for toolkits and separate solution for each module
|
||||
foreach aModule $theModules {
|
||||
OS:vcsolution $theVcVer $aModule $aModule $theOutDir ::THE_GUIDS_LIST
|
||||
OS:vcproj $theVcVer $aModule $theOutDir ::THE_GUIDS_LIST
|
||||
OS:vcproj $theVcVer $isUWP $aModule $theOutDir ::THE_GUIDS_LIST
|
||||
}
|
||||
|
||||
# generate single solution "OCCT" containing projects from all modules
|
||||
@@ -749,8 +755,8 @@ proc LocateRecur {theName} {
|
||||
return ""
|
||||
}
|
||||
|
||||
proc OS:genGUID { {theIDE "vc"} } {
|
||||
if { "$theIDE" == "vc" } {
|
||||
proc OS:genGUID { {theFormat "vc"} } {
|
||||
if { "$theFormat" == "vc" } {
|
||||
set p1 "[format %07X [expr { int(rand() * 268435456) }]][format %X [expr { int(rand() * 16) }]]"
|
||||
set p2 "[format %04X [expr { int(rand() * 6536) }]]"
|
||||
set p3 "[format %04X [expr { int(rand() * 6536) }]]"
|
||||
@@ -931,9 +937,9 @@ proc osutils:vcsolution:header { vcversion } {
|
||||
"# Visual Studio 2012\n"
|
||||
} elseif { "$vcversion" == "vc12" } {
|
||||
append var \
|
||||
"Microsoft Visual Studio Solution File, Format Version 13.00\n" \
|
||||
"Microsoft Visual Studio Solution File, Format Version 12.00\n" \
|
||||
"# Visual Studio 2013\n"
|
||||
} elseif { "$vcversion" == "vc14" || "$vcversion" == "vc14-uwp"} {
|
||||
} elseif { "$vcversion" == "vc14" || "$vcversion" == "vc141"} {
|
||||
append var \
|
||||
"Microsoft Visual Studio Solution File, Format Version 12.00\n" \
|
||||
"# Visual Studio 14\n"
|
||||
@@ -1142,36 +1148,42 @@ proc OS:vcsolution { theVcVer theSolName theModules theOutDir theGuidsMap } {
|
||||
}
|
||||
# Generate Visual Studio projects for specified version
|
||||
|
||||
proc OS:vcproj { theVcVer theModules theOutDir theGuidsMap } {
|
||||
proc OS:vcproj { theVcVer isUWP theModules theOutDir theGuidsMap } {
|
||||
upvar $theGuidsMap aGuidsMap
|
||||
|
||||
set aProjectFiles {}
|
||||
|
||||
foreach aModule $theModules {
|
||||
foreach aToolKit [${aModule}:toolkits] {
|
||||
lappend aProjectFiles [osutils:vcproj $theVcVer $theOutDir $aToolKit aGuidsMap]
|
||||
lappend aProjectFiles [osutils:vcproj $theVcVer $isUWP $theOutDir $aToolKit aGuidsMap]
|
||||
}
|
||||
foreach anExecutable [OS:executable ${aModule}] {
|
||||
lappend aProjectFiles [osutils:vcprojx $theVcVer $theOutDir $anExecutable aGuidsMap]
|
||||
lappend aProjectFiles [osutils:vcprojx $theVcVer $isUWP $theOutDir $anExecutable aGuidsMap]
|
||||
}
|
||||
}
|
||||
return $aProjectFiles
|
||||
}
|
||||
# generate template name and load it for given version of Visual Studio and platform
|
||||
|
||||
proc osutils:vcproj:readtemplate {theVcVer isexec} {
|
||||
proc osutils:vcproj:readtemplate {theVcVer isUWP isExec} {
|
||||
set anExt $theVcVer
|
||||
if { "$theVcVer" != "vc7" && "$theVcVer" != "vc8" && "$theVcVer" != "vc9" } {
|
||||
set anExt vc10
|
||||
}
|
||||
|
||||
# determine versions of runtime and toolset
|
||||
set aVCRTVer $theVcVer
|
||||
set aToolset "v[string range $theVcVer 2 3]0"
|
||||
if { $theVcVer == "vc141" } {
|
||||
set aVCRTVer "vc14"
|
||||
set aToolset "v141"
|
||||
}
|
||||
|
||||
set what "$theVcVer"
|
||||
set aVerExt [string range $theVcVer 2 end]
|
||||
set aVerExt "v${aVerExt}0"
|
||||
set aCmpl32 ""
|
||||
set aCmpl64 ""
|
||||
set aCharSet "Unicode"
|
||||
if { $isexec } {
|
||||
if { $isExec } {
|
||||
set anExt "${anExt}x"
|
||||
set what "$what executable"
|
||||
}
|
||||
@@ -1181,8 +1193,7 @@ proc osutils:vcproj:readtemplate {theVcVer isexec} {
|
||||
}
|
||||
set aTmpl [osutils:readtemplate $anExt "MS VC++ project ($what)"]
|
||||
|
||||
if { $theVcVer == "vc14-uwp" } {
|
||||
set aVerExt "v140"
|
||||
if { $isUWP } {
|
||||
set UwpWinRt "<CompileAsWinRT>false</CompileAsWinRT>"
|
||||
foreach bitness {32 64} {
|
||||
set indent ""
|
||||
@@ -1209,8 +1220,8 @@ proc osutils:vcproj:readtemplate {theVcVer isexec} {
|
||||
set aReleaseLnk "\n <OptimizeReferences>true</OptimizeReferences>\n <EnableCOMDATFolding>true</EnableCOMDATFolding>"
|
||||
}
|
||||
|
||||
regsub -all -- {__VCVER__} $aTmpl $theVcVer aTmpl
|
||||
regsub -all -- {__VCVEREXT__} $aTmpl $aVerExt aTmpl
|
||||
regsub -all -- {__VCVER__} $aTmpl $aVCRTVer aTmpl
|
||||
regsub -all -- {__VCVEREXT__} $aTmpl $aToolset aTmpl
|
||||
regsub -all -- {__VCCHARSET__} $aTmpl $aCharSet aTmpl
|
||||
regsub -all -- {__VCReleasePDB__} $aTmpl $aDebugInfo aTmpl
|
||||
regsub -all -- "${format_template}__VCLNKREL__" $aTmpl "${aReleaseLnk}" aTmpl
|
||||
@@ -1528,7 +1539,7 @@ proc wokUtils:FILES:wtail { f n } {
|
||||
}
|
||||
|
||||
# Generate entry for one source file in Visual Studio 10 project file
|
||||
proc osutils:vcxproj:file { vcversion file params } {
|
||||
proc osutils:vcxproj:file { file params } {
|
||||
append text " <ClCompile Include=\"..\\..\\..\\[wokUtils:EASY:bs1 [wokUtils:FILES:wtail $file 3]]\">\n"
|
||||
if { $params != "" } {
|
||||
append text " <AdditionalOptions Condition=\"\'\$(Configuration)|\$(Platform)\'==\'Debug|Win32\'\">[string trim ${params}] %(AdditionalOptions)</AdditionalOptions>\n"
|
||||
@@ -1654,8 +1665,8 @@ proc osutils:readtemplate:rc {theOutDir theToolKit} {
|
||||
}
|
||||
|
||||
# Generate Visual Studio project file for ToolKit
|
||||
proc osutils:vcproj { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {} } } {
|
||||
if { $theProjTmpl == {} } {set theProjTmpl [osutils:vcproj:readtemplate $theVcVer 0]}
|
||||
proc osutils:vcproj { theVcVer isUWP theOutDir theToolKit theGuidsMap } {
|
||||
set theProjTmpl [osutils:vcproj:readtemplate $theVcVer $isUWP 0]
|
||||
|
||||
set l_compilable [osutils:compilable wnt]
|
||||
regsub -all -- {__TKNAM__} $theProjTmpl $theToolKit theProjTmpl
|
||||
@@ -1666,11 +1677,11 @@ proc osutils:vcproj { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
}
|
||||
regsub -all -- {__PROJECT_GUID__} $theProjTmpl $aGuidsMap($theToolKit) theProjTmpl
|
||||
|
||||
set theProjTmpl [osutils:uwp:proj ${theVcVer} ${theProjTmpl}]
|
||||
set theProjTmpl [osutils:uwp:proj $isUWP ${theProjTmpl}]
|
||||
|
||||
set aUsedLibs [list]
|
||||
|
||||
if { "$theVcVer" == "vc14-uwp" } {
|
||||
if { $isUWP } {
|
||||
lappend aUsedLibs "WindowsApp.lib"
|
||||
}
|
||||
|
||||
@@ -1685,7 +1696,8 @@ proc osutils:vcproj { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
|
||||
# correct names of referred third-party libraries that are named with suffix
|
||||
# depending on VC version
|
||||
regsub -all -- {vc[0-9]+} $aUsedLibs $theVcVer aUsedLibs
|
||||
set aVCRTVer [string range $theVcVer 0 3]
|
||||
regsub -all -- {vc[0-9]+} $aUsedLibs $aVCRTVer aUsedLibs
|
||||
|
||||
# and put this list to project file
|
||||
#puts "$theToolKit requires $aUsedLibs"
|
||||
@@ -1739,7 +1751,7 @@ proc osutils:vcproj { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
foreach aSrcFile [lsort $aSrcFiles] {
|
||||
if { ![info exists written([file tail $aSrcFile])] } {
|
||||
set written([file tail $aSrcFile]) 1
|
||||
append aFilesSection [osutils:vcxproj:file $theVcVer $aSrcFile $needparam]
|
||||
append aFilesSection [osutils:vcxproj:file $aSrcFile $needparam]
|
||||
} else {
|
||||
puts "Warning : in vcproj more than one occurences for [file tail $aSrcFile]"
|
||||
}
|
||||
@@ -1858,14 +1870,11 @@ proc osutils:tk:files { tkloc thePlatform } {
|
||||
}
|
||||
|
||||
# Generate Visual Studio project file for executable
|
||||
proc osutils:vcprojx { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {} } } {
|
||||
proc osutils:vcprojx { theVcVer isUWP theOutDir theToolKit theGuidsMap } {
|
||||
set aVcFiles {}
|
||||
foreach f [osutils:tk:files $theToolKit wnt] {
|
||||
if { $theProjTmpl == {} } {
|
||||
set aProjTmpl [osutils:vcproj:readtemplate $theVcVer 1]
|
||||
} else {
|
||||
set aProjTmpl $theProjTmpl
|
||||
}
|
||||
set aProjTmpl [osutils:vcproj:readtemplate $theVcVer $isUWP 1]
|
||||
|
||||
set aProjName [file rootname [file tail $f]]
|
||||
set l_compilable [osutils:compilable wnt]
|
||||
regsub -all -- {__XQTNAM__} $aProjTmpl $aProjName aProjTmpl
|
||||
@@ -1888,7 +1897,8 @@ proc osutils:vcprojx { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
|
||||
# correct names of referred third-party libraries that are named with suffix
|
||||
# depending on VC version
|
||||
regsub -all -- {vc[0-9]+} $aUsedLibs $theVcVer aUsedLibs
|
||||
set aVCRTVer [string range $theVcVer 0 3]
|
||||
regsub -all -- {vc[0-9]+} $aUsedLibs $aVCRTVer aUsedLibs
|
||||
|
||||
# puts "$aProjName requires $aUsedLibs"
|
||||
if { "$theVcVer" != "vc7" && "$theVcVer" != "vc8" && "$theVcVer" != "vc9" } {
|
||||
@@ -1903,7 +1913,7 @@ proc osutils:vcprojx { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
set written([file tail $f]) 1
|
||||
|
||||
if { "$theVcVer" != "vc7" && "$theVcVer" != "vc8" && "$theVcVer" != "vc9" } {
|
||||
append aFilesSection [osutils:vcxproj:file $theVcVer $f ""]
|
||||
append aFilesSection [osutils:vcxproj:file $f ""]
|
||||
if { ! [info exists aVcFilesX($theToolKit)] } { lappend aVcFilesX(units) $theToolKit }
|
||||
lappend aVcFilesX($theToolKit) $f
|
||||
} else {
|
||||
@@ -1948,7 +1958,7 @@ proc osutils:vcprojx { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
|
||||
set aCommonSettingsFileTmpl [wokUtils:FILES:FileToString "$::THE_CASROOT/adm/templates/vcxproj.user.vc10x"]
|
||||
}
|
||||
if { "$aCommonSettingsFileTmpl" != "" } {
|
||||
regsub -all -- {__VCVER__} $aCommonSettingsFileTmpl $theVcVer aCommonSettingsFileTmpl
|
||||
regsub -all -- {__VCVER__} $aCommonSettingsFileTmpl $aVCRTVer aCommonSettingsFileTmpl
|
||||
|
||||
set aFile [open [set aVcFilePath "$aCommonSettingsFile"] w]
|
||||
fconfigure $aFile -translation crlf
|
||||
@@ -2113,7 +2123,7 @@ proc osutils:cbptk { theCmpl theOutDir theToolKit thePlatform} {
|
||||
set listloc $theToolKit
|
||||
}
|
||||
|
||||
if { $thePlatform == "wnt" } {
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
set resultloc [osutils:justwnt $listloc]
|
||||
} else {
|
||||
set resultloc [osutils:justunix $listloc]
|
||||
@@ -2132,7 +2142,7 @@ proc osutils:cbptk { theCmpl theOutDir theToolKit thePlatform} {
|
||||
}
|
||||
|
||||
# macros for correct DLL exports
|
||||
if { $thePlatform == "wnt" } {
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
lappend aTKDefines "__${xlo}_DLL"
|
||||
}
|
||||
}
|
||||
@@ -2251,7 +2261,7 @@ proc osutils:cbpx { theCmpl theOutDir theToolKit thePlatform } {
|
||||
}
|
||||
|
||||
# macros for correct DLL exports
|
||||
if { $thePlatform == "wnt" } {
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
lappend aTKDefines "__${theToolKit}_DLL"
|
||||
}
|
||||
|
||||
@@ -2275,7 +2285,6 @@ proc osutils:cbpx { theCmpl theOutDir theToolKit thePlatform } {
|
||||
# @param theDefines - compiler macro definitions
|
||||
# @param theIsExe - flag to indicate executable / library target
|
||||
proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibsList theFrameworks theIncPaths theDefines {theIsExe "false"} } {
|
||||
set aWokStation $thePlatform
|
||||
set aWokArch "$::env(ARCH)"
|
||||
|
||||
set aCmplCbp "gcc"
|
||||
@@ -2284,7 +2293,7 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
set aCmplFlagsDebug [list]
|
||||
set toPassArgsByFile 0
|
||||
set aLibPrefix "lib"
|
||||
if { "$aWokStation" == "wnt" || "$aWokStation" == "qnx" } {
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" || "$thePlatform" == "qnx" } {
|
||||
set toPassArgsByFile 1
|
||||
}
|
||||
if { "$theCmpl" == "msvc" } {
|
||||
@@ -2299,12 +2308,12 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
lappend aCmplFlags "-D_CRT_SECURE_NO_WARNINGS"
|
||||
lappend aCmplFlags "-D_CRT_NONSTDC_NO_DEPRECATE"
|
||||
} elseif { "$theCmpl" == "gcc" } {
|
||||
if { "$aWokStation" != "qnx" } {
|
||||
if { "$thePlatform" != "qnx" } {
|
||||
set aCmplFlags "-mmmx -msse -msse2 -mfpmath=sse"
|
||||
}
|
||||
set aCmplFlagsRelease "-O2"
|
||||
set aCmplFlagsDebug "-O0 -g"
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
lappend aCmplFlags "-std=gnu++0x"
|
||||
lappend aCmplFlags "-D_WIN32_WINNT=0x0501"
|
||||
} else {
|
||||
@@ -2318,7 +2327,7 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
lappend aCmplFlagsRelease "-DNDEBUG"
|
||||
lappend aCmplFlagsRelease "-DNo_Exception"
|
||||
lappend aCmplFlagsDebug "-D_DEBUG"
|
||||
if { "$aWokStation" == "qnx" } {
|
||||
if { "$thePlatform" == "qnx" } {
|
||||
lappend aCmplFlags "-D_QNX_SOURCE"
|
||||
}
|
||||
|
||||
@@ -2340,20 +2349,20 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
# Release target configuration
|
||||
puts $aFile "\t\t\t<Target title=\"Release\">"
|
||||
if { "$theIsExe" == "true" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bin/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/bin/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option type=\"1\" />"
|
||||
} else {
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bin/${aLibPrefix}${theProjName}\" imp_lib=\"../../../${aWokStation}/cbp/lib/\$(TARGET_OUTPUT_BASENAME)\" prefix_auto=\"1\" extension_auto=\"1\" />"
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/bin/${aLibPrefix}${theProjName}\" imp_lib=\"../../../${thePlatform}/cbp/lib/\$(TARGET_OUTPUT_BASENAME)\" prefix_auto=\"1\" extension_auto=\"1\" />"
|
||||
} else {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/lib/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/lib/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t<Option type=\"3\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t<Option object_output=\"../../../${aWokStation}/cbp/obj\" />"
|
||||
puts $aFile "\t\t\t\t<Option object_output=\"../../../${thePlatform}/cbp/obj\" />"
|
||||
puts $aFile "\t\t\t\t<Option compiler=\"$aCmplCbp\" />"
|
||||
puts $aFile "\t\t\t\t<Option createDefFile=\"0\" />"
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
puts $aFile "\t\t\t\t<Option createStaticLib=\"1\" />"
|
||||
} else {
|
||||
puts $aFile "\t\t\t\t<Option createStaticLib=\"0\" />"
|
||||
@@ -2373,15 +2382,15 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
if { $toPassArgsByFile == 1 } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"\@$aLnkFileName\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"../../../${aWokStation}/cbp/lib\" />"
|
||||
if { "$aWokStation" == "mac" } {
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"../../../${thePlatform}/cbp/lib\" />"
|
||||
if { "$thePlatform" == "mac" } {
|
||||
if { [ lsearch $theLibsList X11 ] >= 0} {
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"/usr/X11/lib\" />"
|
||||
}
|
||||
}
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"\$(CSF_OPT_LNK${aWokArch})\" />"
|
||||
if { "$aWokStation" == "lin" } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"-Wl,-rpath-link=../../../${aWokStation}/cbp/lib\" />"
|
||||
if { "$thePlatform" == "lin" } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"-Wl,-rpath-link=../../../${thePlatform}/cbp/lib\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t</Linker>"
|
||||
|
||||
@@ -2390,20 +2399,20 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
# Debug target configuration
|
||||
puts $aFile "\t\t\t<Target title=\"Debug\">"
|
||||
if { "$theIsExe" == "true" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bind/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/bind/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option type=\"1\" />"
|
||||
} else {
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bind/${aLibPrefix}${theProjName}\" imp_lib=\"../../../${aWokStation}/cbp/libd/\$(TARGET_OUTPUT_BASENAME)\" prefix_auto=\"1\" extension_auto=\"1\" />"
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/bind/${aLibPrefix}${theProjName}\" imp_lib=\"../../../${thePlatform}/cbp/libd/\$(TARGET_OUTPUT_BASENAME)\" prefix_auto=\"1\" extension_auto=\"1\" />"
|
||||
} else {
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/libd/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
puts $aFile "\t\t\t\t<Option output=\"../../../${thePlatform}/cbp/libd/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t<Option type=\"3\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t<Option object_output=\"../../../${aWokStation}/cbp/objd\" />"
|
||||
puts $aFile "\t\t\t\t<Option object_output=\"../../../${thePlatform}/cbp/objd\" />"
|
||||
puts $aFile "\t\t\t\t<Option compiler=\"$aCmplCbp\" />"
|
||||
puts $aFile "\t\t\t\t<Option createDefFile=\"0\" />"
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
puts $aFile "\t\t\t\t<Option createStaticLib=\"1\" />"
|
||||
} else {
|
||||
puts $aFile "\t\t\t\t<Option createStaticLib=\"0\" />"
|
||||
@@ -2423,15 +2432,15 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
if { $toPassArgsByFile == 1 } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"\@$aLnkDebFileName\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"../../../${aWokStation}/cbp/libd\" />"
|
||||
if { "$aWokStation" == "mac" } {
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"../../../${thePlatform}/cbp/libd\" />"
|
||||
if { "$thePlatform" == "mac" } {
|
||||
if { [ lsearch $theLibsList X11 ] >= 0} {
|
||||
puts $aFile "\t\t\t\t\t<Add directory=\"/usr/X11/lib\" />"
|
||||
}
|
||||
}
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"\$(CSF_OPT_LNK${aWokArch}D)\" />"
|
||||
if { "$aWokStation" == "lin" } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"-Wl,-rpath-link=../../../${aWokStation}/cbp/libd\" />"
|
||||
if { "$thePlatform" == "lin" } {
|
||||
puts $aFile "\t\t\t\t\t<Add option=\"-Wl,-rpath-link=../../../${thePlatform}/cbp/libd\" />"
|
||||
}
|
||||
puts $aFile "\t\t\t\t</Linker>"
|
||||
|
||||
@@ -2452,7 +2461,7 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
|
||||
# COMMON linker options
|
||||
puts $aFile "\t\t<Linker>"
|
||||
if { "$aWokStation" == "wnt" && "$theCmpl" == "gcc" } {
|
||||
if { "$thePlatform" == "wnt" && "$theCmpl" == "gcc" } {
|
||||
puts $aFile "\t\t\t<Add option=\"-Wl,--export-all-symbols\" />"
|
||||
}
|
||||
foreach aFrameworkName $theFrameworks {
|
||||
@@ -2498,8 +2507,8 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
puts $aFile "\t\t\t<Option link=\"0\" />"
|
||||
puts $aFile "\t\t</Unit>"
|
||||
|
||||
set aFileObj [string map {.cxx .o} [string map [list "/src/" "/$aWokStation/cbp/obj/src/"] $aSrcFile]]
|
||||
set aFileObjd [string map {.cxx .o} [string map [list "/src/" "/$aWokStation/cbp/objd/src/"] $aSrcFile]]
|
||||
set aFileObj [string map {.cxx .o} [string map [list "/src/" "/$thePlatform/cbp/obj/src/"] $aSrcFile]]
|
||||
set aFileObjd [string map {.cxx .o} [string map [list "/src/" "/$thePlatform/cbp/objd/src/"] $aSrcFile]]
|
||||
puts -nonewline $aFileLnkObj "$aFileObj "
|
||||
puts -nonewline $aFileLnkObjd "$aFileObjd "
|
||||
} else {
|
||||
@@ -2508,7 +2517,7 @@ proc osutils:cbp { theCmpl theOutDir theProjName thePlatform theSrcFiles theLibs
|
||||
}
|
||||
}
|
||||
|
||||
if { "$aWokStation" == "wnt" } {
|
||||
if { "$thePlatform" == "wnt" || "$thePlatform" == "uwp" } {
|
||||
close $aFileLnkObj
|
||||
close $aFileLnkObjd
|
||||
}
|
||||
@@ -3326,7 +3335,7 @@ proc osutils:sdk { theSdkMajorVer {isQuietMode false} {theSdkDirectories {}} } {
|
||||
}
|
||||
|
||||
# Generate global properties to Visual Studio project file for UWP solution
|
||||
proc osutils:uwp:proj { theVcVer theProjTmpl } {
|
||||
proc osutils:uwp:proj { isUWP theProjTmpl } {
|
||||
|
||||
set uwp_properties ""
|
||||
set uwp_generate_metadata ""
|
||||
@@ -3334,7 +3343,7 @@ proc osutils:uwp:proj { theVcVer theProjTmpl } {
|
||||
|
||||
set format_template ""
|
||||
|
||||
if { ${theVcVer} == "vc14-uwp" } {
|
||||
if { $isUWP } {
|
||||
set sdk_versions [osutils:sdk 10]
|
||||
set sdk_max_ver [lindex ${sdk_versions} end]
|
||||
|
||||
|
Reference in New Issue
Block a user