summaryrefslogtreecommitdiffstats
path: root/source-builder/config/gdb-common-1.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'source-builder/config/gdb-common-1.cfg')
-rw-r--r--source-builder/config/gdb-common-1.cfg281
1 files changed, 281 insertions, 0 deletions
diff --git a/source-builder/config/gdb-common-1.cfg b/source-builder/config/gdb-common-1.cfg
new file mode 100644
index 0000000..397d44d
--- /dev/null
+++ b/source-builder/config/gdb-common-1.cfg
@@ -0,0 +1,281 @@
+#
+# GDB Common Version 1.
+#
+# This configuration file configure's, make's and install's gdb.
+#
+
+#
+# Python
+#
+# GDB uses python internally so we need to link to a suitable python
+# dev kit. The dev kit for python is the header and a library. These
+# files are versioned where the header file is located in a directory
+# based on:
+#
+# pythonM.m/Python.h
+#
+# where 'M' is the major version number and 'm' is the minor verison
+# number. The library is:
+#
+# libpythonM.m.a
+#
+# The python command is 'pythonM' which means we need to query it for
+# the minor number.
+#
+# The python running the RSB may not be suitable, for example a MSC,
+# MSYS or Cygwin version on Windows when we want the MinGW python dev
+# file. A specific version cannot be forced because older versions of
+# GDB can only link to 'python2'.
+#
+# Host support can perform a complex query of the system, for example
+# Windows and set '%{gdb_python2}' and '%{gdb_python3}' with the full
+# path to that version's executable.
+#
+# A configuration of GDB can set the version required by setting
+# '%{gdb-python-version}' to the versions command, eg python2.
+#
+# The procedure is:
+#
+# 1. If the macros '%{gdb_python2}' or '%{gdb_python3}' are present
+# use that path they contain. Assume the path is valid.
+#
+# 2. Does the version of gdb specify a version of python that must be
+# used. Override with '%define gdb-python-version python2'.
+#
+# 3. Search for 'python2' and if not found search for 'python3'.
+#
+%if %{defined gdb-python2}
+ %define gdb-enable-python %{gdb_python2}
+%else
+ %if %{defined gdb-python3}
+ %define gdb-enable-python %{gdb_python3}
+ %else
+ %if %{defined gdb-python-version}
+ %define gdb-enable-python %(command -v %{gdb-python-version} || true)
+ %else
+ %define gdb-enable-python %(command -v python2 || true)
+ %if %{gdb-enable-python} == %{nil}
+ %define gdb-enable-python %(command -v python3 || true)
+ %endif
+ %if %{gdb-enable-python} == %{nil}
+ %define gdb-enable-python %(command -v python || true})
+ %endif
+ %endif
+ %if %{gdb-enable-python} == %{nil}
+ %error "gdb: python: no valid version of python found"
+ %endif
+ %endif
+%endif
+
+#
+# Get the Python's major and minor version from the python
+# command. The headers and libraries are installed under a major/minor
+# (mm) version path and name.
+#
+# The library file name can vary across the hosts so wildcard the search.
+#
+%if %{!defined gdb-python-config}
+ %define gdb-python-config %{nil}
+%endif
+%if %{gdb-python-config} == %{nil}
+ %define gdb-python-config %(command -v %{gdb-enable-python}-config || true)
+%endif
+%define gdb-python-ver-mm %(%{gdb-enable-python} --version 2>&1 | sed -e 's/.* //g' | rev | cut -d'.' -f2- | rev)
+%define gdb-python-header Python.h
+%define gdb-python-ver-header python%{gdb-python-ver-mm}/%{gdb-python-header}
+%define gdb-python-ver-lib libpython%{gdb-python-ver-mm}.*
+%if %{host_includes} == %{nil}
+ %define gdb-host-incs %{nil}
+%else
+ %define gdb-host-incs -I '%{host_includes}'
+%endif
+%if %{gdb-python-config} != %{nil}
+ %define gdb-python-config-incs -I '%(%{gdb-python-config} --includes)'
+ %define gdb-python-header-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-incs} %{gdb-python-config-incs} -H %{gdb-python-header})
+%else
+ %define gdb-python-header-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-incs} -H %{gdb-python-ver-header})
+%endif
+%if %{gdb-python-header-check} == not-found && !%{_rsb_getting_source}
+ %error "gdb: python: header file not found: %{gdb-python-ver-header}, please install"
+%endif
+#
+# Too hard to find on MacOS (darwin), the header is good enough.
+#
+%ifnos darwin
+ %if %{host_ldflags} == %{nil}
+ %define gdb-host-libs %{nil}
+ %else
+ %define gdb-host-libs -L '%{host_ldflags}'
+ %endif
+ %if %{gdb-python-config} != %{nil}
+ %define gdb-python-lib-filter awk 'BEGIN{FS=" "}/python/{for(i=1;i<NF;++i)if(match($i,".*lpython.*")) print "lib"substr($i,3)"*";}'
+ %if %{gdb-python-ver-mm} < 3.8
+ %define gdb-python-config-lib-check-flags --ldflags
+ %else
+ %define gdb-python-config-lib-check-flags --ldflags --embed
+ %endif
+ %define gdb-python-config-libs %(%{gdb-python-config} %{gdb-python-config-lib-check-flags} | %{gdb-python-lib-filter})
+ %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -l %{gdb-python-config-libs})
+ %else
+ %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -l %{gdb-python-ver-lib})
+ %endif
+ %if %{gdb-python-lib-check} == not-found && !%{_rsb_getting_source}
+ %error "gdb: python: library file not found: %{gdb-python-ver-lib}, please install"
+ %endif
+%endif
+
+#
+# See if the simulator has been disabled for Windows.
+#
+# Build using the system's readline, it is in better shape
+# than GDB's one with MSYS2.
+#
+%if %{_host_os} == win32
+ %if %{defined win32-gdb-disable-sim}
+ %define gdb-disable-sim 1
+ %endif
+ %define with_system_readline 1
+%endif
+
+#
+# Default to building simulators.
+#
+%ifn %{defined gdb-disable-sim}
+ %define gdb-disable-sim 0
+%else
+ %undefine gdb-sim-options
+%endif
+
+%include %{_configdir}/checks.cfg
+
+#
+# Select Snapshot Macro Maps
+#
+%select gdb-snapshot
+%select expat-snapshot
+
+#
+# The description.
+#
+Name: %{_target}-gdb-%{gdb_version}-%{_host}-%{release}
+Summary: GDB v%{gdb_version} for target %{_target} on host %{_host}
+Version: %{gdb_version}
+Release: %{release}
+URL: http://www.gnu.org/software/gdb/
+
+#
+# GDB has changed it default extension.
+#
+%ifn %{defined gdb_src_ext}
+ %define gdb_src_ext gz
+%endif
+
+#
+# Source
+#
+%source set gdb http://ftp.gnu.org/gnu/gdb/gdb-%{gdb_version}.tar.%{gdb_src_ext}
+
+#
+# Disable Python on Cxc builds for now.
+#
+%if "%{_build}" != "%{_host}"
+ %define without_python
+%endif
+
+#
+# The --with-python option is either the default which is auto or the path to
+# the specific python to be used.
+#
+%if %{defined with_python_path}
+ %define with_python_option --with-python=%{with_python_path}
+%else
+ %if %{defined gdb-enable-python}
+ %define with_python_option --with-python=%{gdb-enable-python}
+ %else
+ %define with_python_option --with-python
+ %endif
+%endif
+
+#
+# Fix the mess iconv is on FreeBSD 10.0 and higher.
+#
+%if %{defined iconv_prefix}
+ %define iconv_opts --with-libiconv-prefix=%{iconv_prefix}
+%else
+ %define iconv_opts %{nil}
+%endif
+
+#
+#
+# Prepare the source code.
+#
+%prep
+ build_top=$(pwd)
+
+ gdb_source=%{?gdb_external:%{gdb_expand_name}}%{!?gdb_external:"gdb-%{gdb_version}"}
+
+ source_dir_gdb=${gdb_source}
+ %source setup gdb -q -n ${gdb_source}
+ %patch setup gdb -p1
+
+ cd ${build_top}
+
+%build
+ build_top=$(pwd)
+
+ %{build_directory}
+
+ mkdir -p ${build_dir}
+ cd ${build_dir}
+
+ %{host_build_flags}
+
+ if test "%{_build}" != "%{_host}" ; then
+ GDB_LIBS_STATIC="-lexpat"
+ else
+ GDB_LIBS_STATIC="-lexpat"
+ GDB_LIBS="%{_forced_static}"
+ fi
+
+ LIBS_STATIC=${GDB_LIBS_STATIC} \
+ LIBS=${GDB_LIBS} \
+ ../${source_dir_gdb}/configure \
+ --build=%{_build} --host=%{_host} \
+ --target=%{_target} \
+ --verbose --disable-nls \
+ --disable-gas --disable-binutils --disable-ld --disable-gold --disable-gprof \
+ %{?with_system_readline:--with-system-readline} \
+ --without-included-gettext \
+ --disable-win32-registry \
+ --disable-werror \
+ %{!?gdb-disable-sim:--enable-sim}%{?gdb-disable-sim:--disable-sim} \
+ %{?gdb-sim-options:%{gdb-sim-options}} \
+ --without-zlib \
+ --with-expat \
+ --with-guile=no \
+ %{iconv_opts} \
+ %{!?without_python:%{with_python_option}} \
+ --prefix=%{_prefix} --bindir=%{_bindir} \
+ --exec-prefix=%{_exec_prefix} \
+ --includedir=%{_includedir} --libdir=%{_libdir} \
+ --mandir=%{_mandir} --infodir=%{_infodir}
+
+ %{__make} %{?_smp_mflags} all
+
+ cd ${build_top}
+
+%install
+ build_top=$(pwd)
+
+ %{__rmdir} $SB_BUILD_ROOT
+
+ cd ${build_dir}
+ %{__make} DESTDIR=$SB_BUILD_ROOT install
+
+ # Dropped in FSF-binutils-2.9.5, but Cygwin still ships it.
+ %{__rmdir} $SB_BUILD_ROOT%{_infodir}/configure.info*
+
+ %{__rmfile} $SB_BUILD_ROOT%{_infodir}/dir
+ touch $SB_BUILD_ROOT%{_infodir}/dir
+
+ cd ${build_top}