Skip to content

Commit

Permalink
no longer needed to specify G3 paths for header and lib (#42)
Browse files Browse the repository at this point in the history
  • Loading branch information
Kjell Hedström authored Mar 30, 2017
1 parent eb8b43c commit 1e602e4
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 107 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ The sink usage should be clear.
## Requirements
**g3log**<br>
G3sinks requires [g3log](https://github.com/KjellKod/g3log) to be installed.
The g3log install location has to be specified during the cmake build step. In the example below the g3log installation
location is `/usr/local`
The g3log install location has to be specified during the cmake build step. In the example below the g3log installation location is `/usr/local` with libraries in '/usr/local/lib' and 'headers in '/usr/local/include'
The given argument for the location would then be : 'cmake -DCMAKE_PREFIX_PATH=/usr/local/'

**boost**<br>
G3sinks requires [boost](http://www.boost.org/doc/libs/1_63_0/index.html) to be installed.
Expand All @@ -49,7 +49,7 @@ cd ..
cd logrotate
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS:BOOL=ON -DG3_LIBRARY_PATH=/usr/local/lib -DG3_HEADER_PATH=/usr/local/include -DBOOST_ROOT=/usr/local -DADD_LOGROTATE_UNIT_TEST=ON ..
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/local/ -DBOOST_ROOT=/usr/local -DADD_LOGROTATE_UNIT_TEST=ON ..
make -j
```

Expand Down
94 changes: 70 additions & 24 deletions logrotate/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,76 @@ PROJECT (LogRotate)
SET(PROJECT_SRC ${LogRotate_SOURCE_DIR}/src)
SET(DIR_UNIT_TEST ${LogRotate_SOURCE_DIR}/test)
SET(DIR_3RDPARTY ${LogRotate_SOURCE_DIR}/../3rdparty)
SET(G3LOG_LIBRARY g3logger)


MESSAGE(" PROJECT_SRC = : ${PROJECT_SRC}")
INCLUDE_DIRECTORIES(${PROJECT_SRC})
SET(ACTIVE_CPP0xx_DIR "Release")


SET(MAJOR_VERSION 1)
IF (NOT DEFINED ${VERSION})
MESSAGE("Extracting git software version")
execute_process(COMMAND bash "-c" "git rev-list --branches HEAD | wc -l | tr -d ' ' | tr -d '\n'" OUTPUT_VARIABLE GIT_VERSION)
SET(MINOR_VERSION 0)
SET(BUILD_NUMBER ${GIT_VERSION})
SET(VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${BUILD_NUMBER})
ENDIF()
MESSAGE("Software Version: ${VERSION}")

SET(CMAKE_INSTALL_LIBDIR lib CACHE PATH "Output dir for libraries")
SET(CMAKE_INSTALL_HEADERDIR include CACHE PATH "Output dir for headers")

IF (NOT DEFINED ${CPACK_INSTALL_PREFIX})
SET(CPACK_INSTALL_PREFIX "/usr/local")
ENDIF()





# Load PATHS
INCLUDE (${LogRotate_SOURCE_DIR}/Options.cmake)
INCLUDE_DIRECTORIES(${G3_HEADER_PATH})

#Find all libraries
#
# Find all libraries
#

IF (NOT DEFINED ${CMAKE_PREFIX_PATH})
SET(CMAKE_PREFIX_PATH /usr/local)
ENDIF()


find_library(g3logger g3logger PATHS /usr/local/probe/lib )
include_directories(${CMAKE_PREFIX_PATH}/include)

find_package(Boost COMPONENTS filesystem system REQUIRED)

find_library(BOOST_FILESYSTEM boost_filesystem PATHS /usr/local/probe/lib ${BOOST_ROOT})
set(Boost_LIBRARIES ${BOOST_FILESYSTEM})

find_library(BOOST_SYSTEM boost_system PATHS /usr/local/probe/lib ${BOOST_ROOT} )
list(APPEND Boost_LIBRARIES ${BOOST_SYSTEM})
include_directories(${Boost_INCLUDE_DIRS})
option( BOOST_ALL_DYN_LINK "If set, use Boost dynamic libraries (boost_*); otherwise static (libboost_*)." OFF )
if( BOOST_ALL_DYN_LINK )
add_definitions( -DBOOST_ALL_DYN_LINK )
endif()

MESSAGE(" boost root: " ${BOOST_ROOT})
MESSAGE(" boost include : " ${Boost_INCLUDE_DIRS})
MESSAGE("BOOST LIBRARIES: ${Boost_LIBRARIES}")


find_package( ZLIB REQUIRED )
include_directories( ${ZLIB_INCLUDE_DIRS} )
find_library(G3LOG ${G3LOG_LIBRARY_TYPE} PATHS ${G3_LIBRARY_PATH})





#
# Build
#
# GENERIC STEPS
FILE(GLOB SRC_FILES ${PROJECT_SRC}/*.h ${PROJECT_SRC}/*.h ${PROJECT_SRC}/*.ipp ${PROJECT_SRC}/*.cpp)


IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang")
MESSAGE("")
Expand All @@ -48,7 +96,6 @@ IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang")
ELSE()
set(PLATFORM_LINK_LIBRIES rt c++abi)
ENDIF()

ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
MESSAGE("")
MESSAGE("cmake for GCC ")
Expand All @@ -57,14 +104,11 @@ ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
ENDIF()


# GENERIC STEPS
FILE(GLOB SRC_FILES ${PROJECT_SRC}/*.h ${PROJECT_SRC}/*.h ${PROJECT_SRC}/*.ipp ${PROJECT_SRC}/*.cpp)


# Setup Library name
#
# Setup Library
#
SET(LIBRARY_TO_BUILD g3logrotate)
MESSAGE("BOOST LIBRARIES: ${Boost_LIBRARIES}")
# Build the library
INCLUDE_DIRECTORIES(${PROJECT_SRC})

# see Options.cmake
Expand All @@ -74,28 +118,30 @@ ELSE()
IF(NOT(CMAKE_VERSION LESS 3.4) AND MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
ENDIF()

ADD_LIBRARY(${LIBRARY_TO_BUILD} SHARED ${SRC_FILES})
ENDIF()

SET(${LIBRARY_TO_BUILD}_VERSION_STRING)

SET(${LIBRARY_TO_BUILD}_VERSION_STRING ${VERSION})
SET_TARGET_PROPERTIES(${LIBRARY_TO_BUILD} PROPERTIES LINKER_LANGUAGE CXX)
TARGET_LINK_LIBRARIES(${LIBRARY_TO_BUILD} ${Boost_LIBRARIES} ${ZLIB_LIBRARIES} ${G3LOG})
SET_TARGET_PROPERTIES(${LIBRARY_TO_BUILD} PROPERTIES LINKER_LANGUAGE CXX SOVERSION ${VERSION})

MESSAGE("Libraries, g3log: ${G3LOG}")
MESSAGE("Libraries, g3log: ${g3logger}")
MESSAGE("Libraries, boost: ${Boost_LIBRARIES}")
MESSAGE("Libraries, zlib: ${ZLIB_LIBRARIES}")

#
# Setup unit tests
#
INCLUDE (${LogRotate_SOURCE_DIR}/test/Test.cmake)

IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

#
# make package or make install
#
IF( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
FILE(GLOB HEADER_FILES ${PROJECT_SRC}/g3sinks/*.h)
# ==========================================================================
# Package handling is done AFTER all other CMake setup
# usage: make package
# Check the output result and install accordingly.
# ==========================================================================
INCLUDE (${LogRotate_SOURCE_DIR}/CPackLists.txt)
ENDIF()

28 changes: 6 additions & 22 deletions logrotate/CPackLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,17 @@
# COMPONENT headers)


SET(MAJOR_VERSION 1)
IF (NOT DEFINED ${VERSION})
MESSAGE("Extracting git software version")
execute_process(COMMAND bash "-c" "git rev-list --branches HEAD | wc -l | tr -d ' ' | tr -d '\n'" OUTPUT_VARIABLE GIT_VERSION)
SET(MINOR_VERSION ${GIT_VERSION})
SET(BUILD_NUMBER 0)
SET(VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${BUILD_NUMBER})
ENDIF()
MESSAGE("Software Version: ${VERSION}")

SET(CMAKE_INSTALL_LIBDIR lib CACHE PATH "Output dir for libraries")
SET(CMAKE_INSTALL_HEADERDIR include CACHE PATH "Output dir for headers")

IF (NOT DEFINED ${CPACK_INSTALL_PREFIX})
SET(CPACK_INSTALL_PREFIX "/usr/local")
ENDIF()


SET(CPACK_PACKAGE_NAME g3LogRotate)
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
SET(CPACK_PACKAGE_VERSION_PATCH ${BUILD_NUMBER})
SET(CPACK_PACKAGE_DESCRIPTION "Logging sinks compatible with the g3log library.
g3LogRotate. Rotate logs accoording to size limits. Old logs are compressed and
eventually deleted.
The g3LogRotate is a public domain dedication. License: http://unlicense.org
Repository: https://github.com/KjellKod/g3sinks")
libg3logrotate: Rotate logs accoording to default or configured size limits.
Old logs are compressed and eventually deleted.
G3LogRotate is a public domain dedication.
License: http://unlicense.org
Repository: https://github.com/KjellKod/g3sinks")

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION})
SET(CPACK_PACKAGE_CONTACT "Kjell Hedstrom [email protected]")
SET(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SRC}/../LICENSE)
Expand Down
36 changes: 3 additions & 33 deletions logrotate/Options.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
# example: cmake -DBUILD_STATIC=ON ..
option (BUILD_STATIC "Building g3logrotate as static library. Linking with static g3log library" OFF)
IF (BUILD_STATIC)
SET(G3LOG_LIBRARY_TYPE g3logger)

IF (MSVC)
SET(G3LOG_LIBRARY_NAME g3logger.lib)
Expand All @@ -20,40 +19,11 @@ IF (BUILD_STATIC)

MESSAGE("'OPTION: cmake -DBUILD_STATIC=ON'\nLinking statically with g3log. Creating static library for g3logrotate")
ELSE()

IF (MSVC)
SET(G3LOG_LIBRARY_TYPE g3logger)
SET(G3LOG_LIBRARY_NAME g3logger.lib)
SET(G3LOG_LIBRARY_NAME g3logger.lib)
ELSE()
SET(G3LOG_LIBRARY_TYPE g3logger)
SET(G3LOG_LIBRARY_NAME libg3logger.so)
SET(G3LOG_LIBRARY_NAME libg3logger.so)
ENDIF()

MESSAGE("'OPTION cmake -DBUILD_STATIC=ON'\nLinking dynamically with g3log. Creating dynamic library for g3logrotate")
ENDIF()



# Override the default path for g3log library
#example1: cmake -DG3_LIBRARY_PATH="/usr/local/probe/lib"
#example2: cmake -DG3_LIBRARY_PATH="/home/kjell/Github/g3log/build"
#
SET(G3_LIBRARY_PATH "" CACHE FILEPATH "Path to g3log libraries")
IF(EXISTS "${G3_LIBRARY_PATH}/${G3LOG_LIBRARY_NAME}")
MESSAGE("SUCCESS lib")
ELSE()
MESSAGE(SEND_ERROR "Can't find g3logger library file in G3_LIBRARY_PATH/${G3LOG_LIBRARY_NAME}:' ${G3_LIBRARY_PATH}'. Please set it with '-DG3_LIBRARY_PATH' \nExample run could be something like:\ncmake -DG3_HEADER_PATH=/home/X/ws/g3log/src/ -DG3_LIBRARY_PATH=/home/X/ws/g3log/build -DADD_LOGROTATE_UNIT_TEST=ON")
MESSAGE("'OPTION cmake -DBUILD_STATIC=OFF'\nLinking dynamically with g3log. Creating dynamic library for g3logrotate")
ENDIF()


# Override the default include path to g3log library
#example1: cmake -DUSE_G3_HEADER_PATH="/usr/local/probe/include/"
#example2: cmake -DUSE_G3_HEADER_PATH="/home/kjell/Github/g3log/src"
#
SET(G3_HEADER_PATH "" CACHE FILEPATH "Path to g3log headers")
IF(EXISTS ${G3_HEADER_PATH}/g3log/g3log.hpp)
MESSAGE("SUCCESS path")
ELSE()
MESSAGE(FATAL_ERROR "Can't find g3log.hpp at G3_HEADER_PATH/g3log/g3log.hpp, i.e. '${G3_HEADER_PATH}/g3log/g3log.hpp'. Please set it with '-DG3_HEADER_PATH'. \nExample run could be something like:\ncmake -DG3_HEADER_PATH=/home/X/ws/g3log/src/ -DG3_LIBRARY_PATH=/home/X/ws/g3log/build -DADD_LOGROTATE_UNIT_TEST=ON")
ENDIF()

2 changes: 1 addition & 1 deletion logrotate/packaging/g3logrotate.spec
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fi
rm -f CMakeCache.txt


%{install_root}/bin/cmake -DADD_LOGROTATE_UNIT_TEST=ON -DG3_LIBRARY_PATH=%{install_root}/lib -DG3_HEADER_PATH=%{install_root}/include/ -DCMAKE_CXX_COMPILER_ARG1:STRING=' -Wall -Werror -fPIC -Ofast -m64 -Wl,-rpath -Wl,. -Wl,-rpath -Wl,%{install_root}/lib -Wl,-rpath -Wl,%{install_root}/lib64 ' -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DG3_LIBRARY_PATH=%{install_root}/lib -DG3_HEADER_PATH=%{install_root}/include -DCMAKE_CXX_COMPILER=%{install_root}/bin/g++ ..
%{install_root}/bin/cmake -DADD_LOGROTATE_UNIT_TEST=ON -DCMAKE_PREFIX_PATH=%{install_root} -DCMAKE_CXX_COMPILER_ARG1:STRING=' -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -Wall -Werror -fPIC -Ofast -m64 -Wl,-rpath -Wl,. -Wl,-rpath -Wl,%{install_root}/lib -Wl,-rpath -Wl,%{install_root}/lib64 ' -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER=%{install_root}/bin/g++ ..

make -j6
./UnitTestRunner
Expand Down
50 changes: 26 additions & 24 deletions logrotate/test/Test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,33 @@ option (ADD_LOGROTATE_UNIT_TEST "logrotate unit tests" OFF)

IF (ADD_LOGROTATE_UNIT_TEST)

set(GTEST_DIR ${DIR_3RDPARTY}/gtest-1.7.0)
set(GTEST_INCLUDE_DIRECTORIES ${GTEST_DIR}/include ${GTEST_DIR} ${GTEST_DIR}/src)
MESSAGE( "Attempt to build gtest. gtest directory: " ${GTEST_DIR})
include_directories(${GTEST_INCLUDE_DIRECTORIES})
add_library(gtest_170_lib ${GTEST_DIR}/src/gtest-all.cc)
set_target_properties(gtest_170_lib PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")
enable_testing(true)
include_directories(test)
file(GLOB TEST_SRC_FILES "test/*.cpp" "test/*.h" "test/*.hpp")
set(TestRunner UnitTestRunner)

# build the unit tests
add_executable(${TestRunner} ${DIR_3RDPARTY}/test_main.cpp ${TEST_SRC_FILES} )
set_target_properties(${TestRunner} PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_TR1_TUPLE=0")
set_target_properties(${TestRunner} PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")

IF (MSVC)
target_link_libraries(${TestRunner} ${LIBRARY_TO_BUILD} ${G3LOG} gtest_170_lib dbghelp ${PLATFORM_LINK_LIBRIES} ${G3_LIBRARY_PATH})
ELSE()
set_target_properties(${TestRunner} PROPERTIES COMPILE_FLAGS "-isystem -pthread ")
target_link_libraries(${TestRunner} ${LIBRARY_TO_BUILD} ${G3LOG} gtest_170_lib -lstdc++ ${TCMALLOC} ${PLATFORM_LINK_LIBRIES} -Wl,-rpath,. -Wl,-rpath,${G3_LIBRARY_PATH} -Wl,-rpath,${G3_LIBRARY_PATH}/../lib64 )
ENDIF()

MESSAGE("library to build ${LIBRARY_TO_BUILD}")
include_directories(${CMAKE_PREFIX_PATH}/include)
MESSAGE("Test include : : " ${CMAKE_PREFIX_PATH}/include " : lib : " ${g3logger})


set(GTEST_DIR ${DIR_3RDPARTY}/gtest-1.7.0)
set(GTEST_INCLUDE_DIRECTORIES ${GTEST_DIR}/include ${GTEST_DIR} ${GTEST_DIR}/src)
MESSAGE( "Attempt to build gtest. gtest directory: " ${GTEST_DIR})
include_directories(${GTEST_INCLUDE_DIRECTORIES})
add_library(gtest_170_lib ${GTEST_DIR}/src/gtest-all.cc)
set_target_properties(gtest_170_lib PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")
enable_testing(true)
include_directories(test)
file(GLOB TEST_SRC_FILES "test/*.cpp" "test/*.h" "test/*.hpp")


# build the unit tests
add_executable(UnitTestRunner ${DIR_3RDPARTY}/test_main.cpp ${TEST_SRC_FILES} )
set_target_properties(UnitTestRunner PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_TR1_TUPLE=0")
set_target_properties(UnitTestRunner PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")

IF (MSVC)
target_link_libraries(UnitTestRunner ${LIBRARY_TO_BUILD} ${g3logger} gtest_170_lib dbghelp ${PLATFORM_LINK_LIBRIES})
ELSE()
SET(CMAKE_CXX_FLAGS "-Wall -Wno-sign-compare -rdynamic -Wunused -std=c++14 -pthread -D_GLIBCXX_USE_NANOSLEEP")

TARGET_LINK_LIBRARIES(UnitTestRunner ${LIBRARY_TO_BUILD} ${g3logger} gtest_170_lib ${PLATFORM_LINK_LIBRIES})
ENDIF()
ELSE()
MESSAGE("-DADD_LOGROTATE_UNIT_TEST=OFF")
ENDIF (ADD_LOGROTATE_UNIT_TEST)

0 comments on commit 1e602e4

Please sign in to comment.