Skip to content

Instantly share code, notes, and snippets.

@doevelopper
Created November 27, 2023 16:58

Revisions

  1. doevelopper created this gist Nov 27, 2023.
    305 changes: 305 additions & 0 deletions fleet.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,305 @@
    ```json
    {
    "configurations": [
    {
    "type": "command",
    "name": "Create Build and Dependencies Directory",
    "program": "/opt/cmake/bin/cmake",
    "args": [
    "-E",
    "make_directory",
    "$PROJECT_DIR$/build-output/standalone-libs"
    ],
    },
    {
    "type": "command",
    "name": "Generate build receipe",
    "program": "/opt/cmake/bin/cmake",
    "args": [
    "-S",
    "$PROJECT_DIR$",
    "-B",
    "$PROJECT_DIR$/build-output",
    "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
    "-DCMAKE_BUILD_TYPE=Release",
    "-DCMAKE_CXX_COMPILER=/opt/clang+llvm/bin/clang++",
    "-DCMAKE_C_COMPILER=/opt/clang+llvm/bin/clang",
    "-DCMAKE_CXX_CLANG_TIDY=/opt/clang+llvm/bin/clang-tidy;-checks=*",
    "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only",
    "-DCMAKE_LINK_WHAT_YOU_USE=TRUE"
    "-DCMAKE_CXX_CPPLINT=/opt/cpplint/cpplint.py;--linelength=120)",
    "-DCMAKE_CXX_CPPCHECK=/opt/cppcheck/cppcheck;--std=c++20",
    "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs",
    "-DCMAKE_INSTALL_PREFIX=$PROJECT_DIR$/build-output/installs",
    "-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs"
    ],
    "environment": {
    "TEMP_DIR": "/home/user/temp",
    "GENERATE_RANDOM_PASSWORD": "true",
    "CC": "/opt/clang+llvm/bin/clang",
    "CXX": "/opt/clang+llvm/bin/clang++",
    }
    },
    {
    "type": "command",
    "name": "Build Librarie and Dependencies",
    "program": "/opt/cmake/bin/cmake",
    "args": [
    "--build",
    "$PROJECT_DIR$/build-output",
    "--target",
    "all",
    "--config",
    "Release"
    ],
    },
    {
    "type": "command",
    "name": "Run main application",
    "program": "$PROJECT_DIR$/src/main/cpp/app",
    },
    {
    "type": "command",
    "name": "Run unit test application",
    "program": "$PROJECT_DIR$/src/test/cpp/appTest",
    },
    ]
    }
    ```

    ```cmake
    ExternalProject_Add(RapidJSON
    PREFIX "vendor/tencent/rapidjson"
    GIT_REPOSITORY "https://github.com/Tencent/rapidjson.git"
    GIT_TAG f9d53419e912910fd8fa57d5705fa41425428c35
    TIMEOUT 10
    CMAKE_ARGS
    -DRAPIDJSON_BUILD_TESTS=OFF
    -DRAPIDJSON_BUILD_DOC=OFF
    -DRAPIDJSON_BUILD_EXAMPLES=OFF
    -DRAPIDJSON_BUILD_CXX17=ON
    -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    # CONFIGURE_COMMAND ""
    # BUILD_COMMAND make
    # INSTALL_COMMAND make install
    UPDATE_COMMAND ""
    )
    ExternalProject_Add(libopenssl
    PREFIX "vendor/openssl/openssl"
    URL
    https://www.openssl.org/source/openssl-3.2.0.tar.gz
    CONFIGURE_COMMAND
    ./config no-shared no-idea no-mdc2 no-rc5 --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
    make
    INSTALL_COMMAND
    make install_sw
    BUILD_IN_SOURCE 1
    )
    ExternalProject_Add(Boost
    PREFIX "vendor/boostorg/Boost"
    DEPENDS
    libopenssl
    URL
    https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz
    CONFIGURE_COMMAND
    ./bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
    ./b2 clean
    ./b2 cxxstd=23 -j64 link=static address-model=64 --architecture=x64 variant=release #toolset=clang cxxflags=-fPIC cxxstd=14
    BUILD_IN_SOURCE
    true
    INSTALL_COMMAND
    ./b2 install
    INSTALL_DIR
    ${CMAKE_BINARY_DIR}/installs
    )
    ExternalProject_Add(googletest
    PREFIX "vendor/google/googletest"
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG main
    GIT_PROGRESS 1
    CMAKE_ARGS
    -DCMAKE_BUILD_TYPE:STRING=Release
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    $<$<PLATFORM_ID:Windows>:-Dgtest_force_shared_crt:BOOL=ON>
    LOG_CONFIGURE ON
    LOG_BUILD ON
    LOG_INSTALL ON
    )
    ExternalProject_Add(abseilcpp
    PREFIX "vendor/abseil/abseil-cpp"
    GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
    GIT_TAG master
    GIT_PROGRESS 1
    CMAKE_ARGS
    -DCMAKE_BUILD_TYPE:STRING=Release
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    LOG_CONFIGURE ON
    LOG_BUILD ON
    LOG_INSTALL ON
    )
    ExternalProject_Add(crc32c
    PREFIX "vendor/google/crc32c"
    GIT_REPOSITORY "https://github.com/google/crc32c.git"
    GIT_TAG "21fc8ef30415a635e7351ffa0e5d5367943d4a94"
    EXCLUDE_FROM_ALL ON
    CMAKE_CACHE_ARGS
    -DCRC32C_BUILD_TESTS:BOOL=OFF
    -DBUILD_SHARED_LIBS:STRING=no
    -DCRC32C_BUILD_BENCHMARKS:BOOL=OFF
    -DCRC32C_USE_GLOG:BOOL=OFF
    -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
    -DCMAKE_BUILD_TYPE:STRING=Release
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    )
    ExternalProject_Add(libexpat
    PREFIX "vendor/libexpat/expat"
    GIT_REPOSITORY https://github.com/libexpat/libexpat.git
    GIT_TAG master
    GIT_PROGRESS 1
    SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-src"
    BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-build"
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -S ${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-src/expat -B ${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-build
    -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/installs -DBUILD_SHARED_LIBS=OFF -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_SHARED_LIBS=OFF
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true
    BUILD_COMMAND
    COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Release --target install
    INSTALL_COMMAND ""
    TEST_COMMAND ""
    )
    ExternalProject_Add(libapr
    PREFIX "vendor/apache/apr"
    GIT_REPOSITORY https://github.com/apache/apr.git
    GIT_TAG 1.7.x
    GIT_PROGRESS 1
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND
    ./buildconf && ./configure --enable-threads --enable-posix-shm --enable-allocator-uses-mmap
    --enable-allocator-guard-pages --enable-pool-concurrency-check --enable-other-child
    --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
    COMMAND make clean && make install
    )
    ExternalProject_Add(libapr-util
    PREFIX "vendor/apache/apr-util"
    GIT_REPOSITORY https://github.com/apache/apr-util.git
    GIT_TAG 1.7.x
    GIT_PROGRESS 1
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND
    ./buildconf --with-apr=${CMAKE_BINARY_DIR}/vendor/apache/apr/src/libapr --prefix=${CMAKE_BINARY_DIR}/installs && ./configure --prefix=${CMAKE_BINARY_DIR}/installs --with-apr=${CMAKE_BINARY_DIR}/installs --with-openssl=${CMAKE_BINARY_DIR}/installs --with-expat=${CMAKE_BINARY_DIR}/installs
    )
    ExternalProject_Add(libxerces
    PREFIX "vendor/apache/xerces-c"
    GIT_REPOSITORY https://github.com/apache/xerces-c.git
    GIT_TAG master
    GIT_PROGRESS 1
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND
    ./reconf && ./configure --prefix=${CMAKE_BINARY_DIR}/installs/
    )
    ExternalProject_Add(libfmt
    PREFIX "vendor/fmtlib/fmt"
    GIT_REPOSITORY
    "https://github.com/fmtlib/fmt.git"
    GIT_TAG
    "10.1.1"
    GIT_CONFIG advice.detachedHead=false
    CMAKE_CACHE_ARGS
    -DFMT_INSTALL:BOOL=ON
    -DFMT_DOC:BOOL=OFF
    -DFMT_TEST:BOOL=OFF
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    )
    ExternalProject_Add(curl
    PREFIX "vendor/curl/curl"
    GIT_REPOSITORY "https://github.com/curl/curl"
    GIT_TAG "master"
    GIT_CONFIG advice.detachedHead=false
    CMAKE_CACHE_ARGS
    -DBUILD_SHARED_LIBS:BOOL=OFF
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    -DBUILD_STATIC_LIBS:BOOL=ON
    -BUILD_SHARED_LIBS:BOOL=OFF
    # CONFIGURE_COMMAND ./configure --prefix=${CMAKE_BINARY_DIR}/installs --with-ssl=${CMAKE_BINARY_DIR}/installs
    # --enable-shared=no --disable-ldap --disable-ldaps --without-brotli
    # --without-zstd --without-libidn2 --without-nghttp2 #--enable-debug
    )
    ExternalProject_Add(libzlib
    PREFIX "vendor/madler/zlib"
    GIT_REPOSITORY https://github.com/madler/zlib.git
    GIT_TAG master
    CMAKE_ARGS
    -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
    -DBUILD_TESTING:BOOL=OFF
    -DBUILD_CURL_EXE:BOOL=OFF
    -DBUILD_SHARED_LIBS:BOOL=OFF
    -DCURL_STATICLIB:BOOL=ON
    # -DHTTP_ONLY:BOOL=ON
    -DCMAKE_BUILD_TYPE:STRING=Release
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    )
    ExternalProject_Add(libopenssl
    PREFIX "vendor/openssl/openssl"
    URL
    https://www.openssl.org/source/openssl-3.2.0.tar.gz
    CONFIGURE_COMMAND
    ./config --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
    make
    INSTALL_COMMAND
    make install_sw
    BUILD_IN_SOURCE 1
    )
    ExternalProject_Add(log4cxx
    PREFIX "vendor/apache/logging-log4cxx"
    GIT_REPOSITORY "https://github.com/apache/logging-log4cxx.git"
    GIT_TAG 0f20ec761ef24191094bb7b575ba3637f422a1e5
    TIMEOUT 10
    CMAKE_ARGS
    -DBUILD_TESTING:BOOL=OFF
    -DBUILD_SHARED_LIBS:BOOL=OFF
    -DAPU_STATIC:BOOL=ON
    -DAPR_STATIC:BOOL=ON
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
    -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
    # CONFIGURE_COMMAND ""
    # BUILD_COMMAND make
    # INSTALL_COMMAND make install
    UPDATE_COMMAND ""
    )
    ## ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK
    ## ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK
    ExternalProject_Add(sqlite
    PREFIX "vendor/sqlite/sqlite"
    GIT_REPOSITORY https://github.com/sqlite/sqlite.git
    GIT_TAG version-3.36.0
    SOURCE_DIR "${TD_CONTRIB_DIR}/sqlite"
    BINARY_DIR "${TD_CONTRIB_DIR}/sqlite"
    #BUILD_IN_SOURCE TRUE
    CONFIGURE_COMMAND "./configure"
    BUILD_COMMAND "$(MAKE)"
    INSTALL_COMMAND ""
    TEST_COMMAND ""
    )
    ```