//  -*- MPC -*- now wouldn't this be cool...
project(ACE) : ace_output, acedefaults, install, other, codecs, token, svcconf, uuid, filecache, versioned_namespace, pkgconfig, support_ostream {
  avoids       = ace_for_tao
  sharedname   = ACE
  dynamicflags += ACE_BUILD_DLL

  Source_Files(ACE_COMPONENTS) {
    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
    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_Attributes.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
    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_Base.cpp
    Event_Handler.cpp
    Event_Handler_Handle_Timeout_Upcall.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
    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_Category.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
    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
    Monotonic_Time_Policy.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
    Obstack.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
    Parse_Node.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_Policy.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
  }

  Template_Files {
    Abstract_Timer_Queue.cpp
    Acceptor.cpp
    Active_Map_Manager_T.cpp
    ARGV.cpp
    Arg_Shifter.cpp
    Array_Base.cpp
    Array_Map.cpp
    Asynch_Acceptor.cpp
    Asynch_Connector.cpp
    Atomic_Op_T.cpp
    Atomic_Op_GCC_T.cpp
    Auto_Event.cpp
    Auto_Functor.cpp
    Auto_IncDec_T.cpp
    Auto_Ptr.cpp
    Based_Pointer_T.cpp
    Cache_Map_Manager_T.cpp
    Cached_Connect_Strategy_T.cpp
    Caching_Strategies_T.cpp
    Caching_Utility_T.cpp
    Cleanup_Strategies_T.cpp
    Condition_T.cpp
    Connector.cpp
    Containers_T.cpp
    Countdown_Time_T.cpp
    Dump_T.cpp
    Dynamic_Service.cpp
    Env_Value_T.cpp
    Event.cpp
    Event_Handler_T.cpp
    Framework_Component_T.cpp
    Free_List.cpp
    Functor_T.cpp
    Future.cpp
    Future_Set.cpp
    Guard_T.cpp
    Hash_Cache_Map_Manager_T.cpp
    Hash_Map_Manager_T.cpp
    Hash_Multi_Map_Manager_T.cpp
    Hash_Map_With_Allocator_T.cpp
    IOStream_T.cpp
    Intrusive_Auto_Ptr.cpp
    Intrusive_List.cpp
    Intrusive_List_Node.cpp
    LOCK_SOCK_Acceptor.cpp
    Local_Name_Space_T.cpp
    Lock_Adapter_T.cpp
    Malloc_T.cpp
    Managed_Object.cpp
    Manual_Event.cpp
    Map_Manager.cpp
    Map_T.cpp
    Message_Block_T.cpp
    Message_Queue_T.cpp
    Metrics_Cache_T.cpp
    Module.cpp
    Node.cpp
    Obstack_T.cpp
    Pair_T.cpp
    RB_Tree.cpp
    Reactor_Token_T.cpp
    Refcountable_T.cpp
    Refcounted_Auto_Ptr.cpp
    Reverse_Lock_T.cpp
    Select_Reactor_T.cpp
    Singleton.cpp
    Strategies_T.cpp
    Stream.cpp
    Stream_Modules.cpp
    String_Base.cpp
    Svc_Handler.cpp
    Refcountable_T.cpp
    TSS_T.cpp
    Task_Ex_T.cpp
    Task_T.cpp
    Test_and_Set.cpp
    Timeprobe_T.cpp
    Time_Policy_T.cpp
    Time_Value_T.cpp
    Timer_Hash_T.cpp
    Timer_Heap_T.cpp
    Timer_List_T.cpp
    Timer_Queue_Adapters.cpp
    Timer_Queue_Iterator.cpp
    Timer_Queue_T.cpp
    Timer_Wheel_T.cpp
    Tokenizer_T.cpp
    Typed_SV_Message.cpp
    Typed_SV_Message_Queue.cpp
    Unbounded_Queue.cpp
    Unbounded_Set.cpp
    Unbounded_Set_Ex.cpp
    Vector_T.cpp
  }

  Inline_Files {
    Bound_Ptr.inl
    Condition_T.inl
    Guard_T.inl
    Handle_Gobbler.inl
    Intrusive_Auto_Ptr.inl
    Lock_Adapter_T.inl
    Metrics_Cache_T.inl
    Refcounted_Auto_Ptr.inl
    Reverse_Lock_T.inl
    TSS_T.inl
    Time_Value_T.inl
  }

  Header_Files {
    // Set recurse so that everything from os_include is pulled in
    recurse = 1

    ACE_export.h
    Bound_Ptr.h
    CE_Screen_Output.h
    Codeset_Symbols.h
    CORBA_macros.h
    Codeset_Symbols.h
    Condition_T.h
    Countdown_Time.h
    Default_Constants.h
    Event_Base.h
    Global_Macros.h
    Guard_T.h
    Hash_Map_Manager.h
    Handle_Gobbler.h
    If_Then_Else.h
    IO_Cntl_Msg.h
    Intrusive_Auto_Ptr.h
    Lock_Adapter_T.h
    Log_Priority.h
    Malloc_Base.h
    Metrics_Cache.h
    Metrics_Cache_T.h
    Memory_Pool.h
    Min_Max.h
    Monotonic_Time_Policy.h
    Netlink_Addr.h
    Null_Barrier.h
    Null_Condition.h
    Null_Mutex.h
    Null_Semaphore.h
    Numeric_Limits.h
    OS.h
    OS_Memory.h
    OS_NS_macros.h
    OS_Thread_Adapter.h
    Object_Manager_Base.h
    Obstack.h
    Proactor_Impl.h
    Reactor_Impl.h
    Reactor_Timer_Interface.h
    Refcounted_Auto_Ptr.h
    Reverse_Lock_T.h
    Select_Reactor.h
    SOCK_Netlink.h
    SStringfwd.h
    Stack_Trace.h
    Static_Object_Lock.h
    String_Base_Const.h
    Svc_Conf.h
    Svc_Conf_Param.h
    Svc_Conf_Tokens.h
    Svc_Conf_Token_Table.h
    Synch.h
    Synch_Traits.h
    TSS_T.h
    Time_Policy.h
    Time_Value_T.h
    Timer_Hash.h
    Timer_Heap.h
    Timer_List.h
    Timer_Queue.h
    Timer_Queuefwd.h
    Timer_Wheel.h
    Truncate.h
    UPIPE_Addr.h
    Value_Ptr.h
    Version.h
    Versioned_Namespace.h
    ace_wchar.h
    ace_wchar.inl
    checked_iterator.h
    config-*.h
    config.h
    iosfwd.h
    os_include
    post.h
    pre.h
    streams.h
    svc_export.h
  }

  Documentation_Files {
    README
    ../VERSION
  }

  Pkgconfig_Files {
    ACE.pc.in
  }

  InstallData_Files {
    gendir = bin
    ../bin/MakeProjectCreator
    ../bin/DependencyGenerator
    ../bin/mwc.pl
    ../bin/mpc.pl
    ../bin/add_rel_link.sh
    ../bin/depgen.pl
    ../bin/ace_install_pkgconfig.pl
  }
  InstallData_Files {
    gendir = include
    ../include/makeinclude
  }
  InstallData_Files {
    gendir = .
    ../README
    ../VERSION
    ../PROBLEM-REPORT-FORM
    ../NEWS
    ../COPYING
    ../AUTHORS
    ../THANKS
    ../docs
  }

  verbatim(gnuace, postinstall) {
"	perl -i -pe's!\\$$[{(]ACE_ROOT[})]!$(INSTALL_PREFIX)/include!g unless /^\\s*include / || /^INS/' $(DESTDIR)$(INSTALL_PREFIX)/share/ace/include/makeinclude/wrapper_macros.GNU"
"	perl -i -pe'BEGIN {$$lib = qq($(INSTALL_PREFIX)/$(INSTALL_LIB)); $$lp = qq(-value_project libpaths+=$$lib\\n); $$cl = qq(command_line =)}' -e'if ($$. == 1 && /^$$cl (.*)/ && $$1 !~ /$$lib\\b/) {chomp; print qq($$_ $$lp); $$_ = qq()}' -e'elsif ($$. == 1 && !/^$$cl/) {print qq($$cl $$lp)}' $(DESTDIR)$(INSTALL_PREFIX)/share/ace/bin/MakeProjectCreator/config/MPC.cfg"
"	perl -i -ne'print unless /^\\s*ARCH\\s*[+?:]?=/' $(DESTDIR)$(INSTALL_PREFIX)/share/ace/include/makeinclude/platform_macros.GNU"
"	echo export ACE_ROOT=$(INSTALL_PREFIX)/share/ace> $(DESTDIR)$(INSTALL_PREFIX)/share/ace/ace-devel.sh"
  }
}
