147 lines
5.0 KiB
Plaintext
147 lines
5.0 KiB
Plaintext
# CONFIG.Common.vxWorksCommon
|
|
#
|
|
# $Id$
|
|
# This file is maintained by the build community.
|
|
#
|
|
# Definitions for vxWorks target archs
|
|
# Sites may override these definitions in CONFIG_SITE.Common.vxWorksCommon
|
|
# or CONFIG_SITE.<host>.vxWorksCommon
|
|
#-------------------------------------------------------
|
|
|
|
# Vx valid build types
|
|
VALID_BUILDS = Ioc
|
|
|
|
#--------------------------------------------------
|
|
# operating system class (include/os/<os_class>)
|
|
OS_CLASS = vxWorks
|
|
|
|
#-------------------------------------------------------
|
|
# Prefix and suffix definitions
|
|
EXE =
|
|
OBJ = .o
|
|
LIB_PREFIX =lib
|
|
LIB_SUFFIX = .a
|
|
MUNCH_SUFFIX = .munch
|
|
|
|
#-------------------------------------------------------
|
|
# Library definitions
|
|
LIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
|
|
|
|
#--------------------------------------------------
|
|
# Prod: DEPLIBS, LDFLAGS, and LDLIBS definitions
|
|
|
|
PROD_DEPLIBS=$(foreach lib,$(PROD_LIBS) $(USR_LIBS), \
|
|
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*, \
|
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
|
|
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
|
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
|
|
|
|
|
|
PROD_LDLIBS = $(addprefix -l,$($*_LDLIBS) $(PROD_LIBS) $(USR_LIBS)\
|
|
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
|
|
|
|
PROD_DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
|
|
PRODDIR_LDFLAGS += $(sort $(PROD_DEPLIB_DIRS:%=-L%))
|
|
|
|
#-------------------------------------------------------
|
|
# Prod definitions
|
|
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
|
CTDT_SRCS = $(PRODNAME:%$(EXE)=%_ctdt.c)
|
|
CTDT_OBJS = $(PRODNAME:%$(EXE)=%_ctdt$(OBJ))
|
|
NMS = $(PRODNAME:%$(EXE)=%.nm)
|
|
|
|
#-------------------------------------------------------
|
|
# R3.13 compatability object library definitions
|
|
# Does not allow $*_SRCS or $*_OBJS. Allows only OBJLIB_SRCS and OBJLIB_OBJS.
|
|
OBJLIB += $(OBJLIB_$(OS_CLASS))
|
|
OBJLIB_SUFFIX = Library.o
|
|
OBJLIBNAME = $(addsuffix $(OBJLIB_SUFFIX),$(basename $(OBJLIB)))
|
|
OBJLIB_LD_OBJS += $(addsuffix $(OBJ),$(basename $(OBJLIB_SRCS) $(OBJLIB_OBJS)))
|
|
PRODTARGETS += $(OBJLIBNAME)
|
|
INSTALL_PROD += $(OBJLIBNAME:%=$(INSTALL_BIN)/%)
|
|
OBJLIB_MUNCHNAME += $(OBJLIBNAME:%$(OBJ)=%$(MUNCH_SUFFIX))
|
|
INSTALL_MUNCHS += $(OBJLIB_MUNCHNAME:%=$(INSTALL_BIN)/%)
|
|
PRODTARGETS += $(OBJLIB_MUNCHNAME)
|
|
CTDT_SRCS += $(OBJLIBNAME:%$(OBJ)=%_ctdt.c)
|
|
CTDT_OBJS += $(OBJLIBNAME:%$(OBJ)=%_ctdt$(OBJ))
|
|
NMS += $(OBJLIBNAME:%$(OBJ)=%.nm)
|
|
OBJLIB_LINK.cpp = $(LD) -o $@ $(OBJLIB_LD_OBJS)
|
|
SRC_FILES += $(OBJLIB_SRCS)
|
|
|
|
#--------------------------------------------------
|
|
# vxWorks directory definitions
|
|
# Tornado directory definitions
|
|
GNU_TARGET_INCLUDE_DIR = $(VX_DIR)/target/h
|
|
GNU_DIR = $(VX_DIR)/host/$(WIND_HOST_TYPE)
|
|
|
|
#--------------------------------------------------
|
|
# C++ host processing
|
|
NM = $(GNU_BIN)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE)
|
|
|
|
#--------------------------------------------------
|
|
# The follow 2 exports prevent gnu cross-compiler
|
|
# from finding wrong assembler (as).
|
|
export WIND_BASE = $(VX_DIR)
|
|
export WIND_HOST_TYPE
|
|
|
|
#--------------------------------------------------
|
|
# Tornado2.2
|
|
# The follow export allows vxWorks.h to include gnu header files
|
|
export TOOL_FAMILY = GNU
|
|
|
|
#--------------------------------------------------
|
|
# Operating system flags
|
|
OP_SYS_CPPFLAGS += -DvxWorks
|
|
OP_SYS_CFLAGS += -fno-builtin
|
|
#OP_SYS_CFLAGS += -fno-builtin -fdollars-in-identifiers
|
|
OP_SYS_LDFLAGS +=
|
|
|
|
# Fix for vxWorks headers using macros defined in
|
|
# vxWorks.h but not including vxWorks.h
|
|
OP_SYS_INCLUDE_CPPFLAGS += -include $(GNU_TARGET_INCLUDE_DIR)/vxWorks.h
|
|
|
|
#--------------------------------------------------
|
|
# code flags
|
|
CODE_CFLAGS =
|
|
#
|
|
# WRS still uses an old gnu compiler with a broken -frepo and
|
|
# otherwise no automatic template instantiation mechanism as
|
|
# is the defacto standard approach today. If we remove this
|
|
# flag certain ppc targets will not build.
|
|
CODE_CXXFLAGS = -fno-implicit-templates
|
|
|
|
#--------------------------------------------------
|
|
# posix c preprocessor flags
|
|
POSIX_CPPFLAGS_YES = -D_POSIX_SOURCE
|
|
POSIX_CPPFLAGS_NO =
|
|
|
|
#--------------------------------------------------
|
|
# no shared libs for vxWorks
|
|
SHRLIB_CFLAGS =
|
|
SHRLIB_LDFLAGS =
|
|
|
|
#--------------------------------------------------
|
|
# osithead use default stack, YES or NO override
|
|
OSITHREAD_USE_DEFAULT_STACK = NO
|
|
|
|
#--------------------------------------------------
|
|
# Link definitions
|
|
LINK.cpp = $(LD) -o $@ $(STATIC_LDFLAGS) $(PRODDIR_LDFLAGS) $(LDFLAGS)
|
|
LINK.cpp += $(PROD_LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
|
|
|
|
#--------------------------------------------------
|
|
# Definitions for compile of *_ctdt.c file
|
|
CFLAGS_ctdt = $(filter-out -pedantic,$(CFLAGS)) -fdollars-in-identifiers
|
|
COMPILE.ctdt = $(CC) -c $(CPPFLAGS) $(CFLAGS_ctdt) $(call PATH_FILTER,$(INCLUDES)) $(SOURCE_FLAG)
|
|
|
|
#--------------------------------------------------
|
|
# C preprocessor command
|
|
VXCPPFLAGS = $(filterout $(OP_SYS_INCLUDE_CPPFLAGS),$(CPPFLAGS))
|
|
PREPROCESS.cpp = $(CPP) $(VXCPPFLAGS) $(INCLUDES) $< > $@
|
|
|
|
#--------------------------------------------------
|
|
# Allow site overrides
|
|
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorksCommon
|
|
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).vxWorksCommon
|
|
|