ACE makefile 研究

来源:互联网 发布:中国做外汇合法吗 知乎 编辑:程序博客网 时间:2024/05/16 04:51

包含make文件

include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU

include $(ACE_ROOT)/include/makeinclude/macros.GNU

include $(ACE_ROOT)/include/makeinclude/rules.common.GNU

include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU

include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU

include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU

include $(ACE_ROOT)/include/makeinclude/rules.local.GNU

 

 

 

macros.GNU

 

#----------------------------------------------------------------------------

#macros.GNU,v 4.3 2003/11/21 13:18:00 dhinton Exp

#   局部和嵌套的目标定义

#Local and nested target definitions 

#----------------------------------------------------------------------------

 

TARGETS_LOCAL  = /

all.local /

debug.local /

profile.local /

optimize.local /

install.local /

deinstall.local /

clean_idl_stubs.local /

clean.local /

realclean.local /

clobber.local /

depend.local /

rcs_info.local /

idl_stubs.local

 

TARGETS_NESTED   = /

$(TARGETS_LOCAL:.local=.nested)

 

 

 

 

 

 

 

 

rules.common

 

#----------------------------------------------------------------------------

#rules.common.GNU,v 4.3 2003/11/21 13:18:00 dhinton Exp

#   通用目标定义

#Common targets 

#----------------------------------------------------------------------------

 

all:              all.nested all.local

debug:          debug.nested debug.local

profile:          profile.nested profile.local

install:          install.nested install.local

deinstall:        deinstall.nested deinstall.local

clean_idl_stubs:  clean_idl_stubs.nested clean_idl_stubs.local

clean:            clean.nested clean.local

realclean:        realclean.nested realclean.local

clobber:          clobber.nested clobber.local

depend:          depend.nested depend.local

rcs_info:         rcs_info.nested rcs_info.local

idl_stubs:        idl_stubs.nested idl_stubs.local

 

 

 

 

rules.nonested.GNU

 

#----------------------------------------------------------------------------

#rules.nonested.GNU,v 4.1 1996/10/25 15:46:58 levine Exp

#   空的的嵌套的目标

#Null nested targets 

#----------------------------------------------------------------------------

 

$(TARGETS_NESTED):

 

 

 

 

rules.nested.GNU

 

#----------------------------------------------------------------------------

#       rules.nested.GNU,v 4.17 2004/05/03 16:59:29 ossama Exp

#    嵌套的目录目标的makefile定义

#       Nested directory targets makefile definitions

#----------------------------------------------------------------------------

 

如果你的makefile不叫Makefile在包括该文件前,MAKEFILE变量必须

设置实际的文件名,才能使使递归MAKE正常工作

 

MAKEFILE ?= GNUmakefile

SUBDIR_MAKEFILE ?= $(MAKEFILE)

 

确定我们编译的目录使用了DIRS列表而不是并行目录除非设置了

# DIRS_PARALLEL允许适当的标记或者禁止这种情况才能被并行的编译

DIRS_PARALLEL ?=

 

ifeq ($(DIRS_PARALLEL),)

.NOTPARALLEL:

endif

 

通过从DIR调用MAKE编译DIR.子目录的规则中,DIR作为一个新目录

# SUBDIR_TARGET 作为目标来编译, "GNUmakefile" 作为makefile 

# 在新目录中使用.

 

$(TARGETS_NESTED) 触发目标, below.

 

%.subdir: %

cd $< && $(MAKE) -f $(SUBDIR_MAKEFILE) $(SUBDIR_TARGET)

 

通过再次调用MAKE编译FOO.nested, 这次的DIRS (加到每个带有".子目录") 

# 作为目标,SUBDIR_TARGET变量下,传递FOO作为真实的目标来编译.

 

$(TARGETS_NESTED):

ifdef DIRS

  ifneq ($(DIRS),)

$(MAKE) -f $(MAKEFILE) SUBDIR_TARGET=$(@:.nested=) $(addsuffix .subdir, $(DIRS))

  endif # DIRS

endif # DIRS

 

 

#----------------------------------------------------------------------------

#       rules.local.GNU,v 4.124 2006/03/06 18:28:51 elliott_c Exp

#    局部目标

#       Local targets

#       GNU version

#       Requires GNU make 需要GNU的make

#----------------------------------------------------------------------------

 

 

#清空中间文件的目录,OBJ,BIN,LIB,SHLIB,TEMP

CLEANUP_OBJDIRS =

CLEANUP_DIRS =

 

ifdef CLEANUP_BIN

  CLEANUP_OBJDIRS = $(VDIR)

else # ! CLEANUP_BIN

  ifdef CLEANUP_LIB

    CLEANUP_OBJDIRS = $(VDIR)

  endif # CLEANUP_LIB

endif # CLEANUP_BIN

 

ifdef CLEANUP_SHLIB

  CLEANUP_OBJDIRS += $(VSHDIR)

endif # CLEANUP_VSHLIB

 

ifdef TEMPINCDIR

  CLEANUP_DIRS += $(TEMPINCDIR)

endif

 

#如果定义了SUN,情况目录加上SunWS_cache

ifdef sun

  CLEANUP_DIRS += SunWS_cache

endif

 

vxworks_ntbuild ?= 0

 

#### TEMPLATE_REPOSITORY can be set in individual platform files

#### to create template repository directories.  See

#### platform_sunos5_sunc++.GNU for an example.

ifdef TEMPLATE_REPOSITORY

CLEANUP_DIRS += $(TEMPLATE_REPOSITORY)

endif

 

#是否定义了mingw32,没有则显示GNUmakefile目标依赖的当前目录的$(MAKEFILE)

ifneq ($(mingw32),1)

makefile_name.local:

@echo

@echo GNUmakefile: $(shell pwd)/$(MAKEFILE) MAKEFLAGS=$(MAKEFLAGS)

@echo

else

makefile_name.local:

@echo

@echo GNUmakefile: $(call PWD)/$(MAKEFILE)

@echo

endif

 

all.local: makefile_name.local $(split_target) build.objdirs build.local install.local

 

#----------------------------------------------------------------------------

#       C/C++ 编译目标

#----------------------------------------------------------------------------

 

 

IDL_SRC ?=

VLIBS ?=

BUILD ?=

BIN ?=

VBIN ?= $(BIN:%=%$(VAR))

ifneq ($(VBIN),)

  $(VBIN): $(VLIBS)

endif

 

# Always build the V* targets in this order.  We control assignment to them

# elsewhere. We add the existing $(BUILD) targets to the end to allow the

# caller to set additional ones, e.g., when defining multiple targets in a

# single makefile--note that we filter out any that are already present.

VBUILD = $(IDL_SRC) $(VLIBS) $(VBIN) $(filter-out $(IDL_SRC) $(VLIBS) $(VBIN), $(BUILD))

 

build.local: $(VBUILD)

 

# By setting SUFFIXES to nothing, we turn off all implicit rules, and force

# make to only use the explicit ones we define.

.SUFFIXES:

 

# C++ 相关目标

 

STATIC_LINK_FLAG ?=

static_link ?= 0

ifeq ($(static_link),1)

  LDFLAGS += $(STATIC_LINK_FLAG)

endif # static_link = 1

 

OS ?=

 

$(VDIR)%.o: %.c $(VDIR)%.creation_stamp

$(COMPILE.c) $(CC_OUTPUT_FLAG) $@ $<

${MVCMD}

 

$(VDIR)%.o: %.cpp $(VDIR)%.creation_stamp

$(COMPILE.cc) $(CC_OUTPUT_FLAG) $@ $<

${MVCMD}

 

$(VDIR)%.o: %.C $(VDIR)%.creation_stamp

$(COMPILE.cc) $(CC_OUTPUT_FLAG) $@ $<

${MVCMD}

 

$(VDIR)%.o: %.cc $(VDIR)%.creation_stamp

$(COMPILE.cc) $(CC_OUTPUT_FLAG) $@ $<

${MVCMD}

 

$(VDIR)%.o: %.cxx $(VDIR)%.creation_stamp

$(COMPILE.cc) $(CC_OUTPUT_FLAG) $@ $<

${MVCMD}

 

  ifneq (,$(COMPILE.rc))

$(VDIR)%.rc.o: %.rc $(VDIR)%.creation_stamp

$(COMPILE.rc) $< $@

${MVCMD}

  endif # COMPILE.rc

 

# If SOLINK is defined, then the .$(SOEXT) file is built from the

# .$(OBJEXT) file via separate rules in the same directory.

# Otherwise, the .$(SOEXT) and .$(OBJEXT) are built via the same rule.

# SOLINK is required for the repository under gcc.

ifndef SOLINK

# I added the "Executable Shared Object (ESO)" define to separate between

# normal shared object files and executable shared object files (the kind

# that the service configurator needs to be able to function).

# 970104 Marius Kjeldahl <mariusk@sn.no, marius@funcom.com>

  ifdef (ESOBUILD)

$(VSHDIR)%.$(SOEXT): %.cpp $(VSHDIR)%.creation_stamp

$(ESOBUILD)

  else # ! ESOBUILD

$(VSHDIR)%.$(SOEXT): %.cpp $(VSHDIR)%.creation_stamp

$(SOBUILD)

  endif # ESOBUILD

 

  ifeq ($(split), 1)

$(VSHDIR)%.$(OBJEXT): %.cpp $(VSHDIR)%.creation_stamp

$(COMPILE.cc) $(PIC) SPLIT/`echo $< | sed "s/.cpp/_S/*/"`

mv *.$(OBJEXT) $(VSHDIR)

  else # ! split

 

$(VSHDIR)%.$(OBJEXT): %.cpp $(VSHDIR)%.creation_stamp

$(COMPILE.cc) $(PIC) $(CC_OUTPUT_FLAG) $@ $<

 

  endif # split

 

$(VSHDIR)%.$(OBJEXT): %.cc $(VSHDIR)%.creation_stamp

$(COMPILE.cc) $(PIC) $(CC_OUTPUT_FLAG) $@ $<

 

$(VSHDIR)%.$(OBJEXT): %.C $(VSHDIR)%.creation_stamp

$(COMPILE.cc) $(PIC) $(CC_OUTPUT_FLAG) $@ $<

 

$(VSHDIR)%.$(OBJEXT): %.cxx $(VSHDIR)%.creation_stamp

$(COMPILE.cc) $(PIC) $(CC_OUTPUT_FLAG) $@ $<

 

$(VSHDIR)%.$(OBJEXT): %.c $(VSHDIR)%.creation_stamp

$(COMPILE.c) $(PIC) $(CC_OUTPUT_FLAG) $@ $<

 

  ifneq (,$(COMPILE.rc))

$(VSHDIR)%.rc.$(OBJEXT): %.rc $(VSHDIR)%.creation_stamp

$(COMPILE.rc) $< $@

  endif # COMPILE.rc

 

$(VSHDIR)%.$(SOEXT): $(VSHDIR)%.$(OBJEXT) $(VSHDIR)%.creation_stamp

$(SOLINK)

endif # SOLINK

 

ifeq ($(vxworks_ntbuild),1)

$(VDIR)%.creation_stamp:

@if not exist $(dir $@) $(MKDIR) $(dir $@) $(ACE_NUL_STDERR)

@echo > $@

else

.PHONY: $(VDIR)%.creation_stamp

$(VDIR)%.creation_stamp:

@-test -d $(dir $@) || $(MKDIR) $(dir $@) $(ACE_NUL_STDERR)

endif

 

ifneq ($(VDIR),$(VSHDIR))

  ifeq ($(vxworks_ntbuild),1)

$(VSHDIR)%.creation_stamp:

@if not exist $(dir $@) $(MKDIR) $(dir $@) $(ACE_NUL_STDERR)

@echo > $@

  else

.PHONY: $(VSHDIR)%.creation_stamp

$(VSHDIR)%.creation_stamp:

@-test -d $(dir $@) || $(MKDIR) $(dir $@) $(ACE_NUL_STDERR)

  endif

endif

 

#----------------------------------------------------------------------------

#       Library 编译目标

#----------------------------------------------------------------------------

 

#### show_statics shows static objects in locally-created object files.

#### It assumes that the object files were built using g++.

#### TOOLENV selects the proper nm in VxWorks host environments.

#### TOOLDIR allows specification of the full path to nm via definition

#### in the platform_macros.GNU file.

show_statics:

-@$(TOOLDIR)nm$(TOOLENV) -Co $(VSHDIR)*o | /

  egrep ' global destructors '; true

 

#### show_uninit shows uninitialized data in locally-created object files.

#### TOOLENV selects the proper nm in VxWorks host environments.

show_uninit:

-@$(TOOLDIR)nm$(TOOLENV) -Co $(VSHDIR)*o | egrep ' b '

 

#----------------------------------------------------------------------------

#       Installation 安装目标

#----------------------------------------------------------------------------

 

# Always add LIB_INSTALL to INSTALL, so libs will get installed even no BIN

# is built.  LIB_INSTALL is a dependency for BIN, so libs are installed prior

# to use.  Also, make LIB_INSTALL depend on VLIBS, so libs get built prior to

# installation.

ifdef LIB_INSTALL

  INSTALL ?= $(LIB_INSTALL)

  $(LIB_INSTALL): $(VLIBS)

endif

 

INSTALL ?=

install.local: $(INSTALL)

 

deinstall.local:

ifdef CLEANUP_INSTALL

  ifneq ($(CLEANUP_INSTALL),)

$(RM) $(CLEANUP_INSTALL)

  endif # CLEANUP_INSTALL

endif # CLEANUP_INSTALL

 

ifndef LN_S

  ifndef COMSPEC

    ifdef ComSpec

      #### ACE+TAO use COMSPEC, but ComSpec is defined.

      COMSPEC = $(ComSpec)

    endif # ComSpec

  endif # ! COMPSPEC

 

  ifdef COMSPEC

    #### Assume we're on a WIN32 host.

    LN_S = cp -p

  else  # ! WIN32

    LN_S = ln -s

  endif # ! WIN32

endif # ! LN_S

 

$(INSBIN)/%$(VAR)$(EXEEXT) /

$(INSINC)/ace% /

$(INSLIB)/% /

$(INSMAN)/man1/% /

$(INSMAN)/man2/% /

$(INSMAN)/man3/% /

$(INSMAN)/man4/% /

$(INSMAN)/man5/% /

$(INSMAN)/man6/% /

$(INSMAN)/man7/% /

$(INSMAN)/man8/% /

$(INSMAN)/manl/% /

$(INSMAN)/mann/% :

ifeq ($(vxworks_ntbuild),1)

@if exist $@ echo "$(@F) already installed"

@if not exist $@ echo "Installing $(@F:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) to $(@D)" && /

$(RM) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) && /

$(LN_S) $(shell pwd)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) && /

echo "Installing $(@F) to $(@D)" && /

$(RM) $@ && /

$(LN_S) $(shell pwd)/$(@F) $@

else

ifneq ($(mingw32),1)

@if test $(shell pwd) != $(@D) -o -n "$(SOVERSION)" ; then /

if test -s $@ ; then /

echo "$(@F) already installed" ; /

else /

echo "Installing $(@F:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) -> $(@D)" ; /

$(RM) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); /

$(LN_S) $(shell pwd)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); /

echo "Installing $(@F) -> $(@D)" ; /

$(RM) $@; /

$(LN_S) $(shell pwd)/$(@F) $@; /

fi ; /

fi

else

@if test $(call PWD) != $(@D) -o -n "$(SOVERSION)" ; then /

if test -s $@ ; then /

echo "$(@F) already installed" ; /

else /

echo "Installing $(@F:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) -> $(@D)" ; /

$(RM) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); /

$(LN_S) $(call PWD)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); /

echo "Installing $(@F) -> $(@D)" ; /

$(RM) $@; /

$(LN_S) $(call PWD)/$(@F) $@; /

fi ; /

fi

endif

endif

ifdef MVSLIB

#special for MVS in order to use the .x files

@if test -w $(@D) ; then /

if test -s $(@:.$(SOEXT)=.x) ; then /

echo "$(@F:.$(SOEXT)=.x) already installed" ; /

else /

echo "Installing $(@F:.$(SOEXT)=.x) -> $(@D)" ; /

$(RM) $(@); $(LN_S) $(shell pwd)/$(@F:.$(SOEXT)=.x) $(@:.$(SOEXT)=.x) ; /

fi /

fi

endif

 

#----------------------------------------------------------------------------

#       Cleanup targets 清除目标

#----------------------------------------------------------------------------

 

clean_idl_stubs.local: makefile_name.local

ifdef IDL_FILES

-$(RM) $(foreach ext, $(IDL_EXT), $(addsuffix $(ext), $(IDL_FILES)))

endif

 

CLEANUP_BIN ?=

ifneq ($(CLEANUP_BIN),)

  DO_CLEANUP = 1

  REALCLEAN_FILES = $(CLEANUP_BIN:%=%$(EXEEXT)) $(CLEANUP_BIN:%=%_debug$(EXEEXT)) $(CLEANUP_BIN:%=%_profile$(EXEEXT)) $(CLEANUP_BIN:%=%_optimize$(EXEEXT))

endif # !CLEANUP_BIN

 

ifdef static_libs

  CLEANUP_LIB ?=

  ifneq ($(CLEANUP_LIB),)

    DO_CLEANUP = 1

    REALCLEAN_FILES += $(CLEANUP_LIB:%=%) $(CLEANUP_LIB:%=%_debug) $(CLEANUP_LIB:%=%_profile) $(CLEANUP_LIB:%=%_optimize)

  endif # !CLEANUP_LIB

endif # static_libs

 

ifdef shared_libs

  CLEANUP_SHLIB ?=

  ifneq ($(CLEANUP_SHLIB),)

    DO_CLEANUP = 1

    REALCLEAN_FILES += $(CLEANUP_VSHLIB:%=%) $(CLEANUP_VSHLIB_NO_VER:%=%*) $(CLEANUP_VSHLIB_NO_VER:%=%_debug) $(CLEANUP_VSHLIB_NO_VER:%=%_profile) $(CLEANUP_VSHLIB_NO_VER:%=%_optimize)

  endif # !CLEANUP_SHLIB

endif # shared_libs

 

CLEANUP_OBJS += $(addsuffix .o, $(addprefix $(VDIR),$(CLEANUP_BIN)))

 

ifdef OBJS

  CLEANUP_OBJS += $(addprefix $(VDIR), $(OBJS))

endif # OBJS

ifneq ($(CLEANUP_BIN),)

  CLEANUP_OBJS += $(addsuffix .$(OBJEXT),$(addprefix $(VDIR),$(basename $(CLEANUP_BIN))))

endif # CLEANUP_BIN

ifdef VSHOBJS

  CLEANUP_OBJS += $(VSHOBJS)

endif # VSHOBJS

 

clean.local: makefile_name.local

ifdef DO_CLEANUP

-$(RM) -r /

*.$(OBJEXT) *~ *.bak *.rpo *.sym lib*.*_pure_* /

GNUmakefile.old core-r $(CLEANUP_DIRS) /

cxx_repository ptrepository ti_files /

gcctemp.c gcctemp so_locations *.ics /

templateregistry templateregistry.* ir.out core.* *.core $(CLEANUP_OBJS)

endif # DO_CLEANUP

 

realclean.local: clean.local deinstall.local clean_idl_stubs.local

ifdef DO_CLEANUP

-$(RM) -r $(REALCLEAN_FILES) $(sort $(CLEANUP_OBJDIRS))

endif # DO_CLEANUP

 

 

#----------------------------------------------------------------------------

#       Dependency generation target依赖目标

#----------------------------------------------------------------------------

 

MAKEFILE ?= GNUmakefile

DEPENDENCY_FILE ?= $(MAKEFILE)

 

TAO_ROOT ?= $(ACE_ROOT)/TAO

 

如不没有库在当前目录编译 (实际上如果没包含rules.lib.GNU), 

SOEXT就不会设置.

SOEXT ?= so

 

ORIGdepend.local: $(MAKEFILE)

@$(RM) $(MAKEFILE).old

@cp $(MAKEFILE) $(MAKEFILE).old

$(ACE_ROOT)/bin/g++dep -f $(MAKEFILE) $(CPPFLAGS) -DMAKEDEPEND $(LSRC) $(SRC) $(PSRC)

@cat $(MAKEFILE) | /

sed -e "s;$(TAO_ROOT);/$$(TAO_ROOT);g" /

    -e "s;$(ACE_ROOT);/$$(ACE_ROOT);g" /

    $(ACE_DEPEND_SED_CMD) /

    -e '/$$(ACE_ROOT)//ace//config[^/.]*/.h/d' /

    -e "s; /[-a-zA-Z0-9_./]*/.h;;g" /

    -e "s;/([-a-zA-Z0-9._]*/)/.$(OBJEXT):;.obj//1.$(OBJEXT) .obj//1.$(SOEXT) $(VSHDIR)/1.$(OBJEXT) $(VSHDIR)/1.$(SOEXT):;" /

> $(MAKEFILE).new

@cat $(MAKEFILE).new >$(MAKEFILE)

@$(RM) $(MAKEFILE).new

@ifcmp -s $(MAKEFILE) $(MAKEFILE).old ;/

thenecho "GNUmakefile dependencies unchanged." ;/

else /

echo "GNUmakefile dependencies updated." ;/

fi ;/

$(RM) $(MAKEFILE).old ;

 

ifneq ($(MAKEFILE),$(DEPENDENCY_FILE))

$(DEPENDENCY_FILE):

ifeq ($(vxworks_ntbuild),1)

copy NUL "$(DEPENDENCY_FILE)"

else

touch $(DEPENDENCY_FILE)

endif

depend.local: $(DEPENDENCY_FILE)

-include $(DEPENDENCY_FILE)

endif

 

DEPGEN ?= $(ACE_ROOT)/bin/depgen.pl

 

# Use findstring just in case the script was preceded by /usr/bin/perl

ifeq ($(findstring depgen.pl, $(notdir $(DEPGEN))), depgen.pl)

  DEPEND_CMD_ARGS += -i

  ifeq ($(inline), 0)

    DEPEND_CMD_ARGS += -n

  endif

endif

 

depend.local: $(MAKEFILE) idl_stubs.local

@$(RM) $(DEPENDENCY_FILE).old

@cp $(DEPENDENCY_FILE) $(DEPENDENCY_FILE).old

ACE_PLATFORM_CONFIG=$(ACE_PLATFORM_CONFIG) /

ACE_DEPEND_SED_CMD="$(ACE_DEPEND_SED_CMD)" /

$(DEPGEN) -A $(DEPEND_CMD_ARGS) -e config.h -f $(DEPENDENCY_FILE) $(CPPFLAGS) /

-DMAKEDEPEND $(CCFLAGS) $(LSRC) $(SRC) $(PSRC)

@if cmp -s $(DEPENDENCY_FILE) $(DEPENDENCY_FILE).old ;/

then echo "GNUmakefile dependencies unchanged." ;/

else /

echo "GNUmakefile dependencies updated." ;/

fi ;/

$(RM) $(DEPENDENCY_FILE).old ;

 

#----------------------------------------------------------------------------

#       RCS info target

#----------------------------------------------------------------------------

 

IDL_FILES ?=

IDL_CLIENT_HDR_EXT ?=

 

idl_stubs.local: $(foreach file, $(IDL_FILES), $(file)$(IDL_CLIENT_HDR_EXT))

 

ifdef $(TAO_IDL_DEP)

$(TAO_IDL_DEP):

@if test ! -s $(TAO_IDL_DEP); then /

  echo " ***"; /

  echo " *** ERROR: $(TAO_IDL_DEP) not found."; /

  echo " ***"; /

  echo; /bin/false; fi

endif # TAO_IDL_DEP

 

#----------------------------------------------------------------------------

#       RCS info target

#----------------------------------------------------------------------------

 

rcs_info.local:

@rcs info

 

#----------------------------------------------------------------------------

#       Variant targets and conditional macros

#----------------------------------------------------------------------------

 

build.objdirs: $(CLEANUP_DIRS)

 

ifeq ($(MKDIR_NTSTYLE),1)

$(CLEANUP_DIRS):

@if not exist $@ $(MKDIR) $@ $(ACE_NUL_STDERR)

else

$(CLEANUP_DIRS):

@test -d $@ || $(MKDIR) $@ $(ACE_NUL_STDERR)

endif

 

#---------------------------------------------------------------------------

#       Source file splitting

#---------------------------------------------------------------------------

SPLIT:

@echo "Splitting source files..."

@$(ACE_ROOT)/bin/split-cpp -s Svc_Conf_l.cpp -s Svc_Conf_y.cpp $(LSRC)

@echo "done."

 

 

 

rules.lib.GNU

 

 

#---------------------------------------------------------------------------

#       Library versioning库版本

#---------------------------------------------------------------------------

# 是否定义了versioned_so的版本

ifeq ($(versioned_so),1)

  # Turn on symbol versioning. The scheme that we follow is to allow

  # applications dependent on libraries, with same version numbers (major,

  # minor and beta) to run, but applications with dependencies on libraries

  # with different minor or major or beta versions to fail.

  #

  # Version number of the libraries

  # 定义库版本,由ACE版本号组成

  ifeq ($(SOVERSION),)

    SOVERSION = .$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION)

  endif # SOVERSION

 

  # Name that will be written into the dynamic library

  # 写到动态库的名称

  ifeq ($(SONAME),)

    SONAME = $(SHLIB)$(SOVERSION)

  endif # SONAME

endif # versioned_so

 

 

#----------------------------------------------------------------------------

下面的目标安排编译共享非共享的库

#----------------------------------------------------------------------------

 

LIB ?=

VLIB = $(LIB:%.$(LIBEXT)=%$(VAR).$(LIBEXT))

CLEANUP_VLIB = $(CLEANUP_LIB:%.$(LIBEXT)=%$(VAR).$(LIBEXT))

 

# Add VLIB to VLIBS if building static_libs.

ifdef static_libs

  VLIBS += $(VLIB)

endif

 

SHLIB ?=

# Setup shared library variables, including versions.

VSHLIB_NO_VER = $(SHLIB:%.$(SOEXT)=%$(VAR).$(SOEXT))

CLEANUP_VSHLIB_NO_VER = $(CLEANUP_SHLIB:%.$(SOEXT)=%$(VAR).$(SOEXT))

VSHLIB = $(VSHLIB_NO_VER:%=%$(SOVERSION))

CLEANUP_VSHLIB = $(CLEANUP_VSHLIB_NO_VER:%=%$(SOVERSION))

 

SHLIBA ?=

VSHLIBA = $(SHLIBA:%.$(LIBEXT)=%$(VAR).$(LIBEXT))

 

# Add VSHLIB if we're building shared_libs.

ifdef shared_libs

  VLIBS += $(VSHLIB) $(VSHLIBA)

endif

 

# Warn if no libs found

ifeq ($(VLIBS),)

  LIB_WARNING = 0

  ifndef LIB_UNCHECKED

    LIB_WARNING = 1

  endif # !LIB_CHECKED

  ifndef SHLIB_UNCHECKED

    LIB_WARNING = 1

  endif # !SHLIB_UNCHECKED

  ifeq ($(LIB_WARNING),1)

    @echo Warning: rules.lib.GNU included, but no library targets detected.

  endif # LIB_WARNING

else # VLIBS

  # Libraries always depend on idl_stubs, if they exist.

  IDL_SRC ?=

  ifeq ($(IDL_SRC),)

    $(VLIBS): $(IDL_SRC)

  endif # IDL_SRC

endif # !VLIBS

 

VLOBJS = $(addprefix $(VDIR),$(foreach var, $(addsuffix .$(OBJEXT), $(basename $(LSRC)) $(RESOURCES)), $(if $(findstring ../,$(var)),$(notdir $(var)),$(var))))

ifdef LSRC2

  LSRC += $(LSRC2)

endif

 

VSHOBJS = $(addprefix $(VSHDIR),$(foreach var, $(addsuffix .$(OBJEXT), $(basename $(LSRC)) $(RESOURCES)), $(if $(findstring ../,$(var)),$(notdir $(var)),$(var))))

 

ifneq ($(IDL_SRC),)

  $(VLOBJS) $(VSHOBJS): $(IDL_SRC)

endif

 

ifdef static_libs

  LIB_INSTALL += $(VLIB:%=$(INSLIB)/%)

  CLEANUP_INSTALL += $(CLEANUP_VLIB:%=$(INSLIB)/%)

endif # static_libs

 

ifdef shared_libs

  LIB_INSTALL += $(VSHLIB:%=$(INSLIB)/%)

  CLEANUP_INSTALL += $(CLEANUP_VSHLIB:%=$(INSLIB)/%)

  CLEANUP_INSTALL += $(CLEANUP_VSHLIB_NO_VER:%=$(INSLIB)/%*)

  ifdef SHLIBA

    LIB_INSTALL += $(VSHLIBA:%=$(INSLIB)/%)

    CLEANUP_INSTALL += $(CLEANUP_SHLIBA:%=$(INSLIB)/%)

  endif

endif # shared_libs

 

ace_lib_prelink ?= 0

aix_build ?= 0

 

$(VLIB): $(VLOBJS)

 

ifeq (1,$(repo))

  ifneq (,$(ACELIB))

    #### With repo, link in all of the ace object files to the lib.

    #### This avoids multiple instantiations.  We haven't found it to

    #### be necessary with shared libs, so just do it for static libs.

    vpath %.$(OBJEXT) $(ACE_ROOT)/ace/$(VDIR)

 

    $(VLIB): $(ACE_ROOT)/ace/$(VDIR)*.$(OBJEXT)

  endif # ! ACELIB

endif # repo

 

ifdef PRELIB

$(PRELIB)

endif

ifeq (1,$(ace_lib_prelink))

        #### Attempt a link (which will fail), to add template instantiations

        #### to lib files, for example.

  ifeq (1,$(VXWORKS))

        #### In VxWorks builds we would like to see the output here.

-$(LINK.cc) $(LINK_OUTPUT_FLAG) ace-templ_inst $? $(LDFLAGS)

  else

-$(LINK.cc) $(LINK_OUTPUT_FLAG) ace-templ_inst $? $(LDFLAGS) $(ACE_NUL_STDERR)

  endif

endif # ace_lib_prelink

echo $(TMPINCDIR:%=%/*.o) $(filter %.o, $?) | xargs $(AR) $(ARFLAGS) $@ $(AREXTRA)

ifdef ibmcxx_build

# This is required to get AIX IBM C/C++ to instantiate and compile the needed

# templates.

                      if test -s ./$(TEMPINCDIR)/*.C; /

then /

$(LINK.cc) $(LINK_OUTPUT_FLAG) dummy $(LDFLAGS) $(ACE_ROOT)/etc/xlc_dummy.cpp $^ $(ACE_SHLIBS) $(LIBS); /

$(RM) dummy; /

$(AR) $(ARFLAGS) $@ $(TEMPINCDIR)/*.$(OBJEXT); /

fi

endif

-chmod a+r $@

ifneq (,$(RANLIB))

-$(RANLIB) $@

endif # RANLIB

 

# Note that if you don't want to build shared libraries, just remove the

# $(VSHOBJS)

#

# The AIX shr.o build is out here to keep it away from the SOVERSION stuff.

# The SOVERSION transform is applied after building the library file.

ifeq (1,$(aix_build))

shr.o: $(VSHOBJS)

$(SHR_FILTER) $(SOLINK.cc) $(SO_OUTPUT_FLAG) $@ $^ $(LDFLAGS) $(ACE_SHLIBS) $(LIBS)

 

.INTERMEDIATE: shr.o

endif # aix_build

 

ifeq ($(VXWORKSLINK),true)

$(VSHLIB): $(basename $(notdir $(PRJ_FILE))).out

-$(RM) $@

-$(LN_S)  $(PROJECT_OUT) $@

-$(POST_BUILD_RULE)

else # !VXWORKSLINK

  ifeq (1,$(aix_build))

$(VSHLIB): shr.o

$(AR) $(ARFLAGS) $@ $?

    ifneq (,$(RANLIB))

-$(RANLIB) $@

    endif # RANLIB

  else # ! aix_build

$(VSHLIB): $(VSHOBJS)

    ifdef PRELIB

$(PRELIB)

    endif # PRELIB

    ifdef ibmcxx_build

    # This is required to get AIX IBM C/C++ to instantiate and compile the needed

    # templates before building the library.

if test -s ./$(TEMPINCDIR)/*.C; /

then /

$(LINK.cc) $(LINK_OUTPUT_FLAG) dummy $(LDFLAGS) $(ACE_ROOT)/etc/xlc_dummy.cpp $^ $(ACE_SHLIBS) $(LIBS); /

$(RM) dummy; /

fi

    endif # ibmcxx_build

    ifdef SHLIBBUILD

$(SHLIBBUILD)

    else # ! SHLIBBUILD

      ifdef ibmcxx_build

if test -s ./$(TEMPINCDIR)/*.$(OBJEXT); /

        then /

$(SOLINK.cc) $(SO_OUTPUT_FLAG) $@ $^ $(TEMPINCDIR)/*.$(OBJEXT) $(LDFLAGS) $(ACE_SHLIBS) $(LIBS); /

        else /

$(SOLINK.cc) $(SO_OUTPUT_FLAG) $@ $^ $(LDFLAGS) $(ACE_SHLIBS) $(LIBS); /

fi

      else # !ibmcxx_build

        ifdef kylix

$(SOLINK.cc) $(LDFLAGS) $^, $@,, $(ACE_SHLIBS) $(LIBS) $(BORINITSHAREDOBJ)

        else # ! kylix

          ifeq (1,$(ace_lib_prelink))

          #### Attempt a link (which will fail), to add template instantiations

          #### to lib files, for example.

-$(LINK.cc) $(LINK_OUTPUT_FLAG) ace-templ_inst $^ $(LDFLAGS) $(ACE_NUL_STDERR)

          endif # ace_lib_prelink

          ifeq ($(split),1)

$(SHR_FILTER) $(SOLINK.cc) $(SO_OUTPUT_FLAG) $@ $(VSHDIR)/*.$(OBJEXT) $(LDFLAGS) $(ACE_SHLIBS) $(LIBS)

          else # ! split

$(SHR_FILTER) $(SOLINK.cc) $(SO_OUTPUT_FLAG) $@ $^ $(LDFLAGS) $(ACE_SHLIBS) $(LIBS)

          endif  # split

        endif  # kylix

      endif  # ibmcxx_build

    endif  # SHLIBBUILD

  endif  # aix_build

endif # VXWORKSLINK

ifneq ($(SOVERSION),)

-$(RM) $(VSHLIB_NO_VER)

-$(LN_S) $@ $(VSHLIB_NO_VER)

endif

-chmod a+rx $@

 

 

 

wrapper_macros.GNU

 

ACE支持下面的标记.他们可以运行在命令行使用.如 make purify=1,或者添加到你的platform_macros.GNU文件中.要禁止这些选项,设置该标记值为空. 如make debug=.一些标记支持设置0为禁止.如make debug=0Debug=1在发布ACE的platform文件上是允许.

 

 

请注意每个标记在特定平台上的影响.某个标记的组合可能或许在特定的平台上不允许. Debug=1 opt=1在g++上是支持的,但是在其他平台上未必支持.

 

Flag标记          Description描述

------------------------------------------------------------------------

ace_for_tao编译ace_for_tao子集. 减少TAO使用ACE共享库的大小

debug允许调试;参看DCFLAGS和DCCFLAGS

dmalloc指示使用dmalloc编译,添加FLATFORM_DMALLOC_CPPFLAGS到CPPFLAGS,添加FLATFORM_DMALLOC_LDFLAGS到LDFLAGS,添加PLATFORM_DMALLOC_LIBS到LIBS,更多信息请查看http://dmalloc.com

exceptions允许异常处理(不支持所有平台).

fast允许-fast选项,在SUN C++上

inclue_env允许CORBA::Environment参数使用,这兼容TAO1.2.2之前的版本,缺省设置是不允许的,与exception=0一起编译也没有影响.

inline允许ACE内嵌,一些平台缺省支持内嵌inline,一些则不支持.如果platform_macros.GNU里不设置,那么inline是允许的.

minimum_corba允许最小化CORBA支持(这里定义,但是在TAO/rules.TAO.GUN没有实现)

mtrace指示与mtrace一起编译,添加FLAFORM_MTRACE_CPPFLAGS到CPPFLAGS,Mtrace是GNU libc的扩展

optimize允许优化,看OCFLAGS和OCCFLAGS

probe允许ACE_Timeprobes

profile允许profiling,看PCFLAGS和PCCFLAGS

purify  purify的可执行程序,purify必须在PATH,

quantifyquantify的可执行程序, quantify必须在PATH,

repo使用GNU的模板仓库(只在g++的repo和egcs补丁下有用)

shared_libs运行运行时RTTI类型识别,缺省是允许的

static_libs编译静态库,如果static_libs_only设置则忽略

shared_libs_only编译共享库,如果share_libs_only设置则忽略

static_libs_only只是编译共享库,如果SHLIB设置则忽略

static_link只链接静态库到可执行文件

templates执行模版类型实例化

threads编译线程支持

trio编译ace_for_tao子集

xt编译Xt(X11 Toolkit)支持

fl编译FlTK(Fast Light Toolkit)支持

tk编译Tk (Tcl/Tk)支持

qt编译Qt (Trolltech Qt)支持

ssl编译OpenSSL支持

rapi编译RAPI支持

stlport编译STLPort支持

rwho编译rwho支持

pipes编译pipe支持

spli编译FlTK(Fast Light Toolkit)支持

sctp编译TAO SCIOP 和ACE SCTP支持

versioned_so添加库版本,缺省1(true),如果0, 共享库名没有附加版本号.

wfmo编译wfmo支持,只支持win32

winregistry编译winwos的注册标支持

 

 

通常,用户不需要注意make的目标文件.只需要敲如make在命令行就可以编译.一些值得注意的目标如下列出.

 

 

Target目标描述

------------------------------------------------------------------------

show_statics

show_uninit

 

 

下面描述ACE包装好的宏定义

 

 

#  变量     描述

#  --------     -----------

#  ARFLAGS      使用归档ar工具的标记

#  CC           C 编译器的命令

#  CXX          C++ 编译器命令

#  RC           资源编译器命令

#  COMPILE.c    与C编译器使用的标记

#  COMPILE.cc   与C++编译器使用的标记

#  COMPILE.rc   与资源编译器使用的标记

#  CPPFLAGS     C 预先处理标记

#  CFLAGS       C 编译标记

#  CCFLAGS      C++编译标记

#  DCFLAGS      C调试编译标记

#  DCCFLAGS     C++ 调试编译标记

#  DEFFLAGS     C++ 定义的符号预处理标记

#  DLD          动态连接器名

#  LD           链接器名

#  IDL          CORBA IDL编译器名

#  TEMPLATES_FLAG 传递到编译器控制模版实例化标记

#  INSBIN       二进制(可执行)文件的安装目录

#  INSINC       Include目录的安装路径

#  INSMAN       man文件安装目录

#  INSLIB       库文件的安装目录

#  LDFLAGS      ld 链接器标记

#  LINK.c       与C链接器使用的标记

#  LINK.cc      与C++链接器使用的标记

#  MAKEFLAGS    从命令行传递到编译器标记

#  OCFLAGS      优化C编译标记

#  OCCFLAGS     优化C+编译标记

#  PCFLAGS      Cprofiling标记

#  PCCFLAGS     C++的profiling标记

#  PLATFORM_XT_CPPFLAGS

#               X11的CPP选项 (一些需要-I...)

#  PLATFORM_XT_LDFLAGS

#               X11的LD选项 (一些需要-L...)

#  PLATFORM_XT_LIBS

#               X11的库标记

#  PLATFORM_SSL_CPPFLAGS

#               OpenSSL CPP 标记 (一些需要-I...)

#  PLATFORM_SSL_LDFLAGS

#               OpenSSL 的LD标记(一些需要-I...)

#  PLATFORM_SSL_LIBS

#               OpenSSL的库标记

#  PLATFORM_RAPI_CPPFLAGS

#               RAPI的CPP标记 

#  PLATFORM_RAPI_LDFLAGS

#               RAPI的LD标记

#  PLATFORM_RAPI_LIBS

#               RAPI的库标记

#  PLATFORM_SCTP_CPPFLAGS

#               SCTP的CPP标记

#  PLATFORM_SCTP_LDFLAGS

#               SCTP的LD标记

#  PLATFORM_SCTP_LIBS

#               SCTP的库标记

#  PRELINK      可执行的预链接quantify

#  PURELINK     如果设置包含purify 可作为选项执行

#  PURE_CACHE_BASE_DIR

#               Pure目录。如果你不想在/tmp,环境变量中或者make中设置

#  PURE_CACHE_DIR

#               Purecache目录

#  PWD          当前工作目录

#  PTDIRS       模版代码的目录

#  RM           删除文件的命令

#  ACE_MKDIR    递归创建目录的命令

#  SOFLAGS      编译共享库的标记

#  SOLINK.cc    编译共享库的需要链接行

#  VAR          Variant identifier suffix

#  VDIR         object code目录

#  VSHDIR       共享object code目录

#  ACE_ROOT     ACE的根目录

#

#----------------------------------------------------------------------------

#      平台依赖的宏定义

#      (链接到相应的特定平台配置文件).

#----------------------------------------------------------------------------

 

#定义BIN (BIN2)可执行文件和CLEANUP_BIN清除可执行文件宏

BIN_UNCHECKED ?=

CLEANUP_BIN ?=

ifdef BIN

  CLEANUP_BIN = $(BIN)

endif # !BIN

ifdef BIN2

  CLEANUP_BIN += $(BIN2)

endif # !BIN2

ifneq ($(BIN_UNCHECKED),)

  CLEANUP_BIN += $(BIN_UNCHECKED)

endif # !BIN_UNCHECKED

 

#定义LIB (LIB 2)库文件和CLEANUP_LIB清除库文件宏

LIB_UNCHECKED ?=

CLEANUP_LIB ?=

ifdef LIB

  CLEANUP_LIB = $(LIB)

endif # !LIB

ifdef LIB2

  CLEANUP_LIB += $(LIB2)

endif # !LIB2

ifneq ($(LIB_UNCHECKED),)

  CLEANUP_LIB = $(LIB_UNCHECKED)

endif # !LIB_UNCHECKED

 

#定义SHLIB (SHLIB 2)共享库文件和CLEANUP_LIB清除共享库文件宏

SHLIB_UNCHECKED ?=

CLEANUP_SHLIB ?=

ifdef SHLIB

  CLEANUP_SHLIB = $(SHLIB)

endif # !SHLIB

ifdef SHLIB2

  CLEANUP_SHLIB += $(SHLIB2)

endif # SHLIB2

ifneq ($(SHLIB_UNCHECKED),)

  CLEANUP_SHLIB += $(SHLIB_UNCHECKED)

endif # ! SHLIB_UNCHECKED

 

#定义SHLIBA (SHLIBA2)共享a库文件和CLEANUP_LIB清除共享a库文件宏

SHLIBA_UNCHECKED ?=

CLEANUP_SHLIBA ?=

ifdef SHLIBA

  CLEANUP_SHLIBA = $(SHLIBA)

endif # SHLIBA

ifdef SHLIBA2

  CLEANUP_SHLIBA = $(SHLIBA2)

endif # SHLIB2A

ifneq ($(SHLIBA_UNCHECKED),)

  CLEANUP_SHLIBA = $(SHLIBA_UNCHECKED)

endif # SHLIBA_UNCHECKED

 

 

#判断是否定义shared_libs 缺省只编译共享库这里设置是给平台有机会修改

ifndef shared_libs

  shared_libs = 1

endif # shared_libs

ifndef static_libs

  static_libs = 0

endif # static_libs

 

设置platform_macros.GNU中需要编译ACE的版本.

ifeq (cmd,$(findstring cmd,$(SHELL)))

ACE_MAJOR_VERSION := $(shell awk "/ACE_MAJOR_VERSION/ { print $$3}" ${ACE_ROOT}/ace/Version.h)

ACE_MINOR_VERSION := $(shell awk "/ACE_MINOR_VERSION/ { print $$3}" ${ACE_ROOT}/ace/Version.h)

ACE_BETA_VERSION := $(shell awk "/ACE_BETA_VERSION/ { print $$3}" ${ACE_ROOT}/ace/Version.h)

else

ACE_MAJOR_VERSION := $(shell awk '/ACE_MAJOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)

ACE_MINOR_VERSION := $(shell awk '/ACE_MINOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)

ACE_BETA_VERSION := $(shell awk '/ACE_BETA_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)

endif

 

定义安静编译警告变量

SHR_FILTER ?=

 

包含platform_macros.GNU 文件使得上述变量有个缺省值

include $(ACE_ROOT)/include/makeinclude/platform_macros.GNU

 

# 定义安静编译警告变量

GHS ?=

CHORUS ?=

AIX_TEMPLATE_HACK ?=

 

# $(ACE_PLATFORM_CONFIG) 是用于包含在config.h依赖规则和相应平台依赖文件config-*.h, # 它可以设置在你的platform_*.GNU 文件或者platform_macros.GNU.

ACE_PLATFORM_CONFIG ?= config.h

 

# 判断是否定义threads线程宏

ifeq ($(threads),0)

  ifneq ($(findstring -DACE_MT_SAFE=0,$(CPPFLAGS)),-DACE_MT_SAFE=0)

    CPPFLAGS += -DACE_MT_SAFE=0

  endif # -DACE_MT_SAFE=0

endif # threads

 

# 缺省设置异常,快速off,RTTI,版本

#exceptions on (1), fast off (0), rtti on (1), versioned_so on (1).

exceptions ?= 1

fast ?= 0

rtti ?= 1

versioned_so ?= 1

use_dep_libs ?= 1

 

SOVERSION ?=

SONAME ?=

 

#当前工作目录,和目录路径创建命令

ifeq ($(PWD),)

  PWD=$(shell pwd)

endif

 

ifeq ($(ACE_MKDIR),)

  MKDIR = mkdir -p

else

  MKDIR = $(ACE_MKDIR)

Endif

 

 

#----------------------------------------------------------------------------

#      平台依赖宏定义

#----------------------------------------------------------------------------

 

INCLDIRS ?=

DEFFLAGS ?=

 

CPPFLAGS        += $(DEFFLAGS) $(INCLDIRS)

 

定义IDL编译产生的扩展文件名

IDL_CLIENT_HDR_EXT ?= C.h

IDL_CLIENT_INL_EXT ?= C.inl

IDL_CLIENT_SRC_EXT ?= C.cpp

IDL_SERVER_HDR_EXT ?= S.h

IDL_SERVER_INL_EXT ?= S.inl

IDL_SERVER_SRC_EXT ?= S.cpp

IDL_SERVER_THDR_EXT ?= S_T.h

IDL_SERVER_TINL_EXT ?= S_T.inl

IDL_SERVER_TSRC_EXT ?= S_T.cpp

 

#定义ACE的ace,lib,man安装目录

ifeq (,$(findstring -I$(ACE_ROOT),$(INCLDIRS)))

  INCLDIRS        += -I$(ACE_ROOT)

endif

INSINC          ?= $(ACE_ROOT)/ace

INSLIB          ?= $(ACE_ROOT)/lib

INSMAN          ?= $(ACE_ROOT)/man

 

#链接库标记宏

ifeq (,$(findstring -L$(ACE_ROOT)/ace,$(LDFLAGS)))

  LDFLAGS         += -L$(ACE_ROOT)/ace -L./

endif

 

ifeq (default,$(origin LEX))

LEX = flex

endif

 

EXEEXT ?=

 

ifndef COMSPEC

  ifdef ComSpec

    #### ACE+TAO use COMSPEC, but ComSpec is defined.

    COMSPEC = $(ComSpec)

  endif # ComSpec

endif # ! COMPSPEC

 

ifdef COMSPEC

  #### Assume we're on a WIN32 host.

  ACE_NUL = nul

else  # ! WIN32

  ACE_NUL = /dev/null

endif # ! WIN32

 

#### 重定义stderr to nul device, and mask exit status.

ACE_NUL_STDERR = 2>$(ACE_NUL) || true

PCFLAGS         += #### set in platform_macros.GNU file, e.g., -p

PCCFLAGS        += #### set in platform_macros.GNU file, e.g., -p

VAR     

 

编译中间文件路径定,用户可以自己定义

VDIR          ?= .obj/

VSHDIR        ?= .shobj/

 

# ACE共享库名定义

ACELIB ?= -lACE

 

# NOTE: VLDLIBS is defined below, in case it is overridden for static-

#       or shared-only builds.

ifeq (default,$(origin YACC))

YACC = bison

Endif

 

 

#----------------------------------------------------------------------------

#      platform_macros.GNU中平台依赖宏定义.

#----------------------------------------------------------------------------

 

#判断ACE_HAS_GNUG_PRE_2_8定义

ifeq ($(findstring g++,$(CXX)),g++)

  ifndef ACE_HAS_GNUG_PRE_2_8

      ACE_HAS_GNUG_PRE_2_8 := /

        $(shell /

          if $(CXX) -dumpversion 2>/dev/null | egrep '^(cygnus-)?2/.[0-7]' /

  >/dev/null; then echo 1; else echo 0; fi)

  endif # ! ACE_HAS_GNUG_PRE_2_8

endif # g++

 

# OBJ,SO,LIB,后缀名定义

OBJEXT ?= o

SOEXT ?= so

LIBEXT ?= a

 

CC_OUTPUT_FLAG ?= -o

SO_OUTPUT_FLAG ?= -o

LINK_OUTPUT_FLAG ?= -o

 

#----------------------------------------------------------------------------

#      make flags 传为make命令的参数在文件开始的定义中有注释

#----------------------------------------------------------------------------

 

#是否优化

ifeq ($(optimize),0)

  override optimize =

endif # optimize

 

ifneq ($(optimize),)

  CFLAGS  += $(OCFLAGS)

  CCFLAGS += $(OCCFLAGS)

endif # optimize

 

# 是否split

split ?= 0

ifeq ($(split),0)

  override split =

endif # split

 

ifneq ($(split),)

  override split_target = SPLIT

  override debug = 0

  CPPFLAGS += -DACE_IS_SPLITTING

else

  override split_target =

endif # split

 

#是否调试

ifeq ($(debug),0)

  override debug =

endif # debug

 

ifeq ($(debug),)

  CPPFLAGS += -DACE_NDEBUG

# Disable the RCSID for release/non-debug builds.

  ifeq (,$(findstring ACE_USE_RCSID,$(CPPFLAGS)))

    CPPFLAGS += -DACE_USE_RCSID=0

  endif

else

  CFLAGS  += $(DCFLAGS)

  CCFLAGS += $(DCCFLAGS)

endif # debug

 

#线程标记

ifeq ($(threads),0)

  override threads =

endif # threads

 

# ace_for_tao 子集缺省是禁止的.

ace_for_tao ?=

ifeq ($(ace_for_tao),0)

  override ace_for_tao =

endif # ace_for_tao

 

ifneq ($(ace_for_tao),)

  ACE_MAKE_OPTIONS += ace_for_tao

endif # ace_for_tao

 

#下面是一些关于图形库一些API库的判断

ifeq ($(xt),0)

  override xt =

endif # xt

 

ifneq ($(xt),)

  override x11=1

  override xt=1

  override ace_xtreactor=1

  override tao_xtresource=1

  ACE_MAKE_OPTIONS += xt

endif # xt

 

fl ?=

ifeq ($(fl),0)

  override fl =

endif # fl

 

ifneq ($(fl),)

  override x11=1

  override gl=1

  override ace_flreactor=1

  override tao_flresource=1

  ACE_MAKE_OPTIONS += fl

endif # fl

 

tk ?=

ifeq ($(tk),0)

  override tk =

endif # tk

 

ifneq ($(tk),)

  override x11=1

  override tk=1

  override ace_tkreactor=1

  override tao_tkresource=1

  ACE_MAKE_OPTIONS += tk

endif # tk

 

qt ?=

ifeq ($(qt),0)

  override qt =

endif # qt

 

ifneq ($(qt),)

  override qt=1

  override ace_qtreactor=1

  override tao_qtresource=1

  ACE_MAKE_OPTIONS += qt

endif # qt

gtk_reactor ?=

 

ifeq ($(gtk_reactor),0)

  override gtk_reactor =

endif # gtk_reactor

 

ifneq ($(gtk_reactor),)

  override ace_with_gtk=1

  CPPFLAGS += -DACE_HAS_GTK $(PLATFORM_GTK_CPPFLAGS)

  LIBS += $(PLATFORM_GTK_LIBS)

  LDFLAGS += $(PLATFORM_GTK_LDFLAGS)

  ACE_MAKE_OPTIONS += gtk_reactor

endif # gtk_reactor

 

QTDIR ?=

ifneq ($(QTDIR),)

  MOC = ${QTDIR}/bin/moc

else

  MOC = moc

endif

 

rapi ?=

ifeq ($(rapi),0)

     override rapi =

endif #rapi

 

ifneq ($(rapi),)

  CPPFLAGS += -DACE_HAS_RAPI $(PLATFORM_RAPI_CPPFLAGS)

  LIBS += $(PLATFORM_RAPI_LIBS)

  LDFLAGS += $(PLATFORM_RAPI_LDFLAGS)

  ACE_MAKE_OPTIONS += rapi

endif # rapi

 

sctp ?=

ifeq ($(sctp),0)

     override sctp =

endif #rapi

 

# if any sctp implementation is present then add

ifneq ($(sctp),)

 CPPFLAGS += -DACE_HAS_SCTP $(PLATFORM_SCTP_CPPFLAGS)

 LDFLAGS  += $(PLATFORM_SCTP_LDFLAGS)

 LIBS     += $(PLATFORM_SCTP_LIBS)

  ACE_MAKE_OPTIONS += sctp

endif

 

gl ?=

ifeq ($(gl),0)

  override gl =

endif # gl

 

ifneq ($(gl),)

  ACE_MAKE_OPTIONS += gl

endif # gl

 

ssl ?=

ifeq ($(ssl),0)

  override ssl =

else

  ifneq ($(SSL_ROOT),)

    # Don't do a thing..

  else

    CPPFLAGS += $(PLATFORM_SSL_CPPFLAGS)

    LDFLAGS  += $(PLATFORM_SSL_LDFLAGS)

    LIBS     += $(PLATFORM_SSL_LIBS)

    ACE_MAKE_OPTIONS += ssl

  endif

endif

ec_typed_events ?= 1

 

#判断异常处理变量

ifeq ($(exceptions),0)

  ifeq ($(ACE_HAS_GNUG_PRE_2_8),0)

    #### Disable the default exception handling of g++ >= 2.8.0.

    ifneq ($(ACE_GNUG_ON_UNIXWARE),)

      CCFLAGS += -fcheck-new

    else

      CCFLAGS += -fno-exceptions -fcheck-new

    endif # ! ACE_GNUG_ON_UNIXWARE

  endif # ! ACE_HAS_GNUG_PRE_2_8

else  # exceptions

  CPPFLAGS += -DACE_HAS_EXCEPTIONS

  ifndef include_env

    include_env ?=

  endif

  ifeq ($(include_env),1)

    CPPFLAGS += -DACE_ENV_BKWD_COMPAT

  endif

  ifeq ($(ACE_HAS_GNUG_PRE_2_8),1)

    #### Enable exception handling with g++ < 2.8.0.  Not recommended,

    #### but provided here for completeness.

    CCFLAGS += -fhandle-exceptions

#  else  # ! ACE_HAS_GNUG_PRE_2_8

#  ifeq ($(ACE_HAS_GNUG_PRE_2_8),0)

#    #### Disable this warning on g++ >= 2.8.0 if exceptions are enabled,

#    #### it gets confused and reports too many bogus warnings.

#    CCFLAGS += -Wno-uninitialized

#  endif # g++ > 2.8.0

  endif # ! ACE_HAS_GNUG_PRE_2_8

  ACE_MAKE_OPTIONS += exceptions

endif # exceptions

 

# profile宏定义

profile ?=

ifeq ($(profile),0)

  override profile =

endif # profile

 

ifneq ($(profile),)

  CFLAGS  += $(PCFLAGS)

  CCFLAGS += $(PCCFLAGS)

endif # profile

 

# inline宏定义

inline ?= 1

ifeq ($(inline),0)

  CPPFLAGS += -DACE_NO_INLINE

else

ifeq ($(inline),1)

  CPPFLAGS += -D__ACE_INLINE__

endif # inline eq 1

endif # inline eq 0

 

shared_libs宏定义

ifeq ($(shared_libs),0)

  override shared_libs =

endif # shared_libs

ifeq ($(static_libs),0)

  override static_libs =

endif # static_libs

 

shared_libs_only ?=

ifeq ($(shared_libs_only),0)

  override shared_libs_only =

endif # shared_libs_only

 

static_libs_only ?=

ifeq ($(static_libs_only),0)

  override static_libs_only =

endif # static_libs_only

 

ifdef shared_libs_only

  override shared_libs = 1

  override static_libs =

endif # shared_libs_only

ifdef static_libs_only

  override shared_libs =

  override static_libs = 1

endif # static_libs_only

 

ifdef shared_libs

  ifndef static_libs

    override shared_libs_only = 1

  endif

  ACE_MAKE_OPTIONS += shared_libs

endif

 

ifdef static_libs

  ifndef shared_libs

    override static_libs_only = 1

  endif

  ACE_MAKE_OPTIONS += static_libs

endif

 

ACE_SHLIBS ?=

 

ifdef shared_libs

  ifdef SHLIBA

    LDLIBS := $(LDLIBS:-l%=-l%shr)

    ACE_SHLIBS := $(ACE_SHLIBS:-l%=-l%shr)

  endif # SHLIBA

else # ! shared_libs

  ifdef static_libs

    #### Don't build shared libs.

    PIC             =

    SHLIB           =

    SOEXT           = o

    VSHDIR          = $(VDIR)

    VLDLIBS         = $(LDLIBS:%.so=%.o)

  endif # static_libs

endif # shared_libs

 

ifdef kylix

  LDLIBS := $(LDLIBS:-l%=lib%.$(SOEXT))

  LIBS := $(LIBS:-l%=lib%.$(SOEXT))

  ACELIB := $(ACELIB:-l%=lib%.$(SOEXT))

  ACE_SHLIBS := $(ACE_SHLIBS:-l%=lib%.$(SOEXT))

endif # kylix

 

VLDLIBS = $(LDLIBS) $(ACELIB) $(LIBS)

 

# 程序检查的工具如purify,quantify,repo等宏定义

probe ?=

ifeq ($(probe),0)

  override probe =

endif # probe

 

ifeq ($(probe),1)

    CPPFLAGS += -DACE_COMPILE_TIMEPROBES

endif # probe

 

purify ?=

ifeq ($(purify),0)

  override purify =

endif # purify

 

ifdef purify

PURE_CACHE_BASE_DIR = /tmp/purifycache

PURE_CACHE_DIR = $(PURE_CACHE_BASE_DIR)-$(LOGNAME)-$(notdir $(CXX) )

 

  #### Pick up Purify directory from the users PATH.

  ACE_PURIFY_DIR := /

    $(shell type purify | sed -e 's/.* is //' -e 's%/purify$$%%')

 

  #### You might want to adjust the Purify options below.

  #### -best-effort is undocumented but supported, and seems

  #### to help avoid occasional link failure.

  PURELINK += purify -best-effort -cache-dir=$(PURE_CACHE_DIR) /

              -chain-length=20 -fds-inuse-at-exit=no /

              -inuse-at-exit -max_threads=100

  CPPFLAGS += -DACE_HAS_PURIFY -I$(ACE_PURIFY_DIR)

endif # purify

 

quantify ?=

ifeq ($(quantify),0)

  override quantify =

endif # quantify

 

ifdef quantify

  #### Pick up Quantify directory from the users PATH.

  ACE_QUANTIFY_DIR := /

    $(shell type quantify | sed -e 's/.* is //' -e 's%/quantify$$%%')

 

  #### You might want to adjust the Quantify options below.

  #### -best-effort is undocumented but supported, and seems

  #### to help avoid occasional link failure.

  PRELINK += quantify -best-effort -cache-dir=$(PURE_CACHE_DIR) /

             -max_threads=100

  CPPFLAGS += -DACE_HAS_QUANTIFY -I$(ACE_QUANTIFY_DIR)

 

  ifeq ($(shell uname -p),sparc)

    PRELINK += -record-register-window-traps

  endif # sparc

endif # quantify

 

repo ?=

ifeq ($(repo),0)

  override repo =

endif # repo

 

ifdef repo

  #### Remove -fno-implicit-templates from, and add -frepo to, CCFLAGS.

  CCFLAGS := $(strip $(subst -fno-implicit-templates,,$(CCFLAGS)))

  CCFLAGS += -frepo

  CPPFLAGS += -DACE_HAS_GNU_REPO

#  ace_lib_prelink := 1

endif # repo

 

# If pipes is not set, we default to 0

pipes ?= 0

 

# If pipes is set to 1 then add the compiler flag -pipe. This uses pipe instead

# of intermediate files. This can be disabled by setting pipes to 0 in the

# platform_macros.GNU file.

ifeq ($(pipes),1)

   CFLAGS += -pipe

endif # pipes

 

# RMCast缺省是开着

rmcast ?= 1

ifeq ($(rmcast),1)

  ACE_MAKE_OPTIONS += rmcast

endif

 

# If not explicitly is set that we don't have rwho, assume we have it.

rwho ?= 1

 

# stlport支持宏定义

# If not explicitly is set that we don't have stlport, assume we

# don't have it.

stlport ?= 0

ifeq ($(stlport),1)

  CPPFLAGS += -DACE_HAS_STLPORT $(PLATFORM_STLPORT_CPPFLAGS)

  LDFLAGS  += $(PLATFORM_STLPORT_LDFLAGS)

  LIBS     += $(PLATFORM_STLPORT_LIBS)

endif

 

# If not explicitly is set that we have wfmo, assume we don't have it.

wfmo ?= 0

 

# If not explicitly is set that we have winregistry, assume we don't have it.

winregistry ?= 0

 

# In MPC, these are now features that are enabled by default.

ace_other     ?= 1

ace_codecs    ?= 1

ace_token     ?= 1

ace_svcconf   ?= 1

ace_uuid      ?= 1

ace_filecache ?= 1

acexml        ?= 1

xerces        ?= 1

 

#----------------------------------------------------------------------------

#      条件宏定义

#----------------------------------------------------------------------------

 

PTDIRS ?=

PRELINK ?=

POSTLINK ?=

PURELINK ?=

TEMPLATES_FLAG ?=

MVCMD ?=

 

COMPILE.c       = $(CC) $(CFLAGS) $(CPPFLAGS) -c

COMPILE.cc      = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(PTDIRS) -c

RC ?=

 

COMPILE.rc      = $(RC) $(RCFLAGS)

COMPILE-NO_DASH_G.cc = `echo $(COMPILE.cc) | sed 's/-g //'`

# 960905 Marius Kjeldahl <marius@funcom.com>

# Added the line below to be used for compiling executable shared objects

COMPILEESO.cc   = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(PTDIRS)

 

ifeq ($(LINK.c),override)

  LINK.c  = $(LINK.c.override)

else

  LINK.c  = $(PURELINK) $(PRELINK) $(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) /

            $(LDLIBS) $(LIBS)

endif # LINK.c.override

 

ifeq ($(LINK.cc),override)

  LINK.cc = $(LINK.cc.override)

else

  LINK.cc = $(PURELINK) $(PRELINK) $(LD) $(CCFLAGS) $(CPPFLAGS) $(PTDIRS)

endif # LINK.cc.override

 

SOLINK.cc = $(PRELINK) $(DLD) $(SOFLAGS)

 

 

 

 

ACE build on linux

 

[root@FC7 ace]# pwd

/root/ACE_wrappers/ace

[root@FC7 ace]# vi config.h

1 #include "ace/config-linux.h"

 

config-linux.h里面包含了config-linux-common.h头文件.

 

[root@FC7 makeinclude]# pwd

/root/ACE_wrappers/include/makeinclude

[root@FC7 makeinclude]# vi platform_macros.GNU

 

platform_linux.GNU

 

 

Gateway' makefile

 

root@FC7 Gateway]# make

make[1]: Entering directory `/root/ACE_wrappers/apps/Gateway/Gateway'

 

GNUmakefile: /root/ACE_wrappers/apps/Gateway/Gateway/GNUmakefile.Gateway MAKEFLAGS=w

 

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Concrete_Connection_Handlers.o Concrete_Connection_Handlers.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Config_Files.o Config_Files.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/File_Parser.o File_Parser.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Gateway.o Gateway.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Event_Channel.o Event_Channel.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Event_Forwarding_Discriminator.o Event_Forwarding_Discriminator.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Options.o Options.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Connection_Handler.o Connection_Handler.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Connection_Handler_Acceptor.o Connection_Handler_Acceptor.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Connection_Handler_Connector.o Connection_Handler_Connector.cpp

g++ -Wl,-O3 -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../.. -shared -Wl,-h -Wl,libGateway.so.5.6.0 -o libGateway.so.5.6.0 .shobj/Concrete_Connection_Handlers.o .shobj/Config_Files.o .shobj/File_Parser.o .shobj/Gateway.o .shobj/Event_Channel.o .shobj/Event_Forwarding_Discriminator.o .shobj/Options.o .shobj/Connection_Handler.o .shobj/Connection_Handler_Acceptor.o .shobj/Connection_Handler_Connector.o -Wl,-E -L/root/ACE_wrappers/ace -L./ -L../../../lib -L. -L../../../lib -lACE -ldl -lpthread -lrt

rm -f libGateway.so

ln -s libGateway.so.5.6.0 libGateway.so

chmod a+rx libGateway.so.5.6.0

make[1]: Leaving directory `/root/ACE_wrappers/apps/Gateway/Gateway'

make[1]: Entering directory `/root/ACE_wrappers/apps/Gateway/Gateway'

 

GNUmakefile: /root/ACE_wrappers/apps/Gateway/Gateway/GNUmakefile.gatewayd MAKEFLAGS=w

 

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -o .obj/gatewayd.o gatewayd.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -Wl,-E -L/root/ACE_wrappers/ace -L./ -L/root/ACE_wrappers/lib -L. -L../../../lib -o gatewayd .obj/gatewayd.o -lGateway -lACE -ldl -lpthread -lrt 

make[1]: Leaving directory `/root/ACE_wrappers/apps/Gateway/Gateway'

make[1]: Entering directory `/root/ACE_wrappers/apps/Gateway/Peer'

 

GNUmakefile: /root/ACE_wrappers/apps/Gateway/Peer/GNUmakefile.Gateway_Peer MAKEFLAGS=w

 

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Options.o Options.cpp

g++ -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -O3 -g -pipe    -pipe -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../..  -c -fPIC -o .shobj/Peer.o Peer.cpp

g++ -Wl,-O3 -DACE_HAS_LINUX_NPTL -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE   -I/root/ACE_wrappers -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -I../../.. -shared -Wl,-h -Wl,libGateway_Peer.so.5.6.0 -o libGateway_Peer.so.5.6.0 .shobj/Options.o .shobj/Peer.o -Wl,-E -L/root/ACE_wrappers/ace -L./ -L../../../lib -L. -L../../../lib -lACE -ldl -lpthread -lrt

rm -f libGateway_Peer.so

ln -s libGateway_Peer.so.5.6.0 libGateway_Peer.so

chmod a+rx libGateway_Peer.so.5.6.0

make[1]: Leaving directory `/root/ACE_wrappers/apps/Gateway/Peer'

make[1]: Entering directory `/root/ACE_wrappers/apps/Gateway/Peer'