# Makefile - Top-level comp_ip_net2 Makefile # # Copyright 2006-2011, 2017 Wind River Systems, Inc. # # The right to copy, distribute, modify or otherwise make use # of this software may be licensed only pursuant to the terms # of an applicable Wind River license agreement. # # modification history # -------------------- # 03z,28may17,xxy Added TSN support # 03y,25apr16,pdr Added PTP support (backport Vx7). # 03x,21may12,uol Revert to 6.9 settings # 03w,03may11,mry Adding ipbridge support (replaces vxbridge) # 03v,19aug11,mze 6.10 version remove warnings for usr builds # 03u,15sep10,xhs support IPLITE # 03t,25jun10,rjq Added IPNTP # 03s,25feb10,mze adjust TOOL_FAMILY # 03r,11feb10,uol WIND00158454: Use rclean rule also for GPP. # 03q,05feb10,mry Adding IPMACSEC # 03p,31jul09,ten Add IPL2TP # 03o,22jul09,uol Add IPMIPPM # 03n,14jul09,mdk merge from networking branch # 03m,18jun09,mze adding changes to support /usr/lib in VSBs # 03l,18jun09,mze fixin WIND00153279 again, change lost after merge. # 03k,11jun09,dwb Adding vxdot1x # 03j,15jun09,mze fixin WIND00153279 again, change lost after merge. # 03i,16dec08,mry Add IPWPS # 03h,11feb09,ggz Move coreip and bridge into CVS. # 03g,27jan09,pee WIND00153279 # 03k,23apr09,uol Add module ipmippm # 03j,26mar09,uol WIND00158454: Use rclean rule also for GPP. # 03i,02mar09,uol Add ipmip6hm and ipmip6pm # 03h,09feb09,mca add IPCAVIUM component # 03g,03dec08,f_g added IPSCTP component # 03g,27jan09,pee WIND00153279 # 03f,17nov08,mze move export of FEATURE_SET below VSB eval # 03e,04nov08,mze test # 03d,03nov08,mze move eval out of conditional # 03b,29oct08,mze fix usr side tool reference # 03a,02oct08,mze Change VSB exports # 02z,02sep08,mze removal of ipcom_libconfig.mk reference # 02y,31jul08,pee exporting _WRS_CONFIG_ADDEDCFLAGS # 02x,08jul08,pee adding IPDHCPS6 to VSB parameter translation list # 02w,02jul08,mze undo last change # 02v,02jul08,mze VSB changes # 02u,01jul08,mze adding new Components # 02t,30jun08,mze adding DIAMETERP # 02s,30jun08,mze VSB changes # 02r,24jun08,mze added SPACE # 02q,23jun08,mze remove IPVXCOMPAT # 02p,05jun08,mze VSB changes # 02o,03jun08,pee including VSB configuration. # 02n,03jun08,mze changing library location to be vsb based # 02m,28may08,dlk Added vxmux module. # 02l,20feb08,tlu Add build support for IPROHC # 02k,27may08,uol Move util_ipdef and util_ipinc to be visible in MSP builds. # 02j,26may08,brg Changing product name ipvxcompat to vxcompat # 02i,01may08,dlk Added util_ipdef, util_ipinc rules. # 02h,14may08,brg Adding ipvxcompat # 02g,08may08,uol Add module ipmip # 02f,07aug07,mry Add 802.1x supplicant support # 02e,04sep07,kch Stripped leading and trailing whitespace (WIND00046447). # 02d,17jul07,spw Added IPWLAN # 02c,12jul07,nlu add mip4 # 02b,29jun07,kch Removed trailing space after the backslash immediately # following "ipmip4". # 02a,29jun07,mcarlste Add IPFREESCALE # 01z,29jun07,??? build rules for MIP4 # 01y,29jun07,??? build rules for MIP4 # 01x,19jun07,tpw Use WRVX_COMPBASE vs. WIND_COMPONENTS correctly. # 01w,03apr07,tlu Add build support for IPDIAMETER # 01v,02may07,tkf Update component library path for SMP. # 01u,26apr07,tkf Add IPv6-Only build support. Also fix CQ:WIND00092985. # 01t,21feb07,kch Added DIR_EXT for SMP build support. # 01s,13dec06,tkf Fix user side compiler error (WIND00083671). # 01r,27oct06,tkf Change library archive location to WIND_COMPONENTS/obj. # 01q,26sep06,kch Added IPRADIUS. # 01p,14sep06,tkf Replcaed target all with kernel. Added IPDHCPC6 and # IPDHCPS6. # 01o,12sep06,dlk Replace 'make' with MAKE variable. # 01n,09sep06,jbl add WRSNMP to the mix # 01m,08sep06,tkf Add user side build support. # 01l,06sep06,tkf Changed the way IpComps is processed. # 01k,07aug06,kch Renamed IPDHCPDIR to IPDHCPSDIR and IPFWDIR to # IPFIREWALLDIR. Also removed unsupported IPNet products. # 01j,19jul06,tlu Added support for IPRIPNG component # 01i,19jul06,tkf Include make.. regardless of whether # VX_CPU_FAMILY is defined or not. # 01h,03jul06,tkf Modifications for use with version-less component # directories: define and export BASE_ROOT; changed rule to # ignore version numbers in directory names. # 01g,02jul06,tkf Export WIND_IPNET=true by default. # 01f,12jun06,dlk Simplify component logic; handle missing components. # 01e,08jun06,tkf More dynamic directory checking on all components. # 01d,25may06,tkf Merge with Dan Kresja's and John True's changes.\ # 01c,15may06,tkf Move MSP/GPP env vars to here. # 01b,10may06,tkf Extract VxWorks version from env vars. Add rclean target. # Get CPU/TOOL info from env vars. # 01a,09may06,tkf Remove dependecy on build host and DCOM component. # Modified to build the IPNET way temporarily. # 00a,01may06,j_c written. # # DESCRIPTION # This is the top level Makefile for the comp_ip_net2 component # ## # Define and export current VxWorks version # WR_IPCOM_NAME := vxworks WR_IPCOM_VERSION := $(filter-out $(WR_IPCOM_NAME), $(subst -, ,$(WIND_PLATFORM))) export WR_IPCOM_VERSION := $(subst .,_,$(WR_IPCOM_VERSION)) export COMP_IPNET_PATH = $(CURDIR) export BASE_ROOT := $(COMP_IPNET_PATH) TGT_DIR = $(WIND_BASE)/target # must only bring in VSB if building kernel ifeq ($(SPACE),user) TMP_USR_BLD := 1 endif ifeq ($(SPACE),USER) TMP_USR_BLD := 1 endif ifndef __DEFS_VSBVARS_MK_INCLUDED include $(WIND_BASE)/target/h/make/defs.vsbvars.mk endif ifneq ($(wildcard $(VSB_MAKE_CONFIG_FILE)),) include $(VSB_MAKE_CONFIG_FILE) endif ifeq ($(strip $(COMPONENT_IPLITE)),true) ifeq ($(TMP_USR_BLD),) # the following is a list of the IPNET configurations that have booleans associated with them _VARLIST = \ COMPONENT_IPLITE \ WIND_IPLITE \ COMPONENT_COREIP \ FEATURE_IPLITE_GEN_DEPEND \ FEATURE_IP_GPP_BUILD \ MSP_FEATURE_PAD \ MSP_FEATURE_PCD \ MSP_FEATURE_PID \ MSP_FEATURE_PNE \ MSP_FEATURE_VIPER \ MSP_KERNEL \ MSP_RTP \ MSP_BUILD_USER \ COMPONENT_VXMUX \ COMPONENT_VXCOMPAT \ COMPONENT_VXCOREIP else _VARLIST = \ COMPONENT_IPLITE \ WIND_IPLITE \ FEATURE_IPLITE_GEN_DEPEND MSP_RTP= true export MSP_RTP COMPONENT_COREIP= true export COMPONENT_COREIP MSP_BUILD_USER= true export MSP_BUILD_USER endif else ifeq ($(TMP_USR_BLD),) # the following is a list of the IPNET configurations that have booleans associated with them _VARLIST = \ COMPONENT_IPNET \ COMPONENT_IPLITE \ WIND_IPNET \ COMPONENT_COREIP \ FEATURE_IPNET_VERBOSE \ FEATURE_IPNET_GEN_DEPEND \ FEATURE_IP_GPP_BUILD \ MSP_FEATURE_PAD \ MSP_FEATURE_PCD \ MSP_FEATURE_PID \ MSP_FEATURE_PNE \ MSP_FEATURE_VIPER \ MSP_KERNEL \ MSP_RTP \ MSP_BUILD_USER \ COMPONENT_DOT1X \ COMPONENT_XML \ COMPONENT_IP8021X \ COMPONENT_IPWPS \ COMPONENT_IPAPPL \ COMPONENT_IPCAVIUM \ COMPONENT_IPXINC \ COMPONENT_IPDHCPC6 \ COMPONENT_IPDHCPR \ COMPONENT_IPDHCPS \ COMPONENT_IPDHCPS6 \ COMPONENT_IPDIAMETERC \ COMPONENT_IPDIAMETERP \ COMPONENT_IPEAP \ COMPONENT_IPFIREWALL \ COMPONENT_IPFREESCALE \ COMPONENT_IPHWCRYPTO \ COMPONENT_IPIKE \ COMPONENT_IPIPSEC \ COMPONENT_IPL2TP \ COMPONENT_IPMCP \ COMPONENT_IPMCRYPTO \ COMPONENT_IPMIP \ COMPONENT_IPMIP4 \ COMPONENT_IPMIP6 \ COMPONENT_IPMIP6HA \ COMPONENT_IPMIP6MN \ COMPONENT_IPMIP6PM \ COMPONENT_IPMIPFA \ COMPONENT_IPMIPHA \ COMPONENT_IPMIPMN \ COMPONENT_IPMIPPM \ COMPONENT_IPMPLS \ COMPONENT_IPPPP \ COMPONENT_IPPTP \ COMPONENT_TSN \ COMPONENT_IPRADIUS \ COMPONENT_IPRIP \ COMPONENT_IPRIPNG \ COMPONENT_IPSNTP \ COMPONENT_IPSSH \ COMPONENT_IPTCP \ COMPONENT_IPSCTP \ COMPONENT_WLAN \ COMPONENT_SNMP \ COMPONENT_DCOM \ COMPONENT_OPC \ COMPONENT_BRIDGE \ COMPONENT_CAN \ COMPONENT_SECURITY \ COMPONENT_VIP \ FEATURE_SNMP_V3 \ FEATURE_SNMP_AGENTX \ COMPONENT_IPROHC \ COMPONENT_VXMUX \ COMPONENT_VXCOMPAT \ COMPONENT_VXCOREIP \ COMPONENT_VXDOT1X \ COMPONENT_IPMACSEC \ COMPONENT_IPNTP \ COMPONENT_IFPROXY \ COMPONENT_WRNAD else _VARLIST = \ COMPONENT_IPNET \ WIND_IPNET \ FEATURE_IPNET_VERBOSE \ FEATURE_IPNET_GEN_DEPEND \ MSP_FEATURE_PAD \ MSP_FEATURE_PCD \ MSP_FEATURE_PID \ MSP_FEATURE_PNE MSP_RTP= true export MSP_RTP COMPONENT_COREIP= true export COMPONENT_COREIP MSP_BUILD_USER= true export MSP_BUILD_USER endif endif # straight export export _WRS_CONFIG_ADDEDCFLAGS export _WRS_CONFIG_ADDEDCFLAGS2 export _WRS_CONFIG_ADDEDCFLAGS_APP # the following is a list of the IPNET configurations that have strings associated with them _STRLIST = \ FEATURE_IPNET_BUILD define defvars ifdef _WRS_CONFIG_$1 $1 = true else $1 = false endif export $1 endef $(eval $(foreach var,$(_VARLIST),$(call defvars,$(var)))) ifeq ($(MSP_FEATURE_PAD),true) export FEATURE_SET = pad endif ifeq ($(MSP_FEATURE_PCD),true) export FEATURE_SET = pcd endif ifeq ($(MSP_FEATURE_PID),true) export FEATURE_SET = pid endif ifeq ($(MSP_FEATURE_PNE),true) export FEATURE_SET = pne endif define defStr $1 = $(_WRS_CONFIG_$1) export $1 endef $(eval $(foreach var,$(_STRLIST),$(call defStr,$(var)))) ifdef _WRS_CONFIG_COMPONENT_IPNET ifeq ($(WIND_IPNET),) export WIND_IPNET = true endif endif ifdef _WRS_CONFIG_COMPONENT_IPLITE ifeq ($(WIND_IPLITE),) export WIND_IPLITE = true endif endif IP_DOT := . IP_EMPTY := IP_SPACE := $(IP_EMPTY) $(IP_EMPTY) ## # The available IP components are listed as . # IpComps := \ BRIDGEDIR.vxbridge \ IP8021XDIR.ip8021x \ IPAPPLDIR.ipappl \ IPCAVIUMDIR.ipcavium \ IPCOMDIR.ipcom \ IPDHCPC6DIR.ipdhcpc6 \ IPDHCPRDIR.ipdhcpr \ IPDHCPS6DIR.ipdhcps6 \ IPDHCPSDIR.ipdhcps \ IPDIAMETERDIR.ipdiameter \ IPEAPDIR.ipeap \ IPFIREWALLDIR.ipfirewall \ IPFREESCALEDIR.ipfreescale \ IPHWCRYPTODIR.iphwcrypto \ IPIKEDIR.ipike \ IPIPSEC2DIR.ipipsec2 \ IPL2TPDIR.ipl2tp \ IPLDAPCDIR.ipldapc \ IPLITEDIR.iplite2 \ IPMACSECDIR.ipmacsec \ IPMCPDIR.ipmcp \ IPMCRYPTODIR.ipmcrypto \ IPMIP4DIR.ipmip4 \ IPMIP6DIR.ipmip6 \ IPMIP6HADIR.ipmip6ha \ IPMIP6MNDIR.ipmip6mn \ IPMIP6PMDIR.ipmip6pm \ IPMIPDIR.ipmip \ IPMIPFADIR.ipmipfa \ IPMIPHADIR.ipmipha \ IPMIPMNDIR.ipmipmn \ IPMIPPMDIR.ipmippm \ IPMPLSDIR.ipmpls \ IPNET2DIR.ipnet2 \ IPPPPDIR.ipppp \ IPPTPDIR.ipptp \ TSNDIR.tsn \ IPRADIUSDIR.ipradius \ IPRIPDIR.iprip \ IPRIPNGDIR.ipripng \ IPROHCDIR.iprohc \ IPSCTPDIR.ipsctp \ IPSNTPDIR.ipsntp \ IPSSHDIR.ipssh \ IPTCPDIR.iptcp \ IPWLANDIR.ipwlan \ IPWPSDIR.ipwps \ IPXINCDIR.ipxinc \ VXCOMPATDIR.vxcompat \ VXCOREIPDIR.vxcoreip \ VXDOT1XDIR.vxdot1x \ VXMUXDIR.vxmux \ WRSNMP.wrsnmp \ IPNTPDIR.ipntp \ IFPROXYDIR.vxifproxy \ WRNADDIR.wrnad ### # By default we choose the lexically last IPNET component version in hopes # that it is the most recent. The directory macros (e.g. IPCOMDIR) may of # course be overriden on the command line. define _DIR_DEF ifeq ($$($(basename $(1))),) TMP_DIRSU := $$(wildcard $(patsubst .%,%,$(suffix $(1)))*) TMP_DIRS := $$(sort $$(TMP_DIRSU)) ifneq ($$(strip $$(TMP_DIRS)),) export $(basename $(1)) := $$(word 1,$$(TMP_DIRS)) endif endif IP_BUILDABLE_COMPS := $$(IP_BUILDABLE_COMPS) $(basename $(1))=$$($(basename $(1))) #$$(warning $(basename $(1)) = $$($(basename $(1))) ) endef $(foreach IpComp,$(IpComps), $(eval $(call _DIR_DEF,$(IpComp)))) ifeq ($(IPCOMDIR),) $(error IPCOMDIR is empty.) endif ifeq ($(TGT_DIR),) ifeq ($(TMP_USR_BLD),) TGT_DIR = $(WIND_BASE)/target else TGT_DIR = $(WIND_BASE)/target/usr endif endif include $(WIND_BASE)/target/h/make/defs.options ## # Ensure VX_CPU_FAMILY is defined # ifeq ($(TOOL_FAMILY),) ifeq ($(findstring gnu,$(TOOL)),gnu) TOOL_FAMILY = gnu endif ifeq ($(findstring diab,$(TOOL)),diab) TOOL_FAMILY = diab endif ifeq ($(findstring icc,$(TOOL)),icc) TOOL_FAMILY = icc endif endif ifeq ($(TMP_USR_BLD),) TMP_BUILD_SPACE := krnl include $(TGT_DIR)/h/tool/$(TOOL_FAMILY)/make.$(CPU)$(TOOL) ifneq ($(LOCAL_OBJS),) ifeq ($(WR_IPCOM_LIB_DIR),) export WR_IPCOM_LIB_DIR := $(CURDIR)/$(IPCOMDIR)/lib$(MAJOR_OPTION_SUFFIX)/$(VX_CPU_FAMILY)/$(CPU)/$(TOOL_COMMON_DIR) endif else ifeq ($(WR_IPCOM_LIB_DIR),) export WR_IPCOM_LIB_DIR := $(VSB_DIR)/$(VX_CPU_FAMILY)/$(CPU)$(CPU_OPTION_SUFFIX)/$(TOOL_COMMON_DIR)$(LIB_DIR_TAG)$(MINOR_OPTION_SUFFIX) endif endif else TMP_BUILD_SPACE := usr include $(TGT_DIR)/usr/tool/$(TOOL_FAMILY)/make.$(CPU)$(TOOL) ifneq ($(LOCAL_OBJS),) ifeq ($(WR_IPCOM_LIB_DIR),) export WR_IPCOM_LIB_DIR := $(CURDIR)/$(IPCOMDIR)/lib$(MAJOR_OPTION_SUFFIX)/usr/lib/$(VX_CPU_FAMILY)/$(CPU)/$(TOOL_COMMON_DIR) endif else ifeq ($(WR_IPCOM_LIB_DIR),) export WR_IPCOM_LIB_DIR := $(VSB_DIR)/usr/lib/$(VX_CPU_FAMILY)/$(CPU)/$(TOOL_COMMON_DIR) endif endif endif export WR_IPTARGET := $(VX_CPU_FAMILY) ifneq ($(FEATURE_SET),) # MSP Build ### # This block is to be used during feature set build # include $(WIND_BASE)/config/common/defs.component #-include config.mk ifeq ($(strip $(COMPONENT_IPNET)),true) kernel: ifeq ($(TARGET),rclean) @echo "make: removing targets and objects of `pwd`" $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) cleanall else ifeq ($(DEBUG),true) @echo "#" @echo "#" @echo "######### Build Config Info ########" @echo "#" @echo "# IP Component Dirs : $(IP_BUILDABLE_COMPS)" @echo "#" @echo "# CPU = $(CPU)" @echo "# TOOL = $(TOOL)" @echo "# VX_CPU_FAMILY = $(VX_CPU_FAMILY)" @echo "# WR_IPCOM_LIB_DIR = $(WR_IPCOM_LIB_DIR)" @echo "# WR_IPCOM_VERSION = $(WR_IPCOM_VERSION)" @echo "# COMP_IPNET_PATH = $(COMP_IPNET_PATH)" @echo "#" @echo "####################################" @echo "#" @echo "#" else $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) VSB_DIR=$(VSB_DIR) all endif endif usr: endif ifeq ($(strip $(COMPONENT_IPLITE)),true) kernel: ifeq ($(TARGET),rclean) @echo "make: removing targets and objects of `pwd`" $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) cleanall else ifeq ($(DEBUG),true) @echo "#" @echo "#" @echo "######### Build Config Info ########" @echo "#" @echo "# IP Component Dirs : $(IP_BUILDABLE_COMPS)" @echo "#" @echo "# CPU = $(CPU)" @echo "# TOOL = $(TOOL)" @echo "# VX_CPU_FAMILY = $(VX_CPU_FAMILY)" @echo "# WR_IPCOM_LIB_DIR = $(WR_IPCOM_LIB_DIR)" @echo "# WR_IPCOM_VERSION = $(WR_IPCOM_VERSION)" @echo "# COMP_IPNET_PATH = $(COMP_IPNET_PATH)" @echo "#" @echo "####################################" @echo "#" @echo "#" else $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) all endif endif usr: endif include $(WIND_BASE)/config/common/rules.component # # End of feature set build block. ### else # Not an MSP build ### # This block is to be used during non-feature set build # kernel : @echo "make: building targets of $(COMP_IPNET_PATH)" ifeq ($(DEBUG),true) @echo "#" @echo "#" @echo "######### Build Config Info ########" @echo "#" @echo "# IP Component Dirs : $(IP_BUILDABLE_COMPS)" @echo "#" @echo "# CPU = $(CPU)" @echo "# TOOL = $(TOOL)" @echo "# VX_CPU_FAMILY = $(VX_CPU_FAMILY)" @echo "# WR_IPCOM_LIB_DIR = $(WR_IPCOM_LIB_DIR)" @echo "# WR_IPCOM_VERSION = $(WR_IPCOM_VERSION)" @echo "# COMP_IPNET_PATH = $(COMP_IPNET_PATH)" @echo "#" @echo "####################################" @echo "#" @echo "#" else $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) all endif usr : endif # End MSP Build rclean : @echo "make: removing targets and objects of `pwd`" $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) cleanall .PHONY : util_ipdef util_ipinc util_ipdef: $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) util_ipdef util_ipinc: $(MAKE) -C $(IPCOMDIR) TOOL=$(TOOL) CPU=$(CPU) util_ipinc