Up to [cvs.NetBSD.org] / pkgsrc / devel / gnustep-objc
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
*: replace CMAKE_ARGS with CMAKE_CONFIGURE_ARGS
devel/gnustep-objc: Fix unusable libobjc being produced when PKGSRC_MKPIE is set to yes (default) Do not override CMAKE_C_COMPILER or CMAKE_CXX_COMPILER. Doing so causes cmake to ignore cwrappers and try compiling test executables without -fPIC, which fails, and the resulting libobjc.so will not contain any symbols from ${WRKSRC}/objcxx_eh.cc even though it still has (undefined) references to them, e.g. test_eh_personality. devel/gnustep-base, or anything requiring libobjc.so, will choke on missing symbols and fail to link.
Mass-change BUILD_DEPENDS to TOOL_DEPENDS outside mk/. Almost all uses, if not all of them, are wrong, according to the semantics of BUILD_DEPENDS (packages built for target available for use _by_ tools at build-time) and TOOL_DEPEPNDS (packages built for host available for use _as_ tools at build-time). No change to BUILD_DEPENDS as used correctly inside buildlink3. As proposed on tech-pkg: https://mail-index.netbsd.org/tech-pkg/2023/06/03/msg027632.html
Update devel/gnustep-objc to 2.1.0 and fix its build Highlights of 2.1.0 release include: - Numerous improvements to the Objective-C++ exception interoperation code. The runtime now dynamically detects whether the libcxxrt or libsupc++ variant of the Itanium C++ Exception ABI is being used - Sending a message to `super` where the corresponding method did not exist was silently ignored in previous versions of the runtime. This now correctly invokes the forwarding hooks and so (with an implementation of the Foundation framework, such as GNUstep Base or WinObjC) will trigger an exception or invoke `forwardInvocation:`. - The checks for overloaded memory management methods were incorrect, causing some classes to be incorrectly opted into ARC fast paths. These checks are now correct. - Several memory management bugs in corner cases of weak reference management were fixed. - The ARM assembly implementation of `objc_msgSend` now correctly restores the stack after calling a forwarding implementation. This bug caused stack corruption and usually crashing on ARM. - The ARC code has been rewritten as C++, using a well-tested third-party Robin-Hood hash table to store weak references, replacing the home-grown version. This improves performance and reduces the likelihood of bugs arising from the hash table implementation. - Control Flow Guard (CGF) checks were added on Windows on x86 (32- and 64-bit). If Objective-C code is compiled with CFG enabled then `objc_msgSend` will crash if it attempts to jump to an address that is not a valid function entry point. - The function signatures in the blocks headers were updated for compatibility with recent macOS releases. - Support for the C11 _Atomic type qualifier in property metadata was added. Highlights of 2.0.0 release include: - The linker now removes duplicate selectors within a library. - The linker will remove duplicate protocol definitions within a library. - Protocols and classes are now always accessed via an indirection layer, so they can be extended by future versions of the ABI without breaking compatibility. - Categories can include property metadata and both categories. - Constant strings are now emitted with a richer structure, which provides faster hashing and better unicode support. - Instance variable metadata includes size and alignment, allowing better object layout and more accurate introspection. Instance variable metadata now includes more accurate information about ARC ownership semantics. - Method metadata now includes extended type information, allowing bridged languages to understand the class that methods expect and not just the fact that they take an object. This was previously an obstacle to supporting JavaScriptCore's Objective-C bridge with GNUstep. In addition to the new ABI, there are several improvements on Windows: - The runtime now uses SEH-based exception handling on Windows. This interoperates with C++ exceptions in libraries compiled with MSVC or MSVC-compatible compilers. - All of the assembly code paths now fully support i386 and x64 Windows. - Object allocations on 32-bit Windows now use `_aligned_malloc` to guarantee sufficient alignment for AVX vectors in instance variables. - The runtime now uses fibre-local storage and critical sections on Windows, improving performance in multithreaded workloads on Windows. - Public runtime functions are now marked dllexport, so the runtime can be built as objc.dll on Windows. **WARNING**: The new ABI is currently incompatible with incremental linking on Windows, so projects built with Microsoft's linker must disable incremental linking. Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue. If you wish to use incremental linking on Windows, please use that version. A subsequent version of clang and link.exe should include a fix that will make it possible to use this version with incremental linking. The runtime will now use the new ABI's data structures internally and will automatically upgrade on-disk structures from old ABIs when used with the old ABI. As a result, memory usage will be higher when using the old ABI and users who are unable to recompile their code may prefer to stick with the 1.9.x release series. Mixing libraries compiled with the old and new ABIs is not supported and will abort at run time. The new ABI provides better run-time introspection metadata and smaller binaries. When used with the new ABI, this version of the runtime will consume less memory than the previous release. Highlights of 1.9.0 release include: - Support for 64-bit ARM (AArch64) processors, including assembly fast paths for message sending. - Improved the dispatch table representation to improve performance and cache usage on the fast path. - The implementation of `imp_implementationWithBlock`, the function that allows blocks to be used as methods, no longer requires physical pages to be mapped both writeable and executable. - Numerous improvements to the interaction between runtime functions and ARC. - Support for Thumb-2 interworking on ARM. Note that the library must be compiled for ARMv7 or ARMv6T2 for this code to be enabled. Once it has been, other Objective-C binaries linked with the library can be compiled as ARM or Thumb-2 code. This will also generate Thumb-2 message send functions, improving instruction cache usage. - Significant improvements to ARC, including * The runtime no longer acquires a global lock on every object deallocation (a global lock is still used for objects that have weak references). *NOTE:* This is incompatible with other code directly inspecting the reference count and will break with older versions of GNUstep Base! * Weak references use a scheme closer to C++ `std::weak_pointer` and are lazily zeroed on access. This reduces the space overheads for weak references. * Some additional helper functions are added for use in `NSObject` and other root classes, which simplifies the layering between the runtime and the Foundation (or equivalent) implementation. - Improvements to how the runtime handles layout of ivars with strong alignment requirements, which should fix issues relating to using vector types in Objective-C objects. - The option to build a separate libobjcxx has been removed. The runtime will now depend on the C++ standard library implementation if no useable C++ runtime is available. Note that C++ exception interworking does not work because LLVM's libc++abi (shipped by Apple) does not provide GNU-compatible hooks and so Objective-C++ exception support will be automatically disabled on this platform. Any other platforms shipping libc++abi should consider either GNU libsupc++ or libcxxrt as an alternative
Support RELRO When running cmake it is required to do ${SETENV} ${CONFIGURE_ENV}, otherwise pkgsrc LDFLAGS will not be passed to cmake.
gnustep-objc: fix build on FreeBSD pkgsrc changes: --------------- * Add conditional installation of libobjcxx.so in GNUmakefile for FreeBSD and adjust PLIST accordingly. * Fix some typos that have been kindly suggested by pkglint.
Correct accidental use of parentheses instead of braces
Fix build with PKG_OPTIONS.gnustep=fragile The runtime builds fine with GCC but tests don't.
Update gnustep-objc to 1.8.1 This is required to fix the build of gnustep-make on NetBSD 9.0 Changes since previous version in pkgsrc: Version 1.8 - Added API for tracing, allowing interposition on all message sends matching a given selector. - Numerous bug fixes and stability improvements. Version 1.7 - A new CMake-based build system. This makes all of the configurable options available via a clean interface. CPack is supported for building RPM and DEB packages out of the box. - A new CTest-based test suite, replacing the old ad-hoc tests. - Build a single libobjc with support for Objective-C++ on platforms where a C++ ABI library (libcxxrt or libsupc++) is installed as a shared library. - Added specialised property accessor functions and support for atomic properties with C++ non-POD types. - Significant improvements in property introspection and an exhaustive test suite. - Improved integration with libdispatch. The runtime will correctly register work queues with the garbage collector or create autorelease pools around block invocations. - A new exception implementation providing better integration with foreign exceptions (e.g. C++ exceptions). The new ABI is supported by clang 3.3 when compiling with -fobjc-runtime=gnustep-1.7 (or higher). The old ABI is still supported and both can be used within the same program, however code compiled with the old ABI remains unreliable in the presence of foreign exceptions. It is strongly recommended that anyone using exceptions with Objective-C++ switches to the new version. - MIPS64 support in the assembly routines. Currently these are only tested with the n64 ABI. They are believed to work with n32 and o32, but should be considered unsupported on these platforms. - Small algorithmic improvement to the objc_msgSend() implementation, giving approximately a 10% speedup (architecture-dependent) on message sends. - Updated optimisation passes to work with LLVM 3.2 and recent LLVM trunk.
Pullup ticket #5664 - requested by he devel/gnustep-objc: build fix Revisions pulled up: - devel/gnustep-objc/Makefile 1.31 - devel/gnustep-objc/buildlink3.mk 1.11 ------------------------------------------------------------------- Module Name: pkgsrc Committed By: he Date: Sun Dec 31 11:20:03 UTC 2017 Modified Files: pkgsrc/devel/gnustep-objc: Makefile buildlink3.mk Log Message: At least on NetBSD, gnustep-objc's libobjc.so ends up with various _Unwind_* symbols undefined, and apparently they can come from -lgcc_s. Being cautious, link in -lgcc_s on NetBSD only so far. Bump PKGREVISION. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 pkgsrc/devel/gnustep-objc/Makefile cvs rdiff -u -r1.10 -r1.11 pkgsrc/devel/gnustep-objc/buildlink3.mk
At least on NetBSD, gnustep-objc's libobjc.so ends up with various _Unwind_* symbols undefined, and apparently they can come from -lgcc_s. Being cautious, link in -lgcc_s on NetBSD only so far. Bump PKGREVISION.
Comment out some dead HOMEPAGEs.
since ../../devel/gnustep-make/buildlink3.mk sets PKGSRC_COMPILER it must be included before ../../mk/compiler.mk
fix gnustep-objc on illumos
Build fix for missing __i686.get_pc_thunk.bx symbol Depending on the compiler, __i686.get_pc_thunk.bx may be missing from runtime. Replace it by a localy supplied version.
Back out premature 1.7 libobjc2 Makefile commit
Add PLIST.Linux to fix bulk builds (adds extra .so.4 link on Linux installs)
Reset maintainer for resigned developers.
Drop superfluous PKG_DESTDIR_SUPPORT, "user-destdir" is default these days.
Update gnustep-objc to 1.6.1. Changes are too numerous to list here, but essentially this switches gnustep-objc to libobjc2-1.6.1 in order to provide a modern runtime and support modern Objective-C 2.0 features such as ARC, class extensions, the nonfragile ABI, etc.
Not MAKE_JOBS ready.
Use standard location for LICENSE line (in MAINTAINER/HOMEPAGE/COMMENT block). Uncomment some commented out LICENSE lines while here.
GNUSTEP_OVERRIDE_INSTALL to allow unprivileged DESTDIR installs.
s/user-destdir/destdir/ as this needs root privileges to install. Thanks to wiz for spotting.
Make this compile under amd64. Bump PKGREVISION.
Update gnustep-objc to 1.6.0. Changes are mainly bugfixes.
Rename variable MAKEFILE to MAKE_FILE.
Reverted the recent change that has set USE_LANGUAGES="c objc", where only "objc" was needed. Thanks to Min Sik Kim for showing me the Right Way to handle this.
Add USE_LANGUAGES= objc
Recursive revision bump / recommended bump for gettext ABI change.
Using MASTER_SITE_GNUSTEP.
Remove USE_GNU_TOOLS and replace with the correct USE_TOOLS definitions: USE_GNU_TOOLS -> USE_TOOLS awk -> gawk m4 -> gm4 make -> gmake sed -> gsed yacc -> bison
Remove USE_BUILDLINK3 and NO_BUILDLINK; these are no longer used.
bl3ify gnustep-objc.
replace deprecated USE_GMAKE with USE_GNU_TOOLS+=make.
Changes 1.3.0: Improvements and bug-fixes
s/netbsd.org/NetBSD.org/
Dependency bumps, needed because of devel/pth's major bump, and related dependency bumps.
Update gnustep-objc to 1.2.3. Changes are bugfixes only.
Make this work with native NetBSD threads. Bump PKGREVISION.
Initial import of gnustep-objc-1.2.2, an Objective C runtime for GNUstep.
Initial revision