2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
|
2010-07-13 11:25:15 -05:00
|
|
|
#
|
|
|
|
# Setup CMake policies.
|
|
|
|
#
|
|
|
|
macro(set_cmake_policies)
|
|
|
|
if(COMMAND CMAKE_POLICY)
|
|
|
|
cmake_policy(SET CMP0003 NEW)
|
|
|
|
cmake_policy(SET CMP0005 NEW)
|
2022-12-01 16:32:30 -06:00
|
|
|
cmake_policy(SET CMP0079 NEW)
|
|
|
|
cmake_policy(SET CMP0022 NEW)
|
|
|
|
cmake_policy(SET CMP0060 NEW)
|
2022-12-10 11:10:14 -06:00
|
|
|
cmake_policy(SET CMP0095 NEW)
|
2021-10-01 11:31:53 -05:00
|
|
|
#if(NOT (CMAKE_VERSION VERSION_LESS 2.8.0))
|
|
|
|
# cmake_policy(SET CMP0014 OLD)
|
|
|
|
#endif()
|
|
|
|
#if(NOT (CMAKE_VERSION VERSION_LESS 2.8.12))
|
|
|
|
# cmake_policy(SET CMP0022 OLD)
|
|
|
|
#endif()
|
2010-07-13 11:25:15 -05:00
|
|
|
endif(COMMAND CMAKE_POLICY)
|
|
|
|
endmacro(set_cmake_policies)
|
|
|
|
|
|
|
|
|
2011-02-02 04:40:25 -06:00
|
|
|
#
|
|
|
|
# Check for the Distribution: RedHat/Scientific/Ubuntu/OSX.
|
|
|
|
# Currently OSX is assimilated to RedHat.
|
|
|
|
#
|
|
|
|
macro(check_distribution)
|
|
|
|
if(NOT APPLE)
|
|
|
|
execute_process(COMMAND "lsb_release" "-d" OUTPUT_VARIABLE LSB_RELEASE)
|
|
|
|
if(LSB_RELEASE MATCHES "[Uu]buntu|[Dd]ebian")
|
|
|
|
set(DISTRIBUTION "Debian" CACHE STRING "Distribution Type/Vendor" FORCE)
|
|
|
|
add_definitions(-DDEBIAN)
|
|
|
|
endif(LSB_RELEASE MATCHES "[Uu]buntu|[Dd]ebian")
|
|
|
|
if(LSB_RELEASE MATCHES "Scientific|RedHat")
|
|
|
|
set(DISTRIBUTION "RedHat" CACHE STRING "Distribution Type/Vendor" FORCE)
|
|
|
|
add_definitions(-DREDHAT)
|
|
|
|
endif(LSB_RELEASE MATCHES "Scientific|RedHat")
|
|
|
|
else(NOT APPLE)
|
|
|
|
set(DISTRIBUTION "RedHat" CACHE STRING "Distribution Type/Vendor" FORCE)
|
|
|
|
add_definitions(-DREDHAT)
|
|
|
|
endif(NOT APPLE)
|
|
|
|
message("-- Distribution is ${DISTRIBUTION}")
|
|
|
|
endmacro(check_distribution)
|
|
|
|
|
2011-05-17 07:29:28 -05:00
|
|
|
#
|
|
|
|
# Get the svn revision version and configure a svn.h.in file based on this version
|
|
|
|
# The include directory name is passed as argument
|
|
|
|
#
|
|
|
|
macro(SETUP_SVNH includedir)
|
|
|
|
find_package(Subversion REQUIRED)
|
|
|
|
Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} SVNREV)
|
|
|
|
set(SUBVERSION_REVISION ${SVNREV_WC_REVISION})
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/svn.h.in ${CMAKE_CURRENT_SOURCE_DIR}/${includedir}/svn.h)
|
|
|
|
endmacro(SETUP_SVNH)
|
|
|
|
|
2014-03-02 04:45:42 -06:00
|
|
|
|
2010-07-13 11:25:15 -05:00
|
|
|
#
|
|
|
|
# Specific Apple OSX setup
|
|
|
|
#
|
2010-07-21 08:03:36 -05:00
|
|
|
# This is no more needed since QT 4.6 is available for Mac OSX 10.6
|
|
|
|
# macro(setup_apple)
|
|
|
|
# if(APPLE)
|
|
|
|
# execute_process(
|
|
|
|
# COMMAND sw_vers -productVersion
|
|
|
|
# OUTPUT_VARIABLE OSX_VERSION
|
|
|
|
# OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# message(STATUS "OSX_VERSION='${OSX_VERSION}'")
|
|
|
|
# if(${OSX_VERSION} MATCHES "^10\\.[012345]\\.?")
|
|
|
|
# message(STATUS "OSX < 10.6")
|
|
|
|
# else(${OSX_VERSION} MATCHES "^10\\.[012345]\\.?")
|
|
|
|
# set(CMAKE_OSX_ARCHITECTURES "i386;ppc") # for QT4.5 32bits on snow leopard
|
|
|
|
# endif(${OSX_VERSION} MATCHES "^10\\.[012345]\\.?")
|
|
|
|
# endif(APPLE)
|
|
|
|
# endmacro(setup_apple)
|
2010-07-13 11:25:15 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
2010-07-13 05:43:20 -05:00
|
|
|
#
|
|
|
|
# Adds -Wall to the C/C++ flags.
|
|
|
|
#
|
2017-12-02 07:30:05 -06:00
|
|
|
set(BUILD_SHARED_LIBS "ON")
|
Bug in Python proxy deallocation. Update to latest Coloquinte.
* Bug: In Bootstrap, in coriolisEnv.py, check if devtoolset-2 is already
active before launching it as a sub-shell.
* Bug: In Isobar, In PyHurricane.h, DBoDestroyAttribute() set the proxy
pointer toward the C++ object to NULL. So when the Python object is
deleted no double-deletion occurs on the C++ object.
Add some more trace information in Python link/dealloc.
* Change: In CRL Core, in cyclop, make CMakeLists.txt automatically
choose the right rule for linking the binary wether we use Qt 4 or
Qt 5. Very irksome problem.
* New: In EtesianEngine::addFeed(), do not take into account instances
that are not placed entirely inside the top cell abutment box (was
causing a core dump).
* Bug: In Katabatic, in GCellQueue, correct a mismatch between a GCell
set and the iterators used upon it.
* Bug: In Mauka, in Row & Surface correct a mismatch between a container
and it's iterator.
* New: In Etesian, updated to work with the latest Coloquinte, patch
contributed by G. Gouvine.
Added EtesianEngine::setDefaultAb() to compute an abutment box if
the Cell is completly unplaced.
* New: In cumulus, in ClockTree, now the placer can be configured to be
either Mauka (slow simulated annealing) or Etesian (fast analytic).
New setting 'clockTree.placerEngine' in plugin settings.
2015-02-13 16:38:55 -06:00
|
|
|
#set(DEBUG_FLAGS "-g -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
|
|
|
|
set(DEBUG_FLAGS "-g")
|
Support for Windows/Cygwin, part 2.
* Change: In bootstrap, in ccb, builder and coriolisEnv.py, correct detection
of the windows architecture (32 or 64 bits). Under Cygwin, add the
directory of the dll into the PATH also. Uses "site-package" as the
location of Python modules (*not* "dist-package").
Use gnu++0x under Cygwin instead of c++11.
* Change: In Etesian, if Coloquinte is not found, do not stop the compilation,
just disable the tool altogether.
* Change: In Hurricane, In Backtrace, disable backtrace under Cygwin as it
uses features specific of the glibc.
* Change: In Knik, use HUGE_VAL instead of HUGE (not present under Cygwin),
add the <cmath> header.
* Change: In Unicorn, Coloquinte no longer stops the compilation.
2014-07-22 17:55:50 -05:00
|
|
|
if(CYGWIN)
|
2015-10-02 08:59:01 -05:00
|
|
|
set(ADDTIONAL_FLAGS "-D_GLIBCXX_USE_C99")
|
|
|
|
set(CXX_STANDARD "gnu++11")
|
Support for Windows/Cygwin, part 2.
* Change: In bootstrap, in ccb, builder and coriolisEnv.py, correct detection
of the windows architecture (32 or 64 bits). Under Cygwin, add the
directory of the dll into the PATH also. Uses "site-package" as the
location of Python modules (*not* "dist-package").
Use gnu++0x under Cygwin instead of c++11.
* Change: In Etesian, if Coloquinte is not found, do not stop the compilation,
just disable the tool altogether.
* Change: In Hurricane, In Backtrace, disable backtrace under Cygwin as it
uses features specific of the glibc.
* Change: In Knik, use HUGE_VAL instead of HUGE (not present under Cygwin),
add the <cmath> header.
* Change: In Unicorn, Coloquinte no longer stops the compilation.
2014-07-22 17:55:50 -05:00
|
|
|
else()
|
2015-10-02 08:59:01 -05:00
|
|
|
set(ADDTIONAL_FLAGS "")
|
Support for Windows/Cygwin, part 2.
* Change: In bootstrap, in ccb, builder and coriolisEnv.py, correct detection
of the windows architecture (32 or 64 bits). Under Cygwin, add the
directory of the dll into the PATH also. Uses "site-package" as the
location of Python modules (*not* "dist-package").
Use gnu++0x under Cygwin instead of c++11.
* Change: In Etesian, if Coloquinte is not found, do not stop the compilation,
just disable the tool altogether.
* Change: In Hurricane, In Backtrace, disable backtrace under Cygwin as it
uses features specific of the glibc.
* Change: In Knik, use HUGE_VAL instead of HUGE (not present under Cygwin),
add the <cmath> header.
* Change: In Unicorn, Coloquinte no longer stops the compilation.
2014-07-22 17:55:50 -05:00
|
|
|
set(CXX_STANDARD "c++11")
|
|
|
|
endif()
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
#set(CMAKE_C_FLAGS_DEBUG " -Wall -fsanitize=address ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C Compiler Debug options." FORCE)
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG " -Wall ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C Compiler Debug options." FORCE)
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
set(CMAKE_C_FLAGS_RELEASE " -Wall -O2 ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C Compiler Release options." FORCE)
|
2021-06-02 07:14:11 -05:00
|
|
|
#set(CMAKE_C_FLAGS_RELEASE " -Wall -fsanitize=address ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C Compiler Release options." FORCE)
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
#set(CMAKE_CXX_FLAGS_DEBUG "-std=${CXX_STANDARD} -Wall -fsanitize=address ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C++ Compiler Debug options." FORCE)
|
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-std=${CXX_STANDARD} -Wall ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C++ Compiler Debug options." FORCE)
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-std=${CXX_STANDARD} -Wall -O2 ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C++ Compiler Release options." FORCE)
|
2021-06-02 07:14:11 -05:00
|
|
|
#set(CMAKE_CXX_FLAGS_RELEASE "-std=${CXX_STANDARD} -Wall -fsanitize=address ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C++ Compiler Release options." FORCE)
|
2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
|
2022-12-22 03:34:08 -06:00
|
|
|
if ( NOT CMAKE_BUILD_TYPE )
|
|
|
|
message( "Build Type not set, defaulting to Debug..." )
|
|
|
|
set( CMAKE_BUILD_TYPE Debug )
|
|
|
|
endif()
|
|
|
|
|
2010-07-15 09:09:16 -05:00
|
|
|
#
|
|
|
|
# Adds to the CMAKE_MODULE_PATH directories guesseds from project
|
|
|
|
# environment variables <PROJECT>_USER_TOP and <PROJECT>_TOP.
|
|
|
|
#
|
2015-06-11 11:01:39 -05:00
|
|
|
macro(setup_project_paths project)
|
2010-07-15 09:09:16 -05:00
|
|
|
if( NOT("$ENV{${project}_TOP}" STREQUAL "") )
|
|
|
|
message("-- ${project}_TOP is set to $ENV{${project}_TOP}")
|
|
|
|
set(PROJECT_MODULE_PATH "${DESTDIR}$ENV{${project}_TOP}/share/cmake/Modules/")
|
|
|
|
list(INSERT CMAKE_MODULE_PATH 0 "${PROJECT_MODULE_PATH}")
|
|
|
|
endif( NOT("$ENV{${project}_TOP}" STREQUAL "") )
|
|
|
|
|
|
|
|
if( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") )
|
|
|
|
message("-- ${project}_USER_TOP is set to $ENV{${project}_USER_TOP}")
|
|
|
|
set(PROJECT_MODULE_PATH "${DESTDIR}$ENV{${project}_USER_TOP}/share/cmake/Modules/")
|
|
|
|
list(INSERT CMAKE_MODULE_PATH 0 "${PROJECT_MODULE_PATH}")
|
|
|
|
endif( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") )
|
|
|
|
|
|
|
|
list(REMOVE_DUPLICATES CMAKE_MODULE_PATH)
|
2015-06-11 11:01:39 -05:00
|
|
|
endmacro(setup_project_paths project)
|
2010-07-15 09:09:16 -05:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Displays the contents of CMAKE_MODULE_PATH.
|
|
|
|
#
|
|
|
|
macro(print_cmake_module_path)
|
|
|
|
message("-- Components of CMAKE_MODULE_PATH:")
|
2012-03-08 04:29:27 -06:00
|
|
|
foreach(PATH ${CMAKE_MODULE_PATH})
|
2010-07-15 09:09:16 -05:00
|
|
|
message("-- ${PATH}")
|
|
|
|
endforeach(PATH)
|
|
|
|
endmacro(print_cmake_module_path)
|
|
|
|
|
|
|
|
|
2010-07-13 05:43:20 -05:00
|
|
|
#
|
|
|
|
# Build <PROJECT>_INCLUDE_DIR & <PROJECT>_LIBRARIES and sets up <PROJECT>_FOUND
|
|
|
|
# Usage: set_library_path(<PROJECT> <library>)
|
|
|
|
#
|
2022-12-14 18:37:06 -06:00
|
|
|
#PYTHON_NEW May be used any number of time on the same <PROJECT> to create a list of
|
2010-07-13 05:43:20 -05:00
|
|
|
# <library>.
|
|
|
|
#
|
|
|
|
macro(set_libraries_path configname library)
|
|
|
|
set(${configname}_FOUND "NOTFOUND")
|
|
|
|
|
|
|
|
if(${library}_LIBRARY_PATH)
|
|
|
|
set(${configname}_FOUND "YES")
|
|
|
|
set(${configname}_INCLUDE_DIR ${${library}_INCLUDE_PATH})
|
|
|
|
set(${configname}_LIBRARIES ${${library}_LIBRARY_PATH} ${${configname}_LIBRARIES})
|
|
|
|
mark_as_advanced(${configname}_INCLUDE_DIR ${configname}_LIBRARIES)
|
|
|
|
endif(${library}_LIBRARY_PATH)
|
|
|
|
|
|
|
|
if(NOT ${library}_INCLUDE_PATH)
|
|
|
|
set(${configname}_FOUND "NOTFOUND")
|
2015-04-08 10:45:45 -05:00
|
|
|
endif()
|
|
|
|
endmacro()
|
2022-12-14 18:37:06 -06:00
|
|
|
#
|
|
|
|
# sets that a library is expected to have unresolved symbols
|
|
|
|
# Usage: set_library_unresolved_symbols(<PROJECT>)
|
|
|
|
#
|
|
|
|
# Should be used before set_libraries_path.
|
|
|
|
macro(set_has_unresolved_symbols configname)
|
2022-12-22 03:34:08 -06:00
|
|
|
set(${configname}_LIBRARIES "-Wl,--unresolved-symbols=ignore-all" ${${configname}_LIBRARIES})
|
2022-12-14 18:37:06 -06:00
|
|
|
endmacro()
|
2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
#
|
|
|
|
# Checks if a set of libraries has been found, could be blocking or not.
|
|
|
|
# Usage: hurricane_check_libraries(<PROJECT> <REQUIRED>)
|
|
|
|
#
|
|
|
|
# If <REQUIRED> is ommitted, it is guessed from <PROJECT>_FIND_REQUIRED.
|
|
|
|
#
|
|
|
|
macro(hurricane_check_libraries)
|
|
|
|
if(ARGC LESS 2)
|
|
|
|
set(REQUIRED ${ARGV0}_FIND_REQUIRED)
|
|
|
|
else(ARGC LESS 2)
|
|
|
|
set(REQUIRED ${ARGV1})
|
|
|
|
endif(ARGC LESS 2)
|
|
|
|
if(${ARGV0}_FOUND)
|
|
|
|
if(NOT ${ARGV0}_FIND_QUIETLY)
|
|
|
|
if(${ARGV0}_FOUND)
|
2014-03-02 04:45:42 -06:00
|
|
|
message(STATUS "Found ${ARGV0}:")
|
|
|
|
foreach(library ${${ARGV0}_LIBRARIES})
|
|
|
|
message(STATUS " ${library}")
|
|
|
|
endforeach(library)
|
2010-07-13 05:43:20 -05:00
|
|
|
endif(${ARGV0}_FOUND)
|
|
|
|
endif(NOT ${ARGV0}_FIND_QUIETLY)
|
|
|
|
else(${ARGV0}_FOUND)
|
|
|
|
if(REQUIRED)
|
|
|
|
message(FATAL_ERROR "${ARGV0} was not found. ${${ARGV0}_DIR_MESSAGE}")
|
|
|
|
endif(REQUIRED)
|
|
|
|
endif(${ARGV0}_FOUND)
|
|
|
|
endmacro(hurricane_check_libraries)
|
|
|
|
|
|
|
|
|
2010-07-13 11:25:15 -05:00
|
|
|
macro(setup_boost)
|
2010-07-13 05:43:20 -05:00
|
|
|
#set(Boost_USE_STATIC_LIBS ON)
|
|
|
|
#message(STATUS "Always uses Boost static libraries.")
|
|
|
|
if(ARGC LESS 1)
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
find_package(Boost 1.35.0 REQUIRED)
|
2010-07-13 05:43:20 -05:00
|
|
|
else(ARGC LESS 1)
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
foreach(component ${ARGV})
|
2019-12-11 15:13:47 -06:00
|
|
|
if(${component} STREQUAL "python")
|
2021-10-26 16:10:09 -05:00
|
|
|
set(components ${components} ${component}39)
|
2021-08-16 14:50:39 -05:00
|
|
|
else()
|
2021-08-29 10:31:41 -05:00
|
|
|
set(components ${components} ${component})
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
find_package(Boost 1.35.0 COMPONENTS ${components} system)
|
2010-07-13 05:43:20 -05:00
|
|
|
if(NOT Boost_FOUND)
|
Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
1. Compliance with clang 5.0.1, tested with the RedHat collection
llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
with Xcode & macports. The bootstrap install system has been modificated
accordingly.
2. The basic support for routing density driven placement. Related
features are:
* Bloat property. Each Occurrence of an Instance can be individually
bloated. This property not attached to any tool to allow the placer and
router to share it as wanted. Nevertheless, it is defined in Etesian.
* BloatProfile in Katana, add individual Bloat properties to Instances
occurrences based on the East & North overflowed edges of each GCell.
* Support in ToolEngine for a "pass number" of a tool. This pass number
is mainly used to make "per pass" measurements. The MeasureSet system
is improved accordingly to support multiple values of a same measure.
* Embryo of "P&R Conductor" to perform the place & route loop until the
design is successfully placed. May be the first brick of a Silicon
Compiler.
* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
instance occurrence BloatProperty dependency.
Added option support for the "llvm-toolset-7" collection to build
against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
for first & second arguments must be called with <const T> and <const U>
as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
template has a static member "_name". Clang did show that the template
for this static number has to be put inside the namespace where the
template *is defined* (i.e. Hurricane) instead of the namespace where
it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
(clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
(clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
current working directory in the sys.path as in certain configuration
it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
encountering a RoutingPad on a top-level Pin Occurrence. The segment
was generated in the wrong direction, creating DRC violations on the
"mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
Now, each kind of measure can accept multiple values put in a vector.
The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
was wrong, it was always returning true, which broke the "strick weak
ordering" of the comparison.
This was producing a core-dump in GCell::updateDensity() when sorting
a vector<>. The end() iterator was being dereferenced, leading to the
problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
whose axis is perpandicular to the symmetry axis was wrong
("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
and selectBloatedInstances() to automatically select segments from
overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
between global and detailed.
Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
driven placement.
2019-12-08 18:57:44 -06:00
|
|
|
find_package(Boost 1.35.0 COMPONENTS ${components} REQUIRED)
|
2010-07-13 05:43:20 -05:00
|
|
|
endif(NOT Boost_FOUND)
|
|
|
|
endif(ARGC LESS 1)
|
2014-03-15 04:47:37 -05:00
|
|
|
message(STATUS "Found Boost includes ${Boost_LIB_VERSION} in ${Boost_INCLUDE_DIR}")
|
|
|
|
message(STATUS "Found Boost libraries ${Boost_LIB_VERSION} in ${Boost_LIBRARY_DIRS}")
|
2012-03-08 04:29:27 -06:00
|
|
|
foreach(LIBRARY ${Boost_LIBRARIES})
|
2010-07-15 07:33:45 -05:00
|
|
|
message(STATUS " ${LIBRARY}")
|
|
|
|
endforeach(LIBRARY)
|
2011-08-22 03:40:46 -05:00
|
|
|
add_definitions(-DBOOST_FILESYSTEM_VERSION=2) # for boost 1.46 and more we need to specify to use filesystem v2 and not v3
|
2010-07-13 11:25:15 -05:00
|
|
|
endmacro(setup_boost)
|
2010-07-15 09:09:16 -05:00
|
|
|
|
|
|
|
|
Update to Qt 5, requires cmake 2.8.9. New placer: Etesian.
Update to Qt 5:
* Change: Now requires at least cmake 2.8.9.
* Change: CMakeLists.txt needs small changes. Qt modules must be found
one by one (Core, Gui, Widgets). Must add "set(CMAKE_AUTOMOC ON)"
in the top file and replace "qt4" prefix in macros by "qt5".
Added simpler macro "setup_qt()" in FindBootstrap.cmake.
* Change: No longer need to include <QGtkStyle> is is choosen by default
according to the current desktop environment.
* Change: In <hurricane>, In HApplication, launch ExceptionWidget when
a std::exception is catched instead of silently discarting it.
New placer Tool: Etesian
* New: <etesian> analytical placer. Encapsulate Coloquinte from
Gabriel Gouvine.
* New: in <documentation>, add stub demonstration ToolEngine <smurf>.
Needs to be commented.
Miscellaneous:
* New: in <boostrap> and <unicorn>, added support for Etesian, the new
analytic placer. The tool itself will be added in the next commit.
* Bug: in <CellWidget>, when shifting the display buffer, we no longer
can copy the buffer on itself (we should never have). Now go through
a temporary one (PlaneId::AutoCopy) which is added to the
DrawingPlanes. Affect "goLeft()" and "goUp()".
* Bug: In <CellWidget>, remove the WA_PaintOnScreen flag/attribute.
When it's on, no PaintEvent is transmitted to the CellWidget
when it's the central widget of the <CellViewer> (QMainWindow).
It's something I still don't understand from the doc of Qt.
* Change: In <AreaCommand>, use the PlaneId enumeration instead of a
anonymous numerical index.
* Change: In <HApplication>, no longer catch and silently discard
standartd exceptions but launch the ExceptionWidget...
Suppress the now deprecated constructor with "Type" argument.
* Change: In <SelectionModel>, the "reset()" method is deprecated in
Qt5, instead enclose the "clear()" by a "beginResetModel()" and
"endResetModel()" pair.
* New: In <crlcore>, add support for ISPD05 benchmarks (in Bookshelf
format). Forked from ISPD04 and not finished yet.
* Change: In <Mauka>, distinguish the Action string identifier from
<Etesian>
* New: In <unicorn>, add entry for ISPD05 loader. Add entry for
<Etesian> analytic placer.
2014-03-22 05:50:36 -05:00
|
|
|
#
|
|
|
|
# Find Qt, the union of all the modules we need for the whole project.
|
|
|
|
#
|
|
|
|
macro(setup_qt)
|
2014-07-22 04:06:26 -05:00
|
|
|
if(WITH_QT5)
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
message(STATUS "Attempt to find Qt 5...")
|
2014-07-22 04:06:26 -05:00
|
|
|
# For Qt5
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
find_package(Qt5Core REQUIRED)
|
|
|
|
find_package(Qt5Gui REQUIRED)
|
|
|
|
find_package(Qt5Widgets REQUIRED)
|
|
|
|
find_package(Qt5Svg REQUIRED)
|
|
|
|
find_package(Qt5PrintSupport REQUIRED)
|
2014-07-22 04:06:26 -05:00
|
|
|
set(CMAKE_AUTOMOC ON)
|
2021-11-21 17:05:48 -06:00
|
|
|
set(QtX_INCLUDE_DIRS ${Qt5PrintSupport_INCLUDE_DIRS}
|
|
|
|
${Qt5Widgets_INCLUDE_DIRS}
|
|
|
|
${Qt5Svg_INCLUDE_DIRS}
|
|
|
|
${Qt5Gui_INCLUDE_DIRS}
|
|
|
|
${Qt5Core_INCLUDE_DIRS} )
|
|
|
|
set(QtX_LIBRARIES ${Qt5PrintSupport_LIBRARIES}
|
|
|
|
${Qt5Widgets_LIBRARIES}
|
|
|
|
${Qt5Gui_LIBRARIES}
|
|
|
|
${Qt5Core_LIBRARIES} )
|
|
|
|
#message(STATUS "QtX_INCLUDE_DIRS: ${QtX_INCLUDE_DIRS}")
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
#message(STATUS "QtX_LIBRARIES: ${QtX_LIBRARIES}")
|
2014-07-22 04:06:26 -05:00
|
|
|
else()
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
message(STATUS "Attempt to find Qt 4...")
|
2014-07-22 04:06:26 -05:00
|
|
|
# For Qt4.
|
|
|
|
#set(QT_USE_QTXML "true")
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
set(QT_USE_QTSVG "true")
|
2014-07-22 04:06:26 -05:00
|
|
|
find_package(Qt4 REQUIRED)
|
|
|
|
include(${QT_USE_FILE})
|
Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
The sub-directory name is 'el7_64'.
In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
display threhold of the layer. This way we can adapt to different
standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
doing it (or not).
2015-02-01 16:24:13 -06:00
|
|
|
# ${QT_QTSVG_LIBRARY}
|
2021-11-21 17:05:48 -06:00
|
|
|
set(QtX_INCLUDE_DIRS ${QT_INCLUDE_DIR})
|
|
|
|
set(QtX_LIBRARIES ${QT_LIBRARIES})
|
2014-07-22 04:06:26 -05:00
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(qtX_wrap_cpp variable)
|
|
|
|
if (WITH_QT5)
|
|
|
|
qt5_wrap_cpp(${variable} ${ARGN})
|
|
|
|
else()
|
|
|
|
qt4_wrap_cpp(${variable} ${ARGN})
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(qtX_add_resources variable)
|
|
|
|
if (WITH_QT5)
|
|
|
|
qt5_add_resources(${variable} ${ARGN})
|
|
|
|
else()
|
|
|
|
qt4_add_resources(${variable} ${ARGN})
|
|
|
|
endif()
|
Update to Qt 5, requires cmake 2.8.9. New placer: Etesian.
Update to Qt 5:
* Change: Now requires at least cmake 2.8.9.
* Change: CMakeLists.txt needs small changes. Qt modules must be found
one by one (Core, Gui, Widgets). Must add "set(CMAKE_AUTOMOC ON)"
in the top file and replace "qt4" prefix in macros by "qt5".
Added simpler macro "setup_qt()" in FindBootstrap.cmake.
* Change: No longer need to include <QGtkStyle> is is choosen by default
according to the current desktop environment.
* Change: In <hurricane>, In HApplication, launch ExceptionWidget when
a std::exception is catched instead of silently discarting it.
New placer Tool: Etesian
* New: <etesian> analytical placer. Encapsulate Coloquinte from
Gabriel Gouvine.
* New: in <documentation>, add stub demonstration ToolEngine <smurf>.
Needs to be commented.
Miscellaneous:
* New: in <boostrap> and <unicorn>, added support for Etesian, the new
analytic placer. The tool itself will be added in the next commit.
* Bug: in <CellWidget>, when shifting the display buffer, we no longer
can copy the buffer on itself (we should never have). Now go through
a temporary one (PlaneId::AutoCopy) which is added to the
DrawingPlanes. Affect "goLeft()" and "goUp()".
* Bug: In <CellWidget>, remove the WA_PaintOnScreen flag/attribute.
When it's on, no PaintEvent is transmitted to the CellWidget
when it's the central widget of the <CellViewer> (QMainWindow).
It's something I still don't understand from the doc of Qt.
* Change: In <AreaCommand>, use the PlaneId enumeration instead of a
anonymous numerical index.
* Change: In <HApplication>, no longer catch and silently discard
standartd exceptions but launch the ExceptionWidget...
Suppress the now deprecated constructor with "Type" argument.
* Change: In <SelectionModel>, the "reset()" method is deprecated in
Qt5, instead enclose the "clear()" by a "beginResetModel()" and
"endResetModel()" pair.
* New: In <crlcore>, add support for ISPD05 benchmarks (in Bookshelf
format). Forked from ISPD04 and not finished yet.
* Change: In <Mauka>, distinguish the Action string identifier from
<Etesian>
* New: In <unicorn>, add entry for ISPD05 loader. Add entry for
<Etesian> analytic placer.
2014-03-22 05:50:36 -05:00
|
|
|
endmacro()
|
|
|
|
|
|
|
|
|
2016-11-23 04:29:28 -06:00
|
|
|
#
|
|
|
|
# Find Qwt, correlated to the Qt version.
|
|
|
|
#
|
|
|
|
macro(setup_qwt)
|
|
|
|
if(WITH_QT5)
|
|
|
|
find_path(QWT_INCLUDE_DIR NAMES qwt.h
|
|
|
|
PATHS /usr/include/qt5
|
|
|
|
/usr/include
|
|
|
|
PATH_SUFFIXES qwt )
|
2019-05-10 05:12:30 -05:00
|
|
|
find_library(QWT_LIBRARY NAMES qwt-qt5 qwt
|
2020-03-19 12:18:35 -05:00
|
|
|
PATHS /usr/lib64
|
|
|
|
/usr/lib )
|
2016-11-23 04:29:28 -06:00
|
|
|
else()
|
|
|
|
find_path(QWT_INCLUDE_DIR NAMES qwt.h
|
2019-05-10 05:12:30 -05:00
|
|
|
PATHS /usr/include/qwt-qt4
|
2019-12-11 15:13:47 -06:00
|
|
|
/opt/local/libexec/qt4/include
|
2016-11-23 04:29:28 -06:00
|
|
|
/usr/include/qt4
|
2019-05-10 05:12:30 -05:00
|
|
|
/usr/include
|
2016-11-23 04:29:28 -06:00
|
|
|
PATH_SUFFIXES qwt )
|
2019-05-10 05:12:30 -05:00
|
|
|
find_library(QWT_LIBRARY NAMES qwt-qt4 qwt
|
2019-12-11 15:13:47 -06:00
|
|
|
PATHS /opt/local/libexec/qt4/lib
|
2020-03-19 12:18:35 -05:00
|
|
|
/usr/lib64
|
|
|
|
/usr/lib )
|
2016-11-23 04:29:28 -06:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if( QWT_INCLUDE_DIR AND QWT_LIBRARY)
|
|
|
|
set(QWT_FOUND TRUE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(QWT_FOUND)
|
|
|
|
if(NOT QWT_FIND_QUIETLY)
|
|
|
|
message(STATUS "-- Found Qwt: ${QWT_LIBRARY}")
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
if(QWT_FIND_REQUIRED)
|
|
|
|
message(FATAL_ERROR "-- Could not find Qwt")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
|
2010-07-15 09:09:16 -05:00
|
|
|
#
|
|
|
|
# Guess the value of SYS_CONF_DIR according to INSTALLDIR.
|
|
|
|
# if INSTALLDIR is either /usr or /opt, we uses the system-wide /etc,
|
|
|
|
# otherwise we install under the tool INSTALLDIR/etc.
|
|
|
|
#
|
|
|
|
macro(setup_sysconfdir INSTALLDIR)
|
2011-02-02 04:40:25 -06:00
|
|
|
message("-- Checking installation directory <${INSTALLDIR}>")
|
2019-03-04 07:20:13 -06:00
|
|
|
string(REGEX MATCH "^/opt/rh/devtoolset-[0-9]+/root" IS_OPT_RH ${INSTALLDIR})
|
2015-04-08 10:45:45 -05:00
|
|
|
if(IS_OPT_RH)
|
2019-03-04 07:20:13 -06:00
|
|
|
message("-- Using devtoolset-X install tree ${IS_OPT_RH}/etc.")
|
|
|
|
set(SYS_CONF_DIR ${IS_OPT_RH} CACHE STRING "System configuration directory (/etc)" FORCE)
|
2015-04-08 10:45:45 -05:00
|
|
|
else()
|
|
|
|
string(REGEX MATCH "^/usr$" IS_USR ${INSTALLDIR})
|
|
|
|
string(REGEX MATCH "^/opt$" IS_OPT ${INSTALLDIR})
|
|
|
|
if(IS_USR OR IS_OPT)
|
|
|
|
message("-- Using system-wide /etc.")
|
|
|
|
set(SYS_CONF_DIR "/etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(NOT IS_OPT_RH AND NOT IS_USR AND NOT IS_OPT)
|
2011-02-02 04:40:25 -06:00
|
|
|
message("-- Using install tree <prefix>/etc.")
|
2010-07-15 09:09:16 -05:00
|
|
|
set(SYS_CONF_DIR "etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
2015-04-08 10:45:45 -05:00
|
|
|
endif()
|
|
|
|
endmacro()
|
2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Setup the <PROJECT>_SEARCH_PATH.
|
|
|
|
# Where to find includes & libraries.
|
|
|
|
#
|
Cleanup after SVN importation, <ccb> builder script adaptation.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
one project. Due to the way Git clone repositories, the directory
containing the project is now to be seen under "src/".
CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
coriolis, modificate the top CMakeLists.txt of each tool to uses
only Coriolis (and bootstrap hard wired).
CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
command shortcut into the script.
SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
<chams> project long time ago.
2014-02-26 11:24:41 -06:00
|
|
|
macro(setup_search_dir project)
|
|
|
|
if( NOT("$ENV{${project}_TOP}" STREQUAL "") )
|
|
|
|
message("-- ${project}_TOP is set to $ENV{${project}_TOP}")
|
|
|
|
list(INSERT ${project}_DIR_SEARCH 0 "${DESTDIR}$ENV{${project}_TOP}")
|
|
|
|
endif( NOT("$ENV{${project}_TOP}" STREQUAL "") )
|
2010-07-13 05:43:20 -05:00
|
|
|
|
Cleanup after SVN importation, <ccb> builder script adaptation.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
one project. Due to the way Git clone repositories, the directory
containing the project is now to be seen under "src/".
CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
coriolis, modificate the top CMakeLists.txt of each tool to uses
only Coriolis (and bootstrap hard wired).
CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
command shortcut into the script.
SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
<chams> project long time ago.
2014-02-26 11:24:41 -06:00
|
|
|
if( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") )
|
|
|
|
message("-- ${project}_USER_TOP is set to $ENV{${project}_USER_TOP}")
|
|
|
|
list(INSERT ${project}_DIR_SEARCH 0 "${DESTDIR}$ENV{${project}_USER_TOP}")
|
|
|
|
endif( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") )
|
2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
LIST(REMOVE_DUPLICATES ${project}_DIR_SEARCH)
|
|
|
|
|
Cleanup after SVN importation, <ccb> builder script adaptation.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
one project. Due to the way Git clone repositories, the directory
containing the project is now to be seen under "src/".
CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
coriolis, modificate the top CMakeLists.txt of each tool to uses
only Coriolis (and bootstrap hard wired).
CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
command shortcut into the script.
SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
<chams> project long time ago.
2014-02-26 11:24:41 -06:00
|
|
|
message("-- Components of ${project}_DIR_SEARCH:")
|
|
|
|
foreach(PATH ${${project}_DIR_SEARCH})
|
|
|
|
message("-- ${PATH}")
|
|
|
|
endforeach(PATH)
|
|
|
|
endmacro(setup_search_dir project)
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Setup the <PROJECT>_FOUND.
|
|
|
|
# Set to TRUE if both includes & libraries have been found.
|
|
|
|
#
|
|
|
|
macro(set_found project)
|
|
|
|
if(${project}_INCLUDE_DIR AND ${project}_LIBRARY)
|
|
|
|
set(${project}_FOUND TRUE)
|
|
|
|
else(${project}_INCLUDE_DIR AND ${project}_LIBRARY)
|
|
|
|
set(${project}_FOUND FALSE)
|
|
|
|
endif(${project}_INCLUDE_DIR AND ${project}_LIBRARY)
|
|
|
|
endmacro(set_found project)
|
2015-03-22 13:12:45 -05:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Build a Python extention module.
|
|
|
|
# Usage:
|
|
|
|
# * clibSpec: The C/C++ shared part of the Python module.
|
|
|
|
# A four three list CLIB_NAME;version;soversion;
|
|
|
|
# - CLIB_NAME: the name of the C/C++ shared library
|
|
|
|
# - version: the full version number (ex: 1.0).
|
|
|
|
# - soversion: the shared version major (ex: 1).
|
|
|
|
# If the C library must not be generated because it is
|
|
|
|
# already included in another one, set to IGNORE.
|
|
|
|
# * pymodule: The name of the Python module (for "import PYMODULE").
|
|
|
|
# * deplibs: The list of dependencies.
|
|
|
|
#
|
|
|
|
macro( add_python_module pyCpps pyIncludes argClibSpec pymodule deplibs inc_install_dir )
|
|
|
|
set( pyDeplibs ${deplibs} )
|
|
|
|
# Force the argument <argClibSpec> to be parsed as a list.
|
|
|
|
set( clibSpec ${argClibSpec} )
|
|
|
|
list( GET clibSpec 0 clib )
|
|
|
|
|
|
|
|
message( STATUS ${clib} )
|
|
|
|
if( NOT (${clib} STREQUAL "Do_not_generate_C_library") )
|
|
|
|
list( LENGTH clibSpec clibLen )
|
|
|
|
if( NOT (clibLen EQUAL 3) )
|
|
|
|
message( FATAL_ERROR "python_module(): clibSpec doesnt't have exactly 3 elements (${clibSpec})." )
|
|
|
|
endif()
|
|
|
|
list( GET clibSpec 1 version )
|
|
|
|
list( GET clibSpec 2 soversion )
|
|
|
|
set( pyDeplibs ${clib} ${deplibs} )
|
|
|
|
|
|
|
|
add_library( ${clib} ${pyCpps} )
|
2022-12-14 18:37:06 -06:00
|
|
|
set_target_properties( ${clib} PROPERTIES VERSION ${version} SOVERSION ${soversion})
|
|
|
|
#target_compile_definitions( ${clib} PUBLIC Py_LIMITED_API=1)
|
2015-03-22 13:12:45 -05:00
|
|
|
target_link_libraries( ${clib} ${deplibs} )
|
|
|
|
install( TARGETS ${clib} DESTINATION lib${LIB_SUFFIX} )
|
2022-12-22 03:34:08 -06:00
|
|
|
target_link_options( ${clib} PRIVATE "LINKER:--unresolved-symbols=ignore-all")
|
2015-03-22 13:12:45 -05:00
|
|
|
endif()
|
|
|
|
|
|
|
|
set( pytarget "${pymodule}_target" )
|
|
|
|
|
|
|
|
add_library( ${pytarget} MODULE ${pyCpps} )
|
|
|
|
set_target_properties( ${pytarget} PROPERTIES
|
|
|
|
COMPILE_FLAGS "${COMPILE_FLAGS} -D__PYTHON_MODULE__=1"
|
|
|
|
PREFIX ""
|
|
|
|
OUTPUT_NAME ${pymodule}
|
|
|
|
)
|
2022-12-14 18:37:06 -06:00
|
|
|
#target_compile_definitions( ${pytarget} PUBLIC Py_LIMITED_API=1)
|
2015-03-22 13:12:45 -05:00
|
|
|
target_link_libraries( ${pytarget} ${pyDeplibs} )
|
2022-12-22 03:34:08 -06:00
|
|
|
target_link_options( ${pytarget} PRIVATE "LINKER:--unresolved-symbols=ignore-all")
|
2015-03-22 13:12:45 -05:00
|
|
|
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
install( TARGETS ${pytarget} DESTINATION ${Python_CORIOLISARCH} )
|
2020-09-30 04:59:51 -05:00
|
|
|
if( NOT ("${pyIncludes}" STREQUAL "None") )
|
2015-03-22 13:12:45 -05:00
|
|
|
install( FILES ${pyIncludes} DESTINATION ${inc_install_dir} )
|
2020-09-30 04:59:51 -05:00
|
|
|
endif()
|
2015-03-22 13:12:45 -05:00
|
|
|
endmacro( add_python_module )
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Build a Python extention module (3rd version).
|
|
|
|
# Usage:
|
|
|
|
# * pyCpps: The list of C/C++ module files.
|
|
|
|
# * pyIncludes: The list of C/C++ header files (will be installed in
|
|
|
|
# "inc_install_dir").
|
|
|
|
# * pymodule: The name of the Python module (for "import PYMODULE").
|
|
|
|
# * deplibs: The list of dependencies.
|
|
|
|
# * inc_install_dir: The directory into which install the includes.
|
|
|
|
#
|
|
|
|
macro( add_python_module3 pyCpps pyIncludes pymodule deplibs inc_install_dir )
|
|
|
|
add_library( ${pymodule} MODULE ${pyCpps} )
|
|
|
|
set_target_properties( ${pymodule} PROPERTIES PREFIX "" )
|
|
|
|
target_link_libraries( ${pymodule} ${deplibs} )
|
2022-12-14 18:37:06 -06:00
|
|
|
# target_compile_definitions( ${pymodule} PUBLIC Py_LIMITED_API=1)
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
|
|
|
|
install( TARGETS ${pymodule} DESTINATION ${Python_CORIOLISARCH} )
|
|
|
|
if( NOT ("${pyIncludes}" STREQUAL "None") )
|
|
|
|
install( FILES ${pyIncludes} DESTINATION ${inc_install_dir} )
|
|
|
|
endif()
|
|
|
|
endmacro( add_python_module3 )
|