diff options
| author | William A. Kennington III <wak@google.com> | 2018-11-02 17:20:52 -0700 |
|---|---|---|
| committer | William A. Kennington III <wak@google.com> | 2018-11-02 17:55:31 -0700 |
| commit | 4460f26c1182f412b5ab07f093a0f078191995ef (patch) | |
| tree | 9c44f5fd54bf4c209baf5fb09c454f606ede2d31 | |
| parent | 24b11271492483821a1132279a4e1df491c48a77 (diff) | |
| download | stdplus-4460f26c1182f412b5ab07f093a0f078191995ef.tar.gz stdplus-4460f26c1182f412b5ab07f093a0f078191995ef.zip | |
Initial Project Files
This adds the initial autotools scripts and some placeholder c++ files
so that the builder is happy.
Tested:
Built and run through the unit test script.
Change-Id: Ie7e7e062726761aad54b77e1c55fcb1ba91afd49
Signed-off-by: William A. Kennington III <wak@google.com>
| -rw-r--r-- | .clang-format | 85 | ||||
| -rw-r--r-- | .gitignore | 44 | ||||
| -rw-r--r-- | .lcovrc | 3 | ||||
| -rw-r--r-- | MAINTAINERS | 45 | ||||
| -rw-r--r-- | Makefile.am | 39 | ||||
| -rw-r--r-- | README.md | 28 | ||||
| -rwxr-xr-x | bootstrap.sh | 4 | ||||
| -rw-r--r-- | configure.ac | 141 | ||||
| -rw-r--r-- | example/Makefile.am | 5 | ||||
| -rw-r--r-- | src/Makefile.am | 8 | ||||
| -rw-r--r-- | src/stdplus.pc.in | 10 | ||||
| -rw-r--r-- | src/stdplus/placeholder.cpp | 1 | ||||
| -rw-r--r-- | src/stdplus/placeholder.hpp | 1 | ||||
| -rw-r--r-- | test/Makefile.am | 13 | ||||
| -rw-r--r-- | test/placeholder.cpp | 5 |
15 files changed, 431 insertions, 1 deletions
diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..9109e65 --- /dev/null +++ b/.clang-format @@ -0,0 +1,85 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlinesLeft: false +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: AfterColon +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +PointerAlignment: Left +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 4 +UseTab: Never +... + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d1eea5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Test suite logs +*.log + +# Code Coverage +*.gcda +*.gcno +*.trs +*-coverage* + +# CC / CXX Compiler +*.ii +*.i +*.o +*.s + +# Libtool +*.la +*.lo + +# Autotools +.deps +.dirstamp +.libs +/aclocal.m4 +/autom4te.cache +/build-aux +/confdefs.h +/config.h +/config.h.in +/config.h.in~ +/config.log +/config.status +/configure +/m4 +/libtool +Makefile +Makefile.in +/stamp-h1 + +# Custom generated files +/src/stdplus.pc + +# Output binaries +/test/placeholder @@ -0,0 +1,3 @@ +geninfo_gcov_all_blocks = 1 +lcov_function_coverage = 1 +lcov_branch_coverage = 0 diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000..3934d40 --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,45 @@ +How to use this list: + Find the most specific section entry (described below) that matches where + your change lives and add the reviewers (R) and maintainers (M) as + reviewers. You can use the same method to track down who knows a particular + code base best. + + Your change/query may span multiple entries; that is okay. + + If you do not find an entry that describes your request at all, someone + forgot to update this list; please at least file an issue or send an email + to a maintainer, but preferably you should just update this document. + +Description of section entries: + + Section entries are structured according to the following scheme: + + X: NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!> + X: ... + . + . + . + + Where REPO_NAME is the name of the repository within the OpenBMC GitHub + organization; FILE_PATH is a file path within the repository, possibly with + wildcards; X is a tag of one of the following types: + + M: Denotes maintainer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>; + if omitted from an entry, assume one of the maintainers from the + MAINTAINERS entry. + R: Denotes reviewer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>; + these people are to be added as reviewers for a change matching the repo + path. + F: Denotes forked from an external repository; has fields URL. + + Line comments are to be denoted "# SOME COMMENT" (typical shell style + comment); it is important to follow the correct syntax and semantics as we + may want to use automated tools with this file in the future. + + A change cannot be added to an OpenBMC repository without a MAINTAINER's + approval; thus, a MAINTAINER should always be listed as a reviewer. + +START OF MAINTAINERS LIST +------------------------- + +M: William A. Kenngton III <wak@google.com> <wak-work!> diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..4493eea --- /dev/null +++ b/Makefile.am @@ -0,0 +1,39 @@ +ACLOCAL_AMFLAGS = -I m4 + +# Ignore system headers +CODE_COVERAGE_IGNORE_PATTERN = '/include/*' '/usr/include/*' '$(includedir)/*' +export CODE_COVERAGE_IGNORE_PATTERN + +CODE_COVERAGE_LCOV_SHOPTS = $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) +# Use our configuration file for lcov +CODE_COVERAGE_LCOV_SHOPTS += --config-file $(abs_srcdir)/.lcovrc +export CODE_COVERAGE_LCOV_SHOPTS + +CODE_COVERAGE_LCOV_OPTIONS = $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) +# Use our configuration file for lcov +CODE_COVERAGE_LCOV_OPTIONS += --config-file $(abs_srcdir)/.lcovrc +export CODE_COVERAGE_LCOV_OPTIONS + +CODE_COVERAGE_LCOV_RMOPTS = $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) +# Use our configuration file for lcov +CODE_COVERAGE_LCOV_RMOPTS += --config-file $(abs_srcdir)/.lcovrc +export CODE_COVERAGE_LCOV_RMOPTS + +CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) +# Use our configuration file for genhtml +CODE_COVERAGE_GENHTML_OPTIONS += --config-file $(abs_srcdir)/.lcovrc +# Don't generate the absolute path for each file in the HTML output +CODE_COVERAGE_GENHTML_OPTIONS += --prefix $(abs_srcdir) --prefix $(abs_builddir) +export CODE_COVERAGE_GENHTML_OPTIONS + +export AM_CPPFLAGS = -I$(abs_builddir)/src -I$(abs_srcdir)/src \ + $(CODE_COVERAGE_CPPFLAGS) +export AM_CFLAGS = $(CODE_COVERAGE_CFLAGS) +export AM_CXXFLAGS = $(CODE_COVERAGE_CXXFLAGS) + +export COMMON_LIBS = $(CODE_COVERAGE_LIBS) +export STDPLUS_LIBS = $(abs_builddir)/src/libstdplus.la $(COMMON_LIBS) + + +EXTRA_DIST = LICENSE MAINTAINERS README.md +SUBDIRS = src example test @@ -1 +1,27 @@ -# stdplus
\ No newline at end of file +# stdplus + +stdplus is a c++ project containing commonly used classes and functions +for the Linux platform. + +## Dependencies + +Test cases require google{test,mock}, valgrind, and lcov. + +## Building +For a standard release build, you want something like: +``` +./bootstrap.sh +./configure --disable-examples --disable-tests +make +make install +``` + +For a test / debug build, a typical configuration is +``` +./bootstrap.sh +./configure --enable-tests --enable-coverage --enable-valgrind +make +make check +make check-valgrind +make check-code-coverage +``` diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..30ef75a --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e +set -x +autoreconf -v -f -i diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..3837116 --- /dev/null +++ b/configure.ac @@ -0,0 +1,141 @@ +# Initialization +AC_PREREQ([2.69]) +AC_INIT([stdplus], [0.1], [https://github.com/openbmc/stdplus/issues]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIRS([m4]) +AC_CONFIG_AUX_DIR([build-aux]) +AM_INIT_AUTOMAKE([nostdinc foreign subdir-objects -Wall -Werror dist-xz tar-ustar]) +AM_SILENT_RULES([yes]) +AC_LANG([C++]) + +# Make sure the default CFLAGS of `-O2 -g` don't override CODE_COVERAGE_CFLAGS +# It is important that this comes before AC_PROG_C{C,XX}, as we are attempting +# to stop them from populating default CFLAGS and CXXFLAGS. +AS_IF([test "x$enable_tests" = "xno"], [enable_code_coverage=no]) +AS_IF([test "x$enable_code_coverage" != "xno"], [ + AS_IF([test "x${CXXFLAGS+set}" != "xset"], [ + AC_SUBST(CXXFLAGS, [""]) + ]) + AS_IF([test "x${CFLAGS+set}" != "xset"], [ + AC_SUBST(CFLAGS, [""]) + ]) +]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AM_PROG_AR +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +# Checks for libtool +LT_INIT # Removes 'unrecognized options: --with-libtool-sysroot' + +# Make sure the pkgconfigdata is configured for automake +PKG_INSTALLDIR + +# Checks for typedefs, structures, and compiler characteristics. +AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) +AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wpedantic], [CFLAGS]) +AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wpedantic], [CXXFLAGS]) + +# Make it possible for users to choose to disable examples +AC_ARG_ENABLE([examples], AC_HELP_STRING([--disable-examples], + [Build example programs])) +AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$enable_examples" != "xno"]) + +# Make it possible for users to choose if they want test support +# explicitly or not at all +AC_ARG_ENABLE([tests], AC_HELP_STRING([--disable-tests], + [Build test cases])) + +# Check/set gtest specific functions. +AS_IF([test "x$enable_tests" != "xno"], [ + PKG_CHECK_MODULES([GTEST], [gtest], [], [true]) + PKG_CHECK_MODULES([GMOCK], [gmock], [], [true]) + AX_PTHREAD + + AX_SAVE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS]) + AX_APPEND_COMPILE_FLAGS([$GTEST_CFLAGS], [CPPFLAGS]) + AC_CHECK_HEADERS([gtest/gtest.h], [ + AS_IF([test "x$GTEST_CFLAGS" = "x"], [ + AS_IF([test "x$PTHREAD_CFLAGS" = "x"], [ + AX_APPEND_COMPILE_FLAGS(["-DGTEST_HAS_PTHREAD=0"], [GTEST_CFLAGS]) + ], [ + AX_APPEND_COMPILE_FLAGS(["-DGTEST_HAS_PTHREAD=1"], [GTEST_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([$PTHREAD_CFLAGS], [GTEST_CFLAGS]) + ]) + ]) + ], [ + AS_IF([test "x$enable_tests" = "xyes"], [ + AC_MSG_ERROR([Testing enabled but could not find gtest/gtest.h]) + ]) + ]) + AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS]) + + AX_SAVE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS]) + AX_APPEND_COMPILE_FLAGS([$GMOCK_CFLAGS], [CPPFLAGS]) + AC_CHECK_HEADERS([gmock/gmock.h], [], [ + AS_IF([test "x$enable_tests" = "xyes"], [ + AC_MSG_ERROR([Testing enabled but could not find gmock/gmock.h]) + ]) + ]) + AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS]) + + AX_SAVE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS]) + AX_APPEND_COMPILE_FLAGS([$GTEST_LIBS], [LDFLAGS]) + AC_CHECK_LIB([gtest], [main], [ + AS_IF([test "x$GTEST_LIBS" = "x"], [ + AX_APPEND_COMPILE_FLAGS([-lgtest], [GTEST_LIBS]) + ]) + ], [ + AS_IF([test "x$enable_tests" = "xyes"], [ + AC_MSG_ERROR([Testing enabled but couldn't find gtest libs]) + ]) + ]) + AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS]) + + AX_SAVE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS]) + AX_APPEND_COMPILE_FLAGS([$GMOCK_LIBS], [LDFLAGS]) + AC_CHECK_LIB([gmock], [main], [ + AS_IF([test "x$GMOCK_LIBS" = "x"], [ + AX_APPEND_COMPILE_FLAGS([-lgmock], [GMOCK_LIBS]) + ]) + ], [ + AS_IF([test "x$enable_tests" = "xyes"], [ + AC_MSG_ERROR([Testing enabled but couldn't find gmock libs]) + ]) + ]) + AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS]) +]) + +# Check for valgrind +AS_IF([test "x$enable_tests" = "xno"], [enable_valgrind=no]) +m4_foreach([vgtool], [valgrind_tool_list], + [AX_VALGRIND_DFLT(vgtool, [off])]) +AX_VALGRIND_DFLT([memcheck], [on]) +AX_VALGRIND_CHECK +AM_EXTRA_RECURSIVE_TARGETS([check-valgrind]) +m4_foreach([vgtool], [valgrind_tool_list], + [AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)]) + +# Code coverage +AX_CODE_COVERAGE +AM_EXTRA_RECURSIVE_TARGETS([check-code-coverage]) +AS_IF([test "x$CODE_COVERAGE_ENABLED" = "xyes"], [ + AX_APPEND_COMPILE_FLAGS([-DHAVE_GCOV], [CODE_COVERAGE_CPPFLAGS]) +]) + +# Append -Werror after doing autoconf compiler checks +# Otherwise some perfectly valid checks can fail and cause our +# final configuratin to be broken. +AC_ARG_ENABLE([werror], AC_HELP_STRING([--disable-werror], [Whether to automatically add -Werror CFLAGS])) +AS_IF([test "x$enable_tests" != "xno"], [ + AX_APPEND_COMPILE_FLAGS([-Werror], [CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Werror], [CXXFLAGS]) +]) + +# Create configured output +AC_CONFIG_FILES([Makefile example/Makefile src/Makefile test/Makefile]) +AC_CONFIG_FILES([src/stdplus.pc]) +AC_OUTPUT diff --git a/example/Makefile.am b/example/Makefile.am new file mode 100644 index 0000000..2e8857a --- /dev/null +++ b/example/Makefile.am @@ -0,0 +1,5 @@ +noinst_PROGRAMS = + +if BUILD_EXAMPLES + +endif diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..de5de8d --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,8 @@ +nobase_include_HEADERS = +pkgconfig_DATA = stdplus.pc +lib_LTLIBRARIES = libstdplus.la +libstdplus_la_SOURCES = +libstdplus_la_LIBADD = $(COMMON_LIBS) + +nobase_include_HEADERS += stdplus/placeholder.hpp +libstdplus_la_SOURCES += stdplus/placeholder.cpp diff --git a/src/stdplus.pc.in b/src/stdplus.pc.in new file mode 100644 index 0000000..b79e7ca --- /dev/null +++ b/src/stdplus.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: stdplus +Description: Commonly used c++ classes and functions +Version: @VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lstdplus diff --git a/src/stdplus/placeholder.cpp b/src/stdplus/placeholder.cpp new file mode 100644 index 0000000..a4c9e2b --- /dev/null +++ b/src/stdplus/placeholder.cpp @@ -0,0 +1 @@ +#include <stdplus/placeholder.hpp> diff --git a/src/stdplus/placeholder.hpp b/src/stdplus/placeholder.hpp new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/src/stdplus/placeholder.hpp @@ -0,0 +1 @@ +#pragma once diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..c67e07a --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,13 @@ +@VALGRIND_CHECK_RULES@ +@CODE_COVERAGE_RULES@ + +gtest_cppflags = $(AM_CPPFLAGS) $(GTEST_CFLAGS) $(GMOCK_CFLAGS) +gtest_ldadd = $(STDPLUS_LIBS) $(GTEST_LIBS) $(GMOCK_LIBS) -lgmock_main + +check_PROGRAMS = +TESTS = $(check_PROGRAMS) + +check_PROGRAMS += placeholder +placeholder_SOURCES = placeholder.cpp +placeholder_CPPFLAGS = $(gtest_cppflags) +placeholder_LDADD = $(gtest_ldadd) diff --git a/test/placeholder.cpp b/test/placeholder.cpp new file mode 100644 index 0000000..782277f --- /dev/null +++ b/test/placeholder.cpp @@ -0,0 +1,5 @@ +#include <gtest/gtest.h> + +TEST(PlaceholderTest, None) +{ +} |

