106 lines
3.1 KiB
Plaintext
106 lines
3.1 KiB
Plaintext
Short Description of the "Host" (vs. "Unix") Build System
|
|
---------------------------------------------------------
|
|
|
|
7-30-96 -kuk-
|
|
questions/comments please mailto:kasemir@atdiv.lanl.gov
|
|
|
|
|
|
To build EPICS on the WIN32 architecture
|
|
the "old" make-system using Makefile.Unix in each
|
|
subdir and RULES.Host was not suitable because
|
|
it is too much Unix-dependent.
|
|
|
|
A "new" system using Makefile.Host and RULES.Host
|
|
was used instead. This "host" system should work
|
|
on all other architectures as well.
|
|
The idea is that ALL architectures should be able to use
|
|
the "host" system in future because.
|
|
|
|
The syntax of the 'Host' Makefiles is described
|
|
in 'Sample.Makefile.Host'. Any suggestions for a
|
|
better syntax (in connection whith ideas how to
|
|
implement this in RULES.Host!) are very welcome!
|
|
|
|
To use it, only a few changes should be necessary:
|
|
|
|
A) In CONFIG.<WIN32, sun4, hp700, ... whatever you are using>:
|
|
|
|
1) Set
|
|
BUILD_TYPE=Host
|
|
instead of 'Unix'. This switches you over to using
|
|
Makefile.Host instead of Makefile.Unix.
|
|
|
|
2) Set ARCH_CLASS to the correct architecture class.
|
|
(ARCH_CLASS used to be defined in the past, right now
|
|
it seems it's only set for VxWorks targets, not hosts).
|
|
|
|
ARCH_CLASS is used to define system-dependent
|
|
CFLAGS, library contents etc. in Makefile.Host,
|
|
so it should describe the general architecture,
|
|
maybe
|
|
WIN32 : this is the only one really supported in Makefile.Host by now
|
|
BSD for sun4,
|
|
SYSV for ??,
|
|
|
|
Maybe this "general arch" is not sufficient, so we will
|
|
end up using
|
|
ARCH_CLASS=WIN32, sun4, hp700, ....
|
|
as it used to be.
|
|
|
|
3) Make sure that the following (new) macros are defined:
|
|
|
|
CP =$(PERL) $(EPICS_BASE)/src/tools/cp.pl
|
|
MV =$(PERL) $(EPICS_BASE)/src/tools/mv.pl
|
|
RM =$(PERL) $(EPICS_BASE)/src/tools/rm.pl -f
|
|
MKDIR=$(PERL) $(EPICS_BASE)/src/tools/mkdir.pl
|
|
RMDIR=$(PERL) $(EPICS_BASE)/src/tools/rm.pl -rf
|
|
or
|
|
CP=cp
|
|
MV=mv
|
|
RM=rm -f
|
|
MKDIR=mkdir
|
|
RMDIR=rm -rf
|
|
|
|
EXE=
|
|
OBJ=.o
|
|
|
|
4) LINK.c and LINK.cc must now include the target-flag, e.g.:
|
|
LINK.c = $(CC) $(LDFLAGS) -o $@
|
|
|
|
because the "-o $@" is also system dependent (it's -Fe$@ for WIN32)
|
|
|
|
5) The bin directory for the host based epics tools
|
|
$(EPICS)/base/bin/$(HOST_ARCH)
|
|
must be in your PATH.
|
|
|
|
|
|
B) Adjust Makefile.Host
|
|
|
|
If you are trying to build EPICS now, there might be errors
|
|
because the Makefile.Host files are only tested on WIN32, yet.
|
|
|
|
If changes are necessare in some base/src/???/Makefile.Host,
|
|
refer to Sample.Makefile.Host in the base/config dir.
|
|
|
|
|
|
|
|
|
|
The current make-system for WIN32
|
|
needs
|
|
* gnumake (OK, sources for WIN32 are available)
|
|
* several UNIX tools: sed, grep, ... (dito)
|
|
* a UNIX-like shell (ouch!)
|
|
|
|
I found no fully operational shell and no sources for WIN32 so far,
|
|
Cygnus' bash e.g. cannot handle this:
|
|
(echo a>a; echo b>>a)
|
|
Right now I use the knts that I wrote and simplified scripts.
|
|
Jeff eliminated many shell-lines in Makefile.*,
|
|
the final solution could be:
|
|
1) replace shell, awk, grep, sed, ... by Perl!
|
|
2) use C code
|
|
|
|
Perl looks like a real option because it's available
|
|
for many platforms and maybe the best idea for
|
|
'portable scripts'.
|