init
This commit is contained in:
commit
e2791aa44f
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# QtCreator
|
||||
*.user
|
||||
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal 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
|
||||
136
CMakeLists.txt
Normal file
136
CMakeLists.txt
Normal 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}
|
||||
)
|
||||
2
build/.gitignore
vendored
Normal file
2
build/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
||||
92
cmake/modules/FindGoogleTest.cmake
Normal file
92
cmake/modules/FindGoogleTest.cmake
Normal 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
|
||||
)
|
||||
65
cmake/modules/FindUV.cmake
Normal file
65
cmake/modules/FindUV.cmake
Normal 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
46
deps.sh
Executable 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
1
deps/googletest
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 0a439623f75c029912728d80cb7f1b8b48739ca4
|
||||
1
deps/libuv
vendored
Submodule
1
deps/libuv
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 2fc54807fca6d3d3022d23fda6d3c060ebbc5be1
|
||||
24
docs/CMakeLists.txt
Normal file
24
docs/CMakeLists.txt
Normal 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
2384
docs/doxy.in
Normal file
File diff suppressed because it is too large
Load Diff
0
test/CMakeLists.txt
Normal file
0
test/CMakeLists.txt
Normal file
Loading…
Reference in New Issue
Block a user