Fix up Unix issues from previous commit.
Also removed win32-x86-cygwin architecture support files, use the cygwin-x86 or win32-x86-mingw targets instead.
This commit is contained in:
@@ -119,12 +119,15 @@ CONFIG_TARGETS += $(CHECK_RELEASE_$(CHECK_RELEASE))
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Prefix and suffix
|
||||
DEP=.d
|
||||
OBJ = .
|
||||
CMPLR_SUFFIX=
|
||||
CMPLR_PREFIX=
|
||||
LIB_PREFIX=
|
||||
SHRLIB_PREFIX= $(LIB_PREFIX)
|
||||
DEP = .d
|
||||
OBJ = .o
|
||||
CMPLR_SUFFIX =
|
||||
CMPLR_PREFIX =
|
||||
LIB_PREFIX =
|
||||
LIB_SUFFIX =
|
||||
SHRLIB_PREFIX = $(LIB_PREFIX)
|
||||
DLLSTUB_PREFIX = $(LIB_PREFIX)
|
||||
DLLSTUB_SUFFIX = $(LIB_SUFFIX)
|
||||
|
||||
BUILDLIB_PREFIX_YES = $(DLLSTUB_PREFIX)
|
||||
BUILDLIB_PREFIX_NO = $(LIB_PREFIX)
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
# solaris-x86_64 (Sun compiler used for host builds)
|
||||
# solaris-x86_64-gnu (GNU compiler used for host builds)
|
||||
# win32-x86 (MS Visual C++ compiler used for host builds)
|
||||
# win32-x86-cygwin (WIN32 API with cygwin GNU compiler used for host builds)
|
||||
# win32-x86-mingw (MinGW compiler used for host builds)
|
||||
# windows-x64 (MS Visual C++ compiler used for host builds)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ OS_CLASS = vxWorks
|
||||
# Prefix and suffix definitions
|
||||
EXE =
|
||||
OBJ = .o
|
||||
LIB_PREFIX =lib
|
||||
LIB_PREFIX = lib
|
||||
LIB_SUFFIX = .a
|
||||
MUNCH_SUFFIX = .munch
|
||||
|
||||
@@ -57,24 +57,6 @@ CTDT_OBJS = $(PRODNAME:%$(EXE)=%_ctdt$(OBJ))
|
||||
NMS = $(PRODNAME:%$(EXE)=%.nm)
|
||||
MUNCH_DEPENDS = %_ctdt$(OBJ)
|
||||
|
||||
#-------------------------------------------------------
|
||||
# R3.13 compatability object library definitions
|
||||
# Does not allow $*_SRCS or $*_OBJS. Allows only OBJLIB_SRCS and OBJLIB_OBJS.
|
||||
OBJLIB += $(OBJLIB_$(OS_CLASS))
|
||||
OBJLIB_SUFFIX = Library.o
|
||||
OBJLIBNAME = $(addsuffix $(OBJLIB_SUFFIX),$(basename $(OBJLIB)))
|
||||
OBJLIB_LD_OBJS += $(addsuffix $(OBJ),$(basename $(OBJLIB_SRCS) $(OBJLIB_OBJS)))
|
||||
PRODTARGETS += $(OBJLIBNAME)
|
||||
INSTALL_PROD = $(OBJLIBNAME:%=$(INSTALL_BIN)/%)
|
||||
OBJLIB_MUNCHNAME += $(OBJLIBNAME:%$(OBJ)=%$(MUNCH_SUFFIX))
|
||||
INSTALL_MUNCHS += $(OBJLIB_MUNCHNAME:%=$(INSTALL_BIN)/%)
|
||||
PRODTARGETS += $(OBJLIB_MUNCHNAME)
|
||||
CTDT_SRCS += $(OBJLIBNAME:%$(OBJ)=%_ctdt.c)
|
||||
CTDT_OBJS += $(OBJLIBNAME:%$(OBJ)=%_ctdt$(OBJ))
|
||||
NMS += $(OBJLIBNAME:%$(OBJ)=%.nm)
|
||||
OBJLIB_LINK.cpp = $(LD) -o $@ $(OBJLIB_LD_OBJS)
|
||||
SRC_FILES += $(OBJLIB_SRCS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# vxWorks version numbers
|
||||
|
||||
@@ -188,6 +170,10 @@ CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VXWORKS_MAJOR_VERSION))
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS =
|
||||
|
||||
#--------------------------------------------------
|
||||
# Earlier versions of gcc don't understand -MF
|
||||
HDEPENDS_COMPFLAGS = -MM > $@
|
||||
|
||||
#--------------------------------------------------
|
||||
# osithead use default stack, YES or NO override
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
# CONFIG.Common.win32-x86-cygwin
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for cygwin-x86 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.cygwin-x86
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all Unix targets
|
||||
include $(CONFIG)/os/CONFIG.Common.UnixCommon
|
||||
|
||||
OS_CLASS = WIN32
|
||||
ARCH_CLASS = x86
|
||||
|
||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||
LDLIBS_READLINE = -lreadline -lcurses
|
||||
|
||||
POSIX_CPPFLAGS = -D_POSIX_THREADS -D_POSIX_TIMERS
|
||||
POSIX_LDLIBS += -lpthread
|
||||
|
||||
ARCH_DEP_CFLAGS += -m32
|
||||
ARCH_DEP_LDFLAGS += -m32
|
||||
|
||||
# With no-cygwin option:
|
||||
# compiler defines _X86_ 1
|
||||
# compiler defines __MSVCRT__ 1
|
||||
# compiler defines __MINGW32__ 1
|
||||
# compiler defines __WIN32 1
|
||||
# compiler defines __WIN32__ 1
|
||||
# compiler defines _WIN32 1
|
||||
# compiler defines WIN32 1
|
||||
# compiler defines WINNT 1
|
||||
# compiler does not define __unix __unix__ unix
|
||||
# compiler does not define __CYGWIN__ __CYGWIN32__
|
||||
|
||||
OP_SYS_CPPFLAGS = -mno-cygwin
|
||||
OP_SYS_LDFLAGS += -mno-cygwin
|
||||
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
|
||||
|
||||
EXE = .exe
|
||||
|
||||
# Use .o for static object files, .obj for shared library object files
|
||||
OBJ_NO = .o
|
||||
OBJ_YES = .obj
|
||||
OBJ = $(OBJ_$(SHARED_LIBRARIES))
|
||||
|
||||
COMPILE.c += $(if $(filter %$(OBJ),$@),-o $@)
|
||||
COMPILE.cpp += $(if $(filter %$(OBJ),$@),-o $@)
|
||||
HDEPENDS_ARCHFLAGS = -MT $*$(OBJ)
|
||||
|
||||
DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
|
||||
DLL_CFLAGS_NO =
|
||||
DLL_CFLAGS = $(DLL_CFLAGS_$(SHARED_LIBRARIES))
|
||||
STATIC_CFLAGS_YES= $(DLL_CFLAGS)
|
||||
STATIC_CFLAGS_NO= $(DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
STATIC_CXXFLAGS_YES= $(DLL_CFLAGS)
|
||||
STATIC_CXXFLAGS_NO= $(DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
|
||||
# Adjust names of libraries to build
|
||||
#
|
||||
SHRLIB_PREFIX =
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIB_PREFIX =
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
|
||||
|
||||
#
|
||||
# When SHARED_LIBRARIES is YES we are building a DLL link library
|
||||
# When SHARED_LIBRARIES is NO we are building an object library
|
||||
#
|
||||
LIB_PREFIX_NO =
|
||||
LIB_SUFFIX_NO = .lib
|
||||
LIB_PREFIX_YES = lib
|
||||
LIB_SUFFIX_YES = .dll.a
|
||||
LIB_PREFIX = $(LIB_PREFIX_$(SHARED_LIBRARIES))
|
||||
LIB_SUFFIX = $(LIB_SUFFIX_$(SHARED_LIBRARIES))
|
||||
|
||||
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
|
||||
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
|
||||
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
|
||||
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
|
||||
|
||||
# dll install location
|
||||
INSTALL_SHRLIB = $(INSTALL_BIN)
|
||||
|
||||
25
configure/os/CONFIG.linux-x86.win32-x86-mingw
Normal file
25
configure/os/CONFIG.linux-x86.win32-x86-mingw
Normal file
@@ -0,0 +1,25 @@
|
||||
# CONFIG.linux-x86.win32-x86-mingw
|
||||
#
|
||||
# Definitions for linux-x86 host win32-x86-mingw target builds
|
||||
# Override these definitions in CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
|
||||
RES = .coff
|
||||
RCCMD = $(GNU_BIN)/$(CMPLR_PREFIX)windres$(CMPLR_SUFFIX) $(INCLUDES) $< $@
|
||||
|
||||
# No -fPIC avoids "-fPIC ignored for target (all code is position independent)"
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS = -shared \
|
||||
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared \
|
||||
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
|
||||
|
||||
# Override linking with gcc library from CONFIG.gnuCommon
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with winsock2
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
|
||||
9
configure/os/CONFIG.linux-x86_64.win32-x86-mingw
Normal file
9
configure/os/CONFIG.linux-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG.linux-x86_64.win32-x86-mingw
|
||||
#
|
||||
# Definitions for linux-x86_64 host win32-x86-mingw target builds
|
||||
# Override these definitions in CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Settings as for the linux-x86 host architecture
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.win32-x86-mingw
|
||||
|
||||
@@ -57,7 +57,7 @@ OP_SYS_LDFLAGS += -z ignore -z combreloc -z lazyload
|
||||
|
||||
# Header dependency file generation command
|
||||
HDEPENDS_METHOD = COMP
|
||||
HDEPENDS_COMPFLAGS = -xM1 -xMF $@
|
||||
HDEPENDS_COMPFLAGS = -xM1 > $@
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# CONFIG.win32-x86-cygwin.Common
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-cygwin host archs
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-cygwin.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
HOSTEXE=.exe
|
||||
|
||||
WIND_HOST_TYPE = x86-win32
|
||||
|
||||
# osithead use default stack, YES or NO override
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
# Needed to find dlls for base installed build tools (antelope,eflex,...)
|
||||
PATH := $(EPICS_BASE_BIN):$(PATH)
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
# CONFIG.win32-x86-cygwin.win32-x86-cygwin
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Definitions for win32-x86-cygwin host - win32-x86-cygwin target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-cygwin.win32-x86-cygwin
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
|
||||
# cygwin's gcc, g++, ar, ld, and ranlib must be in user's path
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
AR = ar -rc
|
||||
LD = ld -r
|
||||
RANLIB = ranlib
|
||||
RES=.coff
|
||||
RCCMD = windres $(INCLUDES) $< $@
|
||||
|
||||
# No -fPIC avoids "-fPIC ignored for target (all code is position independent)"
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
|
||||
# Override linking with gcc library from CONFIG.gnuCommon
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# CONFIG.win32-x86-cygwin.win32-x86-cygwin-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-cygwin compiler host - win32-x86-cygwin debug compiler target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-cygwin.win32-x86-cygwin-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.win32-x86-cygwin
|
||||
include $(CONFIG)/os/CONFIG.win32-x86-cygwin.win32-x86-cygwin
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
@@ -1,7 +0,0 @@
|
||||
# CONFIG_SITE.Common.win32-x86-cygwin
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
21
configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
Normal file
21
configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
Normal file
@@ -0,0 +1,21 @@
|
||||
# CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
#
|
||||
# Configuration for linux-x86 host win32-x86-mingw target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Early versions of the MinGW cross-build tools can only build
|
||||
# static (non-DLL) libraries. The version of gcc 4.6.3 for Ubuntu
|
||||
# succeeds, but Fedora's 4.4.6 does not and needs these uncommented:
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
|
||||
# The cross-build tools are in $(GNU_DIR)/bin
|
||||
# Default is /usr
|
||||
#GNU_DIR = /usr/local
|
||||
|
||||
# Different distribution cross-build packages use different prefixes:
|
||||
# Ubuntu:
|
||||
#CMPLR_PREFIX = i686-w64-mingw32-
|
||||
# RHEL:
|
||||
CMPLR_PREFIX = i686-pc-mingw32-
|
||||
|
||||
8
configure/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
Normal file
8
configure/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1,8 @@
|
||||
# CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
#
|
||||
# Configuration for linux-x86_64 host win32-x86-mingw target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit from the linux-x86 host architecture
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
|
||||
|
||||
@@ -1,224 +0,0 @@
|
||||
WARNING: THIS FILE IS OLD
|
||||
=========================
|
||||
|
||||
Some of the information in this file is likely to be out of date. It has not been
|
||||
updated since 2005, so things like the minimum required versions are now wrong.
|
||||
|
||||
|
||||
Compiling EPICS and Building IOC Applications on MS Windows
|
||||
-----------------------------------------------------------
|
||||
|
||||
Original port of EPICS base build system to Windows was done by Kay-Uwe Kasemir 11/96
|
||||
|
||||
Please mail questions, comments, corrections, additional examples, etc to Jeff Hill
|
||||
at johill###at###lanl.gov (replace ###at### with @ of course)
|
||||
|
||||
0) what you will get
|
||||
--------------------
|
||||
|
||||
This port of EPICS to windows allows you to build for two host architectures:
|
||||
|
||||
win32-x86 - This is the native port to windows. Probably faster, more efficent, and with
|
||||
more precise time stamps. The OS dependent layers are carefully optimized
|
||||
for EPICS. There is prioritized schedualing of threads.
|
||||
|
||||
cygwin-x86 - This is the POSIX port of EPICS layered onto cygwin which is layered again
|
||||
onto win32. We have less experience with this version, but it is in use. I
|
||||
suspect that Mark Rivers has the most experience with it. Mutexes may be
|
||||
slower, and time stamps are probably less precise. There were problems with
|
||||
interrupting blocking system calls during cleanup in past version that may
|
||||
be resolved in more recent versions of cygwin.
|
||||
|
||||
Once you have completed a host and or target build you can run all of the base components on
|
||||
windows. This includes the client library (ca.dll, Com.dll), soft IOCs, portable server etc.
|
||||
|
||||
1) what you will need
|
||||
---------------------
|
||||
|
||||
Depending on how you set the EPICS_HOST ARCH environment variable, you will need
|
||||
|
||||
o win32-x86 - MS Visual C/C++ (probably version 6 is the earliest version that can be used)
|
||||
(I understand that there are also available free versions of this compiler)
|
||||
o win32-x86-borland - Borland C free compiler and linker (I use Borland C++ 5.5.1 successfuly)
|
||||
o win32-x86-mingw - MingW standalone GNU developers tools www.mingw.org
|
||||
o win32-x86-cygwin - Cygwin hosted developers tools www.cygwin.com
|
||||
o cigwin-x86 - Cygwin hosted developers tools targeting Cygwin GNU based posix www.cygwin.com
|
||||
|
||||
You can also cross compiler for Tornado (and possibly RTEMS) if you have it (them) installed on
|
||||
Windows. To build only for win32-x86 and not cross compile for IOC development type
|
||||
"make win32-x86" or in your configure/CONFIG_SITE file set "CROSS_COMPILER_HOST_ARCHS="
|
||||
|
||||
And some tools:
|
||||
gnu make - www.gnu.org (need 3.78.1 or later)
|
||||
perl - www.perl.org (need 5.0 or later)
|
||||
|
||||
The gnu make and perl executables are also downloadable from www.cygwin.com
|
||||
|
||||
The perl interpreter and gnu make are also available 'on the net'
|
||||
as sources which compile with MS Visual C++.
|
||||
|
||||
2) set environment variables
|
||||
|
||||
(Setting env. vars. is different: for NT/W2K/WXP, use Settings/System,
|
||||
for Win95 use autoexec.bat)
|
||||
|
||||
When setting paths in the EPICS CONFIG files for win32-x86 the following
|
||||
are hints in case you have trouble. You should not need to worry about
|
||||
this unless you type a path into one of the EPICS config files that
|
||||
includes a "\". In most situations gnu make, windows NT/W2K/WXP, the MS compiler,
|
||||
and the MS linker will accept "/" and this will result in less trouble.
|
||||
|
||||
** Note that that each "\" in any path variables you set
|
||||
must be replaced with a "\\" (this is because GNU make treats
|
||||
all "\" characters as line continuation)
|
||||
|
||||
*and* Note that that each space in any file name or
|
||||
path name variable you set must be replaced with
|
||||
a "\ " (this is because GNU make treats all " " separated
|
||||
input as independent tokens in the input stream.
|
||||
|
||||
** win32-x86 will generally allow "/" and "\" interchangeably in file paths,
|
||||
but the DOS shell only accepts "\".
|
||||
|
||||
** Certain command line utilities such as the MS linker are known to in rare
|
||||
situations confuse "/" in a path with command line options, and it may
|
||||
be necessary to replace a "/" in a path that configured with "\\", but
|
||||
the bulk of our experience indicates that this is not the necessary.
|
||||
|
||||
Your path should include (in additon to ms system directories):
|
||||
- The ms system directories
|
||||
- The EPICS-binaries we are building <EPICS>base/bin/win32-x86
|
||||
(really where INSTALL_LOCATION specifies)
|
||||
- The developer tool set binaries
|
||||
- perl
|
||||
- GNU make
|
||||
|
||||
Check with e.g.: echo %Path%
|
||||
|
||||
On NT/W2K/XP, "Path" is defined by the operating system, on Win95, it's "PATH" instead.
|
||||
|
||||
Of course, Tornado should be installed properly with these env. variables set:
|
||||
|
||||
WIND_BASE=c:\Tornado (required for cross development only)
|
||||
WIND_HOST_TYPE=x86-win32 (required for cross development only)
|
||||
|
||||
This way the EPICS makesystem can locate Tornado without any changes to the files
|
||||
in base/config. So for pc486 the settings in CONFIG_SITE where you specify the
|
||||
location of VxWorks are ignored, this information is taken from WIND_BASE and
|
||||
_HOST_TYPE!!
|
||||
|
||||
If building with MSVC one ususally runs one of the following from a .cmd file:
|
||||
call "c:\program files\Microsoft Visual Studio\VC98\Bin\Vcvars32.bat"
|
||||
call "C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\Vcvars32.bat"
|
||||
call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\Vcvars32.bat"
|
||||
|
||||
The EPICS build system requires EPICS_HOST_ARCH environment variable
|
||||
Select host arch to build:
|
||||
EPICS_HOST_ARCH=win32-x86
|
||||
EPICS_HOST_ARCH=win32-x86-borland
|
||||
EPICS_HOST_ARCH=win32-x86-mingw
|
||||
EPICS_HOST_ARCH=win32-x86-cygwin
|
||||
EPICS_HOST_ARCH=cygwin-x86
|
||||
|
||||
Set the "TMP" environment variable if you need to specify where
|
||||
temporary files are created.
|
||||
|
||||
Directory Used For Temporary Files Conditions
|
||||
---------------------------------- ----------
|
||||
Directory specified by TMP TMP environment variable is set,
|
||||
and directory specified by TMP exists.
|
||||
dir argument to _tempnam TMP environment variable is not set, or
|
||||
directory specified by TMP does not exist.
|
||||
P_tmpdir in STDIO.H dir argument is NULL, or dir is name of
|
||||
nonexistent directory.
|
||||
Current working directory P_tmpdir does not exist.
|
||||
|
||||
On my system I see in stdio.h that _P_tmpdir is "/". Here is a common
|
||||
setting for "TMP" (the C:\TEMP directory must exist).
|
||||
|
||||
TMP=C:\TEMP
|
||||
|
||||
3) building EPICS
|
||||
-----------------
|
||||
|
||||
Prepare apx. 2 ltr. Tee and type:
|
||||
|
||||
cd <epics>/base
|
||||
make (use gnu make)
|
||||
|
||||
Watch for errors and send them to me.
|
||||
|
||||
Known problems:
|
||||
* Sometimes there are clock synchronization problems when mounting UNIX
|
||||
file systems onto windows which results in warnings/errors like
|
||||
"file has modification date in the future"
|
||||
for newly created things.
|
||||
Very seldom this is fatal, so you have to
|
||||
stop gnumake and restart it.
|
||||
|
||||
4) Creating EPICS IOC applications under win32-x86
|
||||
|
||||
o create application development folder
|
||||
|
||||
o start a DOS window and change your working directory to the folder
|
||||
created above (with the DOS "cd" command)
|
||||
|
||||
o to create an example application type:
|
||||
"perl c:\epics\bin\win32\makeBaseApp.pl -b c:\\epics -e
|
||||
|
||||
** Note that that each "\" above in any path arguments to makeBaseApp.pl
|
||||
must be replaced with a "\\" (this is because GNU make treats
|
||||
all "\" characters as line continuation)
|
||||
|
||||
** Note that that each space in any file name or
|
||||
path name argument to makeBaseApp.pl must be replaced with
|
||||
a "\ " (this is because GNU make treats all " " separated
|
||||
input as independent tokens in the input stream.
|
||||
|
||||
** Note that c:\epics above must be replaced by the path
|
||||
to your epics source installation (or where INSTALL_LOCATION
|
||||
specifies)
|
||||
|
||||
o General information on EPICS IOC application development can be found in
|
||||
the "EPICS IOC Application Developers Guide". To see all of the options
|
||||
supported by makeBaseApp.pl type "perl c:\epics\bin\win32\makeBaseApp.pl"
|
||||
|
||||
5) EPICS GNU make makefiles can be executed from within a Visual C++ "makefile"
|
||||
style project. This allows EPICS programs to be developed directly inside of
|
||||
the visual C++ environment. To do this create a "makefile" project and place your
|
||||
gnu make command in the build configuration (accessed from the project/settings menu).
|
||||
You will also need to add GNU make and <EPICS>/bin/win32 into the Visual C++
|
||||
executable search path (from the tools/options menu).
|
||||
In visual C++ it is possible to double click on the compiler
|
||||
error messages generated within an EPICS "makefile" style project and have visual
|
||||
C++ immediately position the cursor on the corresponding line in the source. I
|
||||
have found that this works correctly with Makefile projects if the project is in a
|
||||
directory just below the source code. The following build command works well
|
||||
in a visual C++ make file project: "kill caRepeater.exe&make -C ..". Be careful
|
||||
not to introduce additional spaces around the &. The kill.exe command is in the
|
||||
NT resource kit.
|
||||
|
||||
6) Issues that you should be aware of if you are building code with MSVC that
|
||||
calls EPICS, but you are not using the EPICS build system.
|
||||
|
||||
6a) You will need to include header files from the following paths.
|
||||
<epics>\base\include
|
||||
<epics>\base\include\os\win32
|
||||
6b) You will need to link with the following path in effect.
|
||||
<epics>\base\lib\win32-x86.
|
||||
6c) If the visual C++ /Za option is not used then you will also need to define
|
||||
__STDC__ to be zero on the command line so that EPICS headers will know that
|
||||
a ANSI standard C compiler is in use.
|
||||
6d) If you link with EPICS object libraries then specify /MT or /MTd
|
||||
depending on whether EPICS base and your code are built for debugging.
|
||||
This specifies the multithreaded operating environment required by EPICS.
|
||||
This will also not define _DLL and therefore the EPICS header files will
|
||||
not specify that sharable libraries are being called. EPICS object library
|
||||
names follow the convention "xxxObj.lib".
|
||||
6e) If you link with EPICS shareable libraries (with DLLs) then you must
|
||||
use /MDd or /MD depending on whether EPICS base and your code are
|
||||
built for debugging. This specifies the multithreaded operating environment
|
||||
required by EPICS. This will also define _DLL and therefore the EPICS header
|
||||
files will specify an optimized calling convention for shareable libraries.
|
||||
EPICS shareable libraries (DLL) names follow the convention "xxx.lib"
|
||||
and "xxx.dll".
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
The CPU030 may need to have the nivxi path set correctly:
|
||||
From the vxWorks shell type "vxitedit" (you may need to
|
||||
loading the NI vxitedit package first)
|
||||
take option 2
|
||||
take option 3
|
||||
type list
|
||||
type modify 0
|
||||
type in the correct path when promped
|
||||
(the path should end in nivxi
|
||||
and should traverse the niCpu030
|
||||
directories shipped with the 030
|
||||
ie something of the form "???/config/niCPU030/nivxi"
|
||||
type save
|
||||
type exit
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
see "Getting Started with Your VXIcpu-030" from NI
|
||||
|
||||
You may may need to setup front panel to backplane trigger
|
||||
routing:
|
||||
|
||||
To take a TTL input and map it to VXI backplane ECL trigger 0
|
||||
type in (to the vxWorks shell):
|
||||
|
||||
epvxiRouteTriggerECL(<logical address>, 1, 0)
|
||||
|
||||
where <logical address> specifies the card with the
|
||||
front panel trigger connection.
|
||||
|
||||
johill@lanl.gov
|
||||
|
||||
@@ -15,6 +15,12 @@ EPICS Base 3.15.0.x releases are not intended for use in production systems.</p>
|
||||
<h2 align="center">Changes between 3.14.x and 3.15.0.x</h2>
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h3>Architecture win32-x86-cygwin Removed</h3>
|
||||
|
||||
<p>The ability to compile non-cygwin binaries using the Cygwin build tools is no
|
||||
longer supported by current versions of Cygwin, so this architecture has been
|
||||
removed. Use the MinWG tools and the win32-x86-mingw architecture instead.</p>
|
||||
|
||||
<h3>RTEMS and VxWorks Test Harnesses</h3>
|
||||
|
||||
<p>The original libCom test harness has been renamed <tt>libComTestHarness</tt>,
|
||||
@@ -25,7 +31,9 @@ The new ones include tests in src/ioc/db/test and src/std/filters/test.</p>
|
||||
<p>Running the new tests requires additional .db and .dbd files to be loaded at
|
||||
runtime, which can be found in the relevant source directory or its O.Common
|
||||
subdirectory. If the target can access the Base source tree directly it may be
|
||||
simplest to cd to the relevant source directory before running the test.</p>
|
||||
simplest to cd to the relevant source directory before running the test. If not,
|
||||
the files needed are listed in the generated 'testspec' file found in the
|
||||
associated build (O.<i>arch</i>) directory.</p>
|
||||
|
||||
<p>For RTEMS users the current directory is determined in a BSP specific way.
|
||||
See rtems_init.c and setBootConfigFromNVRAM.c in src/libCom/RTEMS.</p>
|
||||
|
||||
Reference in New Issue
Block a user