- SHLIB=lib$(LIBNAME) \
- SHLIB_SUFFIX=.dylib \
- LIBDEPS="$(LIBDEPS) -lc" \
- ALLSYMSFLAGS='-all_load' \
- NOALLSYMSFLAGS='' \
- SHAREDFLAGS="-dynamiclib" \
- SHAREDCMD='$(CC)'; \
- if [ -n "$(LIBVERSION)" ]; then \
- SHAREDFLAGS="$SHAREDFLAGS -current_version $(LIBVERSION)"; \
- fi; \
- if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
- SHAREDFLAGS="$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
- fi; \
- $(LINK_SO_A)
-
-link_o.cygwin:
- @ SHLIB=cyg$(LIBNAME).dll \
- SHLIB_SUFFIX= \
- LIBDEPS="$(LIBDEPS) -lc" \
- SHLIB_SOVER= \
- ALLSYMSFLAGS='-Wl,--whole-archive' \
- NOALLSYMSFLAGS='-Wl,--no-whole-archive' \
- SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a" \
- SHAREDCMD='${CC}'; \
- $(LINK_SO_O)
-link_a.cygwin:
- @ SHLIB=cyg$(LIBNAME).dll \
- SHLIB_SUFFIX= \
- LIBDEPS="$(LIBDEPS) -lc" \
- SHLIB_SOVER= \
- ALLSYMSFLAGS='-Wl,--whole-archive' \
- NOALLSYMSFLAGS='-Wl,--no-whole-archive' \
- SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a" \
- SHAREDCMD='${CC}'; \
- $(LINK_SO_A)
-
-link_o.alpha-osf1:
- @ if ${DETECT_GNU_LD}; then \
- $(MAKE) -f $(SHARED_MAKEFILE) CC="$(CC)" LDFLAGS="$(LDFLAGS)" \
- SHARED_LDFLAGS="$(SHARED_LDFLAGS)" \
- LIBNAME="$(LIBNAME)" LIBEXTRAS="$(LIBEXTRAS)" \
- LIBVERSION=$(LIBVERSION) \
- LIBCOMPATVERSIONS="$(LIBCOMPATVERSIONS)" \
- LIBDEPS="$(LIBDEPS)" link_o.gnu; \
- else \
- SHLIB=lib$(LIBNAME).so \
- SHLIB_SUFFIX= \
- LIBDEPS="$(LIBDEPS) -lc" \
- SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
- if [ -n "$$SHLIB_HIST" ]; then \
- SHLIB_HIST="$${SHLIB_HIST}:$(LIBVERSION)"; \
- else \
- SHLIB_HIST="$(LIBVERSION)"; \
- fi
- SHLIB_SOVER= \
- ALLSYMSFLAGS='-all' \
- NOALLSYMSFLAGS='-none' \
- SHAREDFLAGS="-shared" \
- SHAREDCMD='$(CC)'; \
- if [ -n "$$SHLIB_HIST" ]; then \
- SHAREDFLAGS="$SHAREDFLAGS -set_version \"$$SHLIB_HIST\""; \
- fi; \
- $(LINK_SO_O); \
- fi
-link_a.alpha-osf1:
- @ if ${DETECT_GNU_LD}; then \
- $(MAKE) -f $(SHARED_MAKEFILE) CC="$(CC)" LDFLAGS="$(LDFLAGS)" \
- SHARED_LDFLAGS="$(SHARED_LDFLAGS)" \
- LIBNAME="$(LIBNAME)" LIBEXTRAS="$(LIBEXTRAS)" \
- LIBVERSION=$(LIBVERSION) \
- LIBCOMPATVERSIONS="$(LIBCOMPATVERSIONS)" \
- LIBDEPS="$(LIBDEPS)" link_o.gnu; \
- else \
- SHLIB=lib$(LIBNAME).so \
- SHLIB_SUFFIX= \
- LIBDEPS="$(LIBDEPS) -lc" \
- SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
- if [ -n "$$SHLIB_HIST" ]; then \
- SHLIB_HIST="$${SHLIB_HIST}:$(LIBVERSION)"; \
- else \
- SHLIB_HIST="$(LIBVERSION)"; \
- fi
- SHLIB_SOVER= \
- ALLSYMSFLAGS='-all' \
- NOALLSYMSFLAGS='-none' \
- SHAREDFLAGS="-shared" \
- SHAREDCMD='$(CC)'; \
- if [ -n "$$SHLIB_HIST" ]; then \
- SHAREDFLAGS="$SHAREDFLAGS -set_version \"$$SHLIB_HIST\""; \
- fi; \
- $(LINK_SO_A); \
- fi
+ INHIBIT_SYMLINKS=yes; \
+ SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \
+ dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
+ echo "$(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name |" \
+ "$(CROSS_COMPILE)windres $(SHARED_RCFLAGS) -o rc.o"; \
+ $(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name | \
+ $(CROSS_COMPILE)windres $(SHARED_RCFLAGS) -o rc.o; \
+ ALLSYMSFLAGS='-Wl,--whole-archive'; \
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,--enable-auto-image-base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a rc.o"; \
+ $(LINK_SO_SHLIB) || exit 1; \
+ rm rc.o
+link_app.cygwin:
+ $(LINK_APP)
+
+# link_dso.mingw-shared and link_app.mingw-shared are mapped to the
+# corresponding cygwin targets, as they do the exact same thing.
+link_shlib.mingw:
+ @ $(CALC_VERSIONS); \
+ INHIBIT_SYMLINKS=yes; \
+ arch=; \
+ if expr $(PLATFORM) : mingw64 > /dev/null; then arch=-x64; fi; \
+ sover=`echo $(LIBVERSION) | sed -e 's/\./_/g'` ; \
+ SHLIB=lib$(LIBNAME); \
+ SHLIB_SOVER=-$$sover$$arch; \
+ SHLIB_SUFFIX=.dll; \
+ dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
+ base=; [ $(LIBNAME) = "crypto" -a -n "$(FIPSCANLIB)" ] && base=-Wl,--image-base,0x63000000; \
+ $(PERL) $(SRCDIR)/util/mkdef.pl 32 $(LIBNAME) \
+ | sed -e 's|^\(LIBRARY *\)$(LIBNAME)32|\1'"$$dll_name"'|' \
+ > $(LIBNAME).def; \
+ echo "$(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name |" \
+ "$(CROSS_COMPILE)windres $(SHARED_RCFLAGS) -o rc.o"; \
+ $(PERL) $(SRCDIR)/util/mkrc.pl $$dll_name | \
+ $(CROSS_COMPILE)windres $(SHARED_RCFLAGS) -o rc.o; \
+ ALLSYMSFLAGS='-Wl,--whole-archive'; \
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $(LIBNAME).def rc.o"; \
+ $(LINK_SO_SHLIB) || exit 1; \
+ rm $(LIBNAME).def rc.o