MPC icon indicating copy to clipboard operation
MPC copied to clipboard

Add CMake generation support

Open horusxnetworks opened this issue 5 years ago • 5 comments

Hi,

CMake is an open-source, cross-platform family of tools designed to build, test and package software. It's very popular. Could you please add CMake generation support?

horusxnetworks avatar Aug 10 '20 09:08 horusxnetworks

See also https://github.com/DOCGroup/ACE_TAO/issues/266

jwillemsen avatar Aug 10 '20 09:08 jwillemsen

It seems like that would be possible. MPC can be extended to support new "types," and the process for doing that is described in its documentation. Could you describe how you plan to use it?

mitza-oci avatar Aug 10 '20 14:08 mitza-oci

It seems like that would be possible. MPC can be extended to support new "types," and the process for doing that is described in its documentation. Could you describe how you plan to use it? Hi, I'm working on 1 cross-platform project, ACE is used as on of submodules. I choose CMake as build system because:

  • Support multiple platforms (it's like all of them)
  • Can use CLion as IDE: the best C++ cross-platform IDE

Since CMake is not supported to be generated by MPC so I had to create CMake file by myself. It's like below:

cmake_minimum_required(VERSION 2.8.12)

if(POLICY CMP0048)
	cmake_policy(SET CMP0048 NEW)
endif()

project(ACE)

set (ACE_VERSION 6.5.10)

set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")

option(SKIP_INSTALL "Skip installation" ON)

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

### Library
add_library(ACE STATIC ${ACE_CXX_SRCS})
set_target_properties (ACE PROPERTIES VERSION ${ACE_VERSION})
add_definitions(-DACE_AS_STATIC_LIBS)
add_definitions(-D__ACE_INLINE__)

if(MSVC)
	add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
	add_definitions(-D_CRT_SECURE_NO_WARNINGS)
	add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
	add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
	add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)

	if(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]$")
		add_definitions(-D_ARM_)
		add_definitions(-D_ARM)
	elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]64$")
		add_definitions(-D_ARM64_)
		add_definitions(-D_ARM64)
	endif()
endif()

target_include_directories(ACE PUBLIC ${ACE_PATH})
if (WIN32)
	target_link_libraries(ACE iphlpapi.lib)
endif ()

### Installation
if(NOT SKIP_INSTALL)
	## Install headers
	install(DIRECTORY "${ACE_PATH}/ace" # source directory
			DESTINATION "${INSTALL_INC_DIR}" # target directory
			FILES_MATCHING # install only matched files
			PATTERN "*.h" # select header files
			PATTERN "*.inl" # select header files
	)

	## Install library
	install(TARGETS ACE
			RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
			ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
			LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
endif(NOT SKIP_INSTALL)

message(STATUS "")
message(STATUS "        ---( libscone_masi " ${VERSION} " )---")
message(STATUS "")
message(STATUS "CMAKE_INSTALL_PREFIX:     ${CMAKE_INSTALL_PREFIX}")
message(STATUS "CMAKE_BINARY_DIR:         ${CMAKE_BINARY_DIR}")
message(STATUS "CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
message(STATUS "CMAKE_SOURCE_DIR:         ${CMAKE_SOURCE_DIR}")
message(STATUS "CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "PROJECT_BINARY_DIR:       ${PROJECT_BINARY_DIR}")
message(STATUS "PROJECT_SOURCE_DIR:       ${PROJECT_SOURCE_DIR}")
message(STATUS "CMAKE_MODULE_PATH:        ${CMAKE_MODULE_PATH}")
message(STATUS "CMAKE_COMMAND:            ${CMAKE_COMMAND}")
message(STATUS "CMAKE_ROOT:               ${CMAKE_ROOT}")
message(STATUS "CMAKE_SYSTEM:             ${CMAKE_SYSTEM}")
message(STATUS "CMAKE_SYSTEM_NAME:        ${CMAKE_SYSTEM_NAME}")
message(STATUS "CMAKE_SYSTEM_VERSION:     ${CMAKE_SYSTEM_VERSION}")
message(STATUS "CMAKE_SYSTEM_PROCESSOR:   ${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "CMAKE_SKIP_RPATH:         ${CMAKE_SKIP_RPATH}")
message(STATUS "CMAKE_VERBOSE_MAKEFILE:   ${CMAKE_VERBOSE_MAKEFILE}")
message(STATUS "CMAKE_BUILD_TYPE:         ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_C_COMPILER:         ${CMAKE_C_COMPILER} (id ${CMAKE_C_COMPILER_ID}, clang ${CLANG}, GNUC ${GNUC})")
if (CMAKE_COMPILER_IS_GNUCXX)
	message(STATUS "CMAKE_CXX_COMPILER:         ${CMAKE_CXX_COMPILER} (ver ${CMAKE_CXX_COMPILER_VERSION})")
else ()
	message(STATUS "CMAKE_CXX_COMPILER:         ${CMAKE_CXX_COMPILER}")
endif ()
message(STATUS "CMAKE_AR:                 ${CMAKE_AR}")
message(STATUS "CMAKE_RANLIB:             ${CMAKE_RANLIB}")
message(STATUS "CMAKE_CXX_FLAGS:          ${CMAKE_CXX_FLAGS}")
message(STATUS "C++ flags (Release):      ${CMAKE_CXX_FLAGS_RELEASE}")
message(STATUS "C++ flags (Debug):        ${CMAKE_CXX_FLAGS_DEBUG}")
message(STATUS "CMAKE_C_FLAGS:            ${CMAKE_C_FLAGS}")
message(STATUS "C flags (Release):        ${CMAKE_C_FLAGS_RELEASE}")
message(STATUS "C flags (Debug):          ${CMAKE_C_FLAGS_DEBUG}")
if (WIN32)
	message(STATUS "Linker flags (Release):  ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
	message(STATUS "Linker flags (Debug):    ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
else ()
	message(STATUS "Linker flags (Release):  ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
	message(STATUS "Linker flags (Debug):    ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
endif ()

But, the thing is, when ACE is upgraded, CMake file need to be updated too and the bad thing is this CMake file doesn't contain all build options from MPC:

  • C Flags, CXX Flags
  • Macro definitions
  • System dependency libraries linker

Since I don't work with Perl, so I created this issue for MPC CMake support.

horusxnetworks avatar Aug 11 '20 11:08 horusxnetworks

We have evidence that libACE does not needs to be built by CMake to be consumed by a downstream CMake project: see github.com/objectcomputing/OpenDDS. Whether or not libACE should be built CMake I guess is a matter of opinion, but you can see what some of the issues are.

Since this particular GitHub Issue is in the MPC repository and not in ACE_TAO, we should focus on the process of adding a new "type" to MPC. You can certainly do that. The documentation and examples you'd need are all here in the repository. The code to do this isn't really in Perl, it's in a template language. There is some Perl support code needed which you can basically copy and paste.

If this isn't a project you'd like to take on, consider sponsoring a company like the one I work for (which designed and wrote MPC) to do it.

mitza-oci avatar Aug 12 '20 22:08 mitza-oci

See https://github.com/DOCGroup/MPC/pull/164

jwillemsen avatar Oct 31 '22 07:10 jwillemsen