Stiffstream / restinio

Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use
Other
1.13k stars 93 forks source link

Is ninja supported? #212

Closed wiluite closed 3 months ago

wiluite commented 3 months ago

Hello,

For now (0.7 versions) this works:

cmake.exe -G "MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=mingw32-make.exe <dev_directory> 
mingw32-make

but this does not:

cmake.exe -G Ninja  -DCMAKE_MAKE_PROGRAM=ninja.exe <dev_directory>
ninja

(cmake seems to configure that, but building process is in endless-loop, trying to start)

Im just curious, because 0.6.19 could be earlier built with ninja. (Also I checked that in Clion to automate changing things quickly.)

eao197 commented 3 months ago

Hi!

There is the result of a my check with Visual Studio 2022 Community Edition:

C:\home\eao197\sandboxes\restinio.github\dev\cmake_build_ninja>cmake -G Ninja ..
-- The CXX compiler identification is MSVC 19.39.33520.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SET C++17 BY DEFAULT
-- RESTINIO_INSTALL:           ON
-- RESTINIO_TEST:              ON
-- RESTINIO_SAMPLE:            ON
-- RESTINIO_BENCHMARK:         ON
-- RESTINIO_WITH_SOBJECTIZER:  ON
-- RESTINIO_DEP_STANDALONE_ASIO: find
-- RESTINIO_DEP_BOOST_ASIO:      find
-- RESTINIO_DEP_LLHTTP:          local
-- RESTINIO_DEP_FMT:             local
-- RESTINIO_DEP_EXPECTED_LITE:   local
-- RESTINIO_DEP_CATCH2:          local
-- RESTINIO_DEP_SOBJECTIZER:     local
-- RESTINIO_ASIO_SOURCE: standalone
-- RESTINIO_FMT_TARGET:  will be decided dynamically
-- Defining RESTinio dependencies...
-- Finding ASIO package...
-- asio libraries:
-- asio include dir: C:/home/eao197/sandboxes/restinio.github/dev/asio/include
========================================
-- Add subdirectory nodejs/llhttp
-- The C compiler identification is MSVC 19.39.33520.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
--
--
-- Project configure summary:
--
--   CMake build type .................: DEBUG
--   Install prefix ...................: C:/Program Files (x86)/restinio_root
--   Build shared library .............: OFF
--   Build static library .............: ON
--
========================================
========================================
-- Add subdirectory fmt
-- Version: 10.1.0
-- Build type: Debug
========================================
========================================
-- Add subdirectory expected-lite
-- Project 'expected_lite', package 'expected-lite' version: '0.6.3'
========================================
========================================
-- Add subdirectory so_5
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE
-- RESTINIO_SOBJECTIZER_LIB_LINK_NAME: sobjectizer::StaticLib
========================================
========================================
adding restinio-helpers
========================================
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
-- Could NOT find PCRE (missing: PCRE_LIBRARY PCRE_INCLUDE_DIR)
-- Could NOT find PCRE2 (missing: PCRE2_LIBRARY PCRE2_INCLUDE_DIR)
-- Could NOT find PCRE2 (missing: PCRE2_LIBRARY PCRE2_INCLUDE_DIR)
========================================
-- Defining restinio target...
-- RESTINIO_VERSION:   0.7.2
-- RESTINIO_SOVERSION: 0.7
-- RESTINIO_VERSION: 0.7.2
-- restinio target will depend on 'asio::asio' target
-- restinio target will depend on 'llhttp::llhttp' target
-- restinio target will depend on 'fmt::fmt' target
-- restinio target will depend on 'nonstd::expected-lite' target
========================================
========================================
-- Add subdirectory catch2
========================================
-- Configuring done (6.9s)
-- Generating done (0.6s)
-- Build files have been written to: C:/home/eao197/sandboxes/restinio.github/dev/cmake_build_ninja

C:\home\eao197\sandboxes\restinio.github\dev\cmake_build_ninja>cmake --build . --parallel 3
[366/366] Linking CXX executable bin\_bench.restinio.single_handler_so5_timer.exe

C:\home\eao197\sandboxes\restinio.github\dev\cmake_build_ninja>cmake --version
cmake version 3.28.0-msvc1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

The CMake and Ninja are from VS.

wiluite commented 3 months ago

Well, thanks! When I turned ninja.exe from CLion's distibution to VS Community's executable, I was able to successfully start building RESTinio-0.7.1 with bundled mingw compiler and bundled cmake.

However, if interested, you still can check building 0.7.1 version against CLion's 2022.3.3 ninja.exe (1.10.2). With it 0.6.19 version was being built almost ok.