diff --git a/.travis.yml b/.travis.yml index d5a585b3e..6c9db0920 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,8 @@ install: - popd script: - - ./bootstrap-configure --enable-minimum-set-of-tests + - ./bootstrap + - ./configure - make pretty-check - - make distcheck + - make distclean + - make -f Makefile-Standalone distcheck diff --git a/Makefile-Standalone b/Makefile-Standalone new file mode 100644 index 000000000..658bd831c --- /dev/null +++ b/Makefile-Standalone @@ -0,0 +1,256 @@ +# +# Copyright (c) 2016, Nest Labs, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +# Don't allow this top-level makefile's targets to be built in parallel. + +.NOTPARALLEL: + +COVERAGE ?= 0 +DEBUG ?= 0 + +ECHO := @echo +MAKE := make +MKDIR_P := mkdir -p +LN_S := ln -s +RM_F := rm -f + +INSTALL := /usr/bin/install +INSTALLFLAGS := -p + +TopSourceDir := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST)))) +AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST)))) + +BuildPath = build +TopBuildDir = $(BuildPath) +AbsTopBuildDir = $(PWD)/$(TopBuildDir) + +ResultPath = output +TopResultDir = $(ResultPath) +AbsTopResultDir = $(PWD)/$(TopResultDir) + +TargetTuple = $(shell ${AbsTopSourceDir}/build/nlbuild-autotools/repo/autoconf/config.guess | sed -e 's/[[:digit:].]*$$//g') + +# If the user has asserted COVERAGE, alter the configuration options +# accordingly. + +ifeq ($(COVERAGE),1) +configure_OPTIONS = --enable-coverage +else +configure_OPTIONS = +endif + +# If the user has asserted DEBUG, alter the configuration options +# accordingly. + +ifeq ($(DEBUG),1) +configure_OPTIONS += --enable-debug --enable-optimization=no +else +configure_OPTIONS += +endif + +# +# configure-arch +# +# Configure OpenThread for the specified target. +# +# target - The target to configure. +# +define configure-target +$(ECHO) " CONFIG $(1)..." +(cd $(BuildPath)/$(1) && $(AbsTopSourceDir)/configure \ +INSTALL="$(INSTALL) $(INSTALLFLAGS)" \ +--prefix=/ \ +--exec-prefix=/$(1) \ +$(configure_OPTIONS)) +endef # configure-target + +# +# build-target +# +# Build the OpenThread intermediate build products for the specified +# target. +# +# target - The target to build. +# +define build-target +$(ECHO) " BUILD $(1)" +$(MAKE) -C $(BuildPath)/$(1) --no-print-directory \ +all +endef # build-target + +# +# check-target +# +# Check (run unit tests) OpenThread for the specified target. +# +# target - The target to check. +# +define check-target +$(ECHO) " CHECK $(1)" +$(MAKE) -C $(BuildPath)/$(1) --no-print-directory \ +check +endef # check-target + +# +# distcheck-target +# +# Check (run unit tests) OpenThread for the specified target. +# +# target - The target to distcheck. +# +define distcheck-target +$(ECHO) " DISTCHECK $(1)" +$(MAKE) -C $(BuildPath)/$(1) --no-print-directory \ +distcheck +endef # distcheck-target + +# +# coverage-target +# +# Generate code coverage from unit tests for OpenThread for the +# specified target. +# +# target - The target to generate code coverage for. +# +define coverage-target +$(ECHO) " COVERAGE $(1)" +$(MAKE) -C $(BuildPath)/$(1) --no-print-directory \ +coverage +endef # coverage-target + +# +# stage-target +# +# Stage (install) the OpenThread final build products for the specified +# target. +# +# target - The target to stage. +# +define stage-target +$(ECHO) " STAGE $(1)" +$(MAKE) -C $(BuildPath)/$(1) --no-print-directory \ +DESTDIR=$(AbsTopResultDir) \ +install +endef # stage-target + +# +# TARGET_template +# +# Define macros, targets and rules to configure, build, and stage +# OpenThread for a single target. +# +# target - The target to instantiate the template for. +# +define TARGET_template +CONFIGURE_TARGETS += configure-$(1) +BUILD_TARGETS += do-build-$(1) +CHECK_TARGETS += check-$(1) +DISTCHECK_TARGETS += distcheck-$(1) +COVERAGE_TARGETS += coverage-$(1) +STAGE_TARGETS += stage-$(1) +BUILD_DIRS += $(BuildPath)/$(1) +DIRECTORIES += $(BuildPath)/$(1) + +configure-$(1): $(BuildPath)/$(1)/config.status + +$(BuildPath)/$(1)/config.status: | $(BuildPath)/$(1) + $$(call configure-target,$(1)) + +do-build-$(1): configure-$(1) + +do-build-$(1): + $$(call build-target,$(1)) + +check-$(1): do-build-$(1) + +check-$(1): + $$(call check-target,$(1)) + +distcheck-$(1): do-build-$(1) + +distcheck-$(1): + $$(call distcheck-target,$(1)) + +coverage-$(1): do-build-$(1) + +coverage-$(1): + $$(call coverage-target,$(1)) + +stage-$(1): do-build-$(1) + +stage-$(1): | $(TopResultDir) + $$(call stage-target,$(1)) + +$(1): stage-$(1) +endef # TARGET_template + +.DEFAULT_GOAL := all + +all: stage + +# Instantiate an target-specific build template for the target. + +$(eval $(call TARGET_template,$(TargetTuple))) + +# +# Common / Finalization +# + +configure: $(CONFIGURE_TARGETS) + +build: $(BUILD_TARGETS) + +check: $(CHECK_TARGETS) + +distcheck: $(DISTCHECK_TARGETS) + +coverage: $(COVERAGE_TARGETS) + +stage: $(STAGE_TARGETS) + +DIRECTORIES = $(TopResultDir) $(TopResultDir)/$(TargetTuple)/lib $(BUILD_DIRS) + +CLEAN_DIRS = $(TopResultDir) $(BUILD_DIRS) + +all: stage + +$(DIRECTORIES): + $(ECHO) " MKDIR $@" + @$(MKDIR_P) "$@" + +clean: + $(ECHO) " CLEAN" + @$(RM_F) -r $(CLEAN_DIRS) + +help: + $(ECHO) "Simply type 'make -f $(firstword $(MAKEFILE_LIST))' to build OpenThread for the following " + $(ECHO) "target:" + $(ECHO) "" + $(ECHO) " $(TargetTuple)" + $(ECHO) "" + diff --git a/Makefile.am b/Makefile.am index c9fcb0ab3..08cd3bbd8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -46,7 +46,6 @@ EXTRA_DIST = \ .default-version \ bootstrap \ bootstrap-configure \ - $(srcdir)/third_party \ $(NULL) BUILT_SOURCES = \ diff --git a/examples/posix/app/Makefile.am b/examples/posix/app/Makefile.am index 7d3648d7e..16afe3f8b 100644 --- a/examples/posix/app/Makefile.am +++ b/examples/posix/app/Makefile.am @@ -46,6 +46,7 @@ SUBDIRS = \ PRETTY_SUBDIRS = \ cli \ + ncp \ $(NULL) include $(abs_top_nlbuild_autotools_dir)/automake/post.am diff --git a/examples/posix/app/ncp/main.c b/examples/posix/app/ncp/main.c index 54b37a2e6..6216e83a4 100644 --- a/examples/posix/app/ncp/main.c +++ b/examples/posix/app/ncp/main.c @@ -1,28 +1,29 @@ /* - * Copyright (c) 2016, Nest Labs, Inc. - * All rights reserved. + * Copyright (c) 2016, Nest Labs, Inc. + * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ #include @@ -43,6 +44,7 @@ int main(int argc, char *argv[]) } NODE_ID = atoi(argv[1]); + posixPlatformInit(); otInit(); otNcpInit(); @@ -50,7 +52,7 @@ int main(int argc, char *argv[]) while (1) { otProcessNextTasklet(); - posixPlatformProcessDrivers(); + posixPlatformProcessDrivers(); } return 0; diff --git a/examples/posix/platform/Makefile.am b/examples/posix/platform/Makefile.am index 900ba6347..df675c81d 100644 --- a/examples/posix/platform/Makefile.am +++ b/examples/posix/platform/Makefile.am @@ -35,18 +35,8 @@ libopenthread_posix_a_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/core \ -I$(top_srcdir)/examples/posix/platform \ - $(OPENTHREAD_TARGET_DEFINES) \ - -D_BSD_SOURCE \ - -D_GNU_SOURCE \ $(NULL) -libopenthread_posix_a_CXXFLAGS = \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/core \ - -I$(top_srcdir)/examples/posix/platform \ - $(OPENTHREAD_TARGET_DEFINES) \ - $(NULL) libopenthread_posix_a_SOURCES = \ alarm.c \ diff --git a/tests/Makefile.am b/tests/Makefile.am index 379241e71..c983314c9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -31,15 +31,15 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am # Always package (e.g. for 'make dist') these subdirectories. DIST_SUBDIRS = \ - scripts \ unit \ + scripts \ $(NULL) # Always build (e.g. for 'make all') these subdirectories. SUBDIRS = \ - scripts \ unit \ + scripts \ $(NULL) # Always pretty (e.g. for 'make pretty') these subdirectories. diff --git a/third_party/Makefile.am b/third_party/Makefile.am index f26c54fa7..dcd382c3c 100644 --- a/third_party/Makefile.am +++ b/third_party/Makefile.am @@ -28,6 +28,10 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am +EXTRA_DIST = \ + nlbuild-autotools \ + $(NULL) + # Always package (e.g. for 'make dist') these subdirectories. DIST_SUBDIRS = \ diff --git a/third_party/mbedtls/Makefile.am b/third_party/mbedtls/Makefile.am index 983d3817f..b806e5dcf 100644 --- a/third_party/mbedtls/Makefile.am +++ b/third_party/mbedtls/Makefile.am @@ -16,15 +16,20 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am +EXTRA_DIST = \ + mbedtls-config.h \ + repo/include \ + $(NULL) + lib_LIBRARIES = libmbedcrypto.a -MBEDTLS_DIR = $(top_srcdir)/third_party/mbedtls/repo +MBEDTLS_SRCDIR = $(top_srcdir)/third_party/mbedtls/repo libmbedcrypto_a_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/core \ - -I$(MBEDTLS_DIR)/include \ - -I$(MBEDTLS_DIR)/include/mbedtls \ + -I$(MBEDTLS_SRCDIR)/include \ + -I$(MBEDTLS_SRCDIR)/include/mbedtls \ -DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\" \ $(NULL) @@ -38,15 +43,8 @@ libmbedcrypto_a_SOURCES = \ repo/library/sha256.c \ $(NULL) -include_HEADERS = \ - $(NULL) - -install-headers: install-includeHEADERS - if OPENTHREAD_BUILD_COVERAGE CLEANFILES = $(wildcard *.gcda *.gcno) endif # OPENTHREAD_BUILD_COVERAGE -all: - include $(abs_top_nlbuild_autotools_dir)/automake/post.am