ACE makefile 研究

包含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

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

then echo "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=0 D ebug=1在发布ACE的 platform 文件上是允许.

 

 

请注意每个标记在特定平台上的影响.某个标记的组合可能或许在特定的平台上不允许.  D ebug=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,

quantify quantify 的可执行程序,  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      C profiling 标记

#  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

#               Pure cache目录

#  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

 

# 定义SH LIB ( SH LIB 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

 

# 定义SH LIB A  ( SH LIBA2) 共享 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./

e ndif

 

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'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值