* All Tools:
- Change: New structure for the installation & CMake system. * Tools are now grouped in "projects". There are three projects: 1. - IO: Standalones parsers/drivers (IO_USER_TOP, IO_TOP). 2. - Coriolis: Base & digital tools (CORIOLIS_USER_TOP, CORIOLIS_TOP). 3. - Chams: Analogic tools (CHAMS_USER_TOP, CHAMS_TOP). Each *project* has a two "TOP" environement variables, for example: IO_TOP and IO_USER_TOP. Thoses variables are the only ones useds to locate the tool (CMake modules, headers & libraries). The local path always takes precedence over the global one. The localisation process occurs in each tool top CMakeLists.txt where the macro SETUP_PROJECT_PATH is to be defined. There is no way to put it in a shared includes file as it's the macro precisely used to locates the includes... You have to call the macro once for each project you wants to uses: SETUP_PROJECT_PATHS(IO) SETUP_PROJECT_PATHS(CORIOLIS) * In FindTOOL.cmake, supress the <TOOL>_DIR_SEARCH and uses the <PROJECT>_DIR_SEARCH instead (example: CORIOLIS_DIR_SEARCH). * buildCoriolis.py modificated according to the new "TOP" scheme.
This commit is contained in:
parent
23770a1d47
commit
093baff9b6
|
@ -64,6 +64,7 @@ class ProjectBuilder:
|
||||||
self._verboseMakefile = "OFF"
|
self._verboseMakefile = "OFF"
|
||||||
self._libMode = "Shared"
|
self._libMode = "Shared"
|
||||||
self._makeArguments = []
|
self._makeArguments = []
|
||||||
|
self._environment = os.environ
|
||||||
|
|
||||||
self._guessOs ()
|
self._guessOs ()
|
||||||
self._updateSecondary ()
|
self._updateSecondary ()
|
||||||
|
@ -145,8 +146,8 @@ class ProjectBuilder:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def _execute ( self, environment, command, error ):
|
def _execute ( self, command, error ):
|
||||||
child = subprocess.Popen ( command, env=environment, stdout=None )
|
child = subprocess.Popen ( command, env=self._environment, stdout=None )
|
||||||
(pid,status) = os.waitpid ( child.pid, 0 )
|
(pid,status) = os.waitpid ( child.pid, 0 )
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print "[ERROR] %s (%d)." % (error,status)
|
print "[ERROR] %s (%d)." % (error,status)
|
||||||
|
@ -159,10 +160,6 @@ class ProjectBuilder:
|
||||||
toolBuildDir = os.path.join ( self._buildDir , tool )
|
toolBuildDir = os.path.join ( self._buildDir , tool )
|
||||||
# Supplied directly in the CMakeLists.txt.
|
# Supplied directly in the CMakeLists.txt.
|
||||||
#cmakeModules = os.path.join ( self._installDir, "share", "cmake_modules" )
|
#cmakeModules = os.path.join ( self._installDir, "share", "cmake_modules" )
|
||||||
environment = os.environ
|
|
||||||
if not environment.has_key("IO_TOP" ): environment[ "IO_TOP" ] = self._installDir
|
|
||||||
if not environment.has_key("HURRICANE_TOP"): environment[ "HURRICANE_TOP"] = self._installDir
|
|
||||||
if not environment.has_key("CORIOLIS_TOP" ): environment[ "CORIOLIS_TOP" ] = self._installDir
|
|
||||||
|
|
||||||
if not os.path.isdir(toolSourceDir):
|
if not os.path.isdir(toolSourceDir):
|
||||||
print "[ERROR] Missing tool source directory: \"%s\" (skipped)." % toolSourceDir
|
print "[ERROR] Missing tool source directory: \"%s\" (skipped)." % toolSourceDir
|
||||||
|
@ -176,7 +173,7 @@ class ProjectBuilder:
|
||||||
, "-D", "BUILD_SHARED_LIBS:STRING=%s" % self._enableShared
|
, "-D", "BUILD_SHARED_LIBS:STRING=%s" % self._enableShared
|
||||||
#, "-D", "CMAKE_MODULE_PATH:STRING=%s" % cmakeModules
|
#, "-D", "CMAKE_MODULE_PATH:STRING=%s" % cmakeModules
|
||||||
, toolSourceDir ]
|
, toolSourceDir ]
|
||||||
self._execute ( environment, command, "First CMake failed" )
|
self._execute ( command, "First CMake failed" )
|
||||||
|
|
||||||
os.chdir ( toolBuildDir )
|
os.chdir ( toolBuildDir )
|
||||||
if self._noCache:
|
if self._noCache:
|
||||||
|
@ -188,36 +185,34 @@ class ProjectBuilder:
|
||||||
, "-D", "CHECK_DETERMINISM:STRING=%s" % self._checkDeterminism
|
, "-D", "CHECK_DETERMINISM:STRING=%s" % self._checkDeterminism
|
||||||
, "-D", "CMAKE_VERBOSE_MAKEFILE:STRING=%s" % self._verboseMakefile
|
, "-D", "CMAKE_VERBOSE_MAKEFILE:STRING=%s" % self._verboseMakefile
|
||||||
, toolSourceDir ]
|
, toolSourceDir ]
|
||||||
self._execute ( environment, command, "Second CMake failed" )
|
self._execute ( command, "Second CMake failed" )
|
||||||
|
|
||||||
if self._doBuild:
|
if self._doBuild:
|
||||||
print "Make arguments:", self._makeArguments
|
print "Make arguments:", self._makeArguments
|
||||||
command = ["make", "DESTDIR=%s" % self._installDir]
|
command = ["make", "DESTDIR=%s" % self._installDir]
|
||||||
command += self._makeArguments
|
command += self._makeArguments
|
||||||
self._execute ( environment, command, "Build failed" )
|
self._execute ( command, "Build failed" )
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def _svnStatus ( self, tool ):
|
def _svnStatus ( self, tool ):
|
||||||
environment = os.environ
|
|
||||||
toolSourceDir = os.path.join ( self._sourceDir , tool )
|
toolSourceDir = os.path.join ( self._sourceDir , tool )
|
||||||
os.chdir ( toolSourceDir )
|
os.chdir ( toolSourceDir )
|
||||||
|
|
||||||
print "Checking SVN status of tool: ", tool
|
print "Checking SVN status of tool: ", tool
|
||||||
command = [ "svn", "status", "-u", "-q" ]
|
command = [ "svn", "status", "-u", "-q" ]
|
||||||
self._execute ( environment, command, "svn status -u -q" )
|
self._execute ( command, "svn status -u -q" )
|
||||||
print
|
print
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def _svnUpdate ( self, tool ):
|
def _svnUpdate ( self, tool ):
|
||||||
environment = os.environ
|
|
||||||
toolSourceDir = os.path.join ( self._sourceDir , tool )
|
toolSourceDir = os.path.join ( self._sourceDir , tool )
|
||||||
os.chdir ( toolSourceDir )
|
os.chdir ( toolSourceDir )
|
||||||
|
|
||||||
print "Doing a SVN update of tool: ", tool
|
print "Doing a SVN update of tool: ", tool
|
||||||
command = [ "svn", "update" ]
|
command = [ "svn", "update" ]
|
||||||
self._execute ( environment, command, "svn update" )
|
self._execute ( command, "svn update" )
|
||||||
print
|
print
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -232,13 +227,12 @@ class ProjectBuilder:
|
||||||
print "[ERROR] Project \"%s\" isn't associated to a repository." % project.getName()
|
print "[ERROR] Project \"%s\" isn't associated to a repository." % project.getName()
|
||||||
return
|
return
|
||||||
|
|
||||||
environment = os.environ
|
|
||||||
toolSvnTrunkDir = os.path.join ( self._coriolisSvnDir , tool, "trunk" )
|
toolSvnTrunkDir = os.path.join ( self._coriolisSvnDir , tool, "trunk" )
|
||||||
os.chdir ( self._sourceDir )
|
os.chdir ( self._sourceDir )
|
||||||
|
|
||||||
print "Doing a SVN checkout of tool: ", tool
|
print "Doing a SVN checkout of tool: ", tool
|
||||||
command = [ "svn", "co", toolSvnTrunkDir, tool ]
|
command = [ "svn", "co", toolSvnTrunkDir, tool ]
|
||||||
self._execute ( environment, command, "svn checkout %s" % tool )
|
self._execute ( command, "svn checkout %s" % tool )
|
||||||
print
|
print
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -267,6 +261,16 @@ class ProjectBuilder:
|
||||||
|
|
||||||
|
|
||||||
def _commandTemplate ( self, tools, projectName, command ):
|
def _commandTemplate ( self, tools, projectName, command ):
|
||||||
|
# Set or guess the various projects TOP environment variables.
|
||||||
|
for project in self._projects:
|
||||||
|
topVariable = "%s_TOP" % project.getName().upper()
|
||||||
|
topUserVariable = "%s_USER_TOP" % project.getName().upper()
|
||||||
|
if not self._environment.has_key(topVariable):
|
||||||
|
self._environment[ topVariable ] = self._installDir
|
||||||
|
self._environment[ topUserVariable ] = self._installDir
|
||||||
|
print "Setting %s = \"%s\"." % (topVariable ,self._environment[topVariable])
|
||||||
|
print "Setting %s = \"%s\"." % (topUserVariable,self._environment[topUserVariable])
|
||||||
|
|
||||||
if projectName:
|
if projectName:
|
||||||
project = self.getProject ( projectName )
|
project = self.getProject ( projectName )
|
||||||
if not project:
|
if not project:
|
||||||
|
@ -307,7 +311,12 @@ class ProjectBuilder:
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
coriolis = Project ( name ="coriolis"
|
io = Project ( name = "io"
|
||||||
|
, tools =[ "io" ]
|
||||||
|
, repository="svn+ssh://coriolis.soc.lip6.fr/users/outil/coriolis/svn"
|
||||||
|
)
|
||||||
|
|
||||||
|
coriolis = Project ( name = "coriolis"
|
||||||
, tools =[ "io"
|
, tools =[ "io"
|
||||||
, "hurricane"
|
, "hurricane"
|
||||||
, "crlcore"
|
, "crlcore"
|
||||||
|
@ -321,7 +330,7 @@ if __name__ == "__main__":
|
||||||
]
|
]
|
||||||
, repository="svn+ssh://coriolis.soc.lip6.fr/users/outil/coriolis/svn"
|
, repository="svn+ssh://coriolis.soc.lip6.fr/users/outil/coriolis/svn"
|
||||||
)
|
)
|
||||||
chams = Project ( name ="chams"
|
chams = Project ( name = "chams"
|
||||||
, tools =[ "hurricaneAMS"
|
, tools =[ "hurricaneAMS"
|
||||||
, "amsCore"
|
, "amsCore"
|
||||||
, "opSim"
|
, "opSim"
|
||||||
|
@ -355,7 +364,9 @@ if __name__ == "__main__":
|
||||||
( options, args ) = parser.parse_args ()
|
( options, args ) = parser.parse_args ()
|
||||||
|
|
||||||
builder = ProjectBuilder ()
|
builder = ProjectBuilder ()
|
||||||
|
builder.register ( io )
|
||||||
builder.register ( coriolis )
|
builder.register ( coriolis )
|
||||||
|
builder.register ( chams )
|
||||||
|
|
||||||
if options.release: builder.buildMode = "Release"
|
if options.release: builder.buildMode = "Release"
|
||||||
if options.debug: builder.buildMode = "Debug"
|
if options.debug: builder.buildMode = "Debug"
|
||||||
|
|
Loading…
Reference in New Issue