# -*- Makefile -*-
#----------------------------------------------------------------------------
#       GNU Makefile
#
# @file GNUmakefile.ACE
#
# $Id: gnu.mpd 85209 2009-04-29 09:47:19Z johnnyw $
#
# This file was automatically generated by MPC.  Any changes made directly to
# this file will be lost the next time it is generated.
#
#----------------------------------------------------------------------------
MAKEFILE         = GNUmakefile.ACE
DEPENDENCY_FILE  = .depend.ACE

LIB_PREFIX      ?= lib

## LIB_CHECKED may be set to empty later on in this file
LIB_UNCHECKED    = $(LIB_PREFIX)ACE.$(LIBEXT)
LIB_CHECKED      = $(LIB_UNCHECKED)
LIB_NAME         = $(LIB_PREFIX)ACE

## SHLIB may be set to empty later on in this file
SHLIB_UNCHECKED  = $(LIB_PREFIX)ACE.$(SOEXT)
SHLIB            = $(SHLIB_UNCHECKED)

FILES = \
  Local_Name_Space.cpp \
  Name_Proxy.cpp \
  Name_Request_Reply.cpp \
  Name_Space.cpp \
  Naming_Context.cpp \
  Registry_Name_Space.cpp \
  Remote_Name_Space.cpp \
  NT_Service.cpp \
  Codecs.cpp \
  Local_Tokens.cpp \
  Remote_Tokens.cpp \
  Token_Collection.cpp \
  Token_Invariants.cpp \
  Token_Manager.cpp \
  Token_Request_Reply.cpp \
  DLL.cpp \
  Dynamic_Service_Base.cpp \
  Dynamic_Service_Dependency.cpp \
  Parse_Node.cpp \
  Service_Config.cpp \
  Service_Gestalt.cpp \
  Service_Manager.cpp \
  Service_Object.cpp \
  Service_Repository.cpp \
  Service_Types.cpp \
  Shared_Object.cpp \
  Svc_Conf_Lexer.cpp \
  Svc_Conf_y.cpp \
  Encoding_Converter.cpp \
  Encoding_Converter_Factory.cpp \
  UTF8_Encoding_Converter.cpp \
  UTF16_Encoding_Converter.cpp \
  UTF32_Encoding_Converter.cpp \
  XML_Svc_Conf.cpp \
  UUID.cpp \
  Filecache.cpp \
  ACE.cpp \
  ACE_crc_ccitt.cpp \
  ACE_crc32.cpp \
  ace_wchar.cpp \
  Activation_Queue.cpp \
  Active_Map_Manager.cpp \
  Addr.cpp \
  Argv_Type_Converter.cpp \
  Assert.cpp \
  Asynch_IO.cpp \
  Asynch_IO_Impl.cpp \
  Asynch_Pseudo_Task.cpp \
  ATM_Acceptor.cpp \
  ATM_Addr.cpp \
  ATM_Connector.cpp \
  ATM_Params.cpp \
  ATM_QoS.cpp \
  ATM_Stream.cpp \
  Atomic_Op.cpp \
  Atomic_Op_Sparc.c \
  Auto_Event.cpp \
  Barrier.cpp \
  Base_Thread_Adapter.cpp \
  Based_Pointer_Repository.cpp \
  Basic_Stats.cpp \
  Basic_Types.cpp \
  Capabilities.cpp \
  CDR_Base.cpp \
  CDR_Stream.cpp \
  CDR_Size.cpp \
  Cleanup.cpp \
  Codeset_IBM1047.cpp \
  Codeset_Registry.cpp \
  Codeset_Registry_db.cpp \
  Condition_Recursive_Thread_Mutex.cpp \
  Condition_Thread_Mutex.cpp \
  Configuration.cpp \
  Configuration_Import_Export.cpp \
  Connection_Recycling_Strategy.cpp \
  Containers.cpp \
  Copy_Disabled.cpp \
  Countdown_Time.cpp \
  Date_Time.cpp \
  DEV.cpp \
  DEV_Addr.cpp \
  DEV_Connector.cpp \
  DEV_IO.cpp \
  DLL_Manager.cpp \
  Dev_Poll_Reactor.cpp \
  Dirent.cpp \
  Dirent_Selector.cpp \
  Dump.cpp \
  Dynamic.cpp \
  Dynamic_Message_Strategy.cpp \
  Event.cpp \
  Event_Handler.cpp \
  FIFO.cpp \
  FIFO_Recv.cpp \
  FIFO_Recv_Msg.cpp \
  FIFO_Send.cpp \
  FIFO_Send_Msg.cpp \
  FILE.cpp \
  FILE_Addr.cpp \
  FILE_Connector.cpp \
  FILE_IO.cpp \
  File_Lock.cpp \
  Flag_Manip.cpp \
  Framework_Component.cpp \
  Functor.cpp \
  Functor_String.cpp \
  Get_Opt.cpp \
  gethrtime.cpp \
  Handle_Ops.cpp \
  Handle_Set.cpp \
  Hashable.cpp \
  High_Res_Timer.cpp \
  ICMP_Socket.cpp \
  INET_Addr.cpp \
  Init_ACE.cpp \
  IO_SAP.cpp \
  IO_Cntl_Msg.cpp \
  IOStream.cpp \
  IPC_SAP.cpp \
  Lib_Find.cpp \
  Local_Memory_Pool.cpp \
  Lock.cpp \
  Log_Msg.cpp \
  Log_Msg_Backend.cpp \
  Log_Msg_Callback.cpp \
  Log_Msg_IPC.cpp \
  Log_Msg_NT_Event_Log.cpp \
  Log_Msg_UNIX_Syslog.cpp \
  Log_Record.cpp \
  Logging_Strategy.cpp \
  LSOCK.cpp \
  LSOCK_Acceptor.cpp \
  LSOCK_CODgram.cpp \
  LSOCK_Connector.cpp \
  LSOCK_Dgram.cpp \
  LSOCK_Stream.cpp \
  Malloc.cpp \
  Malloc_Allocator.cpp \
  Manual_Event.cpp \
  MEM_Acceptor.cpp \
  MEM_Addr.cpp \
  MEM_Connector.cpp \
  MEM_IO.cpp \
  Mem_Map.cpp \
  MEM_SAP.cpp \
  MEM_Stream.cpp \
  Message_Block.cpp \
  Message_Queue.cpp \
  Message_Queue_NT.cpp \
  Message_Queue_Vx.cpp \
  Method_Request.cpp \
  MMAP_Memory_Pool.cpp \
  Msg_WFMO_Reactor.cpp \
  Monitor_Admin.cpp \
  Monitor_Admin_Manager.cpp \
  Monitor_Base.cpp \
  Monitor_Point_Registry.cpp \
  Monitor_Size.cpp \
  Monitor_Control_Types.cpp \
  Monitor_Control_Action.cpp \
  Multihomed_INET_Addr.cpp \
  Mutex.cpp \
  Netlink_Addr.cpp \
  Notification_Strategy.cpp \
  Notification_Queue.cpp \
  Obchunk.cpp \
  Object_Manager.cpp \
  Object_Manager_Base.cpp \
  OS_Errno.cpp \
  OS_Log_Msg_Attributes.cpp \
  OS_main.cpp \
  OS_NS_arpa_inet.cpp \
  OS_NS_ctype.cpp \
  OS_NS_dirent.cpp \
  OS_NS_dlfcn.cpp \
  OS_NS_errno.cpp \
  OS_NS_fcntl.cpp \
  OS_NS_math.cpp \
  OS_NS_netdb.cpp \
  OS_NS_poll.cpp \
  OS_NS_pwd.cpp \
  OS_NS_regex.cpp \
  OS_NS_signal.cpp \
  OS_NS_stdio.cpp \
  OS_NS_stdlib.cpp \
  OS_NS_string.cpp \
  OS_NS_strings.cpp \
  OS_NS_stropts.cpp \
  OS_NS_sys_mman.cpp \
  OS_NS_sys_msg.cpp \
  OS_NS_sys_resource.cpp \
  OS_NS_sys_select.cpp \
  OS_NS_sys_sendfile.cpp \
  OS_NS_sys_shm.cpp \
  OS_NS_sys_socket.cpp \
  OS_NS_sys_stat.cpp \
  OS_NS_sys_time.cpp \
  OS_NS_sys_uio.cpp \
  OS_NS_sys_utsname.cpp \
  OS_NS_sys_wait.cpp \
  OS_NS_Thread.cpp \
  OS_NS_time.cpp \
  OS_NS_unistd.cpp \
  OS_NS_wchar.cpp \
  OS_NS_wctype.cpp \
  OS_QoS.cpp \
  OS_Thread_Adapter.cpp \
  OS_TLI.cpp \
  Pagefile_Memory_Pool.cpp \
  PI_Malloc.cpp \
  Ping_Socket.cpp \
  Pipe.cpp \
  POSIX_Asynch_IO.cpp \
  POSIX_CB_Proactor.cpp \
  POSIX_Proactor.cpp \
  Priority_Reactor.cpp \
  Proactor.cpp \
  Proactor_Impl.cpp \
  Process.cpp \
  Process_Manager.cpp \
  Process_Mutex.cpp \
  Process_Semaphore.cpp \
  Profile_Timer.cpp \
  Reactor.cpp \
  Reactor_Impl.cpp \
  Reactor_Notification_Strategy.cpp \
  Reactor_Timer_Interface.cpp \
  Read_Buffer.cpp \
  Recursive_Thread_Mutex.cpp \
  Recyclable.cpp \
  Registry.cpp \
  Rtems_init.c \
  RW_Mutex.cpp \
  RW_Process_Mutex.cpp \
  RW_Thread_Mutex.cpp \
  Sample_History.cpp \
  Sbrk_Memory_Pool.cpp \
  Sched_Params.cpp \
  Select_Reactor_Base.cpp \
  Semaphore.cpp \
  Shared_Memory.cpp \
  Shared_Memory_MM.cpp \
  Shared_Memory_Pool.cpp \
  Shared_Memory_SV.cpp \
  Sig_Adapter.cpp \
  Sig_Handler.cpp \
  Signal.cpp \
  SOCK.cpp \
  SOCK_Acceptor.cpp \
  SOCK_CODgram.cpp \
  Sock_Connect.cpp \
  SOCK_Connector.cpp \
  SOCK_Dgram.cpp \
  SOCK_Dgram_Bcast.cpp \
  SOCK_Dgram_Mcast.cpp \
  SOCK_IO.cpp \
  SOCK_Netlink.cpp \
  SOCK_SEQPACK_Acceptor.cpp \
  SOCK_SEQPACK_Association.cpp \
  SOCK_SEQPACK_Connector.cpp \
  SOCK_Stream.cpp \
  SPIPE.cpp \
  SPIPE_Acceptor.cpp \
  SPIPE_Addr.cpp \
  SPIPE_Connector.cpp \
  SPIPE_Stream.cpp \
  SString.cpp \
  Stack_Trace.cpp \
  Stats.cpp \
  String_Base_Const.cpp \
  SUN_Proactor.cpp \
  SV_Message.cpp \
  SV_Message_Queue.cpp \
  SV_Semaphore_Complex.cpp \
  SV_Semaphore_Simple.cpp \
  SV_Shared_Memory.cpp \
  Synch_Options.cpp \
  System_Time.cpp \
  Task.cpp \
  Thread.cpp \
  Thread_Adapter.cpp \
  Thread_Control.cpp \
  Thread_Exit.cpp \
  Thread_Hook.cpp \
  Thread_Manager.cpp \
  Thread_Mutex.cpp \
  Thread_Semaphore.cpp \
  Throughput_Stats.cpp \
  Time_Value.cpp \
  Timeprobe.cpp \
  TLI.cpp \
  TLI_Acceptor.cpp \
  TLI_Connector.cpp \
  TLI_Stream.cpp \
  Token.cpp \
  TP_Reactor.cpp \
  Trace.cpp \
  TSS_Adapter.cpp \
  TTY_IO.cpp \
  UNIX_Addr.cpp \
  UPIPE_Acceptor.cpp \
  UPIPE_Connector.cpp \
  UPIPE_Stream.cpp \
  WFMO_Reactor.cpp \
  WIN32_Asynch_IO.cpp \
  WIN32_Proactor.cpp \
  XTI_ATM_Mcast.cpp

#----------------------------------------------------------------------------
#       Include macros and targets
#----------------------------------------------------------------------------
ACE_SHLIBS =

PRJ_TYPE = library

INSLIB ?= ../lib
ifeq ($(INSLIB),.)
  ifeq ($(CURDIR),)
    ifeq ($(PWD),)
      PWD=$(shell pwd)
    endif
  else
    PWD=$(CURDIR)
  endif
  INSLIB = $(PWD)
endif
OUTPUT_DIRECTORY = $(INSLIB)

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

ifneq (,$(RC))
RESOURCES += \
  ace.rc

RC_INCLUDE_FLAG ?= --include-dir=
RCFLAGS = \
        $(RC_INCLUDE_FLAG)..
endif

# To build multiple targets in the same directory on AIX, it works
# best to have a template directory per project.
# The compiler/linker isn't too smart about instantiating templates...
ifdef TEMPINCDIR
TEMPINCDIR := $(TEMPINCDIR)/ACE
all: $(TEMPINCDIR)
endif

ifneq ($(OUTPUT_DIRECTORY),)
all: $(OUTPUT_DIRECTORY)
$(OUTPUT_DIRECTORY):
	-@$(MKDIR) "$(OUTPUT_DIRECTORY)"
endif

LIBCHECK = 1
ifneq ($(ace_for_tao),1)
ifneq ($(LIBCHECK), 1)
  LIB_CHECKED   =
  SHLIB =
  all: lib_warning
endif
else
  LIB_CHECKED   =
  SHLIB =
  all: avoid_warning
endif

ifneq ($(ace_for_tao),1)
else
  LIB_CHECKED   =
  SHLIB =
  all: avoid_warning
endif
LSRC   = $(FILES)

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.lib.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
ifeq ($(VXWORKSLINK),1)
include $(TGT_DIR)/h/make/rules.$(PRJ_TYPE)
endif

ifeq ($(VXWORKSLINK),1)
LDLIBPATH     = -L. -L../lib
else
LDFLAGS      += -L. -L../lib
endif
CPPFLAGS     += -I..
ifeq ($(shared_libs),1)
  ifneq ($(SHLIB),)
    CPPFLAGS += -DACE_BUILD_DLL
  endif
endif
ifeq ($(static_libs),1)
  CPPFLAGS += -DACE_AS_STATIC_LIBS
endif

#----------------------------------------------------------------------------
#       Local targets
#----------------------------------------------------------------------------
Svc_Conf_y.cpp: Svc_Conf.y
ifeq ($(notdir $(YACC)), bison)
	$(YACC) -l -d Svc_Conf.y
	sed -e 's/fprintf/ACE_OS::fprintf/g' \
       -e 's/\t/  /g' \
       -e 's/yy/ace_yy/g' \
       -e 's/->ace_yyerrno/->yyerrno/g' \
       -e 's/->ace_yylineno/->yylineno/g' \
       -e 's/ NULL/ 0/g' \
       -e 's/ace_yyerror[ ]*([ ]*"/ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "/g' \
       -e 's/ace_yyerror[ ]*([ ]*ace_yymsg/ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, ace_yymsg/g' \
       -e 's/ace_yyerror[ ]*([ ]*YY_/ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, YY_/g' \
       -e 's@#include <stdio.h>@@' \
       -e 's/Svc_Conf\.tab\.c/Svc_Conf_y.cpp/g' <Svc_Conf.tab.c >$@
	$(RM) -f Svc_Conf.tab.c Svc_Conf_y.cpp.orig
else
	@echo 'ERROR: You must use bison 1.35 or higher to process this file'
	@/bin/false
endif

Svc_Conf_Token_Table.h: Svc_Conf.y Svc_Conf_y.cpp
ifeq ($(notdir $(YACC)), bison)
	mv Svc_Conf.tab.h Svc_Conf_Token_Table.h
else
	@echo 'ERROR: You must use bison 1.35 or higher to process this file'
	@/bin/false
endif

lib_warning:
	@echo ACE will not be built due to the following missing library:
	@echo $(LIBCHECK)

avoid_warning:
	@echo ACE will not be built due to one of the following enabled make macros:
	@echo ace_for_tao

## Some OS's have /bin/test others only have /usr/bin/test
ifeq ($(wildcard /bin/test), /bin/test)
  TEST_EXE = /bin/test
else
ifeq ($(wildcard /usr/bin/test), /usr/bin/test)
  TEST_EXE = /usr/bin/test
endif
endif

ifneq ($(GENERATED_DIRTY),)
.PRECIOUS: $(GENERATED_DIRTY)
## If the generated files are anything but source files, we need to
## ensure that those files are generated before we attempt to build anything
## else.
ifeq ($(OBJS_DEPEND_ON_GENERATED),1)
$(VDIR)$(ACE_PCH_FILE) $(addprefix $(VDIR), $(OBJS)): $(GENERATED_DIRTY)
$(VSHDIR)$(ACE_PCH_FILE) $(VSHOBJS): $(GENERATED_DIRTY)
endif
endif


realclean: clean
ifneq ($(GENERATED_DIRTY),)
	-$(RM) -r $(GENERATED_DIRTY)
endif

__prebuild__:
	@-:

