diff --git a/trunk/research/st/Makefile b/trunk/research/st/Makefile old mode 100644 new mode 100755 index a38ac2b62..6344631ac --- a/trunk/research/st/Makefile +++ b/trunk/research/st/Makefile @@ -32,209 +32,26 @@ # may use your version of this file under either the MPL or the # GPL. -# This is the full version of the libst library - modify carefully -VERSION = 1.9 +########################## +# Target dir and cc: +CC = cc +TARGETDIR = objs ########################## # Supported OSes: -# -#OS = AIX -#OS = CYGWIN -#OS = DARWIN -#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 +OS = LINUX -# Please see the "Other possible defines" section below for -# possible compilation options. -########################## - -CC = cc -AR = ar -LD = ld -RANLIB = ranlib -LN = ln - -SHELL = /bin/sh -ECHO = /bin/echo - -BUILD = DBG -TARGETDIR = $(OS)_$(shell uname -r)_$(BUILD) - -DEFINES = -D$(OS) -CFLAGS = -SFLAGS = -ARFLAGS = -rv -LNFLAGS = -s -DSO_SUFFIX = so - -MAJOR = $(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 = xlC -STATIC_ONLY = yes -ifeq ($(BUILD), OPT) -OTHER_FLAGS = -w -endif -ifneq ($(filter-out 4.1 4.2, $(AIX_VERSION)),) -DEFINES += -DMD_HAVE_SOCKLEN_T -endif +ifneq ($(shell test -f /usr/include/sys/epoll.h && echo yes), yes) +default: + @echo "epoll not found" + @exit 1 endif -ifeq ($(OS), CYGWIN) -TARGETDIR = $(OS)_$(BUILD) -CC = gcc -LD = gcc -DSO_SUFFIX = dll -SLIBRARY = $(TARGETDIR)/libst.dll.a -DLIBRARY = $(TARGETDIR)/libst.dll -DEF_FILE = $(TARGETDIR)/libst.def -LDFLAGS = libst.def -shared --enable-auto-image-base -Wl,--output-def,$(DEF_FILE),--out-implib,$(SLIBRARY) -OTHER_FLAGS = -Wall -endif - -ifeq ($(OS), DARWIN) -LD = cc -SFLAGS = -fPIC -fno-common -DSO_SUFFIX = dylib -RELEASE = $(shell uname -r | cut -d. -f1) -PPC = $(shell test $(RELEASE) -le 9 && echo yes) -INTEL = $(shell test $(RELEASE) -ge 9 && echo yes) -ifeq ($(PPC), yes) -CFLAGS += -arch ppc -LDFLAGS += -arch ppc -endif -ifeq ($(INTEL), yes) -CFLAGS += -arch i386 -arch x86_64 -LDFLAGS += -arch i386 -arch x86_64 -endif -LDFLAGS += -dynamiclib -install_name /sw/lib/libst.$(MAJOR).$(DSO_SUFFIX) -compatibility_version $(MAJOR) -current_version $(VERSION) -OTHER_FLAGS = -Wall -endif - -ifeq ($(OS), FREEBSD) -SFLAGS = -fPIC -LDFLAGS = -shared -soname=$(SONAME) -lc -OTHER_FLAGS = -Wall -ifeq ($(shell test -f /usr/include/sys/event.h && echo yes), yes) -DEFINES += -DMD_HAVE_KQUEUE -endif -endif - -ifeq (HPUX, $(findstring HPUX, $(OS))) -ifeq ($(OS), HPUX_64) -DEFINES = -DHPUX -CFLAGS = -Ae +DD64 +Z -else -CFLAGS = -Ae +DAportable +Z -endif -RANLIB = true -LDFLAGS = -b -DSO_SUFFIX = sl -endif - -ifeq (IRIX, $(findstring IRIX, $(OS))) -ifeq ($(OS), IRIX_64) -DEFINES = -DIRIX -ABIFLAG = -64 -else -ABIFLAG = -n32 -endif -RANLIB = true -CFLAGS = $(ABIFLAG) -mips3 -LDFLAGS = $(ABIFLAG) -shared -OTHER_FLAGS = -fullwarn -endif - -ifeq ($(OS), LINUX) EXTRA_OBJS = $(TARGETDIR)/md.o -SFLAGS = -fPIC -LDFLAGS = -shared -soname=$(SONAME) -lc -OTHER_FLAGS = -Wall -ifeq ($(shell test -f /usr/include/sys/epoll.h && echo yes), yes) -DEFINES += -DMD_HAVE_EPOLL -endif -endif -ifeq ($(OS), NETBSD) -SFLAGS = -fPIC -LDFLAGS = -shared -soname=$(SONAME) -lc -OTHER_FLAGS = -Wall -endif - -ifeq ($(OS), OPENBSD) -SFLAGS = -fPIC -LDFLAGS = -shared -soname=$(SONAME) -lc -OTHER_FLAGS = -Wall -ifeq ($(shell test -f /usr/include/sys/event.h && echo yes), yes) -DEFINES += -DMD_HAVE_KQUEUE -endif -endif - -ifeq ($(OS), OSF1) -RANLIB = true -LDFLAGS = -shared -all -expect_unresolved "*" -endif - -ifeq (SOLARIS, $(findstring SOLARIS, $(OS))) -TARGETDIR = $(OS)_$(shell uname -r | sed 's/^5/2/')_$(BUILD) -CC = gcc -LD = gcc -RANLIB = true -LDFLAGS = -G -OTHER_FLAGS = -Wall -ifeq ($(OS), SOLARIS_64) -DEFINES = -DSOLARIS -CFLAGS += -m64 -LDFLAGS += -m64 -endif -endif - -# -# End of platform section. -########################## - - -ifeq ($(BUILD), OPT) -OTHER_FLAGS += -O -else -OTHER_FLAGS += -g -DEFINES += -DDEBUG -endif +CFLAGS = +OTHER_FLAGS += -Wall -g -O0 +DEFINES = -D$(OS) -DDEBUG -DMD_HAVE_EPOLL ########################## # Other possible defines: @@ -285,81 +102,23 @@ endif CFLAGS += $(DEFINES) $(OTHER_FLAGS) $(EXTRA_CFLAGS) -OBJS = $(TARGETDIR)/sched.o \ - $(TARGETDIR)/stk.o \ - $(TARGETDIR)/sync.o \ - $(TARGETDIR)/key.o \ - $(TARGETDIR)/io.o \ - $(TARGETDIR)/event.o +OBJS = $(TARGETDIR)/sched.o \ + $(TARGETDIR)/stk.o \ + $(TARGETDIR)/sync.o \ + $(TARGETDIR)/key.o \ + $(TARGETDIR)/io.o \ + $(TARGETDIR)/event.o \ + $(TARGETDIR)/srs.o OBJS += $(EXTRA_OBJS) -HEADER = $(TARGETDIR)/st.h -SLIBRARY = $(TARGETDIR)/libst.a -DLIBRARY = $(TARGETDIR)/libst.$(DSO_SUFFIX).$(VERSION) -EXAMPLES = examples +SRS = $(TARGETDIR)/srs -LINKNAME = libst.$(DSO_SUFFIX) -SONAME = libst.$(DSO_SUFFIX).$(MAJOR) -FULLNAME = libst.$(DSO_SUFFIX).$(VERSION) - -ifeq ($(OS), CYGWIN) -SONAME = cygst.$(DSO_SUFFIX) -SLIBRARY = $(TARGETDIR)/libst.dll.a -DLIBRARY = $(TARGETDIR)/$(SONAME) -LINKNAME = -# examples directory does not compile under cygwin -EXAMPLES = -endif - -ifeq ($(OS), DARWIN) -LINKNAME = libst.$(DSO_SUFFIX) -SONAME = libst.$(MAJOR).$(DSO_SUFFIX) -FULLNAME = libst.$(VERSION).$(DSO_SUFFIX) -endif - -ifeq ($(STATIC_ONLY), yes) -LIBRARIES = $(SLIBRARY) -else -LIBRARIES = $(SLIBRARY) $(DLIBRARY) -endif - -ifeq ($(OS),) -ST_ALL = unknown -else -ST_ALL = $(TARGETDIR) $(LIBRARIES) $(HEADER) $(EXAMPLES) $(DESC) -endif - -all: $(ST_ALL) - -unknown: - @echo - @echo "Please specify one of the following targets:" - @echo - @for target in $(TARGETS); do echo $$target; done - @echo - -st.pc: st.pc.in - sed "s/@VERSION@/${VERSION}/g" < $< > $@ +all: $(TARGETDIR) $(SRS) $(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 $@ +$(SRS): $(OBJS) + $(CC) $(CFLAGS) -o $@ $(OBJS) $(TARGETDIR)/md.o: md.S $(CC) $(CFLAGS) -c $< -o $@ @@ -367,103 +126,5 @@ $(TARGETDIR)/md.o: md.S $(TARGETDIR)/%.o: %.c common.h md.h $(CC) $(CFLAGS) -c $< -o $@ -examples:: - @echo Making $@ - @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) $(