diff --git a/.gitignore b/.gitignore index fa92fe281..70cb62733 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,10 @@ core \#*# *.log *.trs +CerebralEdge/build +CerebralEdge/CMakeCache.txt +CerebralEdge/cmake_install.cmake +CerebralEdge/compile_bin +CerebralEdge/CMakeFiles +build +src/C++/config.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 08d0848ab..91fa1abaf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,10 +12,10 @@ endif() project(${quickfix_PROJECT_NAME} VERSION 0.1 LANGUAGES CXX C) message("-- Project name ${CMAKE_PROJECT_NAME}") -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED OFF) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) -if( CMAKE_CXX_STANDARD EQUAL 17 ) +if( CMAKE_CXX_STANDARD GREATER_EQUAL 17 ) option( HAVE_CXX17 "Using C++17" ON) endif() diff --git a/CerebralEdge/CMakeLists.txt b/CerebralEdge/CMakeLists.txt new file mode 100644 index 000000000..166870a11 --- /dev/null +++ b/CerebralEdge/CMakeLists.txt @@ -0,0 +1,93 @@ +# CMakeLists files in this project can +# refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and +# to the root binary directory of the project as ${HELLO_BINARY_DIR}. +cmake_minimum_required (VERSION 2.8.11) +project (QuickFix) + +# Recurse into the "Hello" and "Demo" subdirectories. This does not actually +# cause another cmake executable to run. The same process will walk through +# the project's entire directory structure. +# add_subdirectory (C++) + +#Create a library called "Hello" which includes the source file "hello.cxx". +# The extension is already found. Any number of sources could be listed here. +# add_library (libQuickFix +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/DataDictionary.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/DataDictionaryProvider.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Dictionary.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FieldConvertors.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FieldMap.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FieldTypes.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FileLog.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FileLog.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/FileStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Group.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/HttpConnection.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/HttpMessage.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/HttpParser.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/HttpServer.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Initiator.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Log.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Message.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/MessageSorters.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/MessageStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/MySQLLog.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/MySQLStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/NullStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/OdbcLog.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/OdbcStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Parser.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/PostgreSQLLog.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/PostgreSQLStore.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/PUGIXML_DOMDocument.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/pugixml.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Session.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SessionFactory.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SessionSettings.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Settings.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketAcceptor.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketConnection.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketConnector.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketInitiator.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketMonitor.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SocketServer.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SSLSocketAcceptor.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SSLSocketConnection.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/SSLSocketInitiator.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/stdafx.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/strptime.c +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSocketAcceptor.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSocketConnection.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSocketInitiator.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSSLSocketAcceptor.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSSLSocketConnection.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/ThreadedSSLSocketInitiator.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/TimeRange.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/Utility.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/C++/UtilitySSL.cpp +# ) + +set(CMAKE_C_COMPILER "gcc-11") +set(CMAKE_CXX_COMPILER "/usr/bin/g++-11") + +#set(CMAKE_C_STANDARD 17 CACHE STRING "C standard to be used") +set(CMAKE_CXX_STANDARD 20 CACHE STRING "C++ standard to be used") +# Add executable called "helloDemo" that is built from the source files +# "demo.cxx" and "demo_b.cxx". The extensions are automatically found. +add_executable (compile_bin main.cpp) + +# Link the executable to the Hello library. Since the Hello library has +# public include directories we will use those link directories when building +# helloDemo +target_link_libraries (compile_bin LINK_PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libquickfix.a) + +# Make sure the compiler can find include files for our Hello library +# when other libraries or executables link to Hello +target_include_directories (compile_bin PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../include/quickfix +) + +add_definitions( + -DHAVE_STD_UNIQUE_PTR + -DHAVE_STD_SHARED_PTR +) diff --git a/CerebralEdge/main.cpp b/CerebralEdge/main.cpp new file mode 100644 index 000000000..89129a1d8 --- /dev/null +++ b/CerebralEdge/main.cpp @@ -0,0 +1,7 @@ +#include "Application.h" + + +int main() +{ + return 0; +} \ No newline at end of file diff --git a/README b/README new file mode 100644 index 000000000..e69de29bb diff --git a/configure.ac b/configure.ac index 8dd3dcd7c..b35bcc25e 100644 --- a/configure.ac +++ b/configure.ac @@ -66,7 +66,7 @@ AM_CONDITIONAL([NO_UNIT_TEST], [test "$build_no_unit_test" = "yes"]) ######################################## -AX_CXX_COMPILE_STDCXX( [17], [noext], optional) +AX_CXX_COMPILE_STDCXX( [20], [noext], optional) ######################################## # TBB diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4 index 43087b2e6..3adb13f65 100644 --- a/m4/ax_cxx_compile_stdcxx.m4 +++ b/m4/ax_cxx_compile_stdcxx.m4 @@ -50,6 +50,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"], [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], + [$1], [20], [ax_cxx_compile_alternatives="20 2a"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], diff --git a/src/C++/config.h b/src/C++/config.h index 2b9771a2c..95a395407 100644 --- a/src/C++/config.h +++ b/src/C++/config.h @@ -1,11 +1,195 @@ -#ifndef CONFIG_H_IN -#define CONFIG_H_IN +/* src/C++/config.h. Generated from config.h.in by configure. */ +/* src/C++/config.h.in. Generated from configure.ac by autoheader. */ -/* #undef HAVE_EMX */ -#define HAVE_CXX17 -#define HAVE_STD_SHARED_PTR -/* #undef HAVE_SHARED_PTR_IN_TR1_NAMESPACE */ -/* #undef HAVE_STD_TR1_SHARED_PTR_FROM_TR1_MEMORY_HEADER */ -#define HAVE_STD_UNIQUE_PTR +/* __gnu_cxx::bitmap_allocator exists */ +/* #undef ENABLE_BITMAP_ALLOCATOR */ -#endif +/* boost::fast_pool_allocator exists */ +/* #undef ENABLE_BOOST_FAST_POOL_ALLOCATOR */ + +/* boost::pool_allocator exists */ +/* #undef ENABLE_BOOST_POOL_ALLOCATOR */ + +/* __gnu_cxx::debug_allocator exists */ +/* #undef ENABLE_DEBUG_ALLOCATOR */ + +/* __gnu_cxx::mt_allocator exists */ +/* #undef ENABLE_MT_ALLOCATOR */ + +/* __gnu_cxx::new_allocator exists */ +/* #undef ENABLE_NEW_ALLOCATOR */ + +/* __gnu_cxx::pool_allocator exists */ +/* #undef ENABLE_POOL_ALLOCATOR */ + +/* tbb::scalable_allocator exists */ +/* #undef ENABLE_TBB_ALLOCATOR */ + +/* The system has gethostbyname_r which takes a result as a pass-in param */ +#define GETHOSTBYNAME_R_INPUTS_RESULT 1 + +/* custom allocator configured */ +/* #undef HAVE_ALLOCATOR_CONFIG */ + +/* Define if you have boost framework */ +/* #undef HAVE_BOOST */ + +/* The system supports boost::shared_ptr */ +#define HAVE_BOOST_SHARED_PTR 1 + +/* Define if clock_gettime exists. */ +#define HAVE_CLOCK_GETTIME 1 + +/* whether or not we have to demangle names */ +/* #undef HAVE_CPLUS_DEMANGLE */ + +/* define if the compiler supports basic C++20 syntax */ +/* #undef HAVE_CXX20 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* found ftime */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have java */ +/* #undef HAVE_JAVA */ + +/* Define to 1 if you have the `compat' library (-lcompat). */ +/* #undef HAVE_LIBCOMPAT */ + +/* Define to 1 if you have the `c_r' library (-lc_r). */ +/* #undef HAVE_LIBC_R */ + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +/* #undef HAVE_LIBNSL */ + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#define HAVE_LIBPTHREAD 1 + +/* Define to 1 if you have the `rt' library (-lrt). */ +/* #undef HAVE_LIBRT */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if you have sql library (-lmysqlclient) */ +/* #undef HAVE_MYSQL */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_SSL_H */ + +/* Define to 1 if PostgreSQL libraries are available */ +/* #undef HAVE_POSTGRESQL */ + +/* Define if you have python2 */ +/* #undef HAVE_PYTHON2 */ + +/* Define if you have python3 */ +/* #undef HAVE_PYTHON3 */ + +/* Define if you have ruby */ +/* #undef HAVE_RUBY */ + +/* Define if you have SSL */ +/* #undef HAVE_SSL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* The system supports std::shared_ptr */ +#define HAVE_STD_SHARED_PTR 1 + +/* The system supports std::tr1::shared_ptr */ +#define HAVE_STD_TR1_SHARED_PTR_FROM_TR1_MEMORY_HEADER 1 + +/* The system supports std::unique_ptr */ +#define HAVE_STD_UNIQUE_PTR 1 + +/* Define if you have stlport library */ +/* #undef HAVE_STLPORT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have Intel TBB framework */ +/* #undef HAVE_TBB */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "quickfix" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "ask@quickfixengine.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "QuickFIX" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "QuickFIX 1.14.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "quickfix" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.14.3" + +/* select statement decrements timeval parameter if interupted */ +#define SELECT_MODIFIES_TIMEVAL 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* For location of set_terminate */ +#define TERMINATE_IN_STD 1 + +/* Whether or not we are using the new-style typeinfo header */ +#define TYPEINFO_IN_STD 1 + +/* The system supports AT&T STREAMS */ +/* #undef USING_STREAMS */ + +/* Version number of package */ +#define VERSION "1.14.3" + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#define YYTEXT_POINTER 1 + +/* enable reentrant system calls */ +#define _REENTRANT 1 + +/* Define if clock_get_time exists. */ +/* #undef __MACH__ */ + +/* socklen_t needs to be defined if the system doesn't define it */ +/* #undef socklen_t */