From 7874d35dafa77ae7f641a6e444d10095e300e0e7 Mon Sep 17 00:00:00 2001 From: "Janet B. Anderson" Date: Thu, 7 Jun 2001 14:26:06 +0000 Subject: [PATCH] Changes to create vxWorks archive libraries and prods. --- config/tools/munch.pl | 6 + configure/CONFIG_ADDONS | 54 +- configure/CONFIG_BASE | 7 + configure/CONFIG_COMMON | 17 +- configure/CONFIG_SITE | 2 +- configure/RULES_BUILD | 39 +- configure/os/CONFIG.Common.RTEMS | 2 +- configure/os/CONFIG.Common.UnixCommon | 4 +- configure/os/CONFIG.Common.vxWorksCommon | 60 +- .../os/CONFIG.solaris-sparc.solaris-sparc | 2 + ...CONFIG.win32-x86-borland.win32-x86-borland | 2 +- configure/os/CONFIG.win32-x86.win32-x86 | 2 +- configure/tools/makeMakefileInclude.pl | 11 +- configure/tools/munch.pl | 4 +- src/as/Makefile | 6 +- src/bpt/Makefile | 2 +- src/ca/Makefile | 13 +- src/cas/example/directoryService/Makefile | 2 +- src/cas/example/simple/Makefile | 2 +- src/db/Makefile | 4 + src/db/test/Makefile | 2 +- src/dbStatic/Makefile | 8 +- src/dbtools/Makefile | 4 + src/dev/softDev/Makefile | 7 +- src/dev/testDev/Makefile | 7 +- src/gdd/Makefile | 5 +- src/iocsh/Makefile | 4 + src/iocsh/ioccrf.cpp | 518 ++++++++++++++++++ .../registerRecordDeviceDriverRegister.c | 37 ++ src/libCom/Makefile | 10 +- src/libCom/cxxTemplates/test/Makefile | 16 +- src/libCom/osi/os/posix/osiUnistd.h | 2 +- src/libCom/test/Makefile | 20 +- src/makeBaseApp/Makefile | 1 - src/makeBaseApp/top/configure/RELEASE | 6 +- src/makeBaseApp/top/exampleApp/src/Makefile | 49 +- .../top/exampleApp/src/baseLIBOBJS | 63 --- .../top/exampleBoot/ioc/st.cmd@vxWorks | 2 +- src/makeBaseApp/top/simpleApp/src/Makefile | 2 +- src/makeBaseExt/top/exampleExt/Makefile | 2 +- src/misc/Makefile | 4 + src/rec/Makefile | 71 +-- src/registry/Makefile | 3 + src/registry/registerRecordDeviceDriver.pl | 2 + src/rsrv/Makefile | 4 + src/toolsComm/antelope/Makefile | 2 +- src/toolsComm/flex/Makefile | 2 +- src/util/Makefile | 4 +- src/vxWorks/db/Makefile | 7 +- src/vxWorks/devOpt/Makefile | 3 + src/vxWorks/iocCore/Makefile | 5 +- src/vxWorks/libvxWorks/Makefile | 7 +- 52 files changed, 881 insertions(+), 239 deletions(-) create mode 100644 src/iocsh/ioccrf.cpp create mode 100644 src/iocsh/registerRecordDeviceDriverRegister.c delete mode 100644 src/makeBaseApp/top/exampleApp/src/baseLIBOBJS diff --git a/config/tools/munch.pl b/config/tools/munch.pl index 203b7e2eb..acfe34f74 100755 --- a/config/tools/munch.pl +++ b/config/tools/munch.pl @@ -9,16 +9,22 @@ eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*- while ($line = ) { + 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); }; } diff --git a/configure/CONFIG_ADDONS b/configure/CONFIG_ADDONS index 546eeb0da..12127137a 100644 --- a/configure/CONFIG_ADDONS +++ b/configure/CONFIG_ADDONS @@ -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 diff --git a/configure/CONFIG_BASE b/configure/CONFIG_BASE index a04ccfbf1..c18ed856a 100644 --- a/configure/CONFIG_BASE +++ b/configure/CONFIG_BASE @@ -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 diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON index a7fb48ec7..6107c8706 100644 --- a/configure/CONFIG_COMMON +++ b/configure/CONFIG_COMMON @@ -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)/%) diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE index 5b2c0059f..46e6c328f 100644 --- a/configure/CONFIG_SITE +++ b/configure/CONFIG_SITE @@ -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 diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD index 03fea077b..945e2e1db 100644 --- a/configure/RULES_BUILD +++ b/configure/RULES_BUILD @@ -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*) diff --git a/configure/os/CONFIG.Common.RTEMS b/configure/os/CONFIG.Common.RTEMS index 4ef2321b0..0b9d6adc0 100644 --- a/configure/os/CONFIG.Common.RTEMS +++ b/configure/os/CONFIG.Common.RTEMS @@ -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)\ diff --git a/configure/os/CONFIG.Common.UnixCommon b/configure/os/CONFIG.Common.UnixCommon index c5e6253a0..0a25438e1 100644 --- a/configure/os/CONFIG.Common.UnixCommon +++ b/configure/os/CONFIG.Common.UnixCommon @@ -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%) #-------------------------------------------------- diff --git a/configure/os/CONFIG.Common.vxWorksCommon b/configure/os/CONFIG.Common.vxWorksCommon index 0b17acae0..28137dc04 100644 --- a/configure/os/CONFIG.Common.vxWorksCommon +++ b/configure/os/CONFIG.Common.vxWorksCommon @@ -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 + diff --git a/configure/os/CONFIG.solaris-sparc.solaris-sparc b/configure/os/CONFIG.solaris-sparc.solaris-sparc index dda503500..dddc9b220 100644 --- a/configure/os/CONFIG.solaris-sparc.solaris-sparc +++ b/configure/os/CONFIG.solaris-sparc.solaris-sparc @@ -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 diff --git a/configure/os/CONFIG.win32-x86-borland.win32-x86-borland b/configure/os/CONFIG.win32-x86-borland.win32-x86-borland index 7e698ae17..db3c33d55 100644 --- a/configure/os/CONFIG.win32-x86-borland.win32-x86-borland +++ b/configure/os/CONFIG.win32-x86-borland.win32-x86-borland @@ -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) diff --git a/configure/os/CONFIG.win32-x86.win32-x86 b/configure/os/CONFIG.win32-x86.win32-x86 index 1594f2b89..adf09b997 100644 --- a/configure/os/CONFIG.win32-x86.win32-x86 +++ b/configure/os/CONFIG.win32-x86.win32-x86 @@ -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) diff --git a/configure/tools/makeMakefileInclude.pl b/configure/tools/makeMakefileInclude.pl index ef8ba09cc..27b536f5b 100755 --- a/configure/tools/makeMakefileInclude.pl +++ b/configure/tools/makeMakefileInclude.pl @@ -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"; diff --git a/configure/tools/munch.pl b/configure/tools/munch.pl index 3ecebccb2..acfe34f74 100755 --- a/configure/tools/munch.pl +++ b/configure/tools/munch.pl @@ -15,7 +15,7 @@ while ($line = ) ($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 = ) ($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); }; diff --git a/src/as/Makefile b/src/as/Makefile index c7620c09c..cd27608f9 100644 --- a/src/as/Makefile +++ b/src/as/Makefile @@ -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 diff --git a/src/bpt/Makefile b/src/bpt/Makefile index bd16082b0..c9f58691b 100644 --- a/src/bpt/Makefile +++ b/src/bpt/Makefile @@ -12,7 +12,7 @@ DBD += bptTypeKdegC.dbd DBD += bptTypeKdegF.dbd PROD_LIBS = dbStaticHost Com -PROD += makeBpt +PROD_HOST += makeBpt include $(TOP)/configure/RULES diff --git a/src/ca/Makefile b/src/ca/Makefile index ef96e0296..4f947630e 100644 --- a/src/ca/Makefile +++ b/src/ca/Makefile @@ -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 - diff --git a/src/cas/example/directoryService/Makefile b/src/cas/example/directoryService/Makefile index f9e993126..b2076a556 100644 --- a/src/cas/example/directoryService/Makefile +++ b/src/cas/example/directoryService/Makefile @@ -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 diff --git a/src/cas/example/simple/Makefile b/src/cas/example/simple/Makefile index 1bf8d6b03..94a64777a 100644 --- a/src/cas/example/simple/Makefile +++ b/src/cas/example/simple/Makefile @@ -22,7 +22,7 @@ SRCS += exScalarPV.cc SRCS += exAsyncPV.cc SRCS += exChannel.cc -PROD = excas +PROD_HOST = excas include $(TOP)/configure/RULES diff --git a/src/db/Makefile b/src/db/Makefile index 8428ab952..51f6b213a 100644 --- a/src/db/Makefile +++ b/src/db/Makefile @@ -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) diff --git a/src/db/test/Makefile b/src/db/test/Makefile index 0311ae29a..ed9615fa7 100644 --- a/src/db/test/Makefile +++ b/src/db/test/Makefile @@ -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 diff --git a/src/dbStatic/Makefile b/src/dbStatic/Makefile index c397b553e..16e33545d 100644 --- a/src/dbStatic/Makefile +++ b/src/dbStatic/Makefile @@ -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 diff --git a/src/dbtools/Makefile b/src/dbtools/Makefile index 0bc645c7b..085a829ca 100644 --- a/src/dbtools/Makefile +++ b/src/dbtools/Makefile @@ -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 # diff --git a/src/dev/softDev/Makefile b/src/dev/softDev/Makefile index 93186a793..9013e8e7e 100644 --- a/src/dev/softDev/Makefile +++ b/src/dev/softDev/Makefile @@ -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 diff --git a/src/dev/testDev/Makefile b/src/dev/testDev/Makefile index d5a06b529..c827c2377 100644 --- a/src/dev/testDev/Makefile +++ b/src/dev/testDev/Makefile @@ -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 diff --git a/src/gdd/Makefile b/src/gdd/Makefile index b7d655e0c..e6fa15e74 100644 --- a/src/gdd/Makefile +++ b/src/gdd/Makefile @@ -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 diff --git a/src/iocsh/Makefile b/src/iocsh/Makefile index f2a29c210..166bbb524 100644 --- a/src/iocsh/Makefile +++ b/src/iocsh/Makefile @@ -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 diff --git a/src/iocsh/ioccrf.cpp b/src/iocsh/ioccrf.cpp new file mode 100644 index 000000000..2d27127d0 --- /dev/null +++ b/src/iocsh/ioccrf.cpp @@ -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 +#include +#include +#include +#include +#include + +#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, "") == 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; diff --git a/src/iocsh/registerRecordDeviceDriverRegister.c b/src/iocsh/registerRecordDeviceDriverRegister.c new file mode 100644 index 000000000..1596783eb --- /dev/null +++ b/src/iocsh/registerRecordDeviceDriverRegister.c @@ -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 +#include +#include +#include +#include + +#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); +} diff --git a/src/libCom/Makefile b/src/libCom/Makefile index 2a4932ad1..bc4d7cda4 100644 --- a/src/libCom/Makefile +++ b/src/libCom/Makefile @@ -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: # diff --git a/src/libCom/cxxTemplates/test/Makefile b/src/libCom/cxxTemplates/test/Makefile index 3cc7e2599..57351144e 100644 --- a/src/libCom/cxxTemplates/test/Makefile +++ b/src/libCom/cxxTemplates/test/Makefile @@ -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 diff --git a/src/libCom/osi/os/posix/osiUnistd.h b/src/libCom/osi/os/posix/osiUnistd.h index 34308126e..afb5aa5eb 100644 --- a/src/libCom/osi/os/posix/osiUnistd.h +++ b/src/libCom/osi/os/posix/osiUnistd.h @@ -14,4 +14,4 @@ * 505 665 1831 */ -#include \ No newline at end of file +#include diff --git a/src/libCom/test/Makefile b/src/libCom/test/Makefile index 94abfdb95..9b8abc2fc 100644 --- a/src/libCom/test/Makefile +++ b/src/libCom/test/Makefile @@ -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 diff --git a/src/makeBaseApp/Makefile b/src/makeBaseApp/Makefile index df534b67d..54259fbef 100644 --- a/src/makeBaseApp/Makefile +++ b/src/makeBaseApp/Makefile @@ -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 diff --git a/src/makeBaseApp/top/configure/RELEASE b/src/makeBaseApp/top/configure/RELEASE index 4990b5858..82226d0b9 100644 --- a/src/makeBaseApp/top/configure/RELEASE +++ b/src/makeBaseApp/top/configure/RELEASE @@ -6,5 +6,7 @@ EPICS_BASE=_EPICS_BASE_ TEMPLATE_TOP=_TEMPLATE_TOP_ -MSI=/home/epics/CLS/epics/extensions/bin/$(EPICS_HOST_ARCH)/msi -#SNCSEQ= +#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq +# If msi is in extensions bin define EPICS_EXTENSIONS +# else define MSI = +#EPICS_EXTENSIONS=$(EPICS_BASE)/../extensions diff --git a/src/makeBaseApp/top/exampleApp/src/Makefile b/src/makeBaseApp/top/exampleApp/src/Makefile index 3858aa7c3..006e014ce 100644 --- a/src/makeBaseApp/top/exampleApp/src/Makefile +++ b/src/makeBaseApp/top/exampleApp/src/Makefile @@ -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 # _registerRecordDeviceDriver.cpp will be created from .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) diff --git a/src/makeBaseApp/top/exampleApp/src/baseLIBOBJS b/src/makeBaseApp/top/exampleApp/src/baseLIBOBJS deleted file mode 100644 index d5cc6125b..000000000 --- a/src/makeBaseApp/top/exampleApp/src/baseLIBOBJS +++ /dev/null @@ -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 diff --git a/src/makeBaseApp/top/exampleBoot/ioc/st.cmd@vxWorks b/src/makeBaseApp/top/exampleBoot/ioc/st.cmd@vxWorks index 55ce12efc..efa280252 100644 --- a/src/makeBaseApp/top/exampleBoot/ioc/st.cmd@vxWorks +++ b/src/makeBaseApp/top/exampleBoot/ioc/st.cmd@vxWorks @@ -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 diff --git a/src/makeBaseApp/top/simpleApp/src/Makefile b/src/makeBaseApp/top/simpleApp/src/Makefile index 17023785d..c5b2802b2 100644 --- a/src/makeBaseApp/top/simpleApp/src/Makefile +++ b/src/makeBaseApp/top/simpleApp/src/Makefile @@ -9,7 +9,7 @@ PROD_LIBS += ca PROD_LIBS += Db PROD_LIBS += Com -#PROD = +#PROD_HOST = include $(TOP)/configure/RULES #---------------------------------------- diff --git a/src/makeBaseExt/top/exampleExt/Makefile b/src/makeBaseExt/top/exampleExt/Makefile index e06ed61e0..ea4bd71d5 100644 --- a/src/makeBaseExt/top/exampleExt/Makefile +++ b/src/makeBaseExt/top/exampleExt/Makefile @@ -1,7 +1,7 @@ TOP=../.. include $(TOP)/configure/CONFIG -PROD = caExample +PROD_HOST = caExample caExample_SRCS += caExample.cc #caExample_CFLAGS += #caExample_LDFLAGS += diff --git a/src/misc/Makefile b/src/misc/Makefile index 5d2609613..bc11670d2 100644 --- a/src/misc/Makefile +++ b/src/misc/Makefile @@ -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 diff --git a/src/rec/Makefile b/src/rec/Makefile index 576567d71..642a10276 100644 --- a/src/rec/Makefile +++ b/src/rec/Makefile @@ -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 diff --git a/src/registry/Makefile b/src/registry/Makefile index 934477f2c..65fcb93e6 100644 --- a/src/registry/Makefile +++ b/src/registry/Makefile @@ -32,5 +32,8 @@ registryIoc_DLL_LIBS = Com registryIoc_RCS_WIN32 = registryIoc.rc +OBJLIB_vxWorks = registryIoc +OBJLIB_SRCS = $(LIBSRCS) + include $(TOP)/configure/RULES diff --git a/src/registry/registerRecordDeviceDriver.pl b/src/registry/registerRecordDeviceDriver.pl index 53f2efe17..66b449152 100755 --- a/src/registry/registerRecordDeviceDriver.pl +++ b/src/registry/registerRecordDeviceDriver.pl @@ -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 diff --git a/src/rsrv/Makefile b/src/rsrv/Makefile index 9aa134eea..d74a4ca99 100644 --- a/src/rsrv/Makefile +++ b/src/rsrv/Makefile @@ -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 diff --git a/src/toolsComm/antelope/Makefile b/src/toolsComm/antelope/Makefile index 418e5cc43..a6a52bdc4 100644 --- a/src/toolsComm/antelope/Makefile +++ b/src/toolsComm/antelope/Makefile @@ -16,7 +16,7 @@ SRCS += symtab.c SRCS += verbose.c SRCS += warshall.c -PROD = antelope +PROD_HOST = antelope include $(TOP)/configure/RULES diff --git a/src/toolsComm/flex/Makefile b/src/toolsComm/flex/Makefile index 6423c23c9..50d419fe2 100644 --- a/src/toolsComm/flex/Makefile +++ b/src/toolsComm/flex/Makefile @@ -35,7 +35,7 @@ SRCS += sym.c SRCS += tblcmp.c SRCS += parse.c -PROD = e_flex +PROD_HOST = e_flex include $(TOP)/configure/RULES diff --git a/src/util/Makefile b/src/util/Makefile index fded73682..a3e27eb0f 100644 --- a/src/util/Makefile +++ b/src/util/Makefile @@ -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 diff --git a/src/vxWorks/db/Makefile b/src/vxWorks/db/Makefile index ee9990a6b..7dc945585 100644 --- a/src/vxWorks/db/Makefile +++ b/src/vxWorks/db/Makefile @@ -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 diff --git a/src/vxWorks/devOpt/Makefile b/src/vxWorks/devOpt/Makefile index f0434cf8b..e360d7d29 100644 --- a/src/vxWorks/devOpt/Makefile +++ b/src/vxWorks/devOpt/Makefile @@ -16,5 +16,8 @@ OBJS_vxWorks += $(SRCS:%.c=%) LIBRARY_vxWorks += devLibOpt +OBJLIB_vxWorks += devLibOpt +OBJLIB_SRCS = $(SRCS) + include $(TOP)/configure/RULES diff --git a/src/vxWorks/iocCore/Makefile b/src/vxWorks/iocCore/Makefile index b40afa7c6..a1e2ed721 100644 --- a/src/vxWorks/iocCore/Makefile +++ b/src/vxWorks/iocCore/Makefile @@ -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 diff --git a/src/vxWorks/libvxWorks/Makefile b/src/vxWorks/libvxWorks/Makefile index 4b257ca9b..62362d360 100644 --- a/src/vxWorks/libvxWorks/Makefile +++ b/src/vxWorks/libvxWorks/Makefile @@ -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