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