Added travis, coveralls and coverity support
parent
569de268ca
commit
59eabf489d
@ -0,0 +1,65 @@
|
||||
# Use a C++11 distro
|
||||
dist: trusty
|
||||
sudo: required
|
||||
|
||||
# Enable C++ support
|
||||
language: cpp
|
||||
|
||||
# Compiler selection
|
||||
compiler: gcc
|
||||
|
||||
env:
|
||||
global:
|
||||
# coverity key
|
||||
- secure: "MQNBwhFpj7NaDbN6NujsXQGRMpBYHvGtcjLXY9gCXhLUw+Ex40ArBEy1IEQAol7aGtFZiTZDijH1ihL4itzVmu4Bo2sx5WdMGRFS5tp/t4zFFiqpmmtbkYOUHY8wAp3xyxV2NL2EU0KlDloNvFd/4tY2opklUB3eTF+7TQ5CmwWRFGOf2GpGpmQ3+KS1ANhrxdn9sQIP8rSU+JD1/zwrAgeEN7RAxB23t9AU9MeGsOW3CCp3te8vrgNJ/xnOh7T4F/8hQ4lA5iCqqf7OUvcWOif3uBPzlckBTmQ6ylMvOncslj6TBkPJOd33MOmZcWHiPPEAvcXQlzERaLqgHLIg5A/0aTVo27J4iImHbwE61L2JhWvrx5mPkKz/9aTpZyYyQL1hXInk8R9VJ5+JENA5+maF+KNvdf1Zp2Foa3BLFFdRl5thpgyafvcEAZ/7KJ1BC3u4OgTBhh9Tw+1UMFXB9W9+2W2iYUIun8BunDny1aLmnp/t7O1auXjqW2lAWHtH86v9NickDupzkw1klN3Ac+hmfBDffyxUjE2LlmjpC20z2uwKrZCT7XRhalYstPPIwQ6uGr6TVZjqq6mzEjpmmF93U8WYx7iWBJmen0CHbkjY3n8dbUe7aiXQHwjbXFZ8MsWszFvr9eicJOcAOxXKK5jOw4uQSER6NI2H04rwbIs="
|
||||
|
||||
# addons
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- gcc-6
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
coverity_scan:
|
||||
project:
|
||||
name: "mpaland/printf"
|
||||
description: "printf implementation"
|
||||
notification_email: marco@paland.com
|
||||
build_command_prepend: "make clean"
|
||||
build_command: "make"
|
||||
branch_pattern: master
|
||||
|
||||
before_install:
|
||||
# install coveralls
|
||||
- pip install --user cpp-coveralls
|
||||
# connect coverity
|
||||
- echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
|
||||
|
||||
# Active branches
|
||||
branches:
|
||||
only:
|
||||
- travis
|
||||
|
||||
script:
|
||||
# Link gcc-6 and g++-6 to their standard commands
|
||||
- sudo rm /usr/bin/gcc
|
||||
- sudo rm /usr/bin/g++
|
||||
- sudo ln -s /usr/bin/gcc-6 /usr/bin/gcc
|
||||
- sudo ln -s /usr/bin/g++-6 /usr/bin/g++
|
||||
# Export CC and CXX
|
||||
- export CC=/usr/bin/gcc-6
|
||||
- export CXX=/usr/bin/g++-6
|
||||
# Check versions of gcc, g++
|
||||
- gcc -v && g++ -v
|
||||
# Run build commands
|
||||
- make
|
||||
# execute the text suite
|
||||
- bin/test_suite -d yes
|
||||
# coverall profiling
|
||||
- tmp/cov/test_suite
|
||||
|
||||
after_success:
|
||||
# Report to coveralls
|
||||
- coveralls --build-root ${TRAVIS_BUILD_DIR} --include printf.cpp --gcov 'gcov-6' --gcov-options '\-lp'
|
@ -0,0 +1,271 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
# Generic Makefile
|
||||
#
|
||||
# Copyright Marco Paland 2007 - 2017
|
||||
# Distributed under the MIT License
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Paths
|
||||
# ------------------------------------------------------------------------------
|
||||
PATH_TOOLS_CC = /usr/bin/
|
||||
PATH_TOOLS_CC_LIB = /usr/lib/
|
||||
PATH_TOOLS_UTIL =
|
||||
|
||||
PATH_BIN = bin
|
||||
PATH_TMP = tmp
|
||||
PATH_NUL = /dev/null
|
||||
PATH_OBJ = $(PATH_TMP)/obj
|
||||
PATH_LST = $(PATH_TMP)/lst
|
||||
PATH_ERR = $(PATH_TMP)/err
|
||||
PATH_PRE = $(PATH_TMP)/pre
|
||||
PATH_COV = $(PATH_TMP)/cov
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Application to build
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
APP = test_suite
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Project file list
|
||||
# Format is:
|
||||
# FILES_PRJ = file1 \
|
||||
# foo/file2 \
|
||||
# bar/file3
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
FILES_PRJ = test/test_suite
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Additional include files and compiler defines
|
||||
# Format is:
|
||||
# C_INCLUDES = -Iinclude_path1 \
|
||||
# -Iinclude_path2 \
|
||||
# -Iinclude_path3 \
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
C_INCLUDES =
|
||||
|
||||
C_DEFINES =
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# The target name and location
|
||||
# ------------------------------------------------------------------------------
|
||||
TRG = $(PATH_BIN)/$(APP)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# object files
|
||||
# ------------------------------------------------------------------------------
|
||||
FILES_TMP = $(FILES_PRJ)
|
||||
FILES_O = $(addsuffix .o, $(FILES_TMP))
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# VPATH definition
|
||||
#
|
||||
# VPATH is required for the maker to find the C-/ASM-Source files.
|
||||
# Extract the directory/module names from the file list with the dir
|
||||
# command and remove the duplicated directory names with the sort command.
|
||||
# FILES_PRJ is listed first to make sure that the source files in the project
|
||||
# directory are searched first.
|
||||
# ------------------------------------------------------------------------------
|
||||
VPATH := $(sort $(dir $(FILES_TMP)))
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Development tools
|
||||
# ------------------------------------------------------------------------------
|
||||
AR = $(PATH_TOOLS_CC)ar
|
||||
AS = $(PATH_TOOLS_CC)g++
|
||||
CC = $(PATH_TOOLS_CC)g++
|
||||
CL = $(PATH_TOOLS_CC)g++
|
||||
NM = $(PATH_TOOLS_CC)nm
|
||||
GCOV = $(PATH_TOOLS_CC)gcov
|
||||
OBJDUMP = $(PATH_TOOLS_CC)objdump
|
||||
OBJCOPY = $(PATH_TOOLS_CC)objcopy
|
||||
READELF = $(PATH_TOOLS_CC)readelf
|
||||
SIZE = $(PATH_TOOLS_CC)size
|
||||
|
||||
ECHO = $(PATH_TOOLS_UTIL)echo
|
||||
MAKE = $(PATH_TOOLS_UTIL)make
|
||||
MKDIR = $(PATH_TOOLS_UTIL)mkdir
|
||||
RM = $(PATH_TOOLS_UTIL)rm
|
||||
SED = $(PATH_TOOLS_UTIL)sed
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Compiler flags for the target architecture
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
GCCFLAGS = $(C_INCLUDES) \
|
||||
$(C_DEFINES) \
|
||||
-std=c++11 \
|
||||
-g \
|
||||
-Wall \
|
||||
-pedantic \
|
||||
-Wmain \
|
||||
-Wundef \
|
||||
-Wsign-conversion \
|
||||
-Wuninitialized \
|
||||
-Wshadow \
|
||||
-Wunreachable-code \
|
||||
-Wswitch-default \
|
||||
-Wswitch \
|
||||
-Wcast-align \
|
||||
-Wmissing-include-dirs \
|
||||
-Winit-self \
|
||||
-Wdouble-promotion \
|
||||
-gdwarf-2 \
|
||||
-fno-exceptions \
|
||||
-O2 \
|
||||
-ffunction-sections \
|
||||
-ffat-lto-objects \
|
||||
-fdata-sections \
|
||||
-fverbose-asm \
|
||||
-Wextra \
|
||||
-Wunused-parameter \
|
||||
-Wfloat-equal
|
||||
|
||||
CFLAGS = $(GCCFLAGS) \
|
||||
-Wunsuffixed-float-constants \
|
||||
-x c \
|
||||
-std=c99
|
||||
|
||||
CPPFLAGS = $(GCCFLAGS) \
|
||||
-x c++ \
|
||||
-fno-rtti \
|
||||
-fstrict-enums \
|
||||
-fno-use-cxa-atexit \
|
||||
-fno-use-cxa-get-exception-ptr \
|
||||
-fno-nonansi-builtins \
|
||||
-fno-threadsafe-statics \
|
||||
-fno-enforce-eh-specs \
|
||||
-ftemplate-depth-64 \
|
||||
-fexceptions
|
||||
|
||||
AFLAGS = $(GCCFLAGS) \
|
||||
-x assembler
|
||||
|
||||
LFLAGS = $(GCCFLAGS) \
|
||||
-x none \
|
||||
-Wl,--gc-sections
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Targets
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Main-Dependencies (app: all)
|
||||
# ------------------------------------------------------------------------------
|
||||
.PHONY: all
|
||||
all: clean_prj $(TRG) $(TRG)_nm.txt
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Main-Dependencies (app: rebuild)
|
||||
# ------------------------------------------------------------------------------
|
||||
.PHONY: rebuild
|
||||
rebuild: clean $(TRG) $(TRG)_nm.txt
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# clean project
|
||||
# ------------------------------------------------------------------------------
|
||||
.PHONY: clean_prj
|
||||
clean_prj:
|
||||
@-$(ECHO) +++ cleaning project
|
||||
@-$(RM) -rf $(PATH_BIN) 2> $(PATH_NUL)
|
||||
@-$(MKDIR) -p $(PATH_BIN)
|
||||
@-$(MKDIR) -p $(PATH_OBJ)
|
||||
@-$(MKDIR) -p $(PATH_ERR)
|
||||
@-$(MKDIR) -p $(PATH_LST)
|
||||
@-$(MKDIR) -p $(PATH_PRE)
|
||||
@-$(MKDIR) -p $(PATH_COV)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# clean all
|
||||
# ------------------------------------------------------------------------------
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@-$(ECHO) +++ cleaning all
|
||||
@-$(RM) -rf $(PATH_BIN) 2> $(PATH_NUL)
|
||||
@-$(RM) -rf $(PATH_TMP) 2> $(PATH_NUL)
|
||||
@-$(MKDIR) -p $(PATH_BIN)
|
||||
@-$(MKDIR) -p $(PATH_OBJ)
|
||||
@-$(MKDIR) -p $(PATH_ERR)
|
||||
@-$(MKDIR) -p $(PATH_LST)
|
||||
@-$(MKDIR) -p $(PATH_COV)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# print the GNUmake version and the compiler version
|
||||
# ------------------------------------------------------------------------------
|
||||
.PHONY: version
|
||||
version:
|
||||
# Print the GNU make version and the compiler version
|
||||
@$(ECHO) GNUmake version:
|
||||
@$(MAKE) --version
|
||||
@$(ECHO) GCC version:
|
||||
@$(CL) -v
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Rules
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Link/locate application
|
||||
# ------------------------------------------------------------------------------
|
||||
$(TRG) : $(FILES_O)
|
||||
@-$(ECHO) +++ linkink application to generate: $(TRG)
|
||||
@-$(CL) $(LFLAGS) -L. -lc $(PATH_OBJ)/*.o -Wl,-Map,$(TRG).map -o $(TRG)
|
||||
# profiling
|
||||
@-$(CL) $(LFLAGS) -L. -lc $(PATH_COV)/*.o --coverage -o $(PATH_COV)/$(APP)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# parse the object files to obtain symbol information, and create a size summary
|
||||
# ------------------------------------------------------------------------------
|
||||
$(TRG)_nm.txt : $(TRG)
|
||||
@-$(ECHO) +++ parsing symbols with nm to generate: $(TRG)_nm.txt
|
||||
@-$(NM) --numeric-sort --print-size $(TRG) > $(TRG)_nm.txt
|
||||
@-$(ECHO) +++ demangling symbols with c++filt to generate: $(TRG)_cppfilt.txt
|
||||
@-$(NM) --numeric-sort --print-size $(TRG) | $(CPPFILT) > $(TRG)_cppfilt.txt
|
||||
@-$(ECHO) +++ creating size summary table with size to generate: $(TRG)_size.txt
|
||||
@-$(SIZE) -A -t $(TRG) > $(TRG)_size.txt
|
||||
|
||||
|
||||
%.o : %.cpp
|
||||
@$(ECHO) +++ compile: $<
|
||||
# Compile the source file
|
||||
# ...and Reformat (using sed) any possible error/warning messages for the VisualStudio(R) output window
|
||||
# ...and Create an assembly listing using objdump
|
||||
# ...and Generate a dependency file (using the -MM flag)
|
||||
@-$(CL) $(CPPFLAGS) $< -E -o $(PATH_PRE)/$(basename $(@F)).pre
|
||||
@-$(CL) $(CPPFLAGS) $< -c -o $(PATH_OBJ)/$(basename $(@F)).o 2> $(PATH_ERR)/$(basename $(@F)).err
|
||||
@-$(SED) -e 's|.h:\([0-9]*\),|.h(\1) :|' -e 's|:\([0-9]*\):|(\1) :|' $(PATH_ERR)/$(basename $(@F)).err
|
||||
@-$(OBJDUMP) --disassemble --line-numbers -S $(PATH_OBJ)/$(basename $(@F)).o > $(PATH_LST)/$(basename $(@F)).lst
|
||||
@-$(CL) $(CPPFLAGS) $< -MM > $(PATH_OBJ)/$(basename $(@F)).d
|
||||
# profiling
|
||||
@-$(CL) $(CPPFLAGS) -O0 --coverage $< -c -o $(PATH_COV)/$(basename $(@F)).o 2> $(PATH_NUL)
|
||||
|
||||
%.o : %.c
|
||||
@$(ECHO) +++ compile: $<
|
||||
# Compile the source file
|
||||
# ...and Reformat (using sed) any possible error/warning messages for the VisualStudio(R) output window
|
||||
# ...and Create an assembly listing using objdump
|
||||
# ...and Generate a dependency file (using the -MM flag)
|
||||
@-$(CL) $(CFLAGS) $< -E -o $(PATH_PRE)/$(basename $(@F)).pre
|
||||
@-$(CC) $(CFLAGS) $< -c -o $(PATH_OBJ)/$(basename $(@F)).o 2> $(PATH_ERR)/$(basename $(@F)).err
|
||||
@-$(SED) -e 's|.h:\([0-9]*\),|.h(\1) :|' -e 's|:\([0-9]*\):|(\1) :|' $(PATH_ERR)/$(basename $(@F)).err
|
||||
@-$(OBJDUMP) -S $(PATH_OBJ)/$(basename $(@F)).o > $(PATH_LST)/$(basename $(@F)).lst
|
||||
@-$(CC) $(CFLAGS) $< -MM > $(PATH_OBJ)/$(basename $(@F)).d
|
Loading…
Reference in New Issue