}
# fetch environment variables (e.g. set by custom.sh or custom.bat) and set them as tcl variables with the same name
-set THE_ENV_VARIABLES {HAVE_FREEIMAGE HAVE_FFMPEG HAVE_TBB HAVE_GLES2 HAVE_D3D HAVE_VTK HAVE_ZLIB HAVE_LIBLZMA HAVE_OPENCL CHECK_QT4 CHECK_JDK MACOSX_USE_GLX HAVE_RelWithDebInfo}
+set THE_ENV_VARIABLES {HAVE_FREEIMAGE HAVE_FFMPEG HAVE_TBB HAVE_GLES2 HAVE_D3D HAVE_VTK HAVE_ZLIB HAVE_LIBLZMA HAVE_E57 HAVE_RAPIDJSON HAVE_OPENCL CHECK_QT4 CHECK_JDK MACOSX_USE_GLX HAVE_RelWithDebInfo}
foreach anEnvIter $THE_ENV_VARIABLES {
set ${anEnvIter} "false"
if { [info exists ::env(${anEnvIter})] } {
set HAVE_D3D ""
set HAVE_RelWithDebInfo ""
}
-foreach anEnvIter {ARCH VCVER VCVARS PRJFMT PRODUCTS_PATH} {
+foreach anEnvIter {ARCH VCVER VCVARS PRJFMT } {
if { [info exists ::env(${anEnvIter})] } {
set ${anEnvIter} "$::env(${anEnvIter})"
}
}
+if { [info exists ::env(PRODUCTS_PATH)] } {
+ set PRODUCTS_PATH [file normalize "$::env(PRODUCTS_PATH)"]
+}
if { [info exists ::env(CSF_OPT_INC)] } {
set CSF_OPT_INC [split "$::env(CSF_OPT_INC)" $::SYS_PATH_SPLITTER]
# Search library file in $::CSF_OPT_LIB* and standard paths
proc wokdep:SearchLib {theLib theBitness {theSearchPath ""}} {
if { "$theSearchPath" != "" } {
- set aPath "${theSearchPath}/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath "${theSearchPath}/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath2 "${theSearchPath}/${::SYS_LIB_PREFIX}${theLib}.a"
if { [file exists "$aPath"] } {
return "$aPath"
+ } elseif { "$::tcl_platform(platform)" != "windows" && [file exists "$aPath2"] } {
+ return "$aPath2"
} else {
return ""
}
# search in custom paths
foreach aLibPath [set ::CSF_OPT_LIB$theBitness] {
- set aPath "${aLibPath}/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath "${aLibPath}/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath2 "${aLibPath}/${::SYS_LIB_PREFIX}${theLib}.a"
if { [file exists "$aPath"] } {
return "$aPath"
+ } elseif { "$::tcl_platform(platform)" != "windows" && [file exists "$aPath2"] } {
+ return "$aPath2"
}
}
# search in system
if { "$::ARCH" == "$theBitness"} {
- set aPath "/usr/lib/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath "/usr/lib/${::SYS_LIB_PREFIX}${theLib}.${::SYS_LIB_SUFFIX}"
+ set aPath2 "/usr/lib/${::SYS_LIB_PREFIX}${theLib}.a"
if { [file exists "$aPath"] } {
return "$aPath"
+ } elseif { [file exists "$aPath2"] } {
+ return "$aPath2"
}
}
-
if { "$::tcl_platform(os)" == "Linux" } {
if { "$theBitness" == "64" } {
- set aPath "/usr/lib/x86_64-linux-gnu/lib${theLib}.so"
+ set aPath "/usr/lib/x86_64-linux-gnu/lib${theLib}.so"
+ set aPath2 "/usr/lib/x86_64-linux-gnu/lib${theLib}.a"
if { [file exists "$aPath"] } {
return "$aPath"
+ } elseif { [file exists "$aPath2"] } {
+ return "$aPath2"
}
} else {
- set aPath "/usr/lib/i386-linux-gnu/lib${theLib}.so"
+ set aPath "/usr/lib/i386-linux-gnu/lib${theLib}.so"
+ set aPath2 "/usr/lib/i386-linux-gnu/lib${theLib}.a"
if { [file exists "$aPath"] } {
return "$aPath"
+ } elseif { [file exists "$aPath2"] } {
+ return "$aPath2"
}
}
}
# keep only two first digits in "vc141"
if { ! [regexp {^vc[0-9][0-9]} $theCmpl aCmpl] } {
- set aCmpl $theCmpl
+ if { [regexp {^vclang} $theCmpl] } {
+ set aCmpl vc14
+ } else {
+ set aCmpl $theCmpl
+ }
}
set aShortList {}
# keep only two first digits in "vc141"
if { ! [regexp {^vc[0-9][0-9]} ${::VCVER} aVcLib] } {
- set aVcLib ${::VCVER}
+ if { [regexp {^vclang} ${::VCVER}] } {
+ set aVcLib vc14
+ } else {
+ set aVcLib ${::VCVER}
+ }
}
set isFound "true"
return "$isFound"
}
+# Search RapidJSON headers
+proc wokdep:SearchRapidJson {theErrInc theErrLib32 theErrLib64 theErrBin32 theErrBin64} {
+ upvar $theErrInc anErrInc
+
+ set isFound "true"
+ set aRJHPath [wokdep:SearchHeader "rapidjson/rapidjson.h"]
+ if { "$aRJHPath" == "" } {
+ set aPath [wokdep:Preferred [glob -nocomplain -directory "$::PRODUCTS_PATH" -type d *{rapidjson}*] "$::VCVER" "$::ARCH" ]
+ if { "$aPath" != "" && [file exists "$aPath/include/rapidjson/rapidjson.h"] } {
+ lappend ::CSF_OPT_INC "$aPath/include"
+ } else {
+ lappend anErrInc "Error: 'rapidjson/rapidjson.h' not found (RapidJSON)"
+ set isFound "false"
+ }
+ }
+
+ return "$isFound"
+}
+
# Auxiliary function, gets VTK version to set default search directory
proc wokdep:VtkVersion { thePath } {
set aResult "6.1"
}
set aStringInc [join $::CSF_OPT_INC $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringInc [regsub -all "$::PRODUCTS_PATH" $aStringInc "%PRODUCTS_PATH%"]
+ }
puts $aFile ""
puts $aFile "rem Additional headers search paths"
puts $aFile "set \"CSF_OPT_INC=$aStringInc\""
set aStringLib32 [join $::CSF_OPT_LIB32 $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringLib32 [regsub -all "$::PRODUCTS_PATH" $aStringLib32 "%PRODUCTS_PATH%"]
+ }
puts $aFile ""
puts $aFile "rem Additional libraries (32-bit) search paths"
puts $aFile "set \"CSF_OPT_LIB32=$aStringLib32\""
set aStringLib64 [join $::CSF_OPT_LIB64 $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringLib64 [regsub -all "$::PRODUCTS_PATH" $aStringLib64 "%PRODUCTS_PATH%"]
+ }
puts $aFile ""
puts $aFile "rem Additional libraries (64-bit) search paths"
puts $aFile "set \"CSF_OPT_LIB64=$aStringLib64\""
set aStringBin32 [join $::CSF_OPT_BIN32 $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringBin32 [regsub -all "$::PRODUCTS_PATH" $aStringBin32 "%PRODUCTS_PATH%"]
+ }
puts $aFile ""
puts $aFile "rem Additional (32-bit) search paths"
puts $aFile "set \"CSF_OPT_BIN32=$aStringBin32\""
set aStringBin64 [join $::CSF_OPT_BIN64 $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringBin64 [regsub -all "$::PRODUCTS_PATH" $aStringBin64 "%PRODUCTS_PATH%"]
+ }
puts $aFile ""
puts $aFile "rem Additional (64-bit) search paths"
puts $aFile "set \"CSF_OPT_BIN64=$aStringBin64\""
}
set aStringInc [join $::CSF_OPT_INC $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringInc [regsub -all "$::PRODUCTS_PATH" $aStringInc "\${PRODUCTS_PATH}"]
+ }
puts $aFile ""
puts $aFile "# Additional headers search paths"
puts $aFile "export CSF_OPT_INC=\"$aStringInc\""
- set aStringLib$::ARCH [join [set ::CSF_OPT_LIB$::ARCH] $::SYS_PATH_SPLITTER]
+ set aStringLib [join [set ::CSF_OPT_LIB$::ARCH] $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringLib [regsub -all "$::PRODUCTS_PATH" $aStringLib "\${PRODUCTS_PATH}"]
+ }
puts $aFile ""
puts $aFile "# Additional libraries ($::ARCH-bit) search paths"
- puts $aFile "export CSF_OPT_LIB$::ARCH=\"[set aStringLib$::ARCH]\""
+ puts $aFile "export CSF_OPT_LIB$::ARCH=\"[set aStringLib]\""
- set aStringBin$::ARCH [join [set ::CSF_OPT_BIN$::ARCH] $::SYS_PATH_SPLITTER]
+ set aStringBin [join [set ::CSF_OPT_BIN$::ARCH] $::SYS_PATH_SPLITTER]
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aStringBin [regsub -all "$::PRODUCTS_PATH" $aStringBin "\${PRODUCTS_PATH}"]
+ }
puts $aFile ""
puts $aFile "# Additional ($::ARCH-bit) search paths"
- puts $aFile "export CSF_OPT_BIN$::ARCH=\"[set aStringBin$::ARCH]\""
+ puts $aFile "export CSF_OPT_BIN$::ARCH=\"[set aStringBin]\""
close $aFile
}
puts "Configuration saved to file '$aCustomFilePath'"
- if { "$::PRJFMT" == "pro" } {
+ # generate custom.auto.pri
+ set toExportCustomPri 1
+ if { $toExportCustomPri == 1 } {
set aCasVer [wokdep:DetectCasVersion]
set aCustomFilePath "./adm/qmake/custom.auto.pri"
set aFile [open $aCustomFilePath "w"]
puts $aFile ""
puts $aFile "# Additional headers search paths"
foreach anIncPath $::CSF_OPT_INC {
+ if { "$::PRODUCTS_PATH" != "" } {
+ set anIncPath [regsub -all "$::PRODUCTS_PATH" $anIncPath "\$\$\{PRODUCTS_PATH\}"]
+ }
puts $aFile "INCLUDEPATH += \"${anIncPath}\""
}
puts $aFile ""
puts $aFile "# Additional libraries search paths"
foreach aLibPath [set ::CSF_OPT_LIB$::ARCH] {
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aLibPath [regsub -all "$::PRODUCTS_PATH" $aLibPath "\$\$\{PRODUCTS_PATH\}"]
+ }
puts $aFile "LIBS += -L\"${aLibPath}\""
}
puts $aFile ""
puts $aFile "# Additional DLLs search paths"
foreach aDllPath [set ::CSF_OPT_BIN$::ARCH] {
+ if { "$::PRODUCTS_PATH" != "" } {
+ set aDllPath [regsub -all "$::PRODUCTS_PATH" $aDllPath "\$\$\{PRODUCTS_PATH\}"]
+ }
puts $aFile "LIBS += -L\"${aDllPath}\""
}
}