0030339: Configuration - add project files for qmake
[occt.git] / adm / genconfdeps.tcl
index e2010b9..50d2c7f 100644 (file)
@@ -27,8 +27,10 @@ if { "$tcl_platform(platform)" == "unix" } {
   set SYS_EXE_SUFFIX    ""
   if { "$tcl_platform(os)" == "Darwin" } {
     set SYS_LIB_SUFFIX "dylib"
+    set PRJFMT "xcd"
   } else {
     set SYS_LIB_SUFFIX "so"
+    set PRJFMT "cbp"
   }
   set VCVER "gcc"
   set VCVARS ""
@@ -39,6 +41,7 @@ if { "$tcl_platform(platform)" == "unix" } {
   set SYS_EXE_SUFFIX    ".exe"
   set VCVER  "vc10"
   set VCVARS ""
+  set PRJFMT "vcxproj"
 }
 
 set SHORTCUT_HEADERS "ShortCut"
@@ -82,7 +85,7 @@ if { "$tcl_platform(platform)" != "windows" } {
   set HAVE_D3D ""
   set HAVE_RelWithDebInfo ""
 }
-foreach anEnvIter {ARCH VCVER VCVARS PRODUCTS_PATH} {
+foreach anEnvIter {ARCH VCVER VCVARS PRJFMT PRODUCTS_PATH} {
   if { [info exists ::env(${anEnvIter})] } {
     set ${anEnvIter} "$::env(${anEnvIter})"
   }
@@ -1118,15 +1121,33 @@ proc wokdep:SearchX11 {theErrInc theErrLib32 theErrLib64 theErrBin32 theErrBin64
   return "$isFound"
 }
 
+# Returns OCCT version string from file Standard_Version.hxx (if available)
+proc wokdep:DetectCasVersion {} {
+  set occt_ver 7.0.0
+  set aCasRoot [file normalize [file dirname [info script]]]
+  set filename "${aCasRoot}/src/Standard/Standard_Version.hxx"
+  if { [file exists $filename] } {
+    set fh [open $filename "r"]
+    set fh_loaded [read $fh]
+    close $fh
+    regexp {[^/]\s*#\s*define\s+OCC_VERSION_COMPLETE\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver
+  } else {
+    puts "Error: file '$filename' not found"
+  }
+  return $occt_ver
+}
+
 # Generate (override) custom environment file
 proc wokdep:SaveCustom {} {
+  set aGenInfo "This environment file was generated by genconf.tcl script at [clock format [clock seconds] -format "%Y.%m.%d %H:%M"]"
   if { "$::tcl_platform(platform)" == "windows" } {
     set aCustomFilePath "./custom.bat"
     set aFile [open $aCustomFilePath "w"]
     puts $aFile "@echo off"
-    puts $aFile "rem This environment file was generated by wok_depsgui.tcl script at [clock format [clock seconds] -format "%Y.%m.%d %H:%M"]"
+    puts $aFile "rem $aGenInfo"
 
     puts $aFile ""
+    puts $aFile "set PRJFMT=$::PRJFMT"
     puts $aFile "set VCVER=$::VCVER"
     puts $aFile "set ARCH=$::ARCH"
     puts $aFile "set VCVARS=$::VCVARS"
@@ -1175,9 +1196,10 @@ proc wokdep:SaveCustom {} {
     set aCustomFilePath "./custom.sh"
     set aFile [open $aCustomFilePath "w"]
     puts $aFile "#!/bin/bash"
-    puts $aFile "# This environment file was generated by wok_depsgui.tcl script at [clock format [clock seconds] -format "%Y.%m.%d %H:%M"]"
+    puts $aFile "# $aGenInfo"
 
     puts $aFile ""
+    puts $aFile "export PRJFMT=$::PRJFMT"
     puts $aFile "export ARCH=$::ARCH"
     puts $aFile "export SHORTCUT_HEADERS=$::SHORTCUT_HEADERS"
 
@@ -1211,6 +1233,52 @@ proc wokdep:SaveCustom {} {
 
     close $aFile
   }
-
   puts "Configuration saved to file '$aCustomFilePath'"
+
+  if { "$::PRJFMT" == "pro" } {
+    set aCasVer [wokdep:DetectCasVersion]
+    set aCustomFilePath "./adm/qmake/custom.auto.pri"
+    set aFile [open $aCustomFilePath "w"]
+    puts $aFile "# $aGenInfo"
+
+    puts $aFile ""
+    puts $aFile "VERSION=$aCasVer"
+    puts $aFile "PRODUCTS_PATH=\"$::PRODUCTS_PATH\""
+
+    puts $aFile ""
+    puts $aFile "# Optional 3rd-parties switches"
+    foreach anEnvIter $::THE_ENV_VARIABLES {
+      set aName ${anEnvIter}
+      set aValue [set ::${anEnvIter}]
+      if { "$aValue" == "true" } {
+        puts $aFile "CONFIG += ${aName}"
+      } else {
+        #puts $aFile "CONFIG -= ${aName}"
+      }
+    }
+
+    puts $aFile ""
+    puts $aFile "# Additional headers search paths"
+    foreach anIncPath $::CSF_OPT_INC {
+      puts $aFile "INCLUDEPATH += \"${anIncPath}\""
+    }
+
+    puts $aFile ""
+    puts $aFile "# Additional libraries search paths"
+    foreach aLibPath [set ::CSF_OPT_LIB$::ARCH] {
+      puts $aFile "LIBS += -L\"${aLibPath}\""
+    }
+
+    if { "$::tcl_platform(platform)" == "windows" } {
+      puts $aFile ""
+      puts $aFile "# Additional DLLs search paths"
+      foreach aDllPath [set ::CSF_OPT_BIN$::ARCH] {
+        puts $aFile "LIBS += -L\"${aDllPath}\""
+      }
+    }
+
+    puts $aFile ""
+    close $aFile
+    puts "Configuration saved to file '$aCustomFilePath'"
+  }
 }