⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile.shlib

📁 PostgreSQL 8.2中增加了很多企业用户所需要的功能和性能上的提高,其开发团队说,该版本将加速更多企业向该数据库移植.核心开发成员之一Bruce Momjian表示,在新版PostgreSQL
💻 SHLIB
字号:
#-------------------------------------------------------------------------## Makefile.shlib#    Common rules for building shared libraries## Copyright (c) 1998, Regents of the University of California## IDENTIFICATION#    $PostgreSQL: pgsql/src/Makefile.shlib,v 1.105 2006/09/19 15:36:07 tgl Exp $##-------------------------------------------------------------------------# This file should be included by any Postgres module Makefile that# wants to build a shared library (if possible for the current# platform). A static library is also built from the same object# files. Only one library can be built per makefile.## Before including this file, the module Makefile must define these# variables:## NAME                  Name of library to build (no suffix nor "lib" prefix)# SO_MAJOR_VERSION      Major version number to use for shared library# SO_MINOR_VERSION      Minor version number to use for shared library# OBJS                  List of object files to include in library# SHLIB_LINK            If shared library relies on other libraries,#                       additional stuff to put in its link command# (If you want a patchlevel, include it in SO_MINOR_VERSION, e.g., "6.2".)## Optional flags when building DLL's (only applicable to win32 and cygwin# platforms).# DLLTOOL_DEFFLAGS      Additional flags when creating the dll .def file# DLLTOOL_LIBFLAGS      Additional flags when creating the lib<module>.a file# DLLWRAP_FLAGS         Additional flags to dllwrap# DLL_DEFFILE           Use pre-existing .def file instead of auto-generating#                       one with all exports in it (win32 only).## The module Makefile must also include# $(top_builddir)/src/Makefile.global before including this file.# (Makefile.global sets PORTNAME and other needed symbols.)## This makefile provides the following (phony) targets:## all-lib               build the static and shared (if applicable) libraries# install-lib           install the libraries into $(libdir)# uninstall-lib         remove the libraries from $(libdir)# clean-lib             delete the static and shared libraries from the build dir## Since `all-lib' is the first rule in this file you probably want to# have the `all' target before including this file. In the most simple# case it would look like this:##     all: all-lib## Similarly, the install rule might look like##     install: install-lib## plus any additional things you want to install. Et cetera.## Got that?  Look at src/interfaces/libpq/Makefile for an example.## While the linker allows creation of most shared libraries,# -Bsymbolic requires resolution of all symbols, making the# compiler a better choice for shared library creation on ELF platforms.# With the linker, -Bsymbolic requires the crt1.o startup object file.# bjm 2001-02-10COMPILER = $(CC) $(CFLAGS)LINK.static = $(AR) $(AROPT)ifeq ($(enable_shared), yes)# Insert -L from LDFLAGS after any -L already present in SHLIB_LINKSHLIB_LINK := $(filter -L%, $(SHLIB_LINK)) $(filter -L%, $(LDFLAGS)) $(filter-out -L%, $(SHLIB_LINK))# Need a -L-free version of LDFLAGS to use in combination with SHLIB_LINKLDFLAGS_NO_L := $(filter-out -L%, $(LDFLAGS))# Default shlib naming convention used by the majority of platformsshlib		= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)shlib_major	= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)shlib_bare	= lib$(NAME)$(DLSUFFIX)# For each platform we support shared libraries on, set shlib to the# name of the library (if default above is not right), set# LINK.shared to the command to link the library,# and adjust SHLIB_LINK if necessary.# Try to keep the sections in some kind of order, folks...override CFLAGS += $(CFLAGS_SL)soname = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)ifeq ($(PORTNAME), aix)  shlib			= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)  haslibarule   = yesendififeq ($(PORTNAME), darwin)  ifneq ($(SO_MAJOR_VERSION), 0)    version_link	:= -compatibility_version $(SO_MAJOR_VERSION) -current_version $(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)  endif  ifeq ($(DLTYPE), library)    # linkable library    DLSUFFIX		:= .dylib    LINK.shared		= $(COMPILER) -dynamiclib -install_name $(libdir)/lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX) $(version_link) $(exported_symbols_list) -multiply_defined suppress  else    # loadable module (default case)    DLSUFFIX		:= .so    LINK.shared		= $(COMPILER) -bundle -multiply_defined suppress  endif  shlib			= lib$(NAME).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)$(DLSUFFIX)  shlib_major		= lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX)endififeq ($(PORTNAME), openbsd)  ifdef ELF_SYSTEM    LINK.shared		= $(COMPILER) -shared -Wl,-x,-soname,$(soname)    SHLIB_LINK		+= -lc  else    LINK.shared		= $(LD) -x -Bshareable -Bforcearchive  endifendififeq ($(PORTNAME), bsdi)  ifeq ($(DLSUFFIX), .so)    LINK.shared		= $(COMPILER) -shared -Wl,-x,-soname,$(soname)    SHLIB_LINK		+= -lc  endif  ifeq ($(DLSUFFIX), .o)    LINK.shared		= shlicc -O $(LDREL)  endifendififeq ($(PORTNAME), freebsd)  ifdef ELF_SYSTEM    shlib		= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)    LINK.shared		= $(COMPILER) -shared -Wl,-x,-soname,$(soname)  else    shlib		= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)    LINK.shared		= $(LD) -x -Bshareable -Bforcearchive  endifendififeq ($(PORTNAME), netbsd)  ifdef ELF_SYSTEM    LINK.shared		= $(COMPILER) -shared -Wl,-x,-soname,$(soname)  else    LINK.shared		= $(LD) -x -Bshareable -Bforcearchive  endifendififeq ($(PORTNAME), hpux)  shlib			= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)  ifeq ($(with_gnu_ld), yes)    LINK.shared		= $(CC) $(LDFLAGS_NO_L) -shared -Wl,-h -Wl,$(soname)  else    # can't use the CC-syntax rpath pattern here    rpath =    ifeq ($(enable_rpath), yes)      LINK.shared	= $(LD) +h $(soname) -b +b '$(rpathdir)'    else      LINK.shared	= $(LD) +h $(soname) -b    endif    # On HPUX platforms, gcc is usually configured to search for libraries    # in /usr/local/lib, but ld won't do so.  Add an explicit -L switch so    # ld can find the same libraries gcc does.  Make sure it goes after any    # -L switches provided explicitly.    ifeq ($(GCC), yes)      SHLIB_LINK := $(filter -L%, $(SHLIB_LINK)) -L/usr/local/lib $(filter-out -L%, $(SHLIB_LINK))    endif  endif  # do this last so above filtering doesn't pull out -L switches in LDFLAGS  ifeq ($(GCC), yes)    SHLIB_LINK		+= `$(CC) $(LDFLAGS) -print-libgcc-file-name`  endifendififeq ($(PORTNAME), irix)  shlib			= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)  LINK.shared		= $(COMPILER) -shared -Wl,-set_version,sgi$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)endififeq ($(PORTNAME), linux)  LINK.shared		= $(COMPILER) -shared -Wl,-soname,$(soname) $(exported_symbols_list)endififeq ($(PORTNAME), solaris)  ifeq ($(GCC), yes)    LINK.shared		= $(CC) -shared  else    LINK.shared		= $(CC) -G $(CFLAGS)	# CFLAGS added for X86_64  endif  ifeq ($(with_gnu_ld), yes)    LINK.shared		+= -Wl,-soname,$(soname)  else    LINK.shared		+= -h $(soname)  endifendififeq ($(PORTNAME), sunos4)  LINK.shared		= $(LD) -assert pure-text -Bdynamicendif ifeq ($(PORTNAME), osf)  LINK.shared		= $(LD) -shared -expect_unresolved '*'endififeq ($(PORTNAME), sco)  ifeq ($(GCC), yes)    LINK.shared		= $(CC) -shared  else    LINK.shared		= $(CC) -G    endif  LINK.shared		+= -Wl,-z,text -Wl,-h,$(soname)endififeq ($(PORTNAME), svr4)  LINK.shared		= $(LD) -Gendififeq ($(PORTNAME), univel)  LINK.shared		= $(LD) -G -z textendififeq ($(PORTNAME), unixware)  ifeq ($(GCC), yes)    LINK.shared		= $(CC) -shared  else    LINK.shared		= $(CC) -G  endif  LINK.shared		+= -Wl,-z,text -Wl,-h,$(soname) endififeq ($(PORTNAME), cygwin)  shlib			= cyg$(NAME)$(DLSUFFIX)  haslibarule   = yesendififeq ($(PORTNAME), win32)  shlib			= lib$(NAME)$(DLSUFFIX)  haslibarule   = yesendififeq ($(enable_rpath), yes)SHLIB_LINK += $(rpath)endifendif # enable_shared#### BUILD##.PHONY: all-lib all-static-lib all-shared-liball-lib: all-static-lib all-shared-liball-static-lib: lib$(NAME).aall-shared-lib: $(shlib)ifndef haslibarulelib$(NAME).a: $(OBJS)	$(LINK.static) $@ $^	$(RANLIB) $@endif #haslibaruleifeq ($(enable_shared), yes)ifneq ($(PORTNAME), win32)ifneq ($(PORTNAME), cygwin)ifneq ($(PORTNAME), aix)# Normal case$(shlib): $(OBJS)	$(LINK.shared) $(LDFLAGS_SL) $(OBJS) $(SHLIB_LINK) -o $@# If we're using major and minor versions, then make a symlink to major-version-only.ifneq ($(shlib), $(shlib_major))	rm -f $(shlib_major)	$(LN_S) $(shlib) $(shlib_major)endif# Make sure we have a link to a name without any version numbersifneq ($(shlib), $(shlib_bare))	rm -f $(shlib_bare)	$(LN_S) $(shlib) $(shlib_bare)endifelse # PORTNAME == aix# AIX case$(shlib) lib$(NAME).a: $(OBJS)	$(LINK.static) lib$(NAME).a $^	$(RANLIB) lib$(NAME).a	$(MKLDEXPORT) lib$(NAME).a > lib$(NAME)$(EXPSUFF)	$(COMPILER) $(LDFLAGS_NO_L) $(LDFLAGS_SL) -o $(shlib) lib$(NAME).a -Wl,-bE:lib$(NAME)$(EXPSUFF) $(SHLIB_LINK)	rm -f lib$(NAME).a	$(AR) $(AROPT) lib$(NAME).a $(shlib)	endif # PORTNAME == aixelse # PORTNAME == cygwin# Cygwin case$(shlib) lib$(NAME).a: $(OBJS)ifndef DLL_DEFFILE	$(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)	$(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)	$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).aelse	$(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)	$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).aendifendif # PORTNAME == cygwinelse # PORTNAME == win32# win32 case$(shlib) lib$(NAME).a: $(OBJS)ifndef DLL_DEFFILE	$(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)	$(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)	$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).aelse	$(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)	$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).aendifendif # PORTNAME == win32endif # enable_shared#### INSTALL##.PHONY: install-lib install-lib-static install-lib-sharedinstall-lib: install-lib-static install-lib-sharedinstall-lib-static: lib$(NAME).a	$(INSTALL_STLIB) $< '$(DESTDIR)$(libdir)/lib$(NAME).a'ifeq ($(PORTNAME), darwin)	cd '$(DESTDIR)$(libdir)' && \	ranlib lib$(NAME).aendififeq ($(enable_shared), yes)install-lib-shared: $(shlib)ifneq ($(PORTNAME), aix)		# we don't install $(shlib) on AIX	$(INSTALL_SHLIB) $< '$(DESTDIR)$(libdir)/$(shlib)'ifneq ($(PORTNAME), cygwin)ifneq ($(PORTNAME), win32)ifneq ($(shlib), $(shlib_major))	cd '$(DESTDIR)$(libdir)' && \	rm -f $(shlib_major) && \	$(LN_S) $(shlib) $(shlib_major)endififneq ($(shlib), $(shlib_bare))	cd '$(DESTDIR)$(libdir)' && \	rm -f $(shlib_bare) && \	$(LN_S) $(shlib) $(shlib_bare)endifendif # not win32endif # not cygwinendif # not aixendif # enable_shared#### UNINSTALL##.PHONY: uninstall-libuninstall-lib:	rm -f '$(DESTDIR)$(libdir)/lib$(NAME).a'ifeq ($(enable_shared), yes)	rm -f '$(DESTDIR)$(libdir)/$(shlib_bare)' \	  '$(DESTDIR)$(libdir)/$(shlib_major)' \	  '$(DESTDIR)$(libdir)/$(shlib)'endif # enable_shared#### CLEAN##.PHONY: clean-libclean-lib:	rm -f lib$(NAME).aifeq ($(enable_shared), yes)	rm -f $(shlib_bare) $(shlib_major) $(shlib)ifdef EXPSUFF	rm -f lib$(NAME)$(EXPSUFF)endifendififeq ($(PORTNAME), cygwin)	rm -f $(NAME).dll $(NAME).defendififeq ($(PORTNAME), win32)	rm -f $(NAME).dll $(NAME).defendif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -