From 71a82f376d593f291d2d0ac6d9514b5367f2c845 Mon Sep 17 00:00:00 2001 From: Eduardo Davila Date: Mon, 18 Oct 2010 08:33:55 +0000 Subject: [PATCH] *** empty log message *** --- kernel/cmake/BBTKConfigurePackagePaths.cmake | 16 +- kernel/cmake/BBTKKernelConfig.cmake | 14 +- kernel/src/bbtkConfigurationFile.cxx | 303 ++++++++++--------- 3 files changed, 156 insertions(+), 177 deletions(-) diff --git a/kernel/cmake/BBTKConfigurePackagePaths.cmake b/kernel/cmake/BBTKConfigurePackagePaths.cmake index e49161f..f45b308 100644 --- a/kernel/cmake/BBTKConfigurePackagePaths.cmake +++ b/kernel/cmake/BBTKConfigurePackagePaths.cmake @@ -1,5 +1,6 @@ +SET(BBTK_PACKAGE_LIB_PATH ${CMAKE_CREA_LIB_PATH} ) IF(WIN32) SET (EXECUTABLE_OUTPUT_REL_PATH "") @@ -16,7 +17,6 @@ IF(WIN32) ## SET (ADDITIONAL_DLL_PATH "C:/Program Files/CreaTools/crea_ThirdParty_dlls-0.2.0/bin" CACHE PATH "Additional paths in which to look for dlls") - SET(BBTK_PACKAGE_LIB_PATH bin) SET(BBTK_BBI "${BBTK_BIN_PATH}/bbi") SET(BBTK_BBS2CPP "${BBTK_BIN_PATH}/bbs2cpp") SET(BBTK_BBC "${BBTK_BIN_PATH}/bbc") @@ -27,20 +27,6 @@ ELSE(WIN32) # SET (EXECUTABLE_OUTPUT_REL_PATH bin) # SET (LIBRARY_OUTPUT_REL_PATH bin) SET(BBTK_BIN_PATH ${BBTK_INSTALL_PREFIX}/bin) - - if( NOT APPLE ) - # check 64 bit - if( ${CMAKE_SIZEOF_VOID_P} EQUAL 4 ) - set( HAVE_64_BIT 0 ) - SET(BBTK_PACKAGE_LIB_PATH lib) - else( ${CMAKE_SIZEOF_VOID_P}EQUAL 4 ) - set( HAVE_64_BIT 1 ) - SET(BBTK_PACKAGE_LIB_PATH lib64) - endif( ${CMAKE_SIZEOF_VOID_P} EQUAL 4 ) - endif( NOT APPLE ) - - - SET(BBTK_BBI "${BBTK_BIN_PATH}/bbi") SET(BBTK_BBS2CPP "${BBTK_BIN_PATH}/bbs2cpp") SET(BBTK_BBC "${BBTK_BIN_PATH}/bbc") diff --git a/kernel/cmake/BBTKKernelConfig.cmake b/kernel/cmake/BBTKKernelConfig.cmake index d461929..94c7831 100644 --- a/kernel/cmake/BBTKKernelConfig.cmake +++ b/kernel/cmake/BBTKKernelConfig.cmake @@ -44,6 +44,9 @@ SET (LIBRARY_OUTPUT_PATH # WARNING : # On WIN32, these paths will only be right at *BUILD TIME* in VS6 or .net # Cannot be used at cmake run time ! + +SET(BBTK_LIB_PATH ${CMAKE_CREA_LIB_PATH} ) + IF(WIN32) IF(MSVC10) #FCY 18-06-10 SET(BBTK_BIN_PATH $(OutDir)) @@ -54,23 +57,12 @@ IF(WIN32) SET(BBTK_BIN_PATH $(SolutionDir)/$(OutDir)) ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") ENDIF(MSVC10) - SET(BBTK_LIB_PATH bin) SET(BBTK_BBS2CPP ${BBTK_BIN_PATH}/bbs2cpp.exe) SET(BBTK_BBC ${BBTK_BIN_PATH}/bbc.exe) SET(BBTK_BBI ${BBTK_BIN_PATH}/bbi.exe) SET(BBTK_BBFY ${BBTK_BIN_PATH}/bbfy.exe) ELSE(WIN32) - if( NOT APPLE ) - # check 64 bit - if( ${CMAKE_SIZEOF_VOID_P} EQUAL 4 ) - set( HAVE_64_BIT 0 ) - SET(BBTK_LIB_PATH lib) - else( ${CMAKE_SIZEOF_VOID_P}EQUAL 4 ) - set( HAVE_64_BIT 1 ) - SET(BBTK_LIB_PATH lib64) - endif( ${CMAKE_SIZEOF_VOID_P} EQUAL 4 ) - endif( NOT APPLE ) # For Xcode : have to test the cmake generator ! IF ( CMAKE_GENERATOR STREQUAL Xcode) SET(BBTK_BIN_PATH ${EXECUTABLE_OUTPUT_PATH}/Debug) diff --git a/kernel/src/bbtkConfigurationFile.cxx b/kernel/src/bbtkConfigurationFile.cxx index 8e2d78c..0fe4983 100644 --- a/kernel/src/bbtkConfigurationFile.cxx +++ b/kernel/src/bbtkConfigurationFile.cxx @@ -1,9 +1,9 @@ -/*========================================================================= +/*========================================================================= Program: bbtk Module: $RCSfile: bbtkConfigurationFile.cxx,v $ Language: C++ - Date: $Date: 2009/12/08 14:10:36 $ - Version: $Revision: 1.32 $ + Date: $Date: 2010/10/18 08:33:57 $ + Version: $Revision: 1.33 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -11,22 +11,22 @@ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited -* liability. +* liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ +* ------------------------------------------------------------------------ */ /** *\file @@ -55,43 +55,43 @@ namespace bbtk { mFile_separator = VALID_FILE_SEPARATOR; - - // ==> Set system paths + + // ==> Set system paths mBin_path = Utilities::GetExecutablePath(); - - - -/* EED 23 Mars 2009 + + + +/* EED 23 Mars 2009 #ifdef MACOSX mInstall_path = mBin_path + "/../../../.."; #else mInstall_path = mBin_path + "/.."; #endif -*/ +*/ #ifdef MACOSX - - std::string macPath("Contents/MacOS"); + + std::string macPath("Contents/MacOS"); int sbp = mBin_path.length(); int smp = macPath.length(); if (mBin_path.compare( sbp-smp, smp, macPath )==0 ) { mBin_path = mBin_path + "/../../.."; } - - -#endif + + +#endif mInstall_path = mBin_path + "/.."; - - + + // The relative path to the doc folder (=BBTK_DOC_REL_PATH) // mDoc_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH); // The path to the doc folder (=mInstall_path+"/"+mDoc_rel_path) // mDoc_path = mInstall_path + "/" + mDoc_rel_path; - // Have to create bbtk user's dirs if needed + // Have to create bbtk user's dirs if needed - // LG 27/01/09 : doc is now user dependent + // LG 27/01/09 : doc is now user dependent // and located in user's .bbtk dir /doc // All dirs under .bbtk user's dir are set and created by: InitializeDotBbtkStructure(); @@ -100,10 +100,10 @@ namespace bbtk mBbs_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_BBS_REL_PATH); // The path to the bbs folder (=mInstall_path+"/"+mBbs_rel_path) mBbs_path = mInstall_path + "/" + mBbs_rel_path; - + mData_path = mInstall_path + "/" + BBTK_STRINGIFY_SYMBOL(BBTK_DATA_REL_PATH); - - Utilities::replace( mBin_path, + + Utilities::replace( mBin_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR); Utilities::replace( mInstall_path, @@ -115,7 +115,7 @@ namespace bbtk Utilities::replace( mData_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR); - + bbtkMessage("config",1," ==> bin : '"< prefix : '"< doc : '"< First we look for bbtk_config.xml in "." char buf[2048]; const char *currentDir = getcwd(buf, 2048); - + if( !currentDir ) { std::cerr << "Path was too long to fit on 2048 bytes ?!?" << std::endl; // \todo : what else? // How abort a constructor and warn the caller function? - // LG : throw an exception + // LG : throw an exception } - + // std::string configXmlFullPathName = currentDir + mFile_separator + "bbtk_config.xml"; std::string configXmlFullPathName = currentDir ; configXmlFullPathName += "/bbtk_config.xml"; Utilities::replace( configXmlFullPathName , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); - + if ( Utilities::FileExists( configXmlFullPathName )) { - bbtkMessage("config",1, "ConfigurationFile : [" << configXmlFullPathName << - "] found in current directory" << std::endl); + bbtkMessage("config",1, "ConfigurationFile : [" << configXmlFullPathName << + "] found in current directory" << std::endl); //Read(configXmlFullPathName.c_str()); - // traiter le fichier local + // traiter le fichier local } - + // ==> Then we look for bbtk_config.xml in ".bbtk" - else + else { configXmlFullPathName = Utilities::MakeUserSettingsFullFileName("bbtk_config.xml"); if (!Utilities::FileExists( configXmlFullPathName )) - { + { // ==> Nothing found, we create bbtk_config.xml in ".bbtk" InstallPath (); } } - + // In any case, deal with bbtk_config.xml! Read(configXmlFullPathName.c_str()); } @@ -220,33 +221,33 @@ namespace bbtk { } //========================================================================= - + //========================================================================= void ConfigurationFile::InitializeDotBbtkStructure() { mDot_bbtk_path = Utilities::GetUserSettingsDir(); mDot_bbtk_is_new = false; - if (!Utilities::FileExists(mDot_bbtk_path)) mDot_bbtk_is_new = true; + if (!Utilities::FileExists(mDot_bbtk_path)) mDot_bbtk_is_new = true; Utilities::CreateDirectoryIfNeeded(mDot_bbtk_path); - + mDoc_path = Utilities::MakeUserSettingsFullFileName("doc"); Utilities::CreateDirectoryIfNeeded(mDoc_path); - std::string bbdoc_path = + std::string bbdoc_path = Utilities::MakeUserSettingsFullFileName("doc/bbdoc"); Utilities::CreateDirectoryIfNeeded(bbdoc_path); - + // Create help_contents.html if does not exist std::string filename = Utilities::MakeUserSettingsFullFileName("doc/help_contents.html"); if (!Utilities::FileExists(filename)) { - bbtkDebugMessage("config",1, + bbtkDebugMessage("config",1, "* Creating [" << filename << "]" << std::endl); // The path to the doc folder (=mInstall_path+"/"+mDoc_rel_path) - std::string doc_path = mInstall_path + "/" + std::string doc_path = mInstall_path + "/" + BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) + "/"; - Utilities::MakeValidFileName(doc_path); - + Utilities::MakeValidFileName(doc_path); + std::ofstream f; f.open(filename.c_str(), std::ios::out ); @@ -258,11 +259,11 @@ namespace bbtk << "charset=iso-8859-1\">

Help Contents

" << "Demos
" - << "Examples" << "

Guides

" << "User's Guide
" << "\n"); fclose(fp); } - //========================================================================= + //========================================================================= + + - - //========================================================================= void ConfigurationFile::InstallPath () { - + /*-------------------------------------------------- New policy for bbtk_config.xml : - + if bbtk_config.xml found in current directory (user is an aware user!) use it! - + else if bbtk_config.xml found in HOME/.bbtk (user already worked with it) use it! - + else if bbtk_config.xml.tmp found in /usr/local/bin or c:\\Program Files\\BBTK\\bin copy it as .bbtk/bbtk_config.xml - + else (nothing installed) create a minimum version in HOME/.bbtk ----------------------------------------------------*/ - - + + // ----------------------------------------------------------------- #if defined(__GNUC__) - + // ------------------ create some usefull strings ---------------- // installed bbtk_path char bbtk_path[100]; strcpy(bbtk_path, "/usr/local/bin"); - + // rootDirectory char rootDirectory[200]; sprintf( rootDirectory, "%s/.bbtk", getenv("HOME")); - + // configPath char configPath[200]; sprintf(configPath, "%s/bbtk_config.xml",rootDirectory); - + // configXmlTmp - char configXmlTmp[250]; + char configXmlTmp[250]; sprintf(configXmlTmp, "%s/bbtk_config.xml.tmp", bbtk_path); - + // copyFile char copyFile[250]; - + if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found (not installed) - { + { // if "bbtk_path/bbtk_config.xml.tmp" doesn't exist, hard-create a minimum version in .bbtk CreateConfigXML( rootDirectory );// create .bbtk } @@ -374,46 +375,46 @@ namespace bbtk } } return; - + // ------------------------------------------------------------------ #elif defined(WIN32) - - + + // installed bbtk_path char bbtk_path[100]; strcpy(bbtk_path, "\"c:\\Program Files\\BBTK\\bin\""); char bbtk_path2[100]; strcpy(bbtk_path2, "c:\\Program Files\\BBTK\\bin"); - + // rootDirectory - char rootDirectory[200]; + char rootDirectory[200]; sprintf(rootDirectory, "%s\\.bbtk",getenv("USERPROFILE")); // std::cout << "[" << rootDirectory << "]" << std::endl; - + // configPath char configPath[200]; sprintf(configPath, "%s\\bbtk_config.xml",rootDirectory); - + // makeDir char makeDir[250]; sprintf( makeDir, "mkdir \"%s\" ", rootDirectory); - + // configXmlTmp - char configXmlTmp[250]; + char configXmlTmp[250]; sprintf(configXmlTmp, "%s\\bbtk_config.xml.tmp", bbtk_path2); - + // copyFile char copyFile[250]; - + if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found { // if "bbtk_path/bbtk_config.xml.tmp" doesn't exist, hard-create a minimum version in .bbtk CreateConfigXML( rootDirectory );// create .bbtk return; - } - + } + sprintf(copyFile,"copy %s\\bbtk_config.xml.tmp \"%s\"\\bbtk_config.xml ",bbtk_path,rootDirectory ); - + int attribs = GetFileAttributes (rootDirectory); bbtkMessage("config",1,std::hex << attribs << " " << FILE_ATTRIBUTE_DIRECTORY << std::endl); if ( attribs != 0xFFFFFFFF) @@ -422,21 +423,21 @@ namespace bbtk { if ( GetFileAttributes( configPath ) == 0xFFFFFFFF) { - system(copyFile); - } + system(copyFile); + } } - } - else + } + else { system(makeDir); - system(copyFile); - } - return; - // ------------------------------------------------------------------ + system(copyFile); + } + return; + // ------------------------------------------------------------------ #else /// \todo ConfigurationFile::InstallPath() : exit when for not WIN32 and not__GNUC__ - return; + return; #endif } @@ -447,17 +448,17 @@ namespace bbtk //========================================================================= // Gets the list of directories holding bb scripts, packages, dll, ... from the xml file // bbtk_config.xml - + void ConfigurationFile::Read(const std::string& filename) { - + bbtkDebugMessage("config",1,"ConfigurationFile::Read(" <error != eXMLErrorNone ) + + if ( res->error != eXMLErrorNone ) { std::string mess = GetErrorMessage(res,filename); delete res; @@ -465,78 +466,78 @@ namespace bbtk bbtkError(mess); } delete res; - + bbtkDebugMessage("config",1,"OK" << std::endl); - + int i,j; - + // Description - for (i=0,j=0; ierror != eXMLErrorNone ) + + if ( res->error != eXMLErrorNone ) { std::string mess = GetErrorMessage(res,Get_config_xml_full_path()); delete res; @@ -554,7 +555,7 @@ namespace bbtk BBSPATH.addText((XMLCSTR)bbs_path.c_str()); Utilities::replace(bbs_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR); mBbs_paths.push_back(bbs_path); - + #ifdef _WIN32 std::string pack_path = path + "/bin"; #else @@ -585,7 +586,7 @@ namespace bbtk XMLError err = BB.writeToFile((XMLCSTR)Get_config_xml_full_path().c_str()); - if ( err != eXMLErrorNone ) + if ( err != eXMLErrorNone ) { std::string mess = GetErrorMessage(res,Get_config_xml_full_path()); bbtkDebugMessage("config",1,mess<< std::endl); @@ -601,34 +602,34 @@ namespace bbtk { bbtkDebugMessageInc("config",9,"ConfigurationFile::GetHelp("<bbs_paths = Get_bbs_paths(); const std::vectorpackage_paths = Get_package_paths(); - - bbtkMessage("help",level, "=============" << std::endl); + + bbtkMessage("help",level, "=============" << std::endl); bbtkMessage("help",level, "Configuration" << std::endl); bbtkMessage("help",level, "=============" << std::endl); - bbtkMessage("help",level, "bbtk_config.xml : [" << config_xml_full_path << "]" << std::endl); + bbtkMessage("help",level, "bbtk_config.xml : [" << config_xml_full_path << "]" << std::endl); bbtkMessage("help",level, "Documentation Path : [" << url << "]" << std::endl); bbtkMessage("help",level, "Data Path : [" << data_path << "]" << std::endl); bbtkMessage("help",level, "Temp Directory : [" << default_temp_dir << "]" << std::endl); bbtkMessage("help",level, "File Separator : [" << file_separator << "]" << std::endl); std::vector::const_iterator i; - - bbtkMessage("help",level, "BBS Paths " << std::endl); + + bbtkMessage("help",level, "BBS Paths " << std::endl); for (i = bbs_paths.begin(); i!=bbs_paths.end(); ++i ) { bbtkMessage("help",level,"--- ["<<*i<<"]"<