# # spec file for package orc # # Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands. # # 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 http://bugs.opensuse.org/ # %if 0%{?suse_version} < 1200 %bcond_with gtkdoc %else %bcond_without gtkdoc %endif Name: orc Version: 0.4.25 Release: 1.2 Summary: The Oil Runtime Compiler License: BSD-3-Clause Group: Productivity/Multimedia/Other Url: http://cgit.freedesktop.org/gstreamer/orc Source: http://gstreamer.freedesktop.org/src/orc/%{name}-%{version}.tar.xz Source99: baselibs.conf %if %{with gtkdoc} BuildRequires: gtk-doc >= 1.12 %endif BuildRequires: pkg-config %if 0%{?suse_version} <= 1130 #openSUSE until 11.3 and also SLE11 do not bring in xz on their own. BuildRequires: xz %endif Provides: %{name}-devel = %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Orc is a library and set of tools for compiling and executing very simple programs that operate on arrays of data. The “language” is a generic assembly language that represents many of the features available in SIMD architectures, including saturated addition and subtraction, and many arithmetic operations. %package -n liborc-0_4-0 Summary: The Oil Runtime Compiler Library Group: System/Libraries %description -n liborc-0_4-0 Orc is a library and set of tools for compiling and executing very simple programs that operate on arrays of data. The “language” is a generic assembly language that represents many of the features available in SIMD architectures, including saturated addition and subtraction, and many arithmetic operations. %package doc Summary: The Oil Runtime Compiler Library - Documentation Group: Documentation/HTML %description doc Orc is a library and set of tools for compiling and executing very simple programs that operate on arrays of data. The “language” is a generic assembly language that represents many of the features available in SIMD architectures, including saturated addition and subtraction, and many arithmetic operations. %prep %setup -q %build %configure \ --disable-static \ %if %{with gtkdoc} --enable-gtk-doc %else --disable-gtk-doc %endif make %{?_smp_mflags} %install make DESTDIR=%{buildroot} install %{?_smp_mflags} # These are some examples that seem not to make sense to be distributed rm -rf %{buildroot}%{_libdir}/orc # Remove libtool archives find %{buildroot} -type f -name "*.la" -delete -print # Temp disable check on i586 until we have sorted out the i586 fails with upstream (last tested with 0.4.24) # disable also for ppc64le as many changes required in orcprogram-altivec.c # Testsuite is broken on aarch64 %check %ifnarch aarch64 %{arm} %{ix86} ppc64le make check %{?_smp_mflags} %endif %post -n liborc-0_4-0 -p /sbin/ldconfig %postun -n liborc-0_4-0 -p /sbin/ldconfig %files %defattr(-,root,root) %{_bindir}/orc-bugreport %{_bindir}/orcc %{_includedir}/orc-0.4/ %{_libdir}/*.so %{_libdir}/pkgconfig/orc-0.4.pc %{_datadir}/aclocal/orc.m4 %files doc %defattr(-,root,root) %dir /usr/share/gtk-doc %dir /usr/share/gtk-doc/html %{_datadir}/gtk-doc/html/orc/ %files -n liborc-0_4-0 %defattr(-,root,root) %{_libdir}/liborc*-0.4.so.* %changelog * Sat Mar 5 2016 zaitor@opensuse.org - Update to version 0.4.25: + compiler: also prefer the backup function when no target, instead of trying to use emulation which is usually slower. + executor: fix load of parameters smaller than 64 bits, fixing crashes on ldresnearb and friends in emulated code. + test-limits: improve test without target. + Only check for Android's liblog on Android targets, so we don't accidentally pick up another liblog that may exist elsewhere. + Don't require libtool for uninstalled setups (-uninstalled pkg-config file). + Make -Bsymbolic check in configure work with clang. + Coverity code analyser fixes. + docs: update generated opcode tables. + Add orc_version_string() function and make orcc check the liborc that is being picked up to make sure the right lib is being used. * Mon Sep 28 2015 dmueller@suse.com - disable testsuite on aarch64 * Thu Jul 9 2015 zaitor@opensuse.org - Update to version 0.4.24: + Only reuse constants of the same size and value. + Fix reading of .orc files with Windows line endings on Windows. + Fix out of bounds array access in the tests. + Remove duplicate code path in orcc. + Put a limit to the memcpy test. + Fix mmap leak on error path. * Fri Feb 27 2015 normand@linux.vnet.ibm.com - disable make check for ppc64le archi would need changes in orcprogram-altivec.c and define of HAVE_POWERPC * Fri Dec 26 2014 zaitor@opensuse.org - Update to version 0.4.23: + Various improvements to the NEON backend to bring it closer to the SSE backend. + Add support for setting a custom backup function. + Preserve NEON/VFP registers across subroutines. + Fix 64 bit parameter loading on big-endian systems. + Improved implementations for various opcodes. + Various improvements and fixes to constants handling. + Avoid some undefined operations on signed integers. + Prefer user specific directories over global ones for intermediate files to prevent name collisions. * Thu Oct 9 2014 dimstar@opensuse.org - Fix version dependency for gtk-doc (min 1.12). - Disable building of gtk-doc for SLE11, where this version of gtk-doc is not available (by means of bcond_with/without). The pre-built documentation, as shipped in the tarball will be installed in this case. * Thu Oct 9 2014 dimstar@opensuse.org - Add xz BuildRequires for openSUSE < 11.3 (and thus also SLE11). * Tue Sep 23 2014 zaitor@opensuse.org - Temp-disable testsuite on i586 until we get the random fails sorted out with upstream. - Drop orc-disable-test-limits.patch, and autoreconf call, and corresponding BuildRequires, as testsuite is disabled, and patch needing them is dropped. * Wed Sep 17 2014 zaitor@opensuse.org - Update to version 0.4.22: + Handle NOCONFIGURE=1 in autogen.sh. + Some memory leak fixes in the compiler. + Fixes for compiler warnings on Win64. + Properly detect CPU features on Android in non-debug build. + Use Android logging system instead of stderr for debug output. * Fri Jul 4 2014 idonmez@suse.com - Update to version 0.4.21 + Fix memory leaks + Fix list corruption when splitting code memory chunks, causing crashes when allocating a lot of code memory and trying to free it later + Various compiler warnings, coverity warnings and static code analysis fixes + Documentation fix for mulhsw, mulhuw - Add orc-disable-test-limits.patch to disable test-limits test, it only works on x86-64 * Fri Dec 20 2013 zaitor@opensuse.org - Update to version 0.4.18: + Important bugfix in reading constants from bytecode. + Documentation and code cleanup. + Fix cache flushing on iOS. * Wed May 15 2013 dimstar@opensuse.org - Update to version 0.4.17: + Merged known distro patches. + Added MIPS backend. + Disabled ARM backend because of poor coverage. + Added bytecode parsing and writing. This can be used instead of manual creation of OrcPrograms. - Drop altivec.patch and ppc64.patch: fixed upstream. * Mon Sep 17 2012 schwab@linux-m68k.org - ppc64.patch: Add support for PowerPC64 - altivec.patch: Fix altivec implementation of cmpltf and cmplef operations - Reenable check on ppc and ppc64 * Thu Mar 8 2012 idonmez@suse.com - Disable check on ARM. * Thu Feb 2 2012 idonmez@suse.com - Fix license to be BSD-3-Clause. * Wed Feb 1 2012 dvaleev@suse.com - disable check on ppc ppc64. * Tue Oct 4 2011 vuntz@opensuse.org - Update to version 0.4.16: + orc_init() tried to take the same mutex as generated C code that calls (indirectly) orc_init(). + sse: Fixes for 64 bit pointers with any of the upper 32 bits set. * Mon Sep 26 2011 vuntz@opensuse.org - Update to version 0.4.15: + Protect global resources with mutexes. + Restore c64x-c backend (untested). + Convert MMX and SSE backends to a new instruction scheduler. + Add alignment and size hints to parser. * Mon Jul 4 2011 vuntz@opensuse.org - Update to version 0.4.14: + Various fixes for SSE, MMX and Altivec + Fix endianness issues * Wed Apr 27 2011 chris@computersalat.de - Update to version 0.4.13: + Fixes two serious code generation bugs in 0.4.12 on SSE and Altivec. + Add some compatibility code to mitigate the previous automatic inclusion of stdint.h - Changes from version 0.4.12: + Fix gcc-4.6 warnings in generated code + Codegen fixes for Altivec. Passes regression tests again. + More error checking for code allocation. + NEON: floating point improvements + Removed stdint.h from API. This could theoretically cause breakage if you depended on orc to include stdint.h. + Addition of the OrcCode structure, which keeps track of compiled code. This now allows applications to free unused code. + x86 code generation was completely refactored to add an intermediate stage, which will later be used for instruction reordering. * Wed Dec 8 2010 cristian.rodriguez@opensuse.org - Run make check * Mon Oct 18 2010 vuntz@opensuse.org - Update to version 0.4.11: + Fixes for CPUs that don't have backends + Fix loading of double parameters + mmx: Fix 64-bit parameter loading + sse/mmx: Fix x2/x4 with certain opcodes * Sat Oct 9 2010 vuntz@opensuse.org - Update to version 0.4.10: + Added several simple 64-bit opcodes + Improved debugging by adding ORC_CODE=emulate + Allocation of mmap’d areas for code now has several fallback methods, in order to placate various SELinux configurations. + Various speed improvements in SSE backend + Add SSE implementations of ldreslinl and ldresnearl. + Update Mersenne Twister example * Mon Sep 6 2010 vuntz@opensuse.org - Update to version 0.4.9: + Added handling for 64-bit constants + Fix building and use of static library + Fix register allocation on Win64 (still partly broken, however) + Quiet some non-errors printed by orcc in 0.4.8. + Fix implementation of several opcodes. + Until this release, the shared libraries all had the same versioning information. This should be fixed going forward. * Mon Aug 30 2010 vuntz@opensuse.org - Update to version 0.4.8: + Fix Windows and OS/X builds + Improve behavior in failure cases + Major improvements for Altivec backend + Significant documentation additions + Memory for executable code storage is now handled in a much more controlled manner, and it's now possible to reclaim this memory after it's no longer needed. + A few more 64-bit opcodes have been added, mostly related to arithmetic on floating point values. + The orcc tool now handles 64-bit and floating point parameters and constants. - Add baselibs.conf. * Thu Aug 26 2010 vuntz@opensuse.org - Update to version 0.4.7: + Lots of specialized new opcodes and opcode prefixes. + Important fixes for ARM backend + Improved emulation of programs (much faster) + Implemented fallback rules for almost all opcodes for SSE and NEON backends + Performance improvements for SSE and NEON backends. + Many fixes to make larger programs compile properly. + 64-bit data types are now fully implemented, although there are few operations on them. + Loads and stores are now handled by separate opcodes (loadb, storeb, etc). For compatibility, these are automatically included where necessary. This allowed new specialized loading opcodes, for example, resampling a source array for use in scaling images. + Opcodes may now be prefixed by "x2" or "x4", indicating that a operation should be done on 2 or 4 parts of a proportionally larger value. For example, "x4 addusb" performs 4 saturated unsigned additions on each of the four bytes of 32-bit quantities. This is useful in pixel operations. + The MMX backend is now (semi-) automatically generated from the SSE backend. + The orcc tool has a new option "-inline", which creates inline versions of the Orc stub functions. The orcc tool also recognizes a new directive ‘.init’, which instructs the compiler to generate an initialization function, which when called at application init time, compiles all the generated functions. This allows the generated stub functions to avoid checking if the function has already been compiled. The use of these two features can dramatically decrease the cost of calling Orc functions. * Fri Aug 6 2010 vuntz@opensuse.org - Update to version 0.4.6: + Various fixes to make Orc more portable + Major performance improvements to NEON backend + Minor performance improvements to SSE backend + Major improvements to ARM backend, now passes regression tests. + The defaults for floating point operations have been changed somewhat: NANs are handled more like the IEEE 754 standard, and denormals in operations are treated as zeros. The NAN changes causes certain SSE operations to be slightly slower, but produce less surprising results. Treating denormals as zero has effects ranging from “slightly faster” to “now possible”. + New tool: orc-bugreport. Mainly this is to provide a limited testing tool in the field, especially for embedded targets which would not have access to the testsuite that is not installed. + The environment variable ORC_CODE can now be used to adjust some code generation. See orc-bugreport -help for details. + orcc has a new option to generate code that is compatible with older versions of Orc. + New NEON detection relies on Linux 2.6.29 or later. - Changes from version 0.4.5: + Many small improvements related to converting GStreamer from liboil to Orc. + The major addition in this release is the mainstreaming of the NEON backend, made possible by Nokia. + There is a new experimental option to ./configure, - -enable-backend, which allows you to choose a single code generation backend to include in the library. This is mostly useful for embedded systems, and is not recommended in general. - Do not call autogen.sh and remove workaround for doc generation. * Tue May 25 2010 chris@computersalat.de - update to version 0.4.4 o remove obsolete orc-asneeded.patch * Wed Mar 17 2010 dimstar@opensuse.org - Initial package of orc 0.4.3