| # |
| # 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 |
| |
| PackageRoot := . |
| |
| PackageName := lwip |
| |
| PackageSourceDir := $(LwipSrcPath)/$(PackageName) |
| |
| GeneratePackagePaths = $(addprefix $(call Slashify,$(PackageSourceDir)),$(1)) |
| |
| LicenseSourceFile := $(PackageSourceDir)/COPYING |
| |
| 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: build | $(ResultDirectory) |
| |
| 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/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 |
| |
| ifeq ($(BuildConfig),unittest) |
| lwip_TEST_PATHS = test/nlunittest/src/test_pbuf.cpp |
| endif |
| |
| lwip_SOURCE_PATHS = $(lwip_API_PATHS) \ |
| $(lwip_CORE_PATHS) \ |
| $(lwip_NETIF_PATHS) \ |
| $(lwip_TEST_PATHS) |
| |
| lwip_INCLUDE = src/include |
| lwip_IPV4_INCLUDE = src/include/ipv4 |
| lwip_IPV6_INCLUDE = src/include/ipv6 |
| |
| ifeq ($(BuildConfig),unittest) |
| lwip_TEST_INCLUDE_DIRS = test/nlunittest/include |
| endif |
| |
| 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))) |
| |
| ifneq ($(BUILD_PRODUCT),pinnasim) # Only copy headers for pinnasim, don't build lwip library |
| ARCHIVES = lwip |
| endif |
| |
| lwip_SOURCES = $(notdir $(lwip_PACKAGE_SOURCE_PATHS)) |
| |
| lwip_INCLUDES = $(LwIPIncludePaths) \ |
| os/$(TargetOS) \ |
| $(FreeRTOSIncludePaths) \ |
| $(NlPlatformIncludePaths) \ |
| $(TestFrameworkIncludePaths) \ |
| $(NLERIncludePaths) |
| |
| # While LwIP uses the nlbuild build system because it has no 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) |
| |
| # Use header_source:header_dest format to move header files to their appropriate locations |
| LwIPIncludeSourcePaths = $(wildcard $(addsuffix /*/*.h,$(call GeneratePackagePaths, $(lwip_INCLUDE)))) |
| LwIPIncludeTranslationPaths = $(foreach headerfile,$(LwIPIncludeSourcePaths),$(headerfile):$(subst $(PackageSourceDir)/src/include,,$(headerfile))) |
| |
| LwIPIPV4IncludeSourcePaths = $(wildcard $(addsuffix /*/*.h,$(call GeneratePackagePaths, $(lwip_IPV4_INCLUDE)))) |
| LwIPIPV4IncludeTranslationPaths = $(foreach headerfile,$(LwIPIPV4IncludeSourcePaths),$(headerfile):$(subst $(PackageSourceDir)/src/include,,$(headerfile))) |
| |
| LwIPIPV6IncludeSourcePaths = $(wildcard $(addsuffix /*/*.h,$(call GeneratePackagePaths, $(lwip_IPV6_INCLUDE)))) |
| LwIPIPV6IncludeTranslationPaths = $(foreach headerfile,$(LwIPIPV6IncludeSourcePaths),$(headerfile):$(subst $(PackageSourceDir)/src/include,,$(headerfile))) |
| |
| LwIPTestIncludeSourcePaths = $(wildcard $(addsuffix /*.h,$(call GeneratePackagePaths, $(lwip_TEST_INCLUDE_DIRS)))) |
| LwIPTestIncludeTranslationPaths = $(foreach headerfile,$(LwIPTestIncludeSourcePaths),$(headerfile):$(subst $(PackageSourceDir)/test/nlunittest/include,,$(headerfile))) |
| |
| LwIPOptionHeaderNames = common_lwipopts.h lwipopts.h lwippools.h |
| |
| LwIPArchHeaderNames = cc.h perf.h sys_arch.h |
| LwIPArchHeaderSourcePaths = $(addprefix os/$(TargetOS)/arch/,$(LwIPArchHeaderNames)) |
| LwIPArchTranslationPaths = $(foreach headerfile,$(LwIPArchHeaderSourcePaths),$(headerfile):$(subst os/$(TargetOS)/,,$(headerfile))) |
| |
| lwip_HEADERS = $(LwIPIncludeTranslationPaths) \ |
| $(LwIPIPV4IncludeTranslationPaths) \ |
| $(LwIPIPV6IncludeTranslationPaths) \ |
| $(LwIPOptionHeaderNames) \ |
| $(LwIPArchTranslationPaths) \ |
| $(LwIPTestIncludeTranslationPaths) |
| |
| include post.mak |
| |