deps.sh is no longer required + added Utilities::setupArgs

This commit is contained in:
Michele Caini 2017-05-24 17:13:40 +02:00
parent 13510d796d
commit f6d0fd976a
16 changed files with 99 additions and 295 deletions

6
.gitmodules vendored
View File

@ -1,6 +0,0 @@
[submodule "deps/googletest"]
path = deps/googletest
url = https://github.com/google/googletest.git
[submodule "deps/libuv"]
path = deps/libuv
url = https://github.com/libuv/libuv.git

View File

@ -45,7 +45,6 @@ install:
- echo ${CXX}
- ${CXX} --version
- ${CXX} -v
- ./deps.sh
script:
- mkdir -p build && cd build

View File

@ -64,6 +64,7 @@ add_definitions(
#
set(PROJECT_CMAKE_MODULES cmake/modules)
set(PROJECT_CMAKE_IN cmake/in)
set(PROJECT_BUILD_DIR build)
set(PROJECT_DEPS_DIR deps)
set(PROJECT_DOCS_DIR docs)
@ -92,12 +93,29 @@ include(CTest)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(UV REQUIRED)
find_package(Threads REQUIRED)
find_package(GoogleTest)
find_package(Doxygen 1.8)
find_package(LibRt)
#
# Download and unpack dependencies
#
# gtest, gtest_main, gmock and gmock_main targets are available from now on
configure_file(${PROJECT_CMAKE_IN}/googletest.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
include_directories(${gtest_SOURCE_DIR}/include ${gmock_SOURCE_DIR}/include)
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src ${CMAKE_BINARY_DIR}/googletest-build)
configure_file(${PROJECT_CMAKE_IN}/libuv.in libuv-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/libuv-download)
execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/libuv-download)
include_directories(${CMAKE_BINARY_DIR}/libuv-src/include)
find_library(libuv_static NAMES libuv.a libuv PATHS ${CMAKE_BINARY_DIR}/libuv-src PATH_SUFFIXES .libs Release NO_DEFAULT_PATH)
find_library(libuv_shared NAMES uv libuv PATHS ${CMAKE_BINARY_DIR}/libuv-src PATH_SUFFIXES .libs Release NO_DEFAULT_PATH)
#
# Referenced directories and targets
#
@ -106,9 +124,7 @@ if(${DOXYGEN_FOUND})
add_subdirectory(${PROJECT_DOCS_DIR})
endif(${DOXYGEN_FOUND})
if(${GOOGLETEST_FOUND})
add_subdirectory(${PROJECT_TEST_DIR})
endif(${GOOGLETEST_FOUND})
add_subdirectory(${PROJECT_TEST_DIR})
#
# Keep your stuff and go further away, foolish.

View File

@ -14,7 +14,6 @@ configuration:
- Release
before_build:
- deps.bat
- cd %BUILD_DIR%
- cmake .. -G"%CMAKE_GENERATOR_NAME%"

16
cmake/in/googletest.in Normal file
View File

@ -0,0 +1,16 @@
project(googletest-download NONE)
cmake_minimum_required(VERSION 3.4)
include(ExternalProject)
ExternalProject_Add(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

16
cmake/in/libuv.in Normal file
View File

@ -0,0 +1,16 @@
project(libuv-download NONE)
cmake_minimum_required(VERSION 3.4)
include(ExternalProject)
ExternalProject_Add(
libuv
GIT_REPOSITORY https://github.com/libuv/libuv.git
GIT_TAG v1.x
SOURCE_DIR ${CMAKE_BINARY_DIR}/libuv-src
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND sh <SOURCE_DIR>/autogen.sh && ./configure
BUILD_COMMAND make -j4
INSTALL_COMMAND ""
TEST_COMMAND ""
)

View File

@ -1,96 +0,0 @@
# FindGoogleTest
# ---------
#
# Locate Google Test Framework
#
# This module defines:
#
# ::
#
# GOOGLETEST_INCLUDE_DIRS, where to find the headers
# GOOGLETEST_LIBRARIES, the libraries against which to link
# GOOGLETEST_FOUND, if false, do not try to use the above mentioned vars
#
set(BUILD_DEPS_DIR ${CMAKE_SOURCE_DIR}/${PROJECT_DEPS_DIR})
set(GOOGLETEST_DEPS_DIR googletest)
find_path(
GOOGLETEST_INCLUDE_DIR NAMES gtest/gtest.h
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/googletest/include/
NO_DEFAULT_PATH
)
find_path(
GOOGLEMOCK_INCLUDE_DIR NAMES gmock/gmock.h
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/googlemock/include/
NO_DEFAULT_PATH
)
find_library(
GOOGLETEST_LIBRARY NAMES gtest
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/gtest/
PATH_SUFFIXES Release
NO_DEFAULT_PATH
)
find_library(
GOOGLETEST_MAIN_LIBRARY NAMES gtest_main
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/gtest/
PATH_SUFFIXES Release
NO_DEFAULT_PATH
)
find_library(
GOOGLEMOCK_LIBRARY NAMES gmock
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/
PATH_SUFFIXES Release
NO_DEFAULT_PATH
)
find_library(
GOOGLEMOCK_MAIN_LIBRARY NAMES gmock_main
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/
PATH_SUFFIXES Release
NO_DEFAULT_PATH
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
GOOGLETEST
FOUND_VAR GOOGLETEST_FOUND
REQUIRED_VARS
GOOGLETEST_LIBRARY
GOOGLETEST_MAIN_LIBRARY
GOOGLEMOCK_LIBRARY
GOOGLEMOCK_MAIN_LIBRARY
GOOGLETEST_INCLUDE_DIR
GOOGLEMOCK_INCLUDE_DIR
)
if(GOOGLETEST_FOUND)
set(
GOOGLETEST_LIBRARIES
${GOOGLETEST_LIBRARY}
${GOOGLETEST_MAIN_LIBRARY}
${GOOGLEMOCK_LIBRARY}
${GOOGLEMOCK_MAIN_LIBRARY}
)
set(
GOOGLETEST_INCLUDE_DIRS
${GOOGLETEST_INCLUDE_DIR}
${GOOGLEMOCK_INCLUDE_DIR}
)
endif(GOOGLETEST_FOUND)
mark_as_advanced(
GOOGLETEST_INCLUDE_DIR
GOOGLEMOCK_INCLUDE_DIR
GOOGLETEST_LIBRARY
GOOGLETEST_MAIN_LIBRARY
GOOGLEMOCK_LIBRARY
GOOGLEMOCK_MAIN_LIBRARY
)

View File

@ -20,12 +20,13 @@
# A user may set ``LIBRT_ROOT`` to a realtime installation root to tell this
# module where to look.
find_path(LIBRT_INCLUDE_DIRS
NAMES time.h
PATHS ${LIBRT_ROOT}/include/
find_path(
LIBRT_INCLUDE_DIRS
NAMES time.h
PATHS ${LIBRT_ROOT}/include/
)
find_library(LIBRT_LIBRARIES rt)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibRt DEFAULT_MSG LIBRT_LIBRARIES LIBRT_INCLUDE_DIRS)
mark_as_advanced(LIBRT_INCLUDE_DIRS LIBRT_LIBRARIES)

View File

@ -1,67 +0,0 @@
# FindUV
# ---------
#
# Locate libuv
#
# This module defines:
#
# ::
#
# UV_INCLUDE_DIRS, where to find the headers
# UV_LIBRARIES, the libraries against which to link
# UV_FOUND, if false, do not try to use the above mentioned vars
#
set(BUILD_DEPS_DIR ${CMAKE_SOURCE_DIR}/${PROJECT_DEPS_DIR})
set(UV_DEPS_DIR libuv)
find_path(
UV_INCLUDE_DIR NAMES uv.h
PATHS ${BUILD_DEPS_DIR}/${UV_DEPS_DIR}/include/
NO_DEFAULT_PATH
)
find_library(
UV_STATIC_LIBRARY NAMES libuv.a libuv
PATHS ${BUILD_DEPS_DIR}/${UV_DEPS_DIR}
PATH_SUFFIXES .libs Release
NO_DEFAULT_PATH
)
find_library(
UV_SHARED_LIBRARY NAMES uv libuv
PATHS ${BUILD_DEPS_DIR}/${UV_DEPS_DIR}
PATH_SUFFIXES .libs Release
NO_DEFAULT_PATH
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
UV
FOUND_VAR UV_FOUND
REQUIRED_VARS
UV_STATIC_LIBRARY
UV_SHARED_LIBRARY
UV_INCLUDE_DIR
)
if(UV_FOUND)
set(
UV_LIBRARIES
${UV_STATIC_LIBRARY}
${UV_SHARED_LIBRARY}
)
set(
UV_INCLUDE_DIRS
${UV_INCLUDE_DIR}
)
endif(UV_FOUND)
mark_as_advanced(
UV_INCLUDE_DIR
UV_STATIC_LIBRARY
UV_SHARED_LIBRARY
)

View File

@ -1,37 +0,0 @@
@echo off
set SRC_DIR=%~dp0
if not defined ARCH set ARCH=x86
if defined platform if "%platform%"=="x64" set ARCH=x64
@rem init/update submodules
cd %SRC_DIR%
git submodule update --init
@rem compile dependencies
@rem uv first because vcbuild.bat gives us good things like:
@rem - msbuild in PATH
@rem - variables like config, msbuild_platform
cd %SRC_DIR%deps\libuv
@rem the arguments to vcbuild make all the difference to further builds
call vcbuild.bat release %ARCH% shared
if "%msbuild_platform%"=="x64" (
set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 Win64
) else (
set CMAKE_GENERATOR_NAME=Visual Studio 14 2015
)
set GTEST_BUILD_DIR=%SRC_DIR%deps\googletest\build
if exist %GTEST_BUILD_DIR%\NUL rd /s /q %GTEST_BUILD_DIR%
md %GTEST_BUILD_DIR%
cd %GTEST_BUILD_DIR%
cmake .. -Dgtest_force_shared_crt=ON -G"%CMAKE_GENERATOR_NAME%"
msbuild googlemock\gmock.sln /p:Configuration=%config% /p:Platform="%msbuild_platform%" /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /m
msbuild googlemock\gtest\gtest.sln /p:Configuration=%config% /p:Platform="%msbuild_platform%" /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /m
@rem go back home
cd %SRC_DIR%

46
deps.sh
View File

@ -1,46 +0,0 @@
#!/usr/bin/env bash
#
# google docet - jump within the directory which contains this script
#
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
#
# set aside the base dir for future references
#
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
#
# init/update submodules
#
cd "$DIR"
git submodule update --init # --recursive
#
# compile dependencies
#
rm -rf "$DIR"/deps/googletest/build
mkdir "$DIR"/deps/googletest/build
cd "$DIR"/deps/googletest/build
cmake .. && make -j4
cd "$DIR"/deps/libuv
sh autogen.sh
./configure
make -j4
#
# go back home
#
cd "$DIR"

1
deps/googletest vendored

@ -1 +0,0 @@
Subproject commit 0a439623f75c029912728d80cb7f1b8b48739ca4

1
deps/libuv vendored

@ -1 +0,0 @@
Subproject commit 2fc54807fca6d3d3022d23fda6d3c060ebbc5be1

View File

@ -584,6 +584,17 @@ struct Utilities {
return avg;
}
/**
* @brief Store the program arguments.
*
* Required for getting / setting the process title.
*
* @return Arguments that haven't been consumed internally.
*/
static char ** setupArgs(int argc, char** argv) {
return uv_setup_args(argc, argv);
}
/**
* @brief Gets the title of the current process.
* @return The process title.

View File

@ -4,17 +4,11 @@
set(UVW_SRC_DIR ${CMAKE_SOURCE_DIR}/${PROJECT_SRC_DIR})
set(
COMMON_INCLUDE_DIRS
${UVW_SRC_DIR}
${GOOGLETEST_INCLUDE_DIRS}
${UV_INCLUDE_DIRS}
)
set(
COMMON_LINK_LIBS
${GOOGLETEST_LIBRARIES}
${UV_STATIC_LIBRARY}
gtest
gtest_main
${libuv_static}
Threads::Threads
)
@ -27,7 +21,7 @@ if(WIN32)
endif(WIN32)
add_library(odr OBJECT odr.cpp)
target_include_directories(odr PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(odr PRIVATE ${UVW_SRC_DIR})
# List of available targets
@ -56,7 +50,7 @@ set(TARGET_WORK work)
set(TARGET_MAIN_SOURCES $<TARGET_OBJECTS:odr> main.cpp)
add_executable(${TARGET_MAIN} ${TARGET_MAIN_SOURCES})
target_include_directories(${TARGET_MAIN} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_MAIN} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_MAIN} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_MAIN} COMMAND ${TARGET_MAIN})
@ -64,7 +58,7 @@ add_test(NAME ${TARGET_MAIN} COMMAND ${TARGET_MAIN})
set(TARGET_ASYNC_SOURCES $<TARGET_OBJECTS:odr> uvw/async.cpp)
add_executable(${TARGET_ASYNC} ${TARGET_ASYNC_SOURCES})
target_include_directories(${TARGET_ASYNC} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_ASYNC} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_ASYNC} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_ASYNC} COMMAND ${TARGET_ASYNC})
@ -72,7 +66,7 @@ add_test(NAME ${TARGET_ASYNC} COMMAND ${TARGET_ASYNC})
set(TARGET_CHECK_SOURCES $<TARGET_OBJECTS:odr> uvw/check.cpp)
add_executable(${TARGET_CHECK} ${TARGET_CHECK_SOURCES})
target_include_directories(${TARGET_CHECK} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_CHECK} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_CHECK} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_CHECK} COMMAND ${TARGET_CHECK})
@ -80,7 +74,7 @@ add_test(NAME ${TARGET_CHECK} COMMAND ${TARGET_CHECK})
set(TARGET_DNS_SOURCES $<TARGET_OBJECTS:odr> uvw/dns.cpp)
add_executable(${TARGET_DNS} ${TARGET_DNS_SOURCES})
target_include_directories(${TARGET_DNS} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_DNS} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_DNS} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_DNS} COMMAND ${TARGET_DNS})
@ -88,7 +82,7 @@ add_test(NAME ${TARGET_DNS} COMMAND ${TARGET_DNS})
set(TARGET_EMITTER_SOURCES $<TARGET_OBJECTS:odr> uvw/emitter.cpp)
add_executable(${TARGET_EMITTER} ${TARGET_EMITTER_SOURCES})
target_include_directories(${TARGET_EMITTER} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_EMITTER} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_EMITTER} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_EMITTER} COMMAND ${TARGET_EMITTER})
@ -98,7 +92,7 @@ set(TARGET_FS_REQ_SOURCES $<TARGET_OBJECTS:odr> uvw/fs_req.cpp)
set(TARGET_FS_REQ_DIR ${CMAKE_CURRENT_BINARY_DIR}/fs_req)
file(MAKE_DIRECTORY ${TARGET_FS_REQ_DIR})
add_executable(${TARGET_FS_REQ} ${TARGET_FS_REQ_SOURCES})
target_include_directories(${TARGET_FS_REQ} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_FS_REQ} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_FS_REQ} PRIVATE ${COMMON_LINK_LIBS})
target_compile_definitions(${TARGET_FS_REQ} PRIVATE TARGET_FS_REQ_DIR="${TARGET_FS_REQ_DIR}")
add_test(NAME ${TARGET_FS_REQ} COMMAND ${TARGET_FS_REQ})
@ -109,7 +103,7 @@ set(TARGET_FILE_REQ_SOURCES $<TARGET_OBJECTS:odr> uvw/file_req.cpp)
set(TARGET_FILE_REQ_DIR ${CMAKE_CURRENT_BINARY_DIR}/file_req)
file(MAKE_DIRECTORY ${TARGET_FILE_REQ_DIR})
add_executable(${TARGET_FILE_REQ} ${TARGET_FILE_REQ_SOURCES})
target_include_directories(${TARGET_FILE_REQ} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_FILE_REQ} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_FILE_REQ} PRIVATE ${COMMON_LINK_LIBS})
target_compile_definitions(${TARGET_FILE_REQ} PRIVATE TARGET_FILE_REQ_DIR="${TARGET_FILE_REQ_DIR}")
add_test(NAME ${TARGET_FILE_REQ} COMMAND ${TARGET_FILE_REQ})
@ -118,7 +112,7 @@ add_test(NAME ${TARGET_FILE_REQ} COMMAND ${TARGET_FILE_REQ})
set(TARGET_HANDLE_SOURCES $<TARGET_OBJECTS:odr> uvw/handle.cpp)
add_executable(${TARGET_HANDLE} ${TARGET_HANDLE_SOURCES})
target_include_directories(${TARGET_HANDLE} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_HANDLE} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_HANDLE} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_HANDLE} COMMAND ${TARGET_HANDLE})
@ -126,7 +120,7 @@ add_test(NAME ${TARGET_HANDLE} COMMAND ${TARGET_HANDLE})
set(TARGET_IDLE_SOURCES $<TARGET_OBJECTS:odr> uvw/idle.cpp)
add_executable(${TARGET_IDLE} ${TARGET_IDLE_SOURCES})
target_include_directories(${TARGET_IDLE} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_IDLE} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_IDLE} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_IDLE} COMMAND ${TARGET_IDLE})
@ -134,7 +128,7 @@ add_test(NAME ${TARGET_IDLE} COMMAND ${TARGET_IDLE})
set(TARGET_LOOP_SOURCES $<TARGET_OBJECTS:odr> uvw/loop.cpp)
add_executable(${TARGET_LOOP} ${TARGET_LOOP_SOURCES})
target_include_directories(${TARGET_LOOP} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_LOOP} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_LOOP} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_LOOP} COMMAND ${TARGET_LOOP})
@ -142,7 +136,7 @@ add_test(NAME ${TARGET_LOOP} COMMAND ${TARGET_LOOP})
set(TARGET_PREPARE_SOURCES $<TARGET_OBJECTS:odr> uvw/prepare.cpp)
add_executable(${TARGET_PREPARE} ${TARGET_PREPARE_SOURCES})
target_include_directories(${TARGET_PREPARE} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_PREPARE} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_PREPARE} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_PREPARE} COMMAND ${TARGET_PREPARE})
@ -150,14 +144,14 @@ add_test(NAME ${TARGET_PREPARE} COMMAND ${TARGET_PREPARE})
set(TARGET_REQUEST_SOURCES $<TARGET_OBJECTS:odr> uvw/request.cpp)
add_executable(${TARGET_REQUEST} ${TARGET_REQUEST_SOURCES})
target_include_directories(${TARGET_REQUEST} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_REQUEST} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_REQUEST} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_REQUEST} COMMAND ${TARGET_REQUEST})
# Test TARGET_RESOURCE
set(TARGET_RESOURCE_SOURCES $<TARGET_OBJECTS:odr> uvw/resource.cpp)
add_executable(${TARGET_RESOURCE} ${TARGET_RESOURCE_SOURCES})
target_include_directories(${TARGET_RESOURCE} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_RESOURCE} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_RESOURCE} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_RESOURCE} COMMAND ${TARGET_RESOURCE})
@ -165,7 +159,7 @@ add_test(NAME ${TARGET_RESOURCE} COMMAND ${TARGET_RESOURCE})
set(TARGET_SIGNAL_SOURCES $<TARGET_OBJECTS:odr> uvw/signal.cpp)
add_executable(${TARGET_SIGNAL} ${TARGET_SIGNAL_SOURCES})
target_include_directories(${TARGET_SIGNAL} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_SIGNAL} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_SIGNAL} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_SIGNAL} COMMAND ${TARGET_SIGNAL})
@ -173,7 +167,7 @@ add_test(NAME ${TARGET_SIGNAL} COMMAND ${TARGET_SIGNAL})
set(TARGET_TCP_SOURCES $<TARGET_OBJECTS:odr> uvw/tcp.cpp)
add_executable(${TARGET_TCP} ${TARGET_TCP_SOURCES})
target_include_directories(${TARGET_TCP} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_TCP} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_TCP} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_TCP} COMMAND ${TARGET_TCP})
@ -181,7 +175,7 @@ add_test(NAME ${TARGET_TCP} COMMAND ${TARGET_TCP})
set(TARGET_TIMER_SOURCES $<TARGET_OBJECTS:odr> uvw/timer.cpp)
add_executable(${TARGET_TIMER} ${TARGET_TIMER_SOURCES})
target_include_directories(${TARGET_TIMER} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_TIMER} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_TIMER} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_TIMER} COMMAND ${TARGET_TIMER})
@ -189,7 +183,7 @@ add_test(NAME ${TARGET_TIMER} COMMAND ${TARGET_TIMER})
set(TARGET_TTY_SOURCES $<TARGET_OBJECTS:odr> uvw/tty.cpp)
add_executable(${TARGET_TTY} ${TARGET_TTY_SOURCES})
target_include_directories(${TARGET_TTY} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_TTY} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_TTY} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_TTY} COMMAND ${TARGET_TTY})
@ -197,7 +191,7 @@ add_test(NAME ${TARGET_TTY} COMMAND ${TARGET_TTY})
set(TARGET_UDP_SOURCES $<TARGET_OBJECTS:odr> uvw/udp.cpp)
add_executable(${TARGET_UDP} ${TARGET_UDP_SOURCES})
target_include_directories(${TARGET_UDP} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_UDP} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_UDP} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_UDP} COMMAND ${TARGET_UDP})
@ -205,7 +199,7 @@ add_test(NAME ${TARGET_UDP} COMMAND ${TARGET_UDP})
set(TARGET_UTIL_SOURCES $<TARGET_OBJECTS:odr> uvw/util.cpp)
add_executable(${TARGET_UTIL} ${TARGET_UTIL_SOURCES})
target_include_directories(${TARGET_UTIL} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_UTIL} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_UTIL} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_UTIL} COMMAND ${TARGET_UTIL})
@ -213,6 +207,6 @@ add_test(NAME ${TARGET_UTIL} COMMAND ${TARGET_UTIL})
set(TARGET_WORK_SOURCES $<TARGET_OBJECTS:odr> uvw/work.cpp)
add_executable(${TARGET_WORK} ${TARGET_WORK_SOURCES})
target_include_directories(${TARGET_WORK} PRIVATE ${COMMON_INCLUDE_DIRS})
target_include_directories(${TARGET_WORK} PRIVATE ${UVW_SRC_DIR})
target_link_libraries(${TARGET_WORK} PRIVATE ${COMMON_LINK_LIBS})
add_test(NAME ${TARGET_WORK} COMMAND ${TARGET_WORK})

View File

@ -1,3 +1,4 @@
#include <memory>
#include <gtest/gtest.h>
#include <uvw.hpp>
@ -100,6 +101,11 @@ TEST(Util, Utilities) {
ASSERT_FALSE(uvw::Utilities::cwd().empty());
ASSERT_TRUE(uvw::Utilities::chdir(uvw::Utilities::cwd()));
std::unique_ptr<char[], void(*)(void *)> fake{new char[1], [](void *ptr) { delete[] static_cast<char *>(ptr); }};
char *argv = fake.get();
argv[0] = '\0';
ASSERT_NE(uvw::Utilities::setupArgs(1, &argv), nullptr);
ASSERT_NE(uvw::Utilities::processTitle(), std::string{});
ASSERT_TRUE(uvw::Utilities::processTitle(uvw::Utilities::processTitle()));
}