| # | |
| # 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 |