| # |
| # Copyright (c) 2012 Nest Labs, Inc. |
| # All rights reserved. |
| # |
| # This document is the property of Nest. It is considered |
| # confidential and proprietary information. |
| # |
| # This document may not be reproduced or transmitted in any form, |
| # in whole or in part, without the express written permission of |
| # Nest. |
| # |
| # Description: |
| # This file is the make file for LwIP, a Lightweight IPv4- |
| # and IPv6 TCP/IP stack. |
| # |
| |
| BuildConfigSpecialized := Yes |
| BuildProductSpecialized := Yes |
| |
| include pre.mak |
| |
| ifeq ($(BUILD_FEATURE_LWIP),1) |
| |
| PackageRoot := . |
| |
| PackageName := lwip |
| |
| PackageSourceDir := $(LwipSrcPath)/$(PackageName) |
| |
| GeneratePackagePaths = $(addprefix $(call Slashify,$(PackageSourceDir)),$(1)) |
| |
| LicenseSourceFile := $(PackageSourceDir)/COPYING |
| |
| # Turn off warnings for missing protos |
| CCFLAGS += $(call ToolDeassertWarningFlag,$(WarnMissingProtos)) |
| |
| all: $(PackageDefaultGoal) |
| |
| # Generate the package license contents. |
| |
| $(LicenseSourceFile): source |
| |
| $(PackageLicenseFile): $(LicenseSourceFile) |
| $(copy-result) |
| |
| # We are building this package from version-controlled source, so |
| # there is nothing to do for this target goal. |
| |
| $(PackageSourceDir): |
| |
| # Prepare the sources. |
| |
| .PHONY: source |
| source: | $(PackageSourceDir) |
| |
| # Patch the sources, if necessary. |
| |
| .PHONY: patch |
| patch: source |
| |
| # Configure the source for building. |
| |
| .PHONY: configure |
| configure: source |
| |
| # Build the source. |
| |
| .PHONY: build |
| build: configure |
| |
| .PHONY: stage stage-headers |
| stage: build | $(ResultDirectory) |
| stage: stage-headers |
| |
| lwip_API_PATHS = src/api/api_lib.c \ |
| src/api/api_msg.c \ |
| src/api/err.c \ |
| src/api/netbuf.c \ |
| src/api/netdb.c \ |
| src/api/netifapi.c \ |
| src/api/sockets.c \ |
| src/api/tcpip.c |
| |
| lwip_CORE_PATHS = src/core/def.c \ |
| src/core/dhcp.c \ |
| src/core/dns.c \ |
| src/core/inet_chksum.c \ |
| src/core/init.c \ |
| src/core/ipv4/autoip.c \ |
| src/core/ipv4/icmp.c \ |
| src/core/ipv4/igmp.c \ |
| src/core/ipv4/ip4.c \ |
| src/core/ipv4/ip4_addr.c \ |
| src/core/ipv4/ip_frag.c \ |
| src/core/ipv6/dhcp6.c \ |
| src/core/ipv6/ethip6.c \ |
| src/core/ipv6/icmp6.c \ |
| src/core/ipv6/inet6.c \ |
| src/core/ipv6/ip6.c \ |
| src/core/ipv6/ip6_addr.c \ |
| src/core/ipv6/ip6_frag.c \ |
| src/core/ipv6/ip6_route_table.c \ |
| src/core/ipv6/mld6.c \ |
| src/core/ipv6/nd6.c \ |
| src/core/mem.c \ |
| src/core/memp.c \ |
| src/core/netif.c \ |
| src/core/pbuf.c \ |
| src/core/raw.c \ |
| src/core/stats.c \ |
| src/core/sys.c \ |
| src/core/tcp.c \ |
| src/core/tcp_in.c \ |
| src/core/tcp_out.c \ |
| src/core/timers.c \ |
| src/core/udp.c |
| |
| lwip_NETIF_PATHS = src/netif/etharp.c |
| |
| lwip_SOURCE_PATHS = $(lwip_API_PATHS) \ |
| $(lwip_CORE_PATHS) \ |
| $(lwip_NETIF_PATHS) |
| |
| lwip_INCLUDE_DIRS = src/include \ |
| src/include/ipv4 \ |
| src/include/ipv6 |
| |
| lwip_INCLUDE_PATHS = $(call GeneratePackagePaths,$(lwip_INCLUDE_DIRS)) |
| |
| lwip_PACKAGE_SOURCE_PATHS = $(call GeneratePackagePaths,$(lwip_SOURCE_PATHS)) |
| |
| # Tell make where to search for the sources, cleaning up the leading |
| # ./ strictly for cosmetic display purposes in the process. |
| |
| VPATH = $(subst ./,,$(dir $(lwip_PACKAGE_SOURCE_PATHS))) |
| |
| |
| ARCHIVES = lwip |
| |
| lwip_SOURCES = $(notdir $(lwip_PACKAGE_SOURCE_PATHS)) |
| |
| ifdef BUILD_FEATURE_WEAVE_TEST |
| lwip_INCLUDES = $(lwip_INCLUDE_PATHS) \ |
| os/freertos \ |
| $(NlERIncludePaths) \ |
| products \ |
| products/$(BuildProduct) |
| else |
| lwip_INCLUDES = $(lwip_INCLUDE_PATHS) \ |
| os/$(TargetOS) \ |
| $(NlERIncludePaths) \ |
| products \ |
| products/$(BuildProduct) |
| endif |
| |
| lwip_CPPFLAGS = -Wno-error=implicit-function-declaration \ |
| -Wno-error=strict-prototypes \ |
| |
| -include ./products/$(BuildProduct)/lwip.mak |
| |
| LwIPHeaderSourcePaths = $(wildcard $(addsuffix /*/*.h,$(lwip_INCLUDE_PATHS))) |
| LwIPHeaderSourceStems = $(subst $(PackageSourceDir)/src/include,,$(LwIPHeaderSourcePaths)) |
| LwIPHeaderSourcePattern = $(call GeneratePackagePaths,src/include/%) |
| LwIPHeaderResultPaths = $(call GenerateResultPaths,,$(LwIPHeaderSourceStems)) |
| LwIPHeaderResultPattern = $(call GenerateResultPaths,,%) |
| |
| LwIPOptionHeaderName = lwipopts.h |
| LwIPPoolHeaderName = lwippools.h |
| LwIPOptionHeaderStems = $(LwIPOptionHeaderName) $(LwIPPoolHeaderName) common/$(LwIPOptionHeaderName) $(BuildProduct)/$(LwIPOptionHeaderName) |
| LwIPOptionHeaderSourceDirectory = products |
| LwIPOptionHeaderSourcePaths = $(addprefix $(call Slashify,$(LwIPOptionHeaderSourceDirectory)),$(LwIPOptionHeaderStems)) |
| LwIPOptionHeaderResultDirectory = $(ResultDirectory) |
| LwIPOptionHeaderResultPaths = $(call GenerateResultPaths,,$(LwIPOptionHeaderStems)) |
| |
| LwIPArchHeaderNames = cc.h perf.h sys_arch.h |
| ifdef BUILD_FEATURE_WEAVE_TEST |
| LwIPArchHeaderSourcePaths = $(addprefix os/freertos/arch/,$(LwIPArchHeaderNames)) |
| LwIPArchHeaderSourceStems = $(subst os/freertos/,,$(LwIPArchHeaderSourcePaths)) |
| LwIPArchHeaderSourcePattern = os/freertos/% |
| else |
| LwIPArchHeaderSourcePaths = $(addprefix os/$(TargetOS)/arch/,$(LwIPArchHeaderNames)) |
| LwIPArchHeaderSourceStems = $(subst os/$(TargetOS)/,,$(LwIPArchHeaderSourcePaths)) |
| LwIPArchHeaderSourcePattern = os/$(TargetOS)/% |
| endif |
| LwIPArchHeaderResultPaths = $(call GenerateResultPaths,,$(LwIPArchHeaderSourceStems)) |
| LwIPArchHeaderResultPattern = $(call GenerateResultPaths,,%) |
| |
| ResultPaths += $(LwIPHeaderResultPaths) \ |
| $(LwIPOptionHeaderResultPaths) \ |
| $(LwIPArchHeaderResultPaths) |
| |
| stage-headers: $(LwIPHeaderResultPaths) $(LwIPOptionHeaderResultPaths) $(LwIPArchHeaderResultPaths) |
| |
| prepare: stage-headers |
| |
| $(LwIPHeaderResultPaths): $(LwIPHeaderResultPattern): $(LwIPHeaderSourcePattern) |
| $(install-result) |
| |
| $(LwIPOptionHeaderResultPaths): $(LwIPOptionHeaderResultDirectory)/%: $(LwIPOptionHeaderSourceDirectory)/% | $(LwIPOptionHeaderResultDirectory) |
| $(install-result) |
| |
| $(LwIPArchHeaderResultPaths): $(LwIPArchHeaderResultPattern): $(LwIPArchHeaderSourcePattern) |
| $(install-result) |
| |
| endif #ifeq ($(BUILD_FEATURE_LWIP),1) |
| |
| # While the LwIP library uses the nlbuild build system because it has no |
| # make- compatible build system of its own, it is still third-party |
| # software and we do not want to enforce style semantics on it. |
| # Consequently, set PrettyPaths to empty. |
| |
| PrettyPaths := $(NULL) |
| |
| include post.mak |