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)
|
|
|
|
if(NOT (CMAKE_VERSION VERSION_LESS 2.8.0))
|
|
|
|
cmake_policy(SET CMP0014 OLD)
|
2015-06-11 11:01:39 -05:00
|
|
|
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.
|
|
|
|
#
|
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()
|
2015-10-02 08:59:01 -05:00
|
|
|
set(CMAKE_C_FLAGS_DEBUG "-std=${CXX_STANDARD} -Wall ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C Compiler Debug options." FORCE)
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "-std=${CXX_STANDARD} -Wall -O2 ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C Compiler Release options." FORCE)
|
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-std=${CXX_STANDARD} -Wall ${ADDTIONAL_FLAGS} ${DEBUG_FLAGS}" CACHE STRING "C++ Compiler Debug options." FORCE)
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-std=${CXX_STANDARD} -Wall -O2 ${ADDTIONAL_FLAGS} -DNDEBUG" CACHE STRING "C++ Compiler Release options." FORCE)
|
2010-07-13 05:43:20 -05:00
|
|
|
|
|
|
|
|
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>)
|
|
|
|
#
|
|
|
|
# May be used any number of time on the same <PROJECT> to create a list of
|
|
|
|
# <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()
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Perform some tweaks on shared/static linking.
|
|
|
|
#
|
|
|
|
macro(set_lib_link_mode)
|
|
|
|
if(NOT BUILD_SHARED_LIBS)
|
|
|
|
# check for qmake
|
|
|
|
find_program(QT_QMAKE_EXECUTABLE NAMES qmake-qt4 qmake PATHS
|
|
|
|
/opt/qt4-static-4.3.2/bin
|
|
|
|
NO_DEFAULT_PATH
|
|
|
|
)
|
|
|
|
message(STATUS "Building static libraries.")
|
|
|
|
else(NOT BUILD_SHARED_LIBS)
|
|
|
|
message(STATUS "Building dynamic libraries.")
|
|
|
|
endif(NOT BUILD_SHARED_LIBS)
|
|
|
|
endmacro(set_lib_link_mode)
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Find Boost, checking different versions.
|
|
|
|
#
|
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)
|
|
|
|
find_package(Boost 1.33.1 REQUIRED)
|
|
|
|
else(ARGC LESS 1)
|
|
|
|
find_package(Boost 1.35.0 COMPONENTS ${ARGV} system)
|
|
|
|
if(NOT Boost_FOUND)
|
|
|
|
find_package(Boost 1.33.1 COMPONENTS ${ARGV} REQUIRED)
|
|
|
|
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)
|
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(QtX_INCLUDE_DIR ${Qt5PrintSupport_INCLUDE_DIRS}
|
|
|
|
${Qt5Widgets_INCLUDE_DIRS}
|
|
|
|
${Qt5Svg_INCLUDE_DIRS}
|
|
|
|
${Qt5Gui_INCLUDE_DIRS}
|
|
|
|
${Qt5Core_INCLUDE_DIRS} )
|
2014-07-22 04:06:26 -05:00
|
|
|
set(QtX_LIBRARIES ${Qt5PrintSupport_LIBRARIES}
|
|
|
|
${Qt5Widgets_LIBRARIES}
|
|
|
|
${Qt5Gui_LIBRARIES}
|
|
|
|
${Qt5Core_LIBRARIES} )
|
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_INCLUDE_DIR: ${QtX_INCLUDE_DIR}")
|
|
|
|
#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}
|
2014-07-22 04:06:26 -05:00
|
|
|
set(QtX_LIBRARIES ${QT_LIBRARIES})
|
|
|
|
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 )
|
|
|
|
find_library(QWT_LIBRARY NAMES qwt-qt5
|
|
|
|
PATHS /usr/lib${LIB_SUFFIX} )
|
|
|
|
else()
|
|
|
|
find_path(QWT_INCLUDE_DIR NAMES qwt.h
|
|
|
|
PATHS /usr/include
|
|
|
|
/usr/include/qt4
|
|
|
|
PATH_SUFFIXES qwt )
|
|
|
|
find_library(QWT_LIBRARY NAMES qwt
|
|
|
|
PATHS /usr/lib${LIB_SUFFIX} )
|
|
|
|
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}>")
|
2015-04-08 10:45:45 -05:00
|
|
|
string(REGEX MATCH "^/opt/rh/devtoolset-2/root/usr$" IS_OPT_RH ${INSTALLDIR})
|
|
|
|
if(IS_OPT_RH)
|
|
|
|
message("-- Using devtoolset-2 install tree /opt/rh/devtoolset-2/root/etc.")
|
|
|
|
set(SYS_CONF_DIR "/opt/rh/devtoolset-2/root/etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
|
|
|
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} )
|
|
|
|
set_target_properties( ${clib} PROPERTIES VERSION ${version} SOVERSION ${soversion} )
|
|
|
|
target_link_libraries( ${clib} ${deplibs} )
|
|
|
|
install( TARGETS ${clib} DESTINATION lib${LIB_SUFFIX} )
|
|
|
|
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}
|
|
|
|
)
|
|
|
|
target_link_libraries( ${pytarget} ${pyDeplibs} )
|
|
|
|
|
|
|
|
install( TARGETS ${pytarget} DESTINATION ${PYTHON_SITE_PACKAGES} )
|
|
|
|
install( FILES ${pyIncludes} DESTINATION ${inc_install_dir} )
|
|
|
|
endmacro( add_python_module )
|