This commit is contained in:
Michele Caini 2016-06-17 10:29:16 +02:00
commit e2791aa44f
16 changed files with 2759 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# QtCreator
*.user

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[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

0
AUTHORS Normal file
View File

136
CMakeLists.txt Normal file
View File

@ -0,0 +1,136 @@
#
# uvw
#
#
# Building in-tree is not allowed (we take care of your craziness).
#
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the source code and call cmake from there. Thank you.")
endif()
#
# Project configuration
#
project(uvw)
cmake_minimum_required(VERSION 3.4)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif(NOT CMAKE_BUILD_TYPE)
set(PROJECT_NAME "uvw")
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 1)
set(PROJECT_VERSION_PATCH 0)
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
set(SETTINGS_ORGANIZATION "Michele Caini")
set(SETTINGS_APPLICATION ${PROJECT_NAME})
set(PROJECT_AUTHOR "Michele Caini")
set(PROJECT_YEAR_COPYRIGHT "2016")
set(PROJECT_AUTHOR_EMAIL "michele.caini@gmail.com")
set(PROJECT_BUILD_MESSAGE ${PROJECT_NAME} " v" ${PROJECT_VERSION} " (" ${CMAKE_BUILD_TYPE} ")")
set(COPYRIGHT_BUILD_MESSAGE "Copyright (c) " ${PROJECT_YEAR_COPYRIGHT} " " ${PROJECT_AUTHOR} " <" ${PROJECT_AUTHOR_EMAIL} ">")
message("*")
message("* " ${PROJECT_BUILD_MESSAGE})
message("* " ${COPYRIGHT_BUILD_MESSAGE})
message("*")
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,dynamic_lookup")
else(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
endif(APPLE)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -DDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -DRELEASE")
add_definitions(
-DPROJECT_NAME=${PROJECT_NAME}
-DPROJECT_VERSION=${PROJECT_VERSION}
)
#
# CMake configuration
#
set(PROJECT_CMAKE_MODULES cmake/modules)
set(PROJECT_BUILD_DIR build)
set(PROJECT_DEPS_DIR deps)
set(PROJECT_SRC_DIR src)
set(PROJECT_TEST_DIR test)
set(PROJECT_RUNTIME_OUTPUT_DIRECTORY bin)
set(
CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${CMAKE_SOURCE_DIR}/${PROJECT_CMAKE_MODULES}
)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_RUNTIME_OUTPUT_DIRECTORY})
#
# Enable test support using ctest
#
include(CTest)
#
# Referenced packages
#
find_package(UV REQUIRED)
find_package(Threads REQUIRED)
find_package(GoogleTest REQUIRED)
#
# Referenced directories and targets
#
if(${GOOGLETEST_FOUND})
add_subdirectory(${PROJECT_TEST_DIR})
endif(${GOOGLETEST_FOUND})
#
# Keep your stuff and go further away, foolish.
#
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_VENDOR ${PROJECT_AUTHOR})
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "uvw")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION})
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}-src)
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
set(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/README.md)
set(CPACK_GENERATOR TGZ)
set(CPACK_SOURCE_GENERATOR TGZ)
set(CPACK_PACKAGING_INSTALL_DIRECTORY "uvw-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
include(CPack)
#
# I use QtCreator and I need the lines below, so do not ask. :-)
#
file(
GLOB_RECURSE PROJECT_FILES FOLLOW_SYMLINKS
*.txt *.c *.cpp *.hpp *.h *.in *.cmake *.sh Makefile *.md
)
add_custom_target(
QTCREATOR_FALLBACK ALL
COMMENT "Feel free to ignore this target, but please do not remove it."
SOURCES ${PROJECT_FILES}
)

0
LICENSE Normal file
View File

0
README.md Normal file
View File

0
TODO Normal file
View File

2
build/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -0,0 +1,92 @@
# 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/
NO_DEFAULT_PATH
)
find_library(
GOOGLETEST_MAIN_LIBRARY NAMES gtest_main
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/gtest/
NO_DEFAULT_PATH
)
find_library(
GOOGLEMOCK_LIBRARY NAMES gmock
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/
NO_DEFAULT_PATH
)
find_library(
GOOGLEMOCK_MAIN_LIBRARY NAMES gmock_main
PATHS ${BUILD_DEPS_DIR}/${GOOGLETEST_DEPS_DIR}/build/googlemock/
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

@ -0,0 +1,65 @@
# 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
PATHS ${BUILD_DEPS_DIR}/${UV_DEPS_DIR}/.libs/
NO_DEFAULT_PATH
)
find_library(
UV_SHARED_LIBRARY NAMES uv
PATHS ${BUILD_DEPS_DIR}/${UV_DEPS_DIR}/.libs/
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
)

46
deps.sh Executable file
View File

@ -0,0 +1,46 @@
#!/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 Submodule

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

1
deps/libuv vendored Submodule

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

24
docs/CMakeLists.txt Normal file
View File

@ -0,0 +1,24 @@
#
# Doxygen configuration (documentation)
#
set(DOXY_IN_FILE doxy.in)
set(DOXY_SOURCE_DIRECTORY ${PROJECT_SRC_DIR})
set(DOXY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set(DOXY_CFG_FILE doxy.cfg)
configure_file(${DOXY_IN_FILE} ${DOXY_CFG_FILE} @ONLY)
add_custom_target(
${TARGET_DOCS}
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/${DOXY_CFG_FILE}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
VERBATIM
SOURCES ${DOXY_IN_FILE}
)
install(
DIRECTORY ${DOXY_OUTPUT_DIRECTORY}/html
DESTINATION ${PROJECT_SHARE_OUTPUT_DIRECTORY}/${PROJECT_NAME}-${PROJECT_VERSION}/
)

2384
docs/doxy.in Normal file

File diff suppressed because it is too large Load Diff

0
test/CMakeLists.txt Normal file
View File