SHA256
1
0
forked from pool/ldc
ldc/ldc.spec
Guillaume GARDET a240f8e872 Accepting request 644172 from home:Guillaume_G:branches:devel:languages:D
- Update to 1.12.0:
  * Big news
    - Frontend, druntime and Phobos are at version 2.082.1. 
      (#2818, #2837, #2858, #2873) (new)
        Significant performance improvements for some transcendental
        std.math functions in single and double precision, at least 
        for x86. (dlang/phobos#6272 (comment))
    - Support for LLVM 7, which is used for the prebuilt packages. 
      Due to an LLVM 7.0.0 regression, the prebuilt x86[_64] LDC 
      binaries require a CPU with SSSE3, and so will your optimized
      binaries (unless compiling with -mattr=-ssse3). (#2850)
    - JIT compilation: new ldc.dynamic_compile.bind function with 
      interface similar to C++ std::bind, allowing to generate 
      efficient specialized versions of functions (much like 
      Easy::jit for C++). (#2726)
    - LTO now working for Win64 too; the prebuilt package includes
      the required external LLD linker and the optional LTO default
      libs. Enable as usual with -flto=<thin|full> 
      [-defaultlib=druntime-ldc-lto,phobos2-ldc-lto]. (#2774)
    - Config file: new lib-dirs array for directories to be searched 
      for libraries, incl. LLVM compiler-rt libraries. (#2790)
  * Platform support
    - Supports LLVM 3.7 - 7.0.
    - Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
    - Alpine linux/x64: built against Musl libc to support Docker 
      images based on the Alpine distro, requires the llvm5-libs, 
      musl-dev, and gcc packages to build and link D apps and the 
      tzdata and libcurl packages for certain stdlib modules.
    - Android/ARM: This release slightly changes the way emulated TLS
      is interfaced, but is missing a patch for 32-bit ARM. See the
      wiki for instructions on patching that file manually before 
      cross-compiling the runtime libraries for 32-bit Android/ARM.
  * Bug fixes
    - Fix IR-based PGO on Windows (requires our LLVM fork). (#2539)
    - Fix C++ class construction with D new on Posix. (#2801)
    - Android: No more text relocations in Phobos zlib, required for 
      API level 23+. (#2822, #2835)
    - Declare extern const/immutable globals as IR constants. 
      (#2849, #2852)
    - Fix issue when emitting both object and textual assembly files
      at once (-output-o -output-s). (#2847)
    - Support address of struct member as key/value in AA literal.
      (#2859, #2860)
    - Fix ICE when computing addresses relative to functions/labels. 
      (#2865, #2867) (new)
    - beta2 regression wrt. cross-compiling to Android. (#2863) (new)
- Fix so_version to 82

OBS-URL: https://build.opensuse.org/request/show/644172
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=23
2018-10-24 07:29:43 +00:00

201 lines
6.0 KiB
RPMSpec

#
# spec file for package ldc
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define so_ver 82
%define lname_runtime libdruntime-%{name}
%define lname_phobos libphobos2-%{name}
%bcond_without ldc_bootstrap
%bcond_with ldc_tests
Name: ldc
Version: 1.12.0
Release: 0
Summary: The LLVM D Compiler
License: BSD-3-Clause AND Artistic-1.0
Group: Development/Languages/Other
Url: https://wiki.dlang.org/LDC
Source0: https://github.com/ldc-developers/ldc/releases/download/v%{version}/ldc-%{version}-src.tar.gz
Source1: %{name}-rpmlintrc
Patch0: ldc-1.9.0-fix_arm_build.patch
BuildRequires: cmake
BuildRequires: help2man
BuildRequires: libconfig++-devel
BuildRequires: libcurl-devel
BuildRequires: libstdc++-devel
BuildRequires: llvm-clang
BuildRequires: llvm-devel >= 3.7
BuildRequires: ncurses-devel
BuildRequires: sqlite3-devel
BuildRequires: zlib-devel
# Should be installed, at least runtime
Recommends: ldc-phobos-devel = %{version}
Recommends: ldc-runtime-devel = %{version}
%if %{with ldc_bootstrap}
# v0.17.6 is the last version buildable with a C++ compiler, so use it for bootstrapping
Source10: https://github.com/ldc-developers/ldc/releases/download/v0.17.6/ldc-0.17.6-src.tar.gz
%endif
%if %{with ldc_tests}
BuildRequires: gcc-c++
BuildRequires: gdb
%endif
%if %{without ldc_bootstrap}
BuildRequires: ldc
BuildRequires: ldc-phobos-devel
BuildRequires: ldc-runtime-devel
%endif
%if %{with ldc_tests}
BuildRequires: python
%endif
%if %{with ldc_tests}
BuildRequires: timezone
BuildRequires: unzip
%endif
%description
LDC is an LLVM based compiler for the D programming language. It uses the
frontend of the reference compiler (DMD), thereby supporting the same language
features, but profits from LLVM's superior optimizing and code generation
capabilities.
%package -n %{lname_runtime}%{so_ver}
Summary: Minimal D runtime library
Group: System/Libraries
%description -n %{lname_runtime}%{so_ver}
The minimal runtime library required to support the D programming language.
%package runtime-devel
Summary: Development files for the D runtime library
Group: Development/Libraries/Other
Requires: %{lname_runtime}%{so_ver} = %{version}
Recommends: ldc-phobos-devel = %{version}
%description runtime-devel
This package contains the druntime development files necessary for developing
with LDC.
%package -n %{lname_phobos}%{so_ver}
Summary: The D standard library
Group: System/Libraries
%description -n %{lname_phobos}%{so_ver}
This package includes ldc's phobos library - The D standard library.
%package phobos-devel
Summary: Development files for the D standard library
Group: Development/Libraries/Other
Requires: %{lname_phobos}%{so_ver} = %{version}
Requires: %{name}-runtime-devel = %{version}
%description phobos-devel
This package contains the Phobos development files necessary for developing
with LDC.
%prep
%setup -q -n ldc-%{version}-src
%patch0 -p1
%if %{with ldc_bootstrap}
tar xf %{SOURCE10}
pushd ldc-0.17.6-src
popd
%endif
%build
%if %{with ldc_bootstrap}
pushd ldc-0.17.6-src
#Needs to be compiled with clang, but opensuse_rules.cmake forces gcc so disable rule
touch ./no-suse-rules
mkdir build && pushd build
# FIXME: you should use %%cmake macros
cmake \
-DCMAKE_USER_MAKE_RULES_OVERRIDE=./no-suse-rules \
-DCMAKE_C_COMPILER="%{_bindir}/clang" \
-DCMAKE_CXX_COMPILER="%{_bindir}/clang++" \
-DINCLUDE_INSTALL_DIR:PATH=%{_includedir}/d \
-DCMAKE_CXX_FLAGS="-std=c++11" \
-DCMAKE_C_FLAGS="-fPIC" \
..
make %{?_smp_mflags}
popd
popd
%endif
#Needs to be compiled with clang, but opensuse_rules.cmake forces gcc so disable rule
touch no-suse-rules
%cmake \
-DCMAKE_USER_MAKE_RULES_OVERRIDE=./no-suse-rules \
-DCMAKE_C_COMPILER="%{_bindir}/clang" \
-DCMAKE_CXX_COMPILER="%{_bindir}/clang++" \
-DINCLUDE_INSTALL_DIR:PATH=%{_includedir}/d \
%if %{with ldc_bootstrap}
-DD_COMPILER:PATH=`pwd`/../ldc-0.17.6-src/build/bin/ldmd2 \
%endif
-DCMAKE_CXX_FLAGS="-std=c++11"
make %{?_smp_mflags}
%if %{with ldc_tests}
%check
pushd build/
make %{?_smp_mflags} test
popd
%endif
%install
%cmake_install
# Build man pages
help2man %{buildroot}%{_bindir}/ldc2 > ldc2.1 && gzip ldc2.1
help2man %{buildroot}%{_bindir}/ldmd2 > ldmd2.1 && gzip ldmd2.1
install -d %{buildroot}%{_mandir}/man1
install -m 644 -t %{buildroot}%{_mandir}/man1/ ldmd2.1.gz ldc2.1.gz
rm -rf %{buildroot}%{_libexecdir}/debug
%post -n %{lname_runtime}%{so_ver} -p /sbin/ldconfig
%post -n %{lname_phobos}%{so_ver} -p /sbin/ldconfig
%postun -n %{lname_runtime}%{so_ver} -p /sbin/ldconfig
%postun -n %{lname_phobos}%{so_ver} -p /sbin/ldconfig
%files
%license LICENSE
%doc README.md
%{_mandir}/man1/*.1%{?ext_man}
%config %{_sysconfdir}/bash_completion.d/ldc2
%config %{_sysconfdir}/ldc2.conf
%{_bindir}/ldc*
%{_bindir}/ldmd2
%files -n %{lname_runtime}%{so_ver}
%{_libdir}/%{lname_runtime}-shared.so.*
%{_libdir}/%{lname_runtime}-debug-shared.so.*
%files runtime-devel
%{_libdir}/%{lname_runtime}-shared.so
%{_libdir}/%{lname_runtime}-debug-shared.so
%dir %{_includedir}/d
%{_includedir}/d/ldc
%{_includedir}/d/core
%files -n %{lname_phobos}%{so_ver}
%{_libdir}/%{lname_phobos}-shared.so.*
%{_libdir}/%{lname_phobos}-debug-shared.so.*
%files phobos-devel
%{_libdir}/%{lname_phobos}-shared.so
%{_libdir}/%{lname_phobos}-debug-shared.so
%{_includedir}/d/std
%{_includedir}/d/etc
%changelog