File ngspice.spec of Package ngspice

%define _unpackaged_files_terminate_build 0

%define pname  ngspice

Name:           %{pname}
Version:        44.2
Release:        0
Summary:        Mixed-level, Mixed-signal Circuit Simulator Based on spice3f5
License:        BSD-2-Clause
Group:          Productivity/Scientific/Electronics
URL:            https://ngspice.sourceforge.io
Source0:        https://downloads.sourceforge.net/%{pname}/%{pname}-%{version}.tar.gz
BuildRequires:  bison
BuildRequires:  flex
BuildRequires:  fftw3-devel
BuildRequires:  gcc-c++
BuildRequires:  automake
BuildRequires:  autoconf
BuildRequires:  libtool
BuildRequires:  readline-devel
BuildRequires:  pkgconfig(tinfo)
BuildRequires:  libX11-devel
BuildRequires:  libXaw-devel
BuildRequires:  libXext-devel
BuildRequires:  libXft-devel
BuildRequires:  libXmu-devel

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
BuildRequires:  libX11-6
%else
BuildRequires:  libX11
%endif

%description
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice.

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
%package xspice-cm
Summary:        Xspice code model Plugins
Group:          Productivity/Scientific/Electronics

%description xspice-cm
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice. This package contains the Xspice code model plugins.

%package scripts
Summary:        Ngspice init scripts
Group:          Productivity/Scientific/Electronics

%description scripts
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice. This package contains the ngspice init scripts shared
between ngspice and libngspice.

%package -n lib%{pname}0
Summary:        Shared libraries for ngspice
Group:          System/Libraries

%description -n lib%{pname}0
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice. This package contains the shared libraries.

%else

%package -n lib%{pname}
Summary:        Shared libraries for ngspice
Group:          System/Libraries

%description -n lib%{pname}
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice. This package contains the shared libraries.

%endif

%package -n lib%{pname}-devel
Summary:        Development files for ngspice
Group:          Development/Libraries/Other

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
Requires:       lib%{pname}0 = %{version}
%else
Requires:       lib%{pname} = %{version}
%endif

%description -n lib%{pname}-devel
Ngspice is a mixed-level/mixed-signal circuit simulator. Its code
is based on three open source software packages: Spice3f5, Cider1b1
and Xspice. This package contains the development files.


%prep
%setup -q -n ngspice-%{version}
%autopatch -p1

%build

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
export CFLAGS="%{optflags} -fPIE"
export LDFLAGS="-pie"
#%else
#export CFLAGS="-02 -std=c99"
#export LDFLAGS="-s"
%endif

./autogen.sh
mkdir exe releasesh
cd exe
../configure \
    --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \
    --bindir=%{_bindir} --docdir=%{_docdir} --mandir=%{_mandir} \
    --libdir=%{_libdir} --libexecdir=%{_libexecdir} \
    --datadir=%{_datadir} --includedir=%{_includedir} \
    --disable-debug \
    --with-x \
    --with-readline=yes \
    --enable-xspice \
    --enable-cider \
    --enable-openmp \
    --enable-osdi \
    --enable-predictor \
    %{nil}

cd ../releasesh

../configure \
    --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \
    --bindir=%{_bindir} --docdir=%{_docdir} --mandir=%{_mandir} \
    --libdir=%{_libdir} --libexecdir=%{_libexecdir} \
    --datadir=%{_datadir} --includedir=%{_includedir} \
    --disable-debug \
    --with-ngshared \
    --with-readline=yes \
    --enable-xspice \
    --enable-cider \
    --enable-openmp \
    --enable-osdi \
    --enable-predictor \
    %{nil}

cd ../exe
make
cd ../releasesh
make

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
cd %{_builddir}/%{pname}-%{version}/exe
make install DESTDIR=%{buildroot}
cd ../releasesh
make install DESTDIR=%{buildroot}
cd ..
chmod -x ANALYSES AUTHORS BUGS DEVICES FAQ NEWS README

find %{buildroot} -type f -name "*.la" -delete -print

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
%post -n lib%{pname}0 -p /sbin/ldconfig
%postun -n lib%{pname}0 -p /sbin/ldconfig
%else
%post -n lib%{pname} -p /sbin/ldconfig
%postun -n lib%{pname} -p /sbin/ldconfig
%endif

%if 0%{?suse_version} > 1400 && 0%{?is_opensuse}
%files
%defattr(-,root,root,-)
%license COPYING
%doc ANALYSES AUTHORS BUGS DEVICES FAQ NEWS README
%dir %{_datadir}/ngspice
%{_bindir}/ngspice
%{_mandir}/man1/*

%files scripts
%{_datadir}/ngspice/scripts

%files xspice-cm
%{_libdir}/%{pname}

%files -n lib%{pname}0
%{_libdir}/lib%{pname}.so.*

%else

%files
%defattr(-,root,root,-)
%license COPYING
%doc ANALYSES AUTHORS BUGS DEVICES FAQ NEWS README
%dir %{_datadir}/ngspice
%{_bindir}/ngspice
%{_mandir}/man1/*
%{_datadir}/ngspice/scripts
%{_libdir}/%{pname}

%files -n lib%{pname}
%{_libdir}/lib%{pname}.so.*

%endif

%files -n lib%{pname}-devel
%dir %{_includedir}/%{pname}
%{_includedir}/%{pname}/sharedspice.h
%{_libdir}/lib%{pname}.so
%{_libdir}/pkgconfig/%{pname}.pc

%changelog
* Tue Jan 28 2025 Mazher IQBAL <Mazher.Iqbal@lip6.fr>
- First OBS script is generated.
openSUSE Build Service is sponsored by