Add a flag througout all the build system to manage manylinux (PyPI).

* New: In boostrap/FindBootstrap.cmake, add a macro setup_qt() to
    share Python detection across the various tools.
      This macro takes into account the USE_MANYLINUX variable to
    slightly change the Python detection. On a "normal" system we
    look for "Development" (search for dynamic libraries) while under
    manylinux we look for "Development.Module"(static linking).
* Change: In bootstrap/ccb.py, add a new option --manylinux.
* Change: Cleanup in the various CMakeLists.txt to use setup_qt().
This commit is contained in:
Jean-Paul Chaput 2023-07-03 19:54:01 +02:00
parent ecdcabb8ad
commit 30b92ff33a
29 changed files with 37 additions and 28 deletions

View File

@ -18,9 +18,9 @@
set_cmake_policies() set_cmake_policies()
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(FLUTE REQUIRED) find_package(FLUTE REQUIRED)

View File

@ -18,8 +18,8 @@
set_cmake_policies() set_cmake_policies()
setup_boost() setup_boost()
setup_qt() setup_qt()
setup_python()
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(FLUTE REQUIRED) find_package(FLUTE REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)

View File

@ -14,7 +14,6 @@ endif ( CHECK_DETERMINISM )
${QtX_INCLUDE_DIRS} ${QtX_INCLUDE_DIRS}
${Python_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
) )
find_package (Python3 COMPONENTS Interpreter Development)
set( includes anabatic/Constants.h set( includes anabatic/Constants.h
anabatic/Configuration.h anabatic/Configuration.h
anabatic/Matrix.h anabatic/Matrix.h

View File

@ -11,8 +11,7 @@
list(INSERT CMAKE_MODULE_PATH 0 "${Bootstrap_SOURCE_DIR}/cmake_modules/") list(INSERT CMAKE_MODULE_PATH 0 "${Bootstrap_SOURCE_DIR}/cmake_modules/")
find_package(Bootstrap REQUIRED) find_package(Bootstrap REQUIRED)
# find_package(Python 3 REQUIRED COMPONENTS Interpreter Development ) find_package(Python 3 REQUIRED COMPONENTS Interpreter Development.Module )
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development )
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
print_cmake_module_path() print_cmake_module_path()

View File

@ -35,6 +35,7 @@ class Builder:
self._noCache = False self._noCache = False
self._ninja = False self._ninja = False
self._clang = False self._clang = False
self._manylinux = False
self._noSystemBoost = False self._noSystemBoost = False
self._macports = False self._macports = False
self._devtoolset = 0 self._devtoolset = 0
@ -62,6 +63,7 @@ class Builder:
elif attribute == "noCache": self._noCache = value elif attribute == "noCache": self._noCache = value
elif attribute == "ninja": self._ninja = value elif attribute == "ninja": self._ninja = value
elif attribute == "clang": self._clang = value elif attribute == "clang": self._clang = value
elif attribute == "manylinux": self._manylinux = value
elif attribute == "macports": elif attribute == "macports":
self._macports = value self._macports = value
if value: self._noSystemBoost = True if value: self._noSystemBoost = True
@ -177,6 +179,7 @@ class Builder:
if self._bfd: command += [ "-D", "USE_LIBBFD:STRING=%s" % self._bfd ] if self._bfd: command += [ "-D", "USE_LIBBFD:STRING=%s" % self._bfd ]
if self._qt4: command += [ "-D", "WITH_QT4:STRING=TRUE" ] if self._qt4: command += [ "-D", "WITH_QT4:STRING=TRUE" ]
if self._openmp: command += [ "-D", "WITH_OPENMP:STRING=TRUE" ] if self._openmp: command += [ "-D", "WITH_OPENMP:STRING=TRUE" ]
if self._manylinux: command += [ "-D", "USE_MANYLINUX:STRING=TRUE" ]
command += [ "-D", "CMAKE_BUILD_TYPE:STRING=%s" % self.buildMode command += [ "-D", "CMAKE_BUILD_TYPE:STRING=%s" % self.buildMode
#, "-D", "BUILD_SHARED_LIBS:STRING=%s" % self.enableShared #, "-D", "BUILD_SHARED_LIBS:STRING=%s" % self.enableShared
, "-D", "CMAKE_INSTALL_PREFIX:STRING=%s" % self.installDir , "-D", "CMAKE_INSTALL_PREFIX:STRING=%s" % self.installDir

View File

@ -211,6 +211,7 @@ parser.add_option ( "--bfd" , action="store_true" ,
parser.add_option ( "--openmp" , action="store_true" , dest="openmp" , help="Enable the use of OpenMP in Gcc." ) parser.add_option ( "--openmp" , action="store_true" , dest="openmp" , help="Enable the use of OpenMP in Gcc." )
parser.add_option ( "--ninja" , action="store_true" , dest="ninja" , help="Use Ninja instead of UNIX Makefile." ) parser.add_option ( "--ninja" , action="store_true" , dest="ninja" , help="Use Ninja instead of UNIX Makefile." )
parser.add_option ( "--clang" , action="store_true" , dest="clang" , help="Force use of Clang C/C++ compiler instead of system default." ) parser.add_option ( "--clang" , action="store_true" , dest="clang" , help="Force use of Clang C/C++ compiler instead of system default." )
parser.add_option ( "--manylinux" , action="store_true" , dest="manylinux" , help="Build target is manylinux (PyPY)." )
parser.add_option ( "--make" , action="store" , type="string", dest="makeArguments" , help="Arguments to pass to make (ex: \"-j4 install\")." ) parser.add_option ( "--make" , action="store" , type="string", dest="makeArguments" , help="Arguments to pass to make (ex: \"-j4 install\")." )
parser.add_option ( "--project" , action="append" , type="string", dest="projects" , help="The name of a project to build (may appears any number of time)." ) parser.add_option ( "--project" , action="append" , type="string", dest="projects" , help="The name of a project to build (may appears any number of time)." )
parser.add_option ( "-t", "--tool" , action="append" , type="string", dest="tools" , help="The name of a tool to build (may appears any number of time)." ) parser.add_option ( "-t", "--tool" , action="append" , type="string", dest="tools" , help="The name of a tool to build (may appears any number of time)." )
@ -282,6 +283,7 @@ else:
if options.llvmtoolset: builder.llvmtoolset = options.llvmtoolset if options.llvmtoolset: builder.llvmtoolset = options.llvmtoolset
if options.bfd: builder.bfd = "ON" if options.bfd: builder.bfd = "ON"
if options.qt4: builder.qt4 = True if options.qt4: builder.qt4 = True
if options.manylinux: builder.manylinux = True
if options.openmp: builder.openmp = True if options.openmp: builder.openmp = True
if options.makeArguments: builder.makeArguments = options.makeArguments if options.makeArguments: builder.makeArguments = options.makeArguments
#if options.svnMethod: builder.svnMethod = options.svnMethod #if options.svnMethod: builder.svnMethod = options.svnMethod

View File

@ -223,6 +223,20 @@ endif()
endmacro(setup_boost) endmacro(setup_boost)
#
# Setup Python, select detection depending on USE_MANYLINUX.
#
macro(setup_python)
set(pydevelArg "Development")
if (USE_MANYLINUX)
message(STATUS "Build for manylinux")
set(pydevelArg "Development.Module")
endif()
find_package(Python 3 REQUIRED COMPONENTS Interpreter ${pydevelArg} )
endmacro()
# #
# Find Qt, the union of all the modules we need for the whole project. # Find Qt, the union of all the modules we need for the whole project.
# #

View File

@ -18,9 +18,9 @@
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_qwt() setup_qwt()
setup_python()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(FLUTE REQUIRED) find_package(FLUTE REQUIRED)

View File

@ -21,6 +21,7 @@
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
cmake_policy(SET CMP0054 NEW) cmake_policy(SET CMP0054 NEW)
@ -28,7 +29,6 @@
find_package(Libbfd) find_package(Libbfd)
endif() endif()
find_package(BZip2 REQUIRED) find_package(BZip2 REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(BISON REQUIRED) find_package(BISON REQUIRED)
find_package(FLEX REQUIRED) find_package(FLEX REQUIRED)

View File

@ -1,6 +1,5 @@
# -*- explicit-buffer-name: "CMakeLists.txt<crlcore/src/ccore/cyclop>" -*- # -*- explicit-buffer-name: "CMakeLists.txt<crlcore/src/ccore/cyclop>" -*-
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
include_directories ( ${CRLCORE_SOURCE_DIR}/src/ccore include_directories ( ${CRLCORE_SOURCE_DIR}/src/ccore
${HURRICANE_INCLUDE_DIR} ${HURRICANE_INCLUDE_DIR}
${UTILITIES_INCLUDE_DIR} ${UTILITIES_INCLUDE_DIR}

View File

@ -32,8 +32,6 @@
-lutil -lutil
) )
find_package (Python3 COMPONENTS Interpreter Development)
add_definitions( -DCORIOLIS_TOP="${CORIOLIS_TOP}" add_definitions( -DCORIOLIS_TOP="${CORIOLIS_TOP}"
-DSYS_CONF_DIR="${SYS_CONF_DIR}" -DSYS_CONF_DIR="${SYS_CONF_DIR}"
-DPYTHON_SITE_PACKAGES="${PYTHON_SITE_PACKAGES}" -DPYTHON_SITE_PACKAGES="${PYTHON_SITE_PACKAGES}"

View File

@ -1,7 +1,6 @@
# -*- explicit-buffer-name: "CMakeLists.txt<crlcore/src/x2y> -*- # -*- explicit-buffer-name: "CMakeLists.txt<crlcore/src/x2y> -*-
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
include_directories ( ${CRLCORE_SOURCE_DIR}/src/ccore include_directories ( ${CRLCORE_SOURCE_DIR}/src/ccore
${HURRICANE_INCLUDE_DIR} ${HURRICANE_INCLUDE_DIR}
${UTILITIES_INCLUDE_DIR} ${UTILITIES_INCLUDE_DIR}

View File

@ -17,8 +17,8 @@
set_cmake_policies() set_cmake_policies()
setup_boost(program_options) setup_boost(program_options)
setup_python()
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
#find_package(KATABATIC REQUIRED) #find_package(KATABATIC REQUIRED)

View File

@ -10,7 +10,6 @@
${Boost_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
${Python_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
) )
find_package (Python3 COMPONENTS Interpreter Development)
set( includes etesian/Configuration.h set( includes etesian/Configuration.h
etesian/Placement.h etesian/Placement.h
etesian/FeedCells.h etesian/FeedCells.h

View File

@ -16,8 +16,8 @@
set_cmake_policies() set_cmake_policies()
check_distribution() check_distribution()
setup_sysconfdir( "${CMAKE_INSTALL_PREFIX}" ) setup_sysconfdir( "${CMAKE_INSTALL_PREFIX}" )
setup_python()
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -6,7 +6,6 @@
${CONFIGURATION_INCLUDE_DIR} ${CONFIGURATION_INCLUDE_DIR}
${Python_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
) )
find_package (Python3 COMPONENTS Interpreter Development)
set( includes flute.h set( includes flute.h
dl.h dl.h

View File

@ -18,9 +18,9 @@
set_cmake_policies() set_cmake_policies()
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(FLUTE REQUIRED) find_package(FLUTE REQUIRED)

View File

@ -20,11 +20,11 @@
cmake_policy(SET CMP0054 NEW) cmake_policy(SET CMP0054 NEW)
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
find_package(BZip2 REQUIRED) find_package(BZip2 REQUIRED)
find_package(BISON REQUIRED) find_package(BISON REQUIRED)
find_package(FLEX REQUIRED) find_package(FLEX REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development )
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
if (USE_LIBBFD) if (USE_LIBBFD)

View File

@ -8,7 +8,6 @@
${Boost_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
${Python_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
) )
find_package (Python3 COMPONENTS Interpreter Development)
set( pyCpps ProxyProperty.cpp set( pyCpps ProxyProperty.cpp
PythonAttributes.cpp PythonAttributes.cpp
PyBreakpoint.cpp PyBreakpoint.cpp

View File

@ -14,10 +14,10 @@
set_cmake_policies() set_cmake_policies()
#setup_apple() #setup_apple()
setup_boost(program_options) setup_boost(program_options)
setup_python()
set(QT_USE_QTXML "true") set(QT_USE_QTXML "true")
find_package(Qt4 REQUIRED) find_package(Qt4 REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -15,7 +15,7 @@
check_distribution() check_distribution()
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development) setup_python()
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -18,9 +18,9 @@
set_cmake_policies() set_cmake_policies()
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(FLUTE REQUIRED) find_package(FLUTE REQUIRED)

View File

@ -12,7 +12,6 @@
${Boost_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
${Python_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
) )
find_package (Python3 COMPONENTS Interpreter Development)
set( includes katana/Constants.h set( includes katana/Constants.h
katana/Block.h katana/Block.h
katana/TrackCost.h katana/TrackCost.h

View File

@ -14,11 +14,11 @@
set_cmake_policies() set_cmake_policies()
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
setup_boost(program_options) setup_boost(program_options)
setup_python()
if (USE_LIBBFD) if (USE_LIBBFD)
find_package(Libbfd) find_package(Libbfd)
endif() endif()
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -12,6 +12,7 @@
list(INSERT CMAKE_MODULE_PATH 0 "${DESTDIR}$ENV{CORIOLIS_TOP}/share/cmake/Modules/") list(INSERT CMAKE_MODULE_PATH 0 "${DESTDIR}$ENV{CORIOLIS_TOP}/share/cmake/Modules/")
find_package(Bootstrap REQUIRED) find_package(Bootstrap REQUIRED)
setup_project_paths(CORIOLIS) setup_project_paths(CORIOLIS)
setup_python()
find_package(Bootstrap REQUIRED) find_package(Bootstrap REQUIRED)
set_cmake_policies() set_cmake_policies()
@ -19,7 +20,6 @@
cmake_policy(SET CMP0002 OLD) cmake_policy(SET CMP0002 OLD)
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -17,8 +17,8 @@
set_cmake_policies() set_cmake_policies()
setup_boost() setup_boost()
setup_qt() setup_qt()
setup_python()
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)

View File

@ -17,9 +17,9 @@
set_cmake_policies() set_cmake_policies()
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)

View File

@ -19,12 +19,12 @@
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
if (USE_LIBBFD) if (USE_LIBBFD)
find_package(Libbfd) find_package(Libbfd)
endif() endif()
find_package(BZip2 REQUIRED) find_package(BZip2 REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF REQUIRED) find_package(LEFDEF REQUIRED)
find_package(COLOQUINTE) find_package(COLOQUINTE)

View File

@ -21,13 +21,13 @@
setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") setup_sysconfdir("${CMAKE_INSTALL_PREFIX}")
setup_boost(program_options) setup_boost(program_options)
setup_qt() setup_qt()
setup_python()
if (USE_LIBBFD) if (USE_LIBBFD)
find_package(Libbfd) find_package(Libbfd)
endif() endif()
find_package(Libexecinfo REQUIRED) find_package(Libexecinfo REQUIRED)
find_package(BZip2 REQUIRED) find_package(BZip2 REQUIRED)
find_package(Python 3 REQUIRED COMPONENTS Interpreter Development)
find_package(PythonSitePackages REQUIRED) find_package(PythonSitePackages REQUIRED)
find_package(LEFDEF) find_package(LEFDEF)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)