From d965a29f2263703267d36bc101a8856a1e04f679 Mon Sep 17 00:00:00 2001 From: Eric Gallager Date: Sat, 29 Jun 2024 04:59:19 -0400 Subject: [PATCH] add brk.c also let poll-emulator build on Linux again --- Makefile.in | 2 +- brk.c | 82 +++++++++++++++++ config.h.in | 3 + configure | 123 +++++++++++++++++++++++-- configure.ac | 21 ++++- configure.scan | 2 +- libUnixToOSX.xcodeproj/project.pbxproj | 4 + poll/poll-emulator/Makefile.am | 7 +- poll/poll-emulator/Makefile.in | 10 +- 9 files changed, 238 insertions(+), 16 deletions(-) create mode 100644 brk.c diff --git a/Makefile.in b/Makefile.in index af10260..eddbadc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -404,7 +404,7 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/build-aux/mkinstalldirs \ $(top_srcdir)/build-aux/reloc-ldflags \ $(top_srcdir)/build-aux/relocatable.sh.in TODO alloca.c \ - asnprintf.c btowc.c build-aux/ar-lib build-aux/compile \ + asnprintf.c brk.c btowc.c build-aux/ar-lib build-aux/compile \ build-aux/config.guess build-aux/config.rpath \ build-aux/config.sub build-aux/depcomp build-aux/install-sh \ build-aux/ltmain.sh build-aux/missing build-aux/mkinstalldirs \ diff --git a/brk.c b/brk.c new file mode 100644 index 0000000..3cf6918 --- /dev/null +++ b/brk.c @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1999-2010 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ +/* + * File: brk.c + * + * Unix compatibility for sbrk system call. + * + * HISTORY + * 09-Mar-90 Gregg Kellogg (gk) at NeXT. + * include instead of + * + * 14-Feb-89 Avadis Tevanian (avie) at NeXT. + * Total rewrite using a fixed area of VM from break region. + */ + +#include /* for vm_allocate, vm_offset_t */ +#include +#include +#include + +static int sbrk_needs_init = TRUE; +static vm_size_t sbrk_region_size = 4*1024*1024; /* Well, what should it be? */ +static vm_address_t sbrk_curbrk; + +void *sbrk(int size) +{ + kern_return_t ret; + + if (sbrk_needs_init) { + sbrk_needs_init = FALSE; + /* + * Allocate a big region to simulate break region. + */ + ret = vm_allocate(mach_task_self(), &sbrk_curbrk, sbrk_region_size, + VM_MAKE_TAG(VM_MEMORY_SBRK)|TRUE); + if (ret != KERN_SUCCESS) { + errno = ENOMEM; + return((void *)-1); + } + } + + if (size <= 0) + return((void *)sbrk_curbrk); + else if (size > sbrk_region_size) { + errno = ENOMEM; + return((void *)-1); + } + sbrk_curbrk += size; + sbrk_region_size -= size; + return((void *)(sbrk_curbrk - size)); +} + +void *brk(const void *x) +{ + errno = ENOMEM; + return((void *)-1); +} diff --git a/config.h.in b/config.h.in index 8b85446..6772e19 100644 --- a/config.h.in +++ b/config.h.in @@ -1048,6 +1048,9 @@ zero-length file name argument. */ #undef HAVE_LSTAT_EMPTY_STRING_BUG +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_H + /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_DYLD_H diff --git a/configure b/configure index 6c3dfac..d59a57a 100755 --- a/configure +++ b/configure @@ -1978,6 +1978,8 @@ am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM +BUILDING_ON_MAC_FALSE +BUILDING_ON_MAC_TRUE OBJEXT EXEEXT ac_ct_CC @@ -6937,6 +6939,23 @@ then : fi +building_on_mac="" +case ${build} in #( + *apple-darwin*) : + building_on_mac="yes" ;; #( + *) : + building_on_mac="no" ;; #( + *) : + ;; +esac + if test "x${building_on_mac}" = "xyes"; then + BUILDING_ON_MAC_TRUE= + BUILDING_ON_MAC_FALSE='#' +else + BUILDING_ON_MAC_TRUE='#' + BUILDING_ON_MAC_FALSE= +fi + # automake: { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for some automake things..." >&5 printf %s "checking for some automake things...... " >&6; } @@ -23781,6 +23800,7 @@ warnings_to_skip="${warnings_to_skip} -Wcomments" # redundant w/-Wcomment warnings_to_skip="${warnings_to_skip} -Wmudflap" # no longer supported warnings_to_skip="${warnings_to_skip} -Wconditionally-supported" # C++ only warnings_to_skip="${warnings_to_skip} -Wdelete-incomplete" # C++ only +warnings_to_skip="${warnings_to_skip} -Wnarrowing" # C++ only warnings_to_skip="${warnings_to_skip} -Wshadow-ivar" # ObjC/ObjC++ only warnings_to_skip="${warnings_to_skip} -Wimplicit" # default lately anyways warnings_to_skip="${warnings_to_skip} -Wimplicit-function-declaration" # "" @@ -23795,12 +23815,18 @@ if test x${CFLAGS+set} = xset; then case "${CFLAGS}" in *"-O0"* ) warnings_to_skip="${warnings_to_skip} -Wunsafe-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Waggressive-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Wdisabled-optimization" + warnings_to_skip="${warnings_to_skip} -Wvector-operation-performance" ;; *"-O"* ) ;; esac else warnings_to_skip="${warnings_to_skip} -Wunsafe-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Waggressive-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Wdisabled-optimization" + warnings_to_skip="${warnings_to_skip} -Wvector-operation-performance" fi gl_warn_set="" @@ -24669,6 +24695,73 @@ if test "x${ac_cv_search_CFPreferencesCopyAppValue}y" != "xnoy"; then printf "%s\n" "#define CFPREFERENCESCOPYAPPVALUE_OK_TO_LINK 1" >>confdefs.h fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing __fpending" >&5 +printf %s "checking for library containing __fpending... " >&6; } +if test ${ac_cv_search___fpending+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char __fpending (void); +int +main (void) +{ +return __fpending (); + ; + return 0; +} +_ACEOF +for ac_lib in '' c System magic pub gnu iberty +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search___fpending=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search___fpending+y} +then : + break +fi +done +if test ${ac_cv_search___fpending+y} +then : + +else case e in #( + e) ac_cv_search___fpending=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___fpending" >&5 +printf "%s\n" "$ac_cv_search___fpending" >&6; } +ac_res=$ac_cv_search___fpending +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dupfd" >&5 printf %s "checking for library containing dupfd... " >&6; } if test ${ac_cv_search_dupfd+y} @@ -34586,6 +34679,12 @@ if test "x$ac_cv_header_locale_h" = xyes then : printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_MACH_H 1" >>confdefs.h + fi ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" if test "x$ac_cv_header_malloc_h" = xyes @@ -55316,12 +55415,6 @@ if test "x$ac_cv_func_sbrk" = xyes then : printf "%s\n" "#define HAVE_SBRK 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "brk" "ac_cv_func_brk" -if test "x$ac_cv_func_brk" = xyes -then : - printf "%s\n" "#define HAVE_BRK 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "shmget" "ac_cv_func_shmget" if test "x$ac_cv_func_shmget" = xyes @@ -55458,6 +55551,20 @@ else case e in #( esac ;; esac +fi +ac_fn_c_check_func "$LINENO" "brk" "ac_cv_func_brk" +if test "x$ac_cv_func_brk" = xyes +then : + printf "%s\n" "#define HAVE_BRK 1" >>confdefs.h + +else case e in #( + e) case " $LIBOBJS " in + *" brk.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS brk.$ac_objext" + ;; +esac + ;; +esac fi ## keep autoscan happy: if test "x" = "Y0"; then @@ -55668,6 +55775,10 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +if test -z "${BUILDING_ON_MAC_TRUE}" && test -z "${BUILDING_ON_MAC_FALSE}"; then + as_fn_error $? "conditional \"BUILDING_ON_MAC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then diff --git a/configure.ac b/configure.ac index cb426b1..d71a1a7 100644 --- a/configure.ac +++ b/configure.ac @@ -27,6 +27,13 @@ gl_SYSTEM_SPECIFIC_MACROS AN_OSX_WARNINGS_DUMMY_MACRO AC_CHECK_FILE([/etc/fstab])dnl +building_on_mac="" +AS_CASE([${build}], + [*apple-darwin*],[building_on_mac="yes"], + [*],[building_on_mac="no"])dnl + +AM_CONDITIONAL([BUILDING_ON_MAC],[test "x${building_on_mac}" = "xyes"])dnl + # automake: AC_MSG_CHECKING([for some automake things...]) AC_MSG_RESULT([... .. . ]) @@ -110,6 +117,7 @@ warnings_to_skip="${warnings_to_skip} -Wcomments" # redundant w/-Wcomment warnings_to_skip="${warnings_to_skip} -Wmudflap" # no longer supported warnings_to_skip="${warnings_to_skip} -Wconditionally-supported" # C++ only warnings_to_skip="${warnings_to_skip} -Wdelete-incomplete" # C++ only +warnings_to_skip="${warnings_to_skip} -Wnarrowing" # C++ only warnings_to_skip="${warnings_to_skip} -Wshadow-ivar" # ObjC/ObjC++ only warnings_to_skip="${warnings_to_skip} -Wimplicit" # default lately anyways warnings_to_skip="${warnings_to_skip} -Wimplicit-function-declaration" # "" @@ -124,12 +132,18 @@ if test x${CFLAGS+set} = xset; then case "${CFLAGS}" in *"-O0"* ) warnings_to_skip="${warnings_to_skip} -Wunsafe-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Waggressive-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Wdisabled-optimization" + warnings_to_skip="${warnings_to_skip} -Wvector-operation-performance" ;; *"-O"* ) ;; esac else warnings_to_skip="${warnings_to_skip} -Wunsafe-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Waggressive-loop-optimizations" + warnings_to_skip="${warnings_to_skip} -Wdisabled-optimization" + warnings_to_skip="${warnings_to_skip} -Wvector-operation-performance" fi gl_MANYWARN_COMPLEMENT([actual_warnings_to_check], [${warnings_to_check}], @@ -203,6 +217,7 @@ if test "x${ac_cv_search_CFPreferencesCopyAppValue}y" != "xnoy"; then AC_DEFINE([CFPREFERENCESCOPYAPPVALUE_OK_TO_LINK],[1], [Define to 1 if we are ok to link w/a library for CFPreferencesCopyAppValue]) fi +AC_SEARCH_LIBS([__fpending],[c System magic pub gnu iberty]) AC_SEARCH_LIBS([dupfd],[c System magic pub gnu iberty])dnl # Threading. @@ -231,7 +246,7 @@ AC_CHECK_HEADERS([_types/_nl_item.h \ fts.h ftw.h gnu-versions.h iconv.h io.h iostream.h \ lcrypt.h libcharset.h libintl.h \ libio/iolibio.h libio/libioP.h limits.h locale.h \ - malloc.h malloc/malloc.h memcopy.h mm.h \ + mach/mach.h malloc.h malloc/malloc.h memcopy.h mm.h \ mntent.h mnttab.h module.h netdb.h nl_types.h os2.h \ process.h ptms.h publib.h publib/strutil.h \ shlib-compat.h stdarg.h stddef.h stream.h \ @@ -387,14 +402,14 @@ dnl# (move from "_CHECK" to "_REPLACE" once we do have source files) unset ac_cv_func_catgets AC_CHECK_FUNCS([catopen catgets catclose crypt ecvt fcvt gcvt \ setmntent addmntent endmntent \ - hasmntopt sbrk brk shmget swapon swapoff]) + hasmntopt sbrk shmget swapon swapoff]) ## functions that we might want replacements for, and have source files for: unset ac_cv_func_btowc unset ac_cv_func_wctob unset ac_cv_func_getmntent unset ac_cv_func_poll AC_REPLACE_FUNCS([btowc wctob dysize fclose fcloseall getmntent poll \ - cuserid])dnl + cuserid brk])dnl ## keep autoscan happy: if test "x" = "Y0"; then test -x "`which autoscan`" || echo "no autoscan!" >&2 diff --git a/configure.scan b/configure.scan index 26f6f63..f1321dc 100644 --- a/configure.scan +++ b/configure.scan @@ -21,7 +21,7 @@ AC_PROG_RANLIB # Checks for header files. AC_FUNC_ALLOCA -AC_CHECK_HEADERS([OS.h fcntl.h fs_info.h inttypes.h langinfo.h libintl.h malloc.h mntent.h mnttab.h netdb.h nl_types.h stdint.h stdio_ext.h sys/fs_types.h sys/fstyp.h sys/ioctl.h sys/mntent.h sys/mount.h sys/param.h sys/socket.h sys/statfs.h sys/statvfs.h sys/time.h sys/vfs.h unistd.h]) +AC_CHECK_HEADERS([OS.h fcntl.h fs_info.h inttypes.h langinfo.h libintl.h mach/mach.h malloc.h mntent.h mnttab.h netdb.h nl_types.h stdint.h stdio_ext.h sys/fs_types.h sys/fstyp.h sys/ioctl.h sys/mntent.h sys/mount.h sys/param.h sys/socket.h sys/statfs.h sys/statvfs.h sys/time.h sys/vfs.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_CHECK_HEADER_STDBOOL diff --git a/libUnixToOSX.xcodeproj/project.pbxproj b/libUnixToOSX.xcodeproj/project.pbxproj index dc232dd..0d5efc2 100644 --- a/libUnixToOSX.xcodeproj/project.pbxproj +++ b/libUnixToOSX.xcodeproj/project.pbxproj @@ -212,6 +212,7 @@ A52EF8D11905574600F6B8CD /* quotearg.c in Sources */ = {isa = PBXBuildFile; fileRef = A52EF8CE1905574600F6B8CD /* quotearg.c */; }; A52EF8D21905574600F6B8CD /* quotearg.h in Headers */ = {isa = PBXBuildFile; fileRef = A52EF8CF1905574600F6B8CD /* quotearg.h */; }; A530AE982C2FF60500F48BE3 /* pipe2.h in Headers */ = {isa = PBXBuildFile; fileRef = A530AE972C2FF60500F48BE3 /* pipe2.h */; }; + A530AE9A2C2FFC9500F48BE3 /* brk.c in Sources */ = {isa = PBXBuildFile; fileRef = A530AE992C2FFC9500F48BE3 /* brk.c */; }; A531666018EEF26F0049B90F /* dup2.c in Sources */ = {isa = PBXBuildFile; fileRef = A531665E18EEF26F0049B90F /* dup2.c */; }; A531666118EEF26F0049B90F /* dup3.c in Sources */ = {isa = PBXBuildFile; fileRef = A531665F18EEF26F0049B90F /* dup3.c */; }; A531667318EEF3D00049B90F /* dup.c in Sources */ = {isa = PBXBuildFile; fileRef = A531667218EEF3D00049B90F /* dup.c */; }; @@ -553,6 +554,7 @@ A52EF8CE1905574600F6B8CD /* quotearg.c */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.c; path = quotearg.c; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; A52EF8CF1905574600F6B8CD /* quotearg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quotearg.h; sourceTree = ""; }; A530AE972C2FF60500F48BE3 /* pipe2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pipe2.h; sourceTree = ""; }; + A530AE992C2FFC9500F48BE3 /* brk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = brk.c; sourceTree = ""; }; A531665E18EEF26F0049B90F /* dup2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dup2.c; sourceTree = ""; }; A531665F18EEF26F0049B90F /* dup3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dup3.c; sourceTree = ""; }; A531667218EEF3D00049B90F /* dup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dup.c; sourceTree = ""; }; @@ -724,6 +726,7 @@ A50A90A818EE1D570096B616 /* basename.c */, A531669518EEF8610049B90F /* binary-io.h */, A50A90A918EE1D570096B616 /* bitrotate.h */, + A530AE992C2FFC9500F48BE3 /* brk.c */, A50A8F4218EC9A3C0096B616 /* btowc.c */, A5DB801E1905592B00F38DDF /* c-ctype.c */, A5DB801F1905592B00F38DDF /* c-ctype.h */, @@ -1438,6 +1441,7 @@ A52030C4190599DC00C5B524 /* areadlinkat.c in Sources */, A50A90A618EE1D4C0096B616 /* asnprintf.c in Sources */, A531669D18EEF8B00049B90F /* at-func.c in Sources */, + A530AE9A2C2FFC9500F48BE3 /* brk.c in Sources */, A531669E18EEF8B00049B90F /* at-func2.c in Sources */, A50A90AA18EE1D570096B616 /* basename-lgpl.c in Sources */, A50A90AB18EE1D570096B616 /* basename.c in Sources */, diff --git a/poll/poll-emulator/Makefile.am b/poll/poll-emulator/Makefile.am index 723e5b2..0463da1 100644 --- a/poll/poll-emulator/Makefile.am +++ b/poll/poll-emulator/Makefile.am @@ -25,10 +25,15 @@ INCDIR = $(MYPREFIX)/include/sys ############ # Benjamin Reed : # On Mac OS X, comment out the above lines, and uncomment these instead. +# ...or actually, let's use an automake conditional instead: +if BUILDING_ON_MAC LINK_SHARED = $(CC) $(LDFLAGS) -install_name $(MYPREFIX)/lib/$(SHLIB) \ -compatibility_version $(COMPAT_VERSION) \ -current_version $(VERSION) -dynamiclib -SHLIB_EXT = dylib +else +LINK_SHARED = $(CC) -shared +endif +SHLIB_EXT = $(SOEXT) SHLIB_NOVER = $(LIB_NAME).$(SHLIB_EXT) SHLIB = $(LIB_NAME).$(VERSION).$(SHLIB_EXT) SHLIB_INSTALLED = $(LIBDIR)/$(LIB_NAME).$(MAJOR).$(SHLIB_EXT) diff --git a/poll/poll-emulator/Makefile.in b/poll/poll-emulator/Makefile.in index a713880..1b7f7a0 100644 --- a/poll/poll-emulator/Makefile.in +++ b/poll/poll-emulator/Makefile.in @@ -1709,6 +1709,7 @@ top_srcdir = @top_srcdir@ MYPREFIX = @prefix@ LIBDIR = $(MYPREFIX)/lib INCDIR = $(MYPREFIX)/include/sys +@BUILDING_ON_MAC_FALSE@LINK_SHARED = $(CC) -shared #-------------------------------------------------------------------------- # Platform-specific bits: @@ -1724,11 +1725,12 @@ INCDIR = $(MYPREFIX)/include/sys ############ # Benjamin Reed : # On Mac OS X, comment out the above lines, and uncomment these instead. -LINK_SHARED = $(CC) $(LDFLAGS) -install_name $(MYPREFIX)/lib/$(SHLIB) \ - -compatibility_version $(COMPAT_VERSION) \ - -current_version $(VERSION) -dynamiclib +# ...or actually, let's use an automake conditional instead: +@BUILDING_ON_MAC_TRUE@LINK_SHARED = $(CC) $(LDFLAGS) -install_name $(MYPREFIX)/lib/$(SHLIB) \ +@BUILDING_ON_MAC_TRUE@ -compatibility_version $(COMPAT_VERSION) \ +@BUILDING_ON_MAC_TRUE@ -current_version $(VERSION) -dynamiclib -SHLIB_EXT = dylib +SHLIB_EXT = $(SOEXT) SHLIB_NOVER = $(LIB_NAME).$(SHLIB_EXT) SHLIB = $(LIB_NAME).$(VERSION).$(SHLIB_EXT) SHLIB_INSTALLED = $(LIBDIR)/$(LIB_NAME).$(MAJOR).$(SHLIB_EXT)