Changes to create vxWorks archive libraries and prods.
This commit is contained in:
@@ -9,16 +9,22 @@ eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
|
||||
|
||||
while ($line = <STDIN>)
|
||||
{
|
||||
next if ($line =~ /__?GLOBAL_.F.+/);
|
||||
next if ($line =~ /__?GLOBAL_.I._GLOBAL_.D.+/);
|
||||
if ($line =~ /__?GLOBAL_.D.+/) {
|
||||
($adr,$type,$name) = split ' ',$line,3;
|
||||
chop $name;
|
||||
$name =~ s/^__/_/;
|
||||
next if ( $name =~ /^__?GLOBAL_.D.*.\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.D.\.\./ );
|
||||
@dtorlist = (@dtorlist,$name);
|
||||
};
|
||||
if ($line =~ /__?GLOBAL_.I.+/) {
|
||||
($adr,$type,$name) = split ' ',$line,3;
|
||||
chop $name;
|
||||
$name =~ s/^__/_/;
|
||||
next if ( $name =~ /^__?GLOBAL_.I.*.\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.I.\.\./ );
|
||||
@ctorlist = (@ctorlist,$name);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -203,12 +203,13 @@ endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(PROD_LIBS_$(OS_CLASS))),)
|
||||
PROD_LIBS += $(subst -nil-,,$(PROD_LIBS_$(OS_CLASS)))
|
||||
PROD_LDLIBS += $(subst -nil-,,$(PROD_LIBS_$(OS_CLASS)))
|
||||
else
|
||||
ifdef PROD_LIBS_DEFAULT
|
||||
PROD_LIBS += $(PROD_LIBS_DEFAULT)
|
||||
PROD_LDLIBS += $(PROD_LIBS_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
PROD_LDLIBS += $(PROD_LIBS)
|
||||
|
||||
ifneq ($(strip $(SHRLIB_LIBS_$(OS_CLASS))),)
|
||||
SHRLIB_LIBS += $(subst -nil-,,$(SHRLIB_LIBS_$(OS_CLASS)))
|
||||
@@ -219,12 +220,13 @@ endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(USR_LIBS_$(OS_CLASS))),)
|
||||
USR_LIBS += $(subst -nil-,,$(USR_LIBS_$(OS_CLASS)))
|
||||
USR_LDLIBS += $(subst -nil-,,$(USR_LIBS_$(OS_CLASS)))
|
||||
else
|
||||
ifdef USR_LIBS_DEFAULT
|
||||
USR_LIBS += $(USR_LIBS_DEFAULT)
|
||||
USR_LDLIBS += $(USR_LIBS_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
USR_LDLIBS += $(USR_LIBS)
|
||||
|
||||
#
|
||||
# concat specific library contents (if defined) to SYS_PROD_LIBS
|
||||
@@ -241,10 +243,26 @@ endif
|
||||
# concat specific products
|
||||
#
|
||||
ifneq ($(strip $(PROD_$(OS_CLASS))),)
|
||||
PROD += $(subst -nil-,,$(PROD_$(OS_CLASS)))
|
||||
PROD+=$(subst -nil-,,$(PROD_$(OS_CLASS)))
|
||||
else
|
||||
ifdef PROD_DEFAULT
|
||||
PROD += $(PROD_DEFAULT)
|
||||
ifneq (,$(strip $(PROD_DEFAULT)))
|
||||
PROD+=$(PROD_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(PROD_IOC_$(OS_CLASS))),)
|
||||
PROD_IOC+=$(subst -nil-,,$(PROD_IOC_$(OS_CLASS)))
|
||||
else
|
||||
ifneq (,$(strip $(PROD_IOC_DEFAULT)))
|
||||
PROD_IOC+=$(PROD_IOC_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(PROD_HOST_$(OS_CLASS))),)
|
||||
PROD_HOST+=$(subst -nil-,,$(PROD_HOST_$(OS_CLASS)))
|
||||
else
|
||||
ifneq (,$(strip $(PROD_HOST_DEFAULT)))
|
||||
PROD_HOST+=$(PROD_HOST_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -252,10 +270,26 @@ endif
|
||||
# concat specific products
|
||||
#
|
||||
ifneq ($(strip $(TESTPROD_$(OS_CLASS))),)
|
||||
TESTPROD += $(subst -nil-,,$(TESTPROD_$(OS_CLASS)))
|
||||
TESTPROD+=$(subst -nil-,,$(TESTPROD_$(OS_CLASS)))
|
||||
else
|
||||
ifdef TESTPROD_DEFAULT
|
||||
TESTPROD += $(TESTPROD_DEFAULT)
|
||||
ifneq (,$(strip $(TESTPROD_DEFAULT)))
|
||||
TESTPROD+=$(TESTPROD_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(TESTPROD_IOC_$(OS_CLASS))),)
|
||||
TESTPROD_IOC+=$(subst -nil-,,$(TESTPROD_IOC_$(OS_CLASS)))
|
||||
else
|
||||
ifneq (,$(strip $(TESTPROD_IOC_DEFAULT)))
|
||||
TESTPROD_IOC+=$(TESTPROD_IOC_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(TESTPROD_HOST_$(OS_CLASS))),)
|
||||
TESTPROD_HOST+=$(subst -nil-,,$(TESTPROD_HOST_$(OS_CLASS)))
|
||||
else
|
||||
ifneq (,$(strip $(TESTPROD_HOST_DEFAULT)))
|
||||
TESTPROD_HOST+=$(TESTPROD_HOST_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -31,6 +31,13 @@ iocsh_DIR = $(EPICS_BASE_LIB)
|
||||
miscIoc_DIR = $(EPICS_BASE_LIB)
|
||||
registryIoc_DIR = $(EPICS_BASE_LIB)
|
||||
rsrvIoc_DIR = $(EPICS_BASE_LIB)
|
||||
recIoc_DIR = $(EPICS_BASE_LIB)
|
||||
softDevIoc_DIR = $(EPICS_BASE_LIB)
|
||||
testDevIoc_DIR = $(EPICS_BASE_LIB)
|
||||
recIocObj_DIR = $(EPICS_BASE_LIB)
|
||||
softDevIocObj_DIR = $(EPICS_BASE_LIB)
|
||||
testDevIocObj_DIR = $(EPICS_BASE_LIB)
|
||||
iocCore_DIR = $(EPICS_BASE_LIB)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# For applications and extensions
|
||||
|
||||
@@ -150,18 +150,17 @@ USR_INCLUDES =
|
||||
USR_CFLAGS =
|
||||
USR_CXXFLAGS =
|
||||
USR_LDFLAGS =
|
||||
USR_LDLIBS =
|
||||
USR_LIBS =
|
||||
USR_CPPFLAGS =
|
||||
USR_DBDFLAGS =
|
||||
USR_ARFLAGS =
|
||||
|
||||
# Target specific options
|
||||
TARGET_INCLUDES = $($(basename $@)_INCLUDES) $($(basename $@)_INCLUDES_$(OS_CLASS))
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS) $($(basename $@)_CFLAGS_$(OS_CLASS))
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS) $($(basename $@)_CXXFLAGS_$(OS_CLASS))
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS) $($(basename $@)_LDFLAGS_$(OS_CLASS))
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS) $($(basename $@)_LDLIBS_$(OS_CLASS))
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS) $($(basename $@)_CPPFLAGS_$(OS_CLASS))
|
||||
TARGET_INCLUDES = $($(basename $@)_INCLUDES_$(OS_CLASS)) $($(basename $@)_INCLUDES)
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS_$(OS_CLASS)) $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS_$(OS_CLASS)) $($(basename $@)_CXXFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS_$(OS_CLASS)) $($(basename $@)_LDFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS_$(OS_CLASS)) $($(basename $@)_CPPFLAGS)
|
||||
|
||||
# Level of ansi conformance flags
|
||||
CONFORM_CFLAGS = $(CONFORM_CFLAGS_$(CMPLR))
|
||||
@@ -204,7 +203,7 @@ CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(DEPLIB_LDFLAGS)\
|
||||
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
|
||||
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
|
||||
LDLIBS = $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
|
||||
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
|
||||
|
||||
CPPFLAGS += $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS) $(EPICS_BASE_CPPFLAGS)\
|
||||
@@ -248,7 +247,7 @@ DEPENDS_SRC_FILES = $(SRC_FILES)
|
||||
|
||||
INSTALL_PROD= $(PRODNAME:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%)
|
||||
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_LIB)/%)
|
||||
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_BIN)/%)
|
||||
INSTALL_SHRLIBS= $(SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
|
||||
INSTALL_DLL_LINK_LIBS=$(DLL_LINK_LIBNAME:%=$(INSTALL_LIB)/%)
|
||||
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
# override
|
||||
#
|
||||
#CROSS_COMPILER_TARGET_ARCHS=
|
||||
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
|
||||
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040 vxWorks-ppc604
|
||||
|
||||
|
||||
# If only a subset of the host architectures perform
|
||||
|
||||
@@ -48,18 +48,15 @@ include $(CONFIG)/CONFIG_ADDONS
|
||||
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
|
||||
LIBRARY += $(LIBRARY_HOST)
|
||||
OBJS += $(OBJS_HOST)
|
||||
else
|
||||
PROD = $(PROD_$(OS_CLASS))
|
||||
TESTPROD = $(TESTPROD_$(OS_CLASS))
|
||||
ifneq ($(findstring Ioc,$(VALID_BUILDS)),Ioc)
|
||||
LIBRARY = $(LIBRARY_$(OS_CLASS))
|
||||
OBJS = $(OBJS_$(OS_CLASS))
|
||||
endif
|
||||
PROD += $(PROD_HOST)
|
||||
TESTPROD += $(TESTPROD_HOST)
|
||||
endif
|
||||
|
||||
ifeq ($(findstring Ioc,$(VALID_BUILDS)),Ioc)
|
||||
LIBRARY += $(LIBRARY_IOC)
|
||||
OBJS += $(OBJS_IOC)
|
||||
PROD += $(PROD_IOC)
|
||||
TESTPROD += $(TESTPROD_IOC)
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
@@ -88,14 +85,18 @@ MakefileInclude: ../Makefile
|
||||
|
||||
endif # PROD, TESTPROD, or LIBRARY defined
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Products and Object libraries
|
||||
#
|
||||
PRODTARGETS += $(PRODNAME) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Libraries
|
||||
#
|
||||
|
||||
LIBTARGETS += $(LIBNAME)
|
||||
LIBTARGETS += $(MUNCHNAME) $(LIBRARY_CTDT_SRCS) $(LIBRARY_CTDT_OBJS) $(LIBRARY_NM)
|
||||
ifneq (,$(strip $(LIBTARGETS)))
|
||||
LIBTARGETS += $(INSTALL_LIBS) $(INSTALL_MUNCHS)
|
||||
LIBTARGETS += $(INSTALL_LIBS)
|
||||
ifeq ($(strip $(SHARED_LIBRARIES)),YES)
|
||||
LIBTARGETS += $(SHRLIBNAME) $(INSTALL_SHRLIBS) $(INSTALL_DLL_LINK_LIBS)
|
||||
endif # SHARED_LIBRARIES=YES
|
||||
@@ -120,11 +121,11 @@ install: buildInstall
|
||||
|
||||
rebuild: clean install
|
||||
|
||||
build: $(OBJSNAME) $(LIBTARGETS) $(PRODNAME) $(TESTPRODNAME) \
|
||||
build: $(OBJSNAME) $(LIBTARGETS) $(PRODTARGETS) $(TESTPRODNAME) \
|
||||
$(TARGETS)
|
||||
|
||||
buildInstall : \
|
||||
$(INSTALL_SCRIPTS) $(INSTALL_PROD) \
|
||||
$(INSTALL_SCRIPTS) $(INSTALL_PROD) $(INSTALL_MUNCHS) \
|
||||
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
|
||||
$(INSTALL_OBJS) \
|
||||
$(INSTALL_DOCS) \
|
||||
@@ -143,7 +144,7 @@ clean::
|
||||
*.out MakefileInclude \
|
||||
$(COMMON_INC)
|
||||
ifdef MUNCHNAME
|
||||
@$(RM) $(MUNCHNAME) $(LIBRARY_CTDT_SRCS) $(LIBRARY_CTDT_OBJS) $(LIBRARY_NM)
|
||||
@$(RM) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
|
||||
endif
|
||||
ifdef BAF
|
||||
@$(RM) $(PROD_BAF) $(LIB_BAF) *$(BOF)
|
||||
@@ -184,6 +185,11 @@ $(TESTPRODNAME) $(PRODNAME):%$(EXE): $(PRODUCT_OBJS) $(PROD_RESS) $(PROD_DEPLIBS
|
||||
@$(RM) $@
|
||||
$(LINK.cpp)
|
||||
|
||||
# object libs for R3.13 vxWorks compatibility only
|
||||
$(OBJLIBNAME):%$(OBJ): $(OBJLIB_LD_OBJS)
|
||||
@$(RM) $@
|
||||
$(OBJLIB_LINK.cpp)
|
||||
|
||||
%_ctdt$(OBJ) : %_ctdt.c
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) -traditional $<
|
||||
@@ -282,6 +288,10 @@ $(SHRLIBNAME):$(LIB_PREFIX)%$(SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS)
|
||||
$(LINK.shrlib)
|
||||
|
||||
# C++ munching for VxWorks
|
||||
%.nm : %$(EXE)
|
||||
@$(RM) $@
|
||||
$(NM) $< > $@
|
||||
|
||||
%.nm : %$(OBJ)
|
||||
@$(RM) $@
|
||||
$(NM) $< > $@
|
||||
@@ -290,10 +300,13 @@ $(SHRLIBNAME):$(LIB_PREFIX)%$(SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS)
|
||||
@$(RM) $@
|
||||
$(PERL) $(TOOLS)/munch.pl < $< > $@
|
||||
|
||||
$(MUNCHNAME):%.munch : %_ctdt$(OBJ) %.o
|
||||
$(MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(EXE)
|
||||
@$(RM) $@
|
||||
$(LDCMD)
|
||||
|
||||
$(OBJLIB_MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(OBJ)
|
||||
@$(RM) $@
|
||||
$(LDCMD)
|
||||
|
||||
# Ext, app and module rules
|
||||
CONFIG_APP_INCLUDE: $(wildcard $(TOP)/configure/RELEASE*)
|
||||
|
||||
@@ -56,7 +56,7 @@ CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(DEPLIB_LDFLAGS)\
|
||||
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
|
||||
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
|
||||
LDLIBS = $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
|
||||
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
|
||||
|
||||
CPPFLAGS += $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS) $(EPICS_BASE_CPPFLAGS)\
|
||||
|
||||
@@ -46,7 +46,7 @@ SHRLIB_LDFLAGS += $(sort $(SHRLIB_DEPLIB_DIRS:%=-L%))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Prod: dependancy definitions
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword $(wildcard \
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword $(wildcard \
|
||||
$($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
|
||||
|
||||
#--------------------------------------------------
|
||||
@@ -54,7 +54,7 @@ $($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
|
||||
DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
|
||||
DEPLIB_LDFLAGS += $(sort $(DEPLIB_DIRS:%=-L%))
|
||||
|
||||
DEPLIB_LDLIBS = $($*_LIBS:%=-l%) $(PROD_LIBS:%=-l%) $(USR_LIBS:%=-l%)\
|
||||
DEPLIB_LDLIBS = $($*_LDLIBS:%=-l%) $(PROD_LDLIBS:%=-l%) $(USR_LDLIBS:%=-l%)\
|
||||
$($*_SYS_LIBS:%=-l%) $(SYS_PROD_LIBS:%=-l%)
|
||||
|
||||
#--------------------------------------------------
|
||||
|
||||
@@ -19,22 +19,51 @@ OS_CLASS = vxWorks
|
||||
# Prefix and suffix definitions
|
||||
EXE =
|
||||
OBJ = .o
|
||||
LIB_PREFIX =
|
||||
LIB_SUFFIX = Library.o
|
||||
LIB_PREFIX =lib
|
||||
LIB_SUFFIX = .a
|
||||
SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
|
||||
MUNCH_SUFFIX = .munch
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Library definition
|
||||
# Build both *.o and *.munch libraries
|
||||
# Library definitions
|
||||
LIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
|
||||
MUNCHNAME = $(LIBNAME:%$(OBJ)=%$(MUNCH_SUFFIX))
|
||||
LIBRARY_CTDT_SRCS = $(LIBNAME:%$(OBJ)=%_ctdt.c)
|
||||
LIBRARY_CTDT_OBJS = $(LIBNAME:%$(OBJ)=%_ctdt$(OBJ))
|
||||
LIBRARY_NM = $(LIBNAME:%$(OBJ)=%.nm)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Library install location override
|
||||
INSTALL_LOCATION_LIB=$(INSTALL_LOCATION)/bin
|
||||
# Prod: dependancy definitions
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword $(wildcard \
|
||||
$($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Prod: LDFLAGS and LDLIBS definitions
|
||||
DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
|
||||
DEPLIB_LDFLAGS += $(sort $(DEPLIB_DIRS:%=-L%))
|
||||
|
||||
DEPLIB_LDLIBS = $($*_LDLIBS:%=-l%) $(PROD_LDLIBS:%=-l%) $(USR_LDLIBS:%=-l%)\
|
||||
$($*_SYS_LIBS:%=-l%) $(SYS_PROD_LIBS:%=-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
|
||||
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)
|
||||
|
||||
|
||||
#--------------------------------------------------
|
||||
# vxWorks directory definitions
|
||||
@@ -42,14 +71,6 @@ INSTALL_LOCATION_LIB=$(INSTALL_LOCATION)/bin
|
||||
GNU_TARGET_INCLUDE_DIR = $(VX_DIR)/target/h
|
||||
GNU_DIR = $(VX_DIR)/host/$(WIND_HOST_TYPE)
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Command definition overrides
|
||||
|
||||
# use ld partial linking not ar to create libraries)
|
||||
AR = $(LD)
|
||||
ARFLAGS = -o
|
||||
RANLIB =
|
||||
|
||||
#--------------------------------------------------
|
||||
# C++ host processing
|
||||
NM = $(GNU_BIN)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE)
|
||||
@@ -98,9 +119,10 @@ OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
#--------------------------------------------------
|
||||
# Link definitions
|
||||
LINK.cpp = $(LD) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RES) $(LDLIBS)
|
||||
LINK.cpp = $(LD) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorksCommon
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).vxWorksCommon
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ SPARCWORKS = /opt/SUNWspro
|
||||
|
||||
CC = $(SPARCWORKS)/bin/cc
|
||||
CCC = $(SPARCWORKS)/bin/CC
|
||||
#CC = purify -max-threads=100 $(SPARCWORKS)/bin/cc
|
||||
#CCC = purify -max-threads=100 $(SPARCWORKS)/bin/CC
|
||||
# required by sun's C++ compiler
|
||||
AR = $(CCC) -xar -o
|
||||
LD = ld -r
|
||||
|
||||
@@ -237,7 +237,7 @@ OBJECT_LIB_EXT = $(OBJECT_LIB_EXT_$(STATIC_BUILD))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Products dependancy definitions
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword \
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword \
|
||||
$($(lib)_DIR)/$(lib)$(OBJECT_LIB_EXT)))
|
||||
DEPLIB_LDLIBS = $($*_DEPLIBS) $(PROD_DEPLIBS) \
|
||||
$($*_SYS_LIBS:%=%.lib) $(SYS_PROD_LIBS:%=%.lib)
|
||||
|
||||
@@ -252,7 +252,7 @@ OBJECT_LIB_EXT = $(OBJECT_LIB_EXT_$(STATIC_BUILD))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Products dependancy definitions
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword \
|
||||
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword \
|
||||
$($(lib)_DIR)/$(lib)$(OBJECT_LIB_EXT)))
|
||||
DEPLIB_LDLIBS = $($*_DEPLIBS) $(PROD_DEPLIBS) \
|
||||
$($*_SYS_LIBS:%=%.lib) $(SYS_PROD_LIBS:%=%.lib)
|
||||
|
||||
@@ -53,12 +53,13 @@ foreach $name ( @nameList ) {
|
||||
print OUT "endif\n";
|
||||
print OUT "endif\n";
|
||||
print OUT "ifneq (\$(strip \$(${name}_LIBS_\$(OS_CLASS))),)\n";
|
||||
print OUT "${name}_LIBS+=\$(subst -nil-,,\$(${name}_LIBS_\$(OS_CLASS)))\n";
|
||||
print OUT "${name}_LDLIBS+=\$(subst -nil-,,\$(${name}_LIBS_\$(OS_CLASS)))\n";
|
||||
print OUT "else\n";
|
||||
print OUT "ifdef ${name}_LIBS_DEFAULT\n";
|
||||
print OUT "${name}_LIBS+=\$(${name}_LIBS_DEFAULT)\n";
|
||||
print OUT "${name}_LDLIBS+=\$(${name}_LIBS_DEFAULT)\n";
|
||||
print OUT "endif\n";
|
||||
print OUT "endif\n";
|
||||
print OUT "${name}_LDLIBS+=\$(${name}_LIBS)\n";
|
||||
print OUT "ifneq (\$(strip \$(${name}_SYS_LIBS_\$(OS_CLASS))),)\n";
|
||||
print OUT "${name}_SYS_LIBS+=\$(subst -nil-,,\$(${name}_SYS_LIBS_\$(OS_CLASS)))\n";
|
||||
print OUT "else\n";
|
||||
@@ -76,7 +77,7 @@ foreach $name ( @nameList ) {
|
||||
print OUT "endif\n";
|
||||
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
|
||||
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
|
||||
print OUT "${name}\$(EXE): \$(${name}_OBJSNAME) \$(${name}_RESS) \$(${name}_DEPLIBS)\n";
|
||||
print OUT "endif\n";
|
||||
@@ -87,7 +88,7 @@ foreach $name ( @nameList ) {
|
||||
print OUT "endif\n";
|
||||
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
|
||||
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
|
||||
print OUT "${name}\$(EXE): \$(${name}_OBJSNAME) \$(${name}_RESS) \$(${name}_DEPLIBS)\n";
|
||||
print OUT "endif\n";
|
||||
@@ -98,7 +99,7 @@ foreach $name ( @nameList ) {
|
||||
print OUT "endif\n";
|
||||
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
|
||||
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
|
||||
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
|
||||
print OUT "\$(LIB_PREFIX)${name}\$(LIB_SUFFIX):\$(${name}_OBJSNAME) \$(${name}_RESS)\n";
|
||||
print OUT "\$(LIB_PREFIX)${name}\$(LIB_SUFFIX):\$(${name}_DEPLIBS)\n";
|
||||
|
||||
@@ -15,7 +15,7 @@ while ($line = <STDIN>)
|
||||
($adr,$type,$name) = split ' ',$line,3;
|
||||
chop $name;
|
||||
$name =~ s/^__/_/;
|
||||
next if ( $name =~ /^__?GLOBAL_.D.*\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.D.*.\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.D.\.\./ );
|
||||
@dtorlist = (@dtorlist,$name);
|
||||
};
|
||||
@@ -23,7 +23,7 @@ while ($line = <STDIN>)
|
||||
($adr,$type,$name) = split ' ',$line,3;
|
||||
chop $name;
|
||||
$name =~ s/^__/_/;
|
||||
next if ( $name =~ /^__?GLOBAL_.I.*\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.I.*.\.cpp/ );
|
||||
next if ( $name =~ /^__?GLOBAL_.I.\.\./ );
|
||||
@ctorlist = (@ctorlist,$name);
|
||||
};
|
||||
|
||||
@@ -20,11 +20,15 @@ asIoc_DLL_LIBS = dbIoc dbStaticIoc ca Com
|
||||
|
||||
asHost_DIR=.
|
||||
PROD_LIBS = asHost dbStaticHost Com
|
||||
PROD = ascheck
|
||||
PROD_HOST = ascheck
|
||||
|
||||
asHost_RCS_WIN32 = asHost.rc
|
||||
asIoc_RCS_WIN32 = asIoc.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=asIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS) $(asIoc_SRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
# Extra rule since asLib_lex.c is included in asLib.c
|
||||
|
||||
@@ -12,7 +12,7 @@ DBD += bptTypeKdegC.dbd
|
||||
DBD += bptTypeKdegF.dbd
|
||||
|
||||
PROD_LIBS = dbStaticHost Com
|
||||
PROD += makeBpt
|
||||
PROD_HOST += makeBpt
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -63,9 +63,11 @@ LIBSRCS += limboiiu.cpp
|
||||
|
||||
LIBRARY=ca
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=ca
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
# only for WIN32:
|
||||
# build LIBRARY as a DLL, use the specified def file
|
||||
LIBTYPE := SHARED
|
||||
SYS_DLL_LIBS = ws2_32
|
||||
DLL_LIBS = Com
|
||||
|
||||
@@ -80,9 +82,9 @@ ca_DIR = .
|
||||
Com_DIR = $(INSTALL_LIB)
|
||||
|
||||
caRepeater_SRCS = caRepeater.cpp
|
||||
PROD += caRepeater
|
||||
PROD_HOST += caRepeater
|
||||
|
||||
PROD_DEFAULT += catime acctst caConnTest casw caEventRate
|
||||
PROD_HOST += catime acctst caConnTest casw caEventRate
|
||||
OBJS_IOC += catime acctst caConnTest casw caEventRate
|
||||
catime_SRCS = catimeMain.c catime.c
|
||||
acctst_SRCS = acctstMain.c acctst.c
|
||||
@@ -90,8 +92,5 @@ caEventRate_SRCS = caEventRateMain.cpp caEventRate.cpp
|
||||
casw_SRCS = casw.cpp
|
||||
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
|
||||
PROD_vxWorks = catime acctst caConnTest caEventRate
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ SYS_PROD_LIBS_WIN32 := ws2_32 advapi32 user32
|
||||
SRCS += main.cc
|
||||
SRCS += directoryServer.cc
|
||||
|
||||
PROD = caDirServ
|
||||
PROD_HOST = caDirServ
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ SRCS += exScalarPV.cc
|
||||
SRCS += exAsyncPV.cc
|
||||
SRCS += exChannel.cc
|
||||
|
||||
PROD = excas
|
||||
PROD_HOST = excas
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -69,6 +69,10 @@ DLL_LIBS = dbStaticIoc ca Com
|
||||
|
||||
dbIoc_RCS_WIN32 = dbIoc.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=dbIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
$(COMMON_DIR)/dbCommon.h: ../dbCommonRecord.dbd ../dbCommon.dbd $(COMMON_DIR)
|
||||
|
||||
@@ -7,7 +7,7 @@ dbIoc_DIR=$(INSTALL_LIB)
|
||||
dbStaticHost_DIR=$(INSTALL_LIB)
|
||||
|
||||
callbackTestHost_SRCS += callbackTestMain.c callbackTest.c
|
||||
PROD += callbackTestHost
|
||||
PROD_HOST += callbackTestHost
|
||||
OBJS_IOC += callbackTest
|
||||
|
||||
|
||||
|
||||
@@ -23,13 +23,17 @@ dbStaticIoc_SRCS += dbStaticRun.c
|
||||
LIBRARY_HOST += dbStaticHost
|
||||
LIBRARY_IOC += dbStaticIoc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=dbStaticIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS) $(dbStaticIoc_SRCS)
|
||||
|
||||
dbStaticHost_DLL_LIBS = Com
|
||||
dbStaticIoc_DLL_LIBS = Com
|
||||
|
||||
PROD_LIBS := dbStaticHost Com
|
||||
dbStaticHost_DIR=.
|
||||
PROD = dbReadTest dbExpand dbToMenuH dbToRecordtypeH
|
||||
PROD += dbMakeDBDDepends
|
||||
PROD_HOST = dbReadTest dbExpand dbToMenuH dbToRecordtypeH
|
||||
PROD_HOST += dbMakeDBDDepends
|
||||
|
||||
dbStaticHost_RCS_WIN32 = dbStaticHost.rc
|
||||
dbStaticIoc_RCS_WIN32 = dbStaticIoc.rc
|
||||
|
||||
@@ -17,6 +17,10 @@ HTMLS += dbLoadTemplate.html
|
||||
|
||||
dbtoolsIoc_RCS_WIN32 = dbtoolsIoc.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=dbtoolsIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
#
|
||||
|
||||
@@ -2,6 +2,8 @@ TOP=../../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
SHARED_LIBRARIES = NO
|
||||
|
||||
SRCS += devAiSoft.c
|
||||
SRCS += devAiSoftRaw.c
|
||||
SRCS += devAoSoft.c
|
||||
@@ -27,7 +29,10 @@ SRCS += devSiSoft.c
|
||||
SRCS += devSoSoft.c
|
||||
SRCS += devWfSoft.c
|
||||
|
||||
OBJS_IOC = $(SRCS:%.c=%)
|
||||
LIBRARY_IOC += softDevIoc
|
||||
|
||||
# For R3.13 compatability
|
||||
OBJS_vxWorks = $(SRCS:%.c=%)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ TOP=../../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
SHARED_LIBRARIES = NO
|
||||
|
||||
SRCS += devAiTestAsyn.c
|
||||
SRCS += devAoTestAsyn.c
|
||||
SRCS += devBiTestAsyn.c
|
||||
@@ -14,6 +16,9 @@ SRCS += devSiTestAsyn.c
|
||||
SRCS += devSoTestAsyn.c
|
||||
SRCS += devWfTestAsyn.c
|
||||
|
||||
OBJS_IOC = $(SRCS:%.c=%)
|
||||
LIBRARY_IOC = testDevIoc
|
||||
|
||||
# For R3.13 compatability
|
||||
OBJS_vxWorks = $(SRCS:%.c=%)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
@@ -38,14 +38,13 @@ gdd_SRCS := gdd.cc gddTest.cc gddAppTable.cc gddNewDel.cc \
|
||||
gddArray.cc gddContainer.cc gddErrorCodes.cc gddUtils.cc \
|
||||
smartGDDPointer.cc
|
||||
|
||||
LIBRARY_HOST = gdd
|
||||
LIBRARY = gdd
|
||||
|
||||
DLL_LIBS = Com
|
||||
|
||||
genApps_SRCS = genApps.cc $(AITGENSRCS)
|
||||
aitGen_SRCS = aitTypes.c aitGen.c
|
||||
PROD = aitGen genApps
|
||||
PROD_vxWorks = genApps
|
||||
PROD_HOST = aitGen genApps
|
||||
|
||||
gdd_RCS_WIN32 = gdd.rc
|
||||
|
||||
|
||||
@@ -48,5 +48,9 @@ rsrvIoc_DIR=$(EPICS_BASE_LIB)
|
||||
|
||||
iocsh_RCS_WIN32 = iocsh.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=iocsh
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
518
src/iocsh/ioccrf.cpp
Normal file
518
src/iocsh/ioccrf.cpp
Normal file
@@ -0,0 +1,518 @@
|
||||
/* ioccrf.cpp */
|
||||
/* Author: Marty Kraimer Date: 27APR2000 */
|
||||
/* Heavily modified by Eric Norum Date: 03MAY2000 */
|
||||
/* Adapted to C++ by Eric Norum Date: 18DEC2000 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "errlog.h"
|
||||
#include "dbAccess.h"
|
||||
#include "epicsThread.h"
|
||||
#include "epicsMutex.h"
|
||||
#include "registry.h"
|
||||
#define epicsExportSharedSymbols
|
||||
#include "ioccrf.h"
|
||||
#include "epicsReadline.h"
|
||||
|
||||
/*
|
||||
* File-local information
|
||||
*/
|
||||
struct ioccrfCommand {
|
||||
ioccrfFuncDef const *pFuncDef;
|
||||
ioccrfCallFunc func;
|
||||
struct ioccrfCommand *next;
|
||||
};
|
||||
static struct ioccrfCommand *ioccrfCommandHead;
|
||||
static char ioccrfID[] = "ioccrf";
|
||||
static epicsMutexId commandTableMutex;
|
||||
static epicsThreadOnceId commandTableOnceId = EPICS_THREAD_ONCE_INIT;
|
||||
|
||||
/*
|
||||
* Set up command table mutex
|
||||
*/
|
||||
static void commandTableOnce (void *)
|
||||
{
|
||||
commandTableMutex = epicsMutexMustCreate ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Lock command table mutex
|
||||
*/
|
||||
static void
|
||||
commandTableLock (void)
|
||||
{
|
||||
epicsThreadOnce (&commandTableOnceId, commandTableOnce, NULL);
|
||||
epicsMutexMustLock (commandTableMutex);
|
||||
}
|
||||
|
||||
/*
|
||||
* Unlock the command table mutex
|
||||
*/
|
||||
static void
|
||||
commandTableUnlock (void)
|
||||
{
|
||||
epicsThreadOnce (&commandTableOnceId, commandTableOnce, NULL);
|
||||
epicsMutexUnlock (commandTableMutex);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register a command
|
||||
*/
|
||||
epicsShareFunc void ioccrfRegister (const ioccrfFuncDef *pioccrfFuncDef, ioccrfCallFunc func)
|
||||
{
|
||||
struct ioccrfCommand *l, *p, *n;
|
||||
int i;
|
||||
|
||||
commandTableLock ();
|
||||
for (l = NULL, p = ioccrfCommandHead ; p != NULL ; l = p, p = p->next) {
|
||||
i = strcmp (pioccrfFuncDef->name, p->pFuncDef->name);
|
||||
if (i == 0) {
|
||||
p->pFuncDef = pioccrfFuncDef;
|
||||
p->func = func;
|
||||
commandTableUnlock ();
|
||||
return;
|
||||
}
|
||||
if (i < 0)
|
||||
break;
|
||||
}
|
||||
n = (struct ioccrfCommand *)callocMustSucceed (1, sizeof *n, "ioccrfRegister");
|
||||
if (!registryAdd(ioccrfID, pioccrfFuncDef->name, (void *)n)) {
|
||||
free (n);
|
||||
commandTableUnlock ();
|
||||
errlogPrintf ("ioccrfRegister failed to add %s\n", pioccrfFuncDef->name);
|
||||
return;
|
||||
}
|
||||
if (l == NULL) {
|
||||
n->next = ioccrfCommandHead;
|
||||
ioccrfCommandHead = n;
|
||||
}
|
||||
else {
|
||||
n->next = l->next;
|
||||
l->next = n;
|
||||
}
|
||||
n->pFuncDef = pioccrfFuncDef;
|
||||
n->func = func;
|
||||
commandTableUnlock ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Free storage created by ioccrfRegister
|
||||
*/
|
||||
void epicsShareAPI ioccrfFree(void)
|
||||
{
|
||||
struct ioccrfCommand *p, *n;
|
||||
|
||||
commandTableLock ();
|
||||
for (p = ioccrfCommandHead ; p != NULL ; ) {
|
||||
n = p->next;
|
||||
free (p);
|
||||
p = n;
|
||||
}
|
||||
commandTableUnlock ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Report an error
|
||||
*/
|
||||
static void
|
||||
showError (const char *filename, int lineno, const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msg);
|
||||
if (filename)
|
||||
fprintf (stderr, "%s -- Line %d -- ", filename, lineno);
|
||||
vfprintf (stderr, msg, ap);
|
||||
fputc ('\n', stderr);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
static int
|
||||
cvtArg (const char *filename, int lineno, char *arg, ioccrfArgBuf *argBuf, const ioccrfArg *pioccrfArg)
|
||||
{
|
||||
char *endp;
|
||||
|
||||
switch (pioccrfArg->type) {
|
||||
case ioccrfArgInt:
|
||||
if (arg && *arg) {
|
||||
argBuf->ival = strtol (arg, &endp, 0);
|
||||
if (*endp) {
|
||||
showError (filename, lineno, "Illegal integer `%s'", arg);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
argBuf->ival = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case ioccrfArgDouble:
|
||||
if (arg && *arg) {
|
||||
argBuf->dval = strtod (arg, &endp);
|
||||
if (*endp) {
|
||||
showError (filename, lineno, "Illegal double `%s'", arg);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
argBuf->dval = 0.0;
|
||||
}
|
||||
break;
|
||||
|
||||
case ioccrfArgString:
|
||||
argBuf->sval = arg;
|
||||
break;
|
||||
|
||||
case ioccrfArgPdbbase:
|
||||
/* Argument must be missing or 0 or pdbbase */
|
||||
if(!arg || !*arg || (*arg == '0') || (strcmp(arg, "pdbbase") == 0)) {
|
||||
argBuf->vval = pdbbase;
|
||||
break;
|
||||
}
|
||||
showError (filename, lineno, "Expecting `pdbbase' got `%s'", arg);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
showError (filename, lineno, "Illegal argument type %d", pioccrfArg->type);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* The body of the command interpreter
|
||||
*/
|
||||
int epicsShareAPI
|
||||
ioccrf (const char *pathname)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
const char *filename = NULL;
|
||||
int icin, icout;
|
||||
int c, quote, inword, backslash;
|
||||
char *line = NULL;
|
||||
int lineno = 0;
|
||||
int argc;
|
||||
char **argv = NULL;
|
||||
int argvCapacity = 0;
|
||||
int sep;
|
||||
const char *prompt;
|
||||
const char *ifs = " \t(),";
|
||||
ioccrfArgBuf *argBuf = NULL;
|
||||
int argBufCapacity = 0;
|
||||
struct ioccrfCommand *found;
|
||||
struct ioccrfFuncDef const *pioccrfFuncDef;
|
||||
|
||||
/*
|
||||
* See if command interpreter is interactive
|
||||
*/
|
||||
if ((pathname == NULL) || (strcmp (pathname, "<telnet>") == 0)) {
|
||||
const char *historySize;
|
||||
if ((prompt = getenv ("IOCSH_PS1")) == NULL)
|
||||
prompt = "epics> ";
|
||||
if (((historySize = getenv ("IOCSH_HISTSIZE")) == NULL)
|
||||
&& ((historySize = getenv ("HISTSIZE")) == NULL))
|
||||
historySize = "20";
|
||||
if (pathname == NULL) {
|
||||
epicsStifleHistory (atoi (historySize));
|
||||
/*
|
||||
* FIXME: Could enable tab-completion of commands here
|
||||
*/
|
||||
epicsBindKeys();
|
||||
}
|
||||
else {
|
||||
fp = stdin;
|
||||
}
|
||||
}
|
||||
else {
|
||||
fp = fopen (pathname, "r");
|
||||
if (fp == NULL) {
|
||||
fprintf (stderr, "Can't open %s: %s\n", pathname, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
if ((filename = strrchr (pathname, '/')) == NULL)
|
||||
filename = pathname;
|
||||
else
|
||||
filename++;
|
||||
prompt = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read commands till EOF or exit
|
||||
*/
|
||||
for (;;) {
|
||||
/*
|
||||
* Get a line
|
||||
*/
|
||||
lineno++;
|
||||
free (line);
|
||||
line = epicsReadline (fp, prompt);
|
||||
if (line == NULL)
|
||||
break;
|
||||
|
||||
/*
|
||||
* If using readline, add non-blank lines to history
|
||||
*/
|
||||
if ((fp == NULL) && *line)
|
||||
epicsAddHistory (line);
|
||||
|
||||
/*
|
||||
* Ignore comment lines
|
||||
*/
|
||||
if (*line == '#')
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Break line into words
|
||||
*/
|
||||
icout = icin = 0;
|
||||
inword = 0;
|
||||
quote = EOF;
|
||||
backslash = 0;
|
||||
argc = 0;
|
||||
for (;;) {
|
||||
if (argc >= argvCapacity) {
|
||||
char **av;
|
||||
argvCapacity += 50;
|
||||
av = (char **)realloc (argv, argvCapacity * sizeof *argv);
|
||||
if (av == NULL) {
|
||||
printf ("Out of memory!\n");
|
||||
argc = -1;
|
||||
break;
|
||||
}
|
||||
argv = av;
|
||||
}
|
||||
c = line[icin++];
|
||||
if (c == '\0')
|
||||
break;
|
||||
if ((quote == EOF) && !backslash && (strchr (ifs, c)))
|
||||
sep = 1;
|
||||
else
|
||||
sep = 0;
|
||||
if ((quote == EOF) && (c == '\\') && !backslash) {
|
||||
backslash = 1;
|
||||
continue;
|
||||
}
|
||||
if (inword) {
|
||||
if (c == quote) {
|
||||
quote = EOF;
|
||||
}
|
||||
else {
|
||||
if ((quote == EOF) && !backslash) {
|
||||
if (sep) {
|
||||
inword = 0;
|
||||
line[icout++] = '\0';
|
||||
}
|
||||
else if ((c == '"') || (c == '\'')) {
|
||||
quote = c;
|
||||
}
|
||||
else {
|
||||
line[icout++] = c;
|
||||
}
|
||||
}
|
||||
else {
|
||||
line[icout++] = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!sep) {
|
||||
if (((c == '"') || (c == '\'')) && !backslash)
|
||||
quote = c;
|
||||
argv[argc++] = line + icout;
|
||||
if (quote == EOF)
|
||||
line[icout++] = c;
|
||||
inword = 1;
|
||||
}
|
||||
}
|
||||
backslash = 0;
|
||||
}
|
||||
if (argc < 0)
|
||||
break;
|
||||
if (quote != EOF) {
|
||||
showError (filename, lineno, "Unbalanced quote.");
|
||||
continue;
|
||||
}
|
||||
if (backslash) {
|
||||
showError (filename, lineno, "Trailing backslash.");
|
||||
continue;
|
||||
}
|
||||
if (inword)
|
||||
line[icout++] = '\0';
|
||||
argv[argc] = NULL;
|
||||
|
||||
/*
|
||||
* Look up command
|
||||
*/
|
||||
if (argc) {
|
||||
/*
|
||||
* Special command?
|
||||
*/
|
||||
if (strncmp (argv[0], "exit", 4) == 0)
|
||||
break;
|
||||
if ((strcmp (argv[0], "?") == 0)
|
||||
|| (strncmp (argv[0], "help", 4) == 0)) {
|
||||
if (argc == 1) {
|
||||
int l, col = 0;
|
||||
|
||||
printf ("Type `help command_name' to get more information about a particular command.\n");
|
||||
commandTableLock ();
|
||||
for (found = ioccrfCommandHead ; found != NULL ; found = found->next) {
|
||||
pioccrfFuncDef = found->pFuncDef;
|
||||
l = strlen (pioccrfFuncDef->name);
|
||||
if ((l + col) >= 79) {
|
||||
putchar ('\n');
|
||||
col = 0;
|
||||
}
|
||||
fputs (pioccrfFuncDef->name, stdout);
|
||||
col += l;
|
||||
if (col >= 64) {
|
||||
putchar ('\n');
|
||||
col = 0;
|
||||
}
|
||||
else {
|
||||
do {
|
||||
putchar (' ');
|
||||
col++;
|
||||
} while ((col % 16) != 0);
|
||||
}
|
||||
}
|
||||
if (col)
|
||||
putchar ('\n');
|
||||
commandTableUnlock ();
|
||||
}
|
||||
else {
|
||||
for (int i = 1 ; i < argc ; i++) {
|
||||
found = (ioccrfCommand *)registryFind (ioccrfID, argv[i]);
|
||||
if (found == NULL) {
|
||||
printf ("%s -- no such command.\n", argv[i]);
|
||||
}
|
||||
else {
|
||||
pioccrfFuncDef = found->pFuncDef;
|
||||
fputs (pioccrfFuncDef->name, stdout);
|
||||
for (int a = 0 ; a < pioccrfFuncDef->nargs ; a++) {
|
||||
const char *cp = pioccrfFuncDef->arg[a]->name;
|
||||
if ((pioccrfFuncDef->arg[a]->type == ioccrfArgArgv)
|
||||
|| (strchr (cp, ' ') == NULL)) {
|
||||
printf (" %s", cp);
|
||||
}
|
||||
else {
|
||||
printf (" '%s'", cp);
|
||||
}
|
||||
}
|
||||
putchar ('\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Look up command
|
||||
*/
|
||||
found = (ioccrfCommand *)registryFind (ioccrfID, argv[0]);
|
||||
if (!found) {
|
||||
showError (filename, lineno, "Command %s not found.", argv[0]);
|
||||
continue;
|
||||
}
|
||||
pioccrfFuncDef = found->pFuncDef;
|
||||
|
||||
/*
|
||||
* Process arguments and call function
|
||||
*/
|
||||
for (int arg = 0 ; ; arg++) {
|
||||
if (arg == pioccrfFuncDef->nargs) {
|
||||
(*found->func)(argBuf);
|
||||
break;
|
||||
}
|
||||
if (arg >= argBufCapacity) {
|
||||
void *np;
|
||||
|
||||
argBufCapacity += 20;
|
||||
np = realloc (argBuf, argBufCapacity * sizeof *argBuf);
|
||||
if (np == NULL) {
|
||||
fprintf (stderr, "Out of memory!\n");
|
||||
argBufCapacity -= 20;
|
||||
break;
|
||||
}
|
||||
argBuf = (ioccrfArgBuf *)np;
|
||||
}
|
||||
if (pioccrfFuncDef->arg[arg]->type == ioccrfArgArgv) {
|
||||
argBuf[arg].aval.ac = argc-arg;
|
||||
argBuf[arg].aval.av = argv+arg;
|
||||
(*found->func)(argBuf);
|
||||
break;
|
||||
}
|
||||
if (!cvtArg (filename, lineno,
|
||||
((arg < argc) ? argv[arg+1] : NULL),
|
||||
&argBuf[arg], pioccrfFuncDef->arg[arg]))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fp && (fp != stdin))
|
||||
fclose (fp);
|
||||
free (line);
|
||||
free (argv);
|
||||
free (argBuf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Dummy internal commands -- register and install in command table
|
||||
* so they show up in the help display
|
||||
*/
|
||||
|
||||
extern "C" {
|
||||
/* help */
|
||||
static const ioccrfArg helpArg0 = { "command",ioccrfArgInt};
|
||||
static const ioccrfArg *helpArgs[1] = {&helpArg0};
|
||||
static const ioccrfFuncDef helpFuncDef =
|
||||
{"help",1,helpArgs};
|
||||
static void helpCallFunc(const ioccrfArgBuf *)
|
||||
{
|
||||
}
|
||||
|
||||
/* comment */
|
||||
static const ioccrfArg commentArg0 = { "newline-terminated comment",ioccrfArgArgv};
|
||||
static const ioccrfArg *commentArgs[1] = {&commentArg0};
|
||||
static const ioccrfFuncDef commentFuncDef = {"#",1,commentArgs};
|
||||
static void commentCallFunc(const ioccrfArgBuf *)
|
||||
{
|
||||
}
|
||||
|
||||
/* exit */
|
||||
static const ioccrfFuncDef exitFuncDef =
|
||||
{"exit",0,0};
|
||||
static void exitCallFunc(const ioccrfArgBuf *)
|
||||
{
|
||||
}
|
||||
|
||||
static void localRegister (void)
|
||||
{
|
||||
ioccrfRegister(&helpFuncDef,helpCallFunc);
|
||||
ioccrfRegister(&commentFuncDef,helpCallFunc);
|
||||
ioccrfRegister(&exitFuncDef,exitCallFunc);
|
||||
}
|
||||
|
||||
} /* extern "C" */
|
||||
|
||||
/*
|
||||
* Register commands on application startup
|
||||
*/
|
||||
#include "ioccrfRegisterCommon.h"
|
||||
class IoccrfRegister {
|
||||
public:
|
||||
IoccrfRegister() { localRegister(); ioccrfRegisterCommon(); }
|
||||
};
|
||||
static IoccrfRegister ioccrfRegisterObj;
|
||||
37
src/iocsh/registerRecordDeviceDriverRegister.c
Normal file
37
src/iocsh/registerRecordDeviceDriverRegister.c
Normal file
@@ -0,0 +1,37 @@
|
||||
/* registerRecordDeviceDriverRegister.c */
|
||||
/* Author: Marty Kraimer Date: 04MAY2000 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "dbAccess.h"
|
||||
#define epicsExportSharedSymbols
|
||||
#include "ioccrf.h"
|
||||
#include "registerRecordDeviceDriverRegister.h"
|
||||
|
||||
/* registerRecordDeviceDriver */
|
||||
static const ioccrfArg registerRecordDeviceDriverArg0 =
|
||||
{ "pdbbase",ioccrfArgPdbbase};
|
||||
static const ioccrfArg *registerRecordDeviceDriverArgs[1] =
|
||||
{®isterRecordDeviceDriverArg0};
|
||||
static const ioccrfFuncDef registerRecordDeviceDriverFuncDef =
|
||||
{"registerRecordDeviceDriver",1,registerRecordDeviceDriverArgs};
|
||||
static void registerRecordDeviceDriverCallFunc(const ioccrfArgBuf *args)
|
||||
{
|
||||
registerRecordDeviceDriver(pdbbase);
|
||||
}
|
||||
|
||||
epicsShareFunc void epicsShareAPI registerRecordDeviceDriverRegister(void)
|
||||
{
|
||||
printf("registerRecordDeviceDriverRegister entered\n");
|
||||
ioccrfRegister(
|
||||
®isterRecordDeviceDriverFuncDef,registerRecordDeviceDriverCallFunc);
|
||||
}
|
||||
@@ -211,6 +211,10 @@ SRCS_vxWorks += iocClock.c
|
||||
LIBRARY=Com
|
||||
SYS_DLL_LIBS := ws2_32 advapi32 user32
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=Com
|
||||
OBJLIB_SRCS = $(SRCS)
|
||||
|
||||
#Com_RCS_WIN32 = Com.rc
|
||||
|
||||
# libs needed for PROD and TESTPRODUCT
|
||||
@@ -219,9 +223,9 @@ SYS_PROD_LIBS_WIN32 := ws2_32 advapi32
|
||||
|
||||
#USR_CFLAGS += -DTS_TEST
|
||||
#TESTPROD_SRCS=tsSubr.c
|
||||
#TESTPROD=testtsLib
|
||||
#TESTPROD=envtest
|
||||
#TESTPROD=osiTimeTest fdManagerTest
|
||||
#TESTPROD_HOST=testtsLib
|
||||
#TESTPROD_HOST=envtest
|
||||
#TESTPROD_HOST=osiTimeTest fdManagerTest
|
||||
|
||||
# for bldErrSymTbl:
|
||||
#
|
||||
|
||||
@@ -4,35 +4,35 @@ TOP=../../../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
resourceLibTest_SRCS += resourceLibTest.cc
|
||||
PROD += resourceLibTest
|
||||
PROD_HOST += resourceLibTest
|
||||
OBJS_IOC += resourceLibTest
|
||||
|
||||
tsDLListBench_SRCS += tsDLListBench.cc
|
||||
PROD += tsDLListBench
|
||||
PROD_HOST += tsDLListBench
|
||||
OBJS_IOC += tsDLListBench
|
||||
|
||||
tsDLListTest_SRCS += tsDLListTest.cc
|
||||
PROD += tsDLListTest
|
||||
PROD_HOST += tsDLListTest
|
||||
OBJS_IOC += tsDLListTest
|
||||
|
||||
tsSLListBench_SRCS += tsSLListBench.cc
|
||||
PROD += tsSLListBench
|
||||
PROD_HOST += tsSLListBench
|
||||
OBJS_IOC += tsSLListBench
|
||||
|
||||
tsSLListTest_SRCS += tsSLListTest.cc
|
||||
PROD += tsSLListTest
|
||||
PROD_HOST += tsSLListTest
|
||||
OBJS_IOC += tsSLListTest
|
||||
|
||||
minmaxTest_SRCS += minmaxTest.cc
|
||||
PROD += minmaxTest
|
||||
PROD_HOST += minmaxTest
|
||||
OBJS_IOC += minmaxTest
|
||||
|
||||
tsBTreeTest_SRCS += tsBTreeTest.cc
|
||||
PROD += tsBTreeTest
|
||||
PROD_HOST += tsBTreeTest
|
||||
OBJS_IOC += tsBTreeTest
|
||||
|
||||
tsBTreeBench_SRCS += tsBTreeBench.cc
|
||||
PROD += tsBTreeBench
|
||||
PROD_HOST += tsBTreeBench
|
||||
OBJS_IOC += tsBTreeBench
|
||||
|
||||
PROD_LIBS = Com
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
* 505 665 1831
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -7,43 +7,43 @@ PROD_LIBS += Com
|
||||
USR_LIBS_hpux += cma
|
||||
|
||||
#epicsListTest_SRCS += epicsListTest.cpp
|
||||
#PROD += epicsListTest
|
||||
#PROD_HOST += epicsListTest
|
||||
#OBJS_IOC += epicsListTest
|
||||
|
||||
epicsAlgorithmTest_SRCS += epicsAlgorithmTest.cpp
|
||||
PROD += epicsAlgorithmTest
|
||||
PROD_HOST += epicsAlgorithmTest
|
||||
OBJS_IOC += epicsAlgorithmTest
|
||||
|
||||
epicsTimeTestHost_SRCS += epicsTimeTestMain.cpp epicsTimeTest.cpp
|
||||
PROD += epicsTimeTestHost
|
||||
PROD_HOST += epicsTimeTestHost
|
||||
OBJS_IOC += epicsTimeTest
|
||||
|
||||
epicsThreadTestHost_SRCS += epicsThreadTestMain.cpp epicsThreadTest.cpp
|
||||
PROD += epicsThreadTestHost
|
||||
PROD_HOST += epicsThreadTestHost
|
||||
OBJS_IOC += epicsThreadTest
|
||||
|
||||
epicsThreadPrivateTestHost_SRCS += epicsThreadPrivateTestMain.cpp epicsThreadPrivateTest.cpp
|
||||
PROD += epicsThreadPrivateTestHost
|
||||
PROD_HOST += epicsThreadPrivateTestHost
|
||||
OBJS_IOC += epicsThreadPrivateTest
|
||||
|
||||
epicsTimerTestHost_SRCS += epicsTimerTestMain.cpp epicsTimerTest.cpp
|
||||
PROD += epicsTimerTestHost
|
||||
PROD_HOST += epicsTimerTestHost
|
||||
OBJS_IOC += epicsTimerTest
|
||||
|
||||
ringPointerTestHost_SRCS += ringPointerTestMain.c ringPointerTest.c
|
||||
PROD += ringPointerTestHost
|
||||
PROD_HOST += ringPointerTestHost
|
||||
OBJS_IOC += ringPointerTest
|
||||
|
||||
epicsEventTestHost_SRCS += epicsEventTestMain.cpp epicsEventTest.cpp
|
||||
PROD += epicsEventTestHost
|
||||
PROD_HOST += epicsEventTestHost
|
||||
OBJS_IOC += epicsEventTest
|
||||
|
||||
epicsMutexTestHost_SRCS += epicsMutexTestMain.cpp epicsMutexTest.cpp
|
||||
PROD += epicsMutexTestHost
|
||||
PROD_HOST += epicsMutexTestHost
|
||||
OBJS_IOC += epicsMutexTest
|
||||
|
||||
#fdmgrTest_SRCS += fdmgrTest.c
|
||||
#PROD += fdmgrTest
|
||||
#PROD_HOST += fdmgrTest
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ TEMPLATES += top/exampleApp/Db/dbExample1.db
|
||||
TEMPLATES += top/exampleApp/Db/dbExample2.db
|
||||
TEMPLATES += top/exampleApp/src/Makefile
|
||||
TEMPLATES += top/exampleApp/src/base.dbd
|
||||
TEMPLATES += top/exampleApp/src/baseLIBOBJS
|
||||
TEMPLATES += top/exampleApp/src/devXxxSoft.c
|
||||
TEMPLATES += top/exampleApp/src/xxxRecord.c
|
||||
TEMPLATES += top/exampleApp/src/caExample.c
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
|
||||
EPICS_BASE=_EPICS_BASE_
|
||||
TEMPLATE_TOP=_TEMPLATE_TOP_
|
||||
MSI=/home/epics/CLS/epics/extensions/bin/$(EPICS_HOST_ARCH)/msi
|
||||
#SNCSEQ=<full path to sequencer>
|
||||
#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
|
||||
# If msi is in extensions bin define EPICS_EXTENSIONS
|
||||
# else define MSI = <full path to msi executable>
|
||||
#EPICS_EXTENSIONS=$(EPICS_BASE)/../extensions
|
||||
|
||||
@@ -7,7 +7,7 @@ include $(TOP)/configure/CONFIG
|
||||
|
||||
#USR_CFLAGS +=
|
||||
|
||||
PROD += caExample
|
||||
PROD_HOST += caExample
|
||||
|
||||
caExample_LIBS += ca
|
||||
caExample_LIBS += Com
|
||||
@@ -25,31 +25,17 @@ DBD += example.dbd
|
||||
|
||||
#=============================
|
||||
|
||||
LIBRARY_vxWorks = example
|
||||
PROD_RTEMS = example
|
||||
PROD += example
|
||||
|
||||
example_LIBS += iocsh
|
||||
example_LIBS += miscIoc
|
||||
example_LIBS += rsrvIoc
|
||||
example_LIBS += dbtoolsIoc
|
||||
example_LIBS += asIoc
|
||||
example_LIBS += dbIoc
|
||||
example_LIBS += registryIoc
|
||||
example_LIBS += dbStaticIoc
|
||||
example_LIBS += ca
|
||||
example_LIBS += Com
|
||||
PROD_IOC = example
|
||||
|
||||
example_SRCS += xxxRecord.c
|
||||
example_SRCS += devXxxSoft.c
|
||||
example_SRCS += caMonitor.c
|
||||
|
||||
# <name>_registerRecordDeviceDriver.cpp will be created from <name>.dbd
|
||||
example_SRCS_DEFAULT += example_registerRecordDeviceDriver.cpp
|
||||
example_SRCS += example_registerRecordDeviceDriver.cpp
|
||||
example_SRCS_DEFAULT += exampleMain.c
|
||||
example_SRCS_vxWorks += -nil-
|
||||
|
||||
example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
|
||||
example_LDFLAGS_vxWorks += -u _iocInit
|
||||
|
||||
#The following adds drvTS support for vxWorks
|
||||
#example_OBJS_vxWorks += $(EPICS_BASE_BIN)/drvTS
|
||||
@@ -61,15 +47,13 @@ example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
|
||||
|
||||
#The following builds sncExample as a component of example
|
||||
#example_SRCS += sncExample.stt
|
||||
#example_OBJS_vxWorks += $(SNCSEQ_BIN)/seqLibrary
|
||||
#example_OBJS_vxWorks += $(SNCSEQ_BIN)/pvLibrary
|
||||
#seq_DIR = $(SNCSEQ_LIB)
|
||||
#pv_DIR = $(SNCSEQ_LIB)
|
||||
#example_LIBS += seq
|
||||
#example_LIBS += pv
|
||||
#seq_DIR = $(SNCSEQ_LIB)
|
||||
#pv_DIR = $(SNCSEQ_LIB)
|
||||
|
||||
#The following builds sncExample as a standalone application
|
||||
#PROD += sncExample
|
||||
#PROD_HOST += sncExample
|
||||
#sncExample_SNCFLAGS += +m
|
||||
#sncExample_SRCS += sncExample.stt
|
||||
#seq_DIR = $(SNCSEQ_LIB)
|
||||
@@ -87,6 +71,25 @@ example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
|
||||
#sncExample_LIBS += ca
|
||||
#sncExample_LIBS += Com
|
||||
|
||||
# Use win32 object libs for registered support
|
||||
example_LIBS_win32 += recIocObj
|
||||
example_LIBS_win32 += softDevIocObj
|
||||
example_LIBS_win32 += testDevIocObj
|
||||
example_LIBS_DEFAULT += recIoc
|
||||
example_LIBS_DEFAULT += softDevIoc
|
||||
example_LIBS_DEFAULT += testDevIoc
|
||||
|
||||
example_LIBS += iocsh
|
||||
example_LIBS += miscIoc
|
||||
example_LIBS += rsrvIoc
|
||||
example_LIBS += dbtoolsIoc
|
||||
example_LIBS += asIoc
|
||||
example_LIBS += dbIoc
|
||||
example_LIBS += registryIoc
|
||||
example_LIBS += dbStaticIoc
|
||||
example_LIBS += ca
|
||||
example_LIBS += Com
|
||||
|
||||
-include ../baseLIBOBJS
|
||||
example_OBJS += $(LIBOBJS)
|
||||
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/aiRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/aoRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/biRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/boRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/calcRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/calcoutRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/compressRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/dfanoutRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/eventRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/fanoutRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/longinRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/longoutRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/mbbiRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/mbbiDirectRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/mbboRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/mbboDirectRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/permissiveRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/selRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/seqRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/stateRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/stringinRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/stringoutRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/subRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/subArrayRecord.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/waveformRecord.o
|
||||
#
|
||||
# Device Support
|
||||
#
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAiSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAiSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAiTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAoSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAoSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devAoTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBiSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBiSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBiTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBoSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBoSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devBoTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devEventSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devEventTestIoEvent.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devHistogramSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devHistogramTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devLiSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devLoSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbbiDirectSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbbiDirectSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbbiSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbbiSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbbiTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbboDirectSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbboDirectSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbboSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbboSoftRaw.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devMbboTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devSASoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devSiSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devSiTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devSoSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devSoTestAsyn.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devWfSoft.o
|
||||
LIBOBJS += $(EPICS_BASE_BIN)/devWfTestAsyn.o
|
||||
@@ -14,7 +14,7 @@
|
||||
#putenv("TIMEZONE=US/Central::360:040102:100102")
|
||||
|
||||
cd topbin
|
||||
ld < exampleLibrary.munch
|
||||
ld < example.munch
|
||||
|
||||
#The following uses drvTS for vxWorks IF it was included in src/Makefile
|
||||
#TSinit
|
||||
|
||||
@@ -9,7 +9,7 @@ PROD_LIBS += ca
|
||||
PROD_LIBS += Db
|
||||
PROD_LIBS += Com
|
||||
|
||||
#PROD =
|
||||
#PROD_HOST =
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
#----------------------------------------
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
TOP=../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
PROD = caExample
|
||||
PROD_HOST = caExample
|
||||
caExample_SRCS += caExample.cc
|
||||
#caExample_CFLAGS +=
|
||||
#caExample_LDFLAGS +=
|
||||
|
||||
@@ -19,5 +19,9 @@ registryIoc_DIR=$(EPICS_BASE_LIB)
|
||||
|
||||
misc_RCS_WIN32 = misc.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=miscIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
TOP=../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
SHARED_LIBRARIES = NO
|
||||
|
||||
INC += egDefs.h
|
||||
INC += erDefs.h
|
||||
INC += ereventDefs.h
|
||||
@@ -38,38 +40,43 @@ DBDINC += subRecord
|
||||
DBDINC += subArrayRecord
|
||||
DBDINC += waveformRecord
|
||||
|
||||
OBJS_IOC += aaiRecord
|
||||
OBJS_IOC += aaoRecord
|
||||
OBJS_IOC += aiRecord
|
||||
OBJS_IOC += aoRecord
|
||||
OBJS_IOC += biRecord
|
||||
OBJS_IOC += boRecord
|
||||
OBJS_IOC += calcRecord
|
||||
OBJS_IOC += calcoutRecord
|
||||
OBJS_IOC += compressRecord
|
||||
OBJS_IOC += dfanoutRecord
|
||||
OBJS_IOC += egRecord
|
||||
OBJS_IOC += egeventRecord
|
||||
OBJS_IOC += erRecord
|
||||
OBJS_IOC += ereventRecord
|
||||
OBJS_IOC += eventRecord
|
||||
OBJS_IOC += fanoutRecord
|
||||
OBJS_IOC += histogramRecord
|
||||
OBJS_IOC += longinRecord
|
||||
OBJS_IOC += longoutRecord
|
||||
OBJS_IOC += mbbiRecord
|
||||
OBJS_IOC += mbbiDirectRecord
|
||||
OBJS_IOC += mbboRecord
|
||||
OBJS_IOC += mbboDirectRecord
|
||||
OBJS_IOC += permissiveRecord
|
||||
OBJS_IOC += selRecord
|
||||
OBJS_IOC += seqRecord
|
||||
OBJS_IOC += stateRecord
|
||||
OBJS_IOC += stringinRecord
|
||||
OBJS_IOC += stringoutRecord
|
||||
OBJS_IOC += subRecord
|
||||
OBJS_IOC += subArrayRecord
|
||||
OBJS_IOC += waveformRecord
|
||||
LIBSRCS += aaiRecord.c
|
||||
LIBSRCS += aaoRecord.c
|
||||
LIBSRCS += aiRecord.c
|
||||
LIBSRCS += aoRecord.c
|
||||
LIBSRCS += biRecord.c
|
||||
LIBSRCS += boRecord.c
|
||||
LIBSRCS += calcRecord.c
|
||||
LIBSRCS += calcoutRecord.c
|
||||
LIBSRCS += compressRecord.c
|
||||
LIBSRCS += dfanoutRecord.c
|
||||
LIBSRCS += egRecord.c
|
||||
LIBSRCS += egeventRecord.c
|
||||
LIBSRCS += erRecord.c
|
||||
LIBSRCS += ereventRecord.c
|
||||
LIBSRCS += eventRecord.c
|
||||
LIBSRCS += fanoutRecord.c
|
||||
LIBSRCS += histogramRecord.c
|
||||
LIBSRCS += longinRecord.c
|
||||
LIBSRCS += longoutRecord.c
|
||||
LIBSRCS += mbbiRecord.c
|
||||
LIBSRCS += mbbiDirectRecord.c
|
||||
LIBSRCS += mbboRecord.c
|
||||
LIBSRCS += mbboDirectRecord.c
|
||||
LIBSRCS += permissiveRecord.c
|
||||
LIBSRCS += selRecord.c
|
||||
LIBSRCS += seqRecord.c
|
||||
LIBSRCS += stateRecord.c
|
||||
LIBSRCS += stringinRecord.c
|
||||
LIBSRCS += stringoutRecord.c
|
||||
LIBSRCS += subRecord.c
|
||||
LIBSRCS += subArrayRecord.c
|
||||
LIBSRCS += waveformRecord.c
|
||||
|
||||
LIBRARY_IOC += recIoc
|
||||
|
||||
# For R3.13 compatability
|
||||
OBJS_vxWorks = $(LIBSRCS:%.c=%)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -32,5 +32,8 @@ registryIoc_DLL_LIBS = Com
|
||||
|
||||
registryIoc_RCS_WIN32 = registryIoc.rc
|
||||
|
||||
OBJLIB_vxWorks = registryIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -199,5 +199,7 @@ class IoccrfReg {
|
||||
public:
|
||||
IoccrfReg() { iocshRegister(®isterRecordDeviceDriverFuncDef,registerRecordDeviceDriverCallFunc);}
|
||||
};
|
||||
#if !defined(__GNUC__) || !(__GNUC__<2 || (__GNUC__==2 && __GNUC_MINOR__<=95))
|
||||
namespace { IoccrfReg iocshReg; }
|
||||
#endif
|
||||
END
|
||||
|
||||
@@ -20,4 +20,8 @@ SYS_DLL_LIBS := ws2_32
|
||||
|
||||
rsrvIoc_RCS_WIN32 = rsrvIoc.rc
|
||||
|
||||
# For R3.13 compatibility only
|
||||
OBJLIB_vxWorks=rsrvIoc
|
||||
OBJLIB_SRCS = $(LIBSRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
@@ -16,7 +16,7 @@ SRCS += symtab.c
|
||||
SRCS += verbose.c
|
||||
SRCS += warshall.c
|
||||
|
||||
PROD = antelope
|
||||
PROD_HOST = antelope
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ SRCS += sym.c
|
||||
SRCS += tblcmp.c
|
||||
SRCS += parse.c
|
||||
|
||||
PROD = e_flex
|
||||
PROD_HOST = e_flex
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ PROD_LIBS = ca Com
|
||||
#
|
||||
# Added winmm user32 for the non-dll build
|
||||
#
|
||||
PROD_DEFAULT = ca_test iocLogServer startCArepeater
|
||||
PROD_WIN32 = ca_test iocLogServer
|
||||
PROD_HOST_DEFAULT = ca_test iocLogServer startCArepeater
|
||||
PROD_HOST_WIN32 = ca_test iocLogServer
|
||||
SYS_PROD_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
|
||||
ca_test_SRCS = ca_test_main.c ca_test.c
|
||||
|
||||
@@ -5,12 +5,15 @@ include $(TOP)/configure/CONFIG
|
||||
INC += drvTS.h
|
||||
INC += devLib.h
|
||||
|
||||
vxDb_SRCS += devLib.c
|
||||
vxDb_SRCS += devLibVxWorks.c
|
||||
SRCS += devLib.c
|
||||
SRCS += devLibVxWorks.c
|
||||
|
||||
OBJS_vxWorks += drvTS
|
||||
|
||||
LIBRARY_vxWorks = vxDb
|
||||
|
||||
OBJLIB_vxWorks = vxDb
|
||||
OBJLIB_SRCS = $(SRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -16,5 +16,8 @@ OBJS_vxWorks += $(SRCS:%.c=%)
|
||||
|
||||
LIBRARY_vxWorks += devLibOpt
|
||||
|
||||
OBJLIB_vxWorks += devLibOpt
|
||||
OBJLIB_SRCS = $(SRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@ TOP=../../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
LIBRARY_vxWorks = iocCore
|
||||
|
||||
iocCore_OBJS += $(INSTALL_BIN)/ComLibrary.o
|
||||
iocCore_OBJS += $(INSTALL_BIN)/caLibrary.o
|
||||
iocCore_OBJS += $(INSTALL_BIN)/dbStaticIocLibrary.o
|
||||
@@ -18,5 +16,8 @@ iocCore_OBJS += $(INSTALL_BIN)/vxDbLibrary.o
|
||||
iocCore_OBJS += $(INSTALL_BIN)/iocshLibrary.o
|
||||
iocCore_SRCS += registerRecordDeviceDriver.c
|
||||
|
||||
OBJLIB_vxWorks = iocCore
|
||||
OBJLIB_OBJS += $(iocCore_OBJS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -4,9 +4,12 @@ include $(TOP)/configure/CONFIG
|
||||
|
||||
INC += epicsDynLink.h
|
||||
|
||||
vxCom_SRCS += veclist.c
|
||||
vxCom_SRCS += epicsDynLink.c
|
||||
SRCS += veclist.c
|
||||
SRCS += epicsDynLink.c
|
||||
|
||||
LIBRARY_vxWorks += vxCom
|
||||
|
||||
OBJLIB_vxWorks += vxCom
|
||||
OBJLIB_SRCS += $(SRCS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
Reference in New Issue
Block a user