From 6fd3fef71708091ec75ff9b4063af4248cdd7c0e Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Fri, 20 Nov 2015 21:30:32 -0500 Subject: [PATCH] try to integrate coveralls and improve configure script --- .travis.yml | 64 +++++++++++++++++++++++++++++++------------ cmake/xlnt.cmake | 48 +++++++++++++++++++------------- cmake/xlnt.test.cmake | 6 +++- configure | 24 ++++++++++------ 4 files changed, 96 insertions(+), 46 deletions(-) diff --git a/.travis.yml b/.travis.yml index 788fcb20..ec3fa1ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,51 @@ +# from: https://github.com/nlohmann/json/blob/master/.travis.yml + language: cpp -script: - - python configure --shared --build-tests --autotest && make -C build -compiler: - - clang - - gcc -install: - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-4.8 - - g++-4.8 - - clang -notifications: - email: false + sudo: false +matrix: + include: + - os: linux + compiler: gcc + addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: ['g++-4.9', 'valgrind', 'python-pip', 'python-yaml'] + before_script: + - pip install --user git+git://github.com/eddyxu/cpp-coveralls.git + env: COMPILER=g++-4.9 + + - os: linux + compiler: gcc + addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: ['g++-5', 'valgrind'] + env: COMPILER=g++-5 + + - os: linux + compiler: clang + addons: + apt: + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6'] + packages: ['clang-3.6', 'valgrind'] + env: COMPILER=clang++-3.6 + +script: + - ./configure --enable-shared --enable-tests + - make -C build CXX=$COMPILER CXXFLAGS="-lstdc++" + - ./bin/xlnt.test + - valgrind --error-exitcode=1 --leak-check=full ./xlnt.test + +after_success: + - if [ "$COMPILER" = "g++-4.9" ]; then make -C build clean ; fi + - if [ "$COMPILER" = "g++-4.9" ]; then touch include/xlnt/xlnt_config.hpp ; fi + - if [ "$COMPILER" = "g++-4.9" ]; then make -C build xlnt.test CXXFLAGS="-fprofile-arcs -ftest-coverage -std=c++11 -lstdc++" CXX=$COMPILER ; fi + - if [ "$COMPILER" = "g++-4.9" ]; then ./bin/xlnt.test ; fi + - if [ "$COMPILER" = "g++-4.9" ]; then coveralls --include source/worksheet/test_worksheet.hpp --gcov-options '\-lp' --gcov 'gcov-4.9' ; fi + +notifications: + email: false + diff --git a/cmake/xlnt.cmake b/cmake/xlnt.cmake index 7405536e..9615f3a5 100644 --- a/cmake/xlnt.cmake +++ b/cmake/xlnt.cmake @@ -67,23 +67,40 @@ SET(MINIZ ../third-party/miniz/miniz.c ../third-party/miniz/miniz.h) SET(PUGIXML ../third-party/pugixml/src/pugixml.hpp ../third-party/pugixml/src/pugixml.cpp ../third-party/pugixml/src/pugiconfig.hpp) if(SHARED) - add_library(xlnt SHARED ${HEADERS} ${SOURCES} ${MINIZ} ${PUGIXML}) + add_library(xlnt.shared SHARED ${HEADERS} ${SOURCES} ${MINIZ} ${PUGIXML}) add_definitions(-DXLNT_SHARED) if(MSVC) - target_compile_definitions(xlnt PRIVATE XLNT_EXPORT=1) - set_target_properties(xlnt PROPERTIES COMPILE_FLAGS "/wd\"4251\" /wd\"4275\"") + target_compile_definitions(xlnt.shared PRIVATE XLNT_EXPORT=1) + set_target_properties(xlnt.shared PROPERTIES COMPILE_FLAGS "/wd\"4251\" /wd\"4275\"") endif() -else() - add_library(xlnt STATIC ${HEADERS} ${SOURCES} ${MINIZ} ${PUGIXML}) + install(TARGETS xlnt.shared + LIBRARY DESTINATION ${LIB_DEST_DIR} + ARCHIVE DESTINATION ${LIB_DEST_DIR} + RUNTIME DESTINATION ${BIN_DEST_DIR} + ) + SET_TARGET_PROPERTIES( + xlnt.shared + PROPERTIES + OUTPUT_NAME xlnt + VERSION ${PROJECT_VERSION_FULL} + SOVERSION ${PROJECT_VERSION} + INSTALL_NAME_DIR "${LIB_DEST_DIR}" + ) endif() -SET_TARGET_PROPERTIES( - xlnt - PROPERTIES - VERSION ${PROJECT_VERSION_FULL} - SOVERSION ${PROJECT_VERSION} - INSTALL_NAME_DIR "${LIB_DEST_DIR}" -) +if(STATIC) + add_library(xlnt.static STATIC ${HEADERS} ${SOURCES} ${MINIZ} ${PUGIXML}) + install(TARGETS xlnt.static + LIBRARY DESTINATION ${LIB_DEST_DIR} + ARCHIVE DESTINATION ${LIB_DEST_DIR} + RUNTIME DESTINATION ${BIN_DEST_DIR} + ) + SET_TARGET_PROPERTIES( + xlnt.static + PROPERTIES + OUTPUT_NAME xlnt + ) +endif() source_group(xlnt FILES ${ROOT_HEADERS}) source_group(detail FILES ${DETAIL_HEADERS} ${DETAIL_SOURCES}) @@ -118,18 +135,11 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../include/xlnt DESTINATION include PATTERN ".DS_Store" EXCLUDE ) -install(TARGETS xlnt - LIBRARY DESTINATION ${LIB_DEST_DIR} - ARCHIVE DESTINATION ${LIB_DEST_DIR} - RUNTIME DESTINATION ${BIN_DEST_DIR} -) - install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc" DESTINATION ${LIB_DEST_DIR}/pkgconfig ) diff --git a/cmake/xlnt.test.cmake b/cmake/xlnt.test.cmake index c1d51493..29a42963 100644 --- a/cmake/xlnt.test.cmake +++ b/cmake/xlnt.test.cmake @@ -43,7 +43,11 @@ source_group(tests\\workbook FILES ${WORKBOOK_TESTS}) source_group(tests\\worksheet FILES ${WORKSHEET_TESTS}) source_group(runner FILES ${RUNNER}) -target_link_libraries(xlnt.test xlnt) +if(SHARED) + target_link_libraries(xlnt.test xlnt.shared) +else() + target_link_libraries(xlnt.test xlnt.static) +endif() if(MSVC) set_target_properties(xlnt.test PROPERTIES COMPILE_FLAGS "/wd\"4251\" /wd\"4275\"") diff --git a/configure b/configure index 6aeed888..659ef1b4 100755 --- a/configure +++ b/configure @@ -58,7 +58,7 @@ def find_cmake(): return cmake def parse_args(args): - options = {} + options = {'SHARED' : 1} generator = default_generator(sys.platform) if len(args) == 0: @@ -73,18 +73,24 @@ def parse_args(args): if not option.startswith('--'): raise Exception('bad option: {}'.format(option)) - if option == '--shared': + if option == '--enable-shared': options['SHARED'] = 1 - elif option == '--static': + elif option == '--enable-static': + options['STATIC'] = 1 + elif option == '--disable-shared': options['SHARED'] = 0 - elif option == '--build-tests': + elif option == '--disable-static': + options['STATIC'] = 0 + elif option == '--enable-tests': options['BUILD_TESTS'] = 1 - elif option == '--autotest': - options['AUTORUN_TESTS'] = 1 - elif option == '--coverage': - options['COVERAGE'] = 1 - elif option == '--build-examples': + elif option == '--enable-coverage': + options['CALC_COVERAGE'] = 1 + elif option == '--enable-examples': options['BUILD_EXAMPLES'] = 1 + elif option == '--enable-benchmarks': + options['BUILD_BENCHMARKS'] = 1 + elif option == '--enable-benchmarks': + options['BUILD_BENCHMARKS'] = 1 elif option.startswith('--prefix='): options['CMAKE_INSTALL_PREFIX'] = option.split('=')[1] else: