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

📄 makefile

📁 快速开发
💻
字号:
# The contents of this file are subject to the Mozilla Public# License Version 1.1 (the "License"); you may not use this file# except in compliance with the License. You may obtain a copy of# the License at http://www.mozilla.org/MPL/# # Software distributed under the License is distributed on an "AS# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or# implied. See the License for the specific language governing# rights and limitations under the License.# # The Original Code is the Netscape Portable Runtime library.# # The Initial Developer of the Original Code is Netscape# Communications Corporation.  Portions created by Netscape are # Copyright (C) 1994-2000 Netscape Communications Corporation.  All# Rights Reserved.# # Contributor(s):  Silicon Graphics, Inc.# # Portions created by SGI are Copyright (C) 2000-2001 Silicon# Graphics, Inc.  All Rights Reserved.# # Alternatively, the contents of this file may be used under the# terms of the GNU General Public License Version 2 or later (the# "GPL"), in which case the provisions of the GPL are applicable # instead of those above.  If you wish to allow use of your # version of this file only under the terms of the GPL and not to# allow others to use your version of this file under the MPL,# indicate your decision by deleting the provisions above and# replace them with the notice and other provisions required by# the GPL.  If you do not delete the provisions above, a recipient# may use your version of this file under either the MPL or the# GPL.# This is the full version of the libst library - modify carefullyVERSION     = 1.8########################### Supported OSes:##OS         = AIX#OS         = CYGWIN#OS         = FREEBSD#OS         = HPUX#OS         = HPUX_64#OS         = IRIX#OS         = IRIX_64#OS         = LINUX#OS         = NETBSD#OS         = OPENBSD#OS         = OSF1#OS         = SOLARIS#OS         = SOLARIS_64# Please see the "Other possible defines" section below for# possible compilation options.##########################CC          = ccAR          = arLD          = ldRANLIB      = ranlibLN          = lnSHELL       = /bin/shECHO        = /bin/echoBUILD       = DBGTARGETDIR   = $(OS)_$(shell uname -r)_$(BUILD)DEFINES     = -D$(OS)CFLAGS      =SFLAGS      =ARFLAGS     = -rvLNFLAGS     = -sDSO_SUFFIX  = soMAJOR       = $(shell echo $(VERSION) | sed 's/^\([^\.]*\).*/\1/')DESC        = st.pc########################### Platform section.# Possible targets:TARGETS     = aix-debug aix-optimized               \              cygwin-debug cygwin-optimized         \              darwin-debug darwin-optimized         \              freebsd-debug freebsd-optimized       \              hpux-debug hpux-optimized             \              hpux-64-debug hpux-64-optimized       \              irix-n32-debug irix-n32-optimized     \              irix-64-debug irix-64-optimized       \              linux-debug linux-optimized           \              netbsd-debug netbsd-optimized         \              openbsd-debug openbsd-optimized       \              osf1-debug osf1-optimized             \              solaris-debug solaris-optimized       \              solaris-64-debug solaris-64-optimized## Platform specifics#ifeq ($(OS), AIX)AIX_VERSION = $(shell uname -v).$(shell uname -r)TARGETDIR   = $(OS)_$(AIX_VERSION)_$(BUILD)CC          = xlCSTATIC_ONLY = yesifeq ($(BUILD), OPT)OTHER_FLAGS = -wendififneq ($(filter-out 4.1 4.2, $(AIX_VERSION)),)DEFINES     += -DMD_HAVE_SOCKLEN_Tendifendififeq ($(OS), CYGWIN)TARGETDIR   = $(OS)_$(BUILD)CC          = gccLD          = gccDSO_SUFFIX  = dllSLIBRARY    = $(TARGETDIR)/libst.dll.aDLIBRARY    = $(TARGETDIR)/libst.dllDEF_FILE    = $(TARGETDIR)/libst.defLDFLAGS     = libst.def -shared --enable-auto-image-base -Wl,--output-def,$(DEF_FILE),--out-implib,$(SLIBRARY)OTHER_FLAGS = -Wallendififeq ($(OS), DARWIN)LD          = ccSFLAGS      = -fPIC -fno-commonDSO_SUFFIX  = dylibLDFLAGS     = -dynamiclib -install_name /sw/lib/libst.$(MAJOR).$(DSO_SUFFIX) -compatibility_version $(MAJOR) -current_version $(VERSION)OTHER_FLAGS = -Wallendififeq ($(OS), FREEBSD)SFLAGS      = -fPICLDFLAGS     = -shared -soname=$(SONAME) -lcOTHER_FLAGS = -Wallifeq ($(shell test -f /usr/include/sys/event.h && echo yes), yes)DEFINES     += -DMD_HAVE_KQUEUEendifendififeq (HPUX, $(findstring HPUX, $(OS)))ifeq ($(OS), HPUX_64)DEFINES     = -DHPUXCFLAGS      = -Ae +DD64 +ZelseCFLAGS      = -Ae +DAportable +ZendifRANLIB      = trueLDFLAGS     = -bDSO_SUFFIX  = slendififeq (IRIX, $(findstring IRIX, $(OS)))ifeq ($(OS), IRIX_64)DEFINES     = -DIRIXABIFLAG     = -64elseABIFLAG     = -n32endifRANLIB      = trueCFLAGS      = $(ABIFLAG) -mips3LDFLAGS     = $(ABIFLAG) -sharedOTHER_FLAGS = -fullwarnendififeq ($(OS), LINUX)EXTRA_OBJS  = $(TARGETDIR)/md.oSFLAGS      = -fPICLDFLAGS     = -shared -soname=$(SONAME) -lcOTHER_FLAGS = -Wallifeq ($(shell test -f /usr/include/sys/epoll.h && echo yes), yes)DEFINES     += -DMD_HAVE_EPOLLendifendififeq ($(OS), NETBSD)SFLAGS      = -fPICLDFLAGS     = -shared -soname=$(SONAME) -lcOTHER_FLAGS = -Wallendififeq ($(OS), OPENBSD)SFLAGS      = -fPICLDFLAGS     = -shared -soname=$(SONAME) -lcOTHER_FLAGS = -Wallifeq ($(shell test -f /usr/include/sys/event.h && echo yes), yes)DEFINES     += -DMD_HAVE_KQUEUEendifendififeq ($(OS), OSF1)RANLIB      = trueLDFLAGS     = -shared -all -expect_unresolved "*"endififeq (SOLARIS, $(findstring SOLARIS, $(OS)))TARGETDIR   = $(OS)_$(shell uname -r | sed 's/^5/2/')_$(BUILD)CC          = gccLD          = gccRANLIB      = trueLDFLAGS     = -GOTHER_FLAGS = -Wallifeq ($(OS), SOLARIS_64)DEFINES     = -DSOLARISCFLAGS     += -m64LDFLAGS    += -m64endifendif## End of platform section.##########################ifeq ($(BUILD), OPT)OTHER_FLAGS += -OelseOTHER_FLAGS += -gDEFINES     += -DDEBUGendif########################### Other possible defines:# To use poll(2) instead of select(2) for events checking:# DEFINES += -DUSE_POLL# You may prefer to use select for applications that have many threads# using one file descriptor, and poll for applications that have many# different file descriptors.  With USE_POLL poll() is called with at# least one pollfd per I/O-blocked thread, so 1000 threads sharing one# descriptor will poll 1000 identical pollfds and select would be more# efficient.  But if the threads all use different descriptors poll()# may be better depending on your operating system's implementation of# poll and select.  Really, it's up to you.  Oh, and on some platforms# poll() fails with more than a few dozen descriptors.## Some platforms allow to define FD_SETSIZE (if select() is used), e.g.:# DEFINES += -DFD_SETSIZE=4096## To use malloc(3) instead of mmap(2) for stack allocation:# DEFINES += -DMALLOC_STACK## To provision more than the default 16 thread-specific-data keys# (but not too many!):# DEFINES += -DST_KEYS_MAX=<n>## To start with more than the default 64 initial pollfd slots# (but the table grows dynamically anyway):# DEFINES += -DST_MIN_POLLFDS_SIZE=<n>## Note that you can also add these defines by specifying them as# make/gmake arguments (without editing this Makefile). For example:## make EXTRA_CFLAGS=-DUSE_POLL <target>## (replace make with gmake if needed).## You can also modify the default selection of an alternative event# notification mechanism. E.g., to enable kqueue(2) support (if it's not# enabled by default):## gmake EXTRA_CFLAGS=-DMD_HAVE_KQUEUE <target>## or to disable default epoll(4) support:## make EXTRA_CFLAGS=-UMD_HAVE_EPOLL <target>###########################CFLAGS      += $(DEFINES) $(OTHER_FLAGS) $(EXTRA_CFLAGS)OBJS        = $(TARGETDIR)/sched.o \              $(TARGETDIR)/stk.o   \              $(TARGETDIR)/sync.o  \              $(TARGETDIR)/key.o   \              $(TARGETDIR)/io.o    \              $(TARGETDIR)/event.oOBJS        += $(EXTRA_OBJS)HEADER      = $(TARGETDIR)/st.hSLIBRARY    = $(TARGETDIR)/libst.aDLIBRARY    = $(TARGETDIR)/libst.$(DSO_SUFFIX).$(VERSION)EXAMPLES    = examplesLINKNAME    = libst.$(DSO_SUFFIX)SONAME      = libst.$(DSO_SUFFIX).$(MAJOR)FULLNAME    = libst.$(DSO_SUFFIX).$(VERSION)ifeq ($(OS), CYGWIN)SONAME      = cygst.$(DSO_SUFFIX)SLIBRARY    = $(TARGETDIR)/libst.dll.aDLIBRARY    = $(TARGETDIR)/$(SONAME)LINKNAME    =# examples directory does not compile under cygwinEXAMPLES    =endififeq ($(OS), DARWIN)LINKNAME    = libst.$(DSO_SUFFIX)SONAME      = libst.$(MAJOR).$(DSO_SUFFIX)FULLNAME    = libst.$(VERSION).$(DSO_SUFFIX)endififeq ($(STATIC_ONLY), yes)LIBRARIES   = $(SLIBRARY)elseLIBRARIES   = $(SLIBRARY) $(DLIBRARY)endififeq ($(OS),)ST_ALL      = unknownelseST_ALL      = $(TARGETDIR) $(LIBRARIES) $(HEADER) $(EXAMPLES) $(DESC)endifall: $(ST_ALL)unknown:	@echo	@echo "Please specify one of the following targets:"	@echo	@for target in $(TARGETS); do echo $$target; done	@echost.pc:	st.pc.in	sed "s/@VERSION@/${VERSION}/g" < $< > $@$(TARGETDIR):	if [ ! -d $(TARGETDIR) ]; then mkdir $(TARGETDIR); fi$(SLIBRARY): $(OBJS)	$(AR) $(ARFLAGS) $@ $(OBJS)	$(RANLIB) $@	rm -f obj; $(LN) $(LNFLAGS) $(TARGETDIR) obj$(DLIBRARY): $(OBJS:%.o=%-pic.o)	$(LD) $(LDFLAGS) $^ -o $@	if test "$(LINKNAME)"; then                             \		cd $(TARGETDIR);				\		rm -f $(SONAME) $(LINKNAME);			\		$(LN) $(LNFLAGS) $(FULLNAME) $(SONAME);		\		$(LN) $(LNFLAGS) $(FULLNAME) $(LINKNAME);	\	fi$(HEADER): public.h	rm -f $@	cp public.h $@$(TARGETDIR)/md.o: md.S	$(CC) $(CFLAGS) -c $< -o $@$(TARGETDIR)/%.o: %.c common.h md.h	$(CC) $(CFLAGS) -c $< -o $@examples::	@cd $@; $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" OS="$(OS)" TARGETDIR="$(TARGETDIR)"clean:	rm -rf *_OPT *_DBG obj st.pc########################### Pattern rules:ifneq ($(SFLAGS),)# Compile with shared library options if it's a C file$(TARGETDIR)/%-pic.o: %.c common.h md.h	$(CC) $(CFLAGS) $(SFLAGS) -c $< -o $@endif# Compile assembly as normal or C as normal if no SFLAGS%-pic.o: %.o	rm -f $@; $(LN) $(LNFLAGS) $(<F) $@########################### Target rules:default-debug:	. ./osguess.sh; $(MAKE) OS="$$OS" BUILD="DBG"default default-optimized:	. ./osguess.sh; $(MAKE) OS="$$OS" BUILD="OPT"aix-debug:	$(MAKE) OS="AIX" BUILD="DBG"aix-optimized:	$(MAKE) OS="AIX" BUILD="OPT"cygwin-debug:	$(MAKE) OS="CYGWIN" BUILD="DBG"cygwin-optimized:	$(MAKE) OS="CYGWIN" BUILD="OPT"darwin-debug:	$(MAKE) OS="DARWIN" BUILD="DBG"darwin-optimized:	$(MAKE) OS="DARWIN" BUILD="OPT"freebsd-debug:	$(MAKE) OS="FREEBSD" BUILD="DBG"freebsd-optimized:	$(MAKE) OS="FREEBSD" BUILD="OPT"hpux-debug:	$(MAKE) OS="HPUX" BUILD="DBG"hpux-optimized:	$(MAKE) OS="HPUX" BUILD="OPT"hpux-64-debug:	$(MAKE) OS="HPUX_64" BUILD="DBG"hpux-64-optimized:	$(MAKE) OS="HPUX_64" BUILD="OPT"irix-n32-debug:	$(MAKE) OS="IRIX" BUILD="DBG"irix-n32-optimized:	$(MAKE) OS="IRIX" BUILD="OPT"irix-64-debug:	$(MAKE) OS="IRIX_64" BUILD="DBG"irix-64-optimized:	$(MAKE) OS="IRIX_64" BUILD="OPT"linux-debug:	$(MAKE) OS="LINUX" BUILD="DBG"linux-optimized:	$(MAKE) OS="LINUX" BUILD="OPT"# compatibilitylinux-ia64-debug: linux-debuglinux-ia64-optimized: linux-optimizednetbsd-debug:	$(MAKE) OS="NETBSD" BUILD="DBG"netbsd-optimized:	$(MAKE) OS="NETBSD" BUILD="OPT"openbsd-debug:	$(MAKE) OS="OPENBSD" BUILD="DBG"openbsd-optimized:	$(MAKE) OS="OPENBSD" BUILD="OPT"osf1-debug:	$(MAKE) OS="OSF1" BUILD="DBG"osf1-optimized:	$(MAKE) OS="OSF1" BUILD="OPT"solaris-debug:	$(MAKE) OS="SOLARIS" BUILD="DBG"solaris-optimized:	$(MAKE) OS="SOLARIS" BUILD="OPT"solaris-64-debug:	$(MAKE) OS="SOLARIS_64" BUILD="DBG"solaris-64-optimized:	$(MAKE) OS="SOLARIS_64" BUILD="OPT"##########################

⌨️ 快捷键说明

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