Files
epics-base/src/gdd/Makefile.standalone
1996-07-03 00:02:56 +00:00

255 lines
5.0 KiB
Makefile

#
# Author: Jim Kowalkowski
# Date: 2/96
#
# $Id$
#
# $Log$
# Revision 1.1 1996/06/25 19:11:26 jbk
# new in EPICS base
#
#
# Simple build system for all the platforms I've tested on
VPATH=.:..
# ifdef IN_OBJ_DIR
# ifeq ($(VX_BUILD),vw)
# CCTYPE = $(VX_BUILD)
# else
# CCTYPE = $(HOST_ARCH)
# endif
#
# else
ifdef HOST_ARCH
CCTYPE = $(HOST_ARCH)
else
# CCTYPE = solaris
# CCTYPE = sun4
# CCTYPE = linux
# CCTYPE = hp700
# CCTYPE = vw
# VX_BUILD = vw
endif
# endif
ifeq ($(CCTYPE),vw)
GNU_DIR = /home/phoebus/HIDEOS/gnu_install
# GNU_DIR = /home/hideos/gnu_install
GNU_BIN = $(GNU_DIR)/bin
VERBOSE = -Wall -Winline
OPTIM = -O # -DNO_DUMP_TEST -g
VX_DIR = /usr/local/vw/vxV52/vw
VX_INCLUDE = $(VX_DIR)/h
ifeq ($(CCTYPE),sun4)
CC_NORMAL = acc
else
CC_NORMAL = cc
endif
CC = $(GNU_BIN)/sun3-gcc
CCC = $(GNU_BIN)/sun3-g++
LD = $(GNU_BIN)/sun3-ld
AR = $(GNU_BIN)/sun3-ar
RANLIB = $(GNU_BIN)/sun3-ranlib
LIB_FLAGS =
LDFLAGS = -L. -r -N -T../vxldscript.MRI
CCFLAGS = -B$(GNU_DIR)/lib/gcc-lib/ $(OPTIM) -W \
$(VERBOSE) -nostdinc --no-builtin -m68040 -Wa,"-m68040" \
-DCPU_FAMILY=MC680X0 -DCPU=MC68040 -DvxWorks -DV5_vxWorks \
-I. -I.. -I$(VX_INCLUDE)
else
ifeq ($(CCTYPE),solaris)
VERBOSE = +w -D__EXTENSIONS__
CC = cc
CCC = CC
CC_NORMAL = $(CC)
LIB_FLAGS = # -lposix4
POSIX_LEVEL = 2 # 4
EPICS = /home/phoebus/JBK/test3.12/include
RANLIB = echo
endif
ifeq ($(CCTYPE),sun4)
VERBOSE =
CC=purify acc
CCC=purify CC
# CCC = CC
# CC = acc
CC_NORMAL = acc
LIB_FLAGS =
POSIX_LEVEL = 2
EPICS = /home/phoebus/JBK/test3.12/include
RANLIB = ranlib
endif
ifeq ($(CCTYPE),linux)
VERBOSE = -Wall -Winline
CC = gcc
CCC = g++
CC_NORMAL = $(CC)
LIB_FLAGS =
POSIX_LEVEL = 2
EPICS = /home/jbk/include
RANLIB = ranlib
endif
ifeq ($(CCTYPE),hp700)
VERBOSE =
CC = c89 -Aa
CCC = CC +a1
CC_NORMAL = $(CC)
LIB_FLAGS =
POSIX_LEVEL = 2
RANLIB = ranlib
endif
LD = ld
AR = ar
# -p is for profiling
OPTIM = -g # -O -p
COMP_FLAGS = -D_POSIX_C_SOURCE=$(POSIX_LEVEL) -D$(CCTYPE)
BOTH_FLAGS = -I. -I.. $(VERBOSE) $(OPTIM) -I$(EPICS) $(COMP_FLAGS)
LDFLAGS = $(BOTH_FLAGS) -L.
CCFLAGS = $(BOTH_FLAGS)
endif
CXXFLAGS = $(CCFLAGS)
CFLAGS = $(CXXFLAGS)
CXX = $(CCC)
DEPLIB = libgdd_t.a
DEST_DEPLIB = libgdd.a
LIBFLAGS = -lgdd $(LIB_FLAGS)
LIBFLAGS_T = -lgdd_t $(LIB_FLAGS)
# modules that go into the library
SRCS = gdd.cc gddTest.cc aitConvert.cc gddAppTable.cc gddNewDel.cc \
gddAppDefs.cc aitTypes.c
OBJS = gdd.o gddTest.o aitConvert.o gddAppTable.o gddNewDel.o \
gddAppDefs.o aitTypes.o
INCS = gdd.h aitConvert.h aitTypes.h gddNewDel.h gddUtils.h
# -----------------------------
ifndef HOST_ARCH
problem:
@echo "you must set the HOST_ARCH environment variable"
@echo "set VX_BUILD=vw to build for vxWorks"
endif
# -----------------------------
ifndef IN_OBJ_DIR
ifdef VX_BUILD
first_rule: $(HOST_ARCH)/Makefile $(VX_BUILD)/Makefile
else
first_rule: $(HOST_ARCH)/Makefile
endif
(cd $(HOST_ARCH); gnumake all)
ifdef VX_BUILD
(HOST_ARCH=$(VX_BUILD); cd $(VX_BUILD); gnumake HOST_ARCH=$(VX_BUILD))
# (HOST_ARCH=$(VX_BUILD); gnumake HOST_ARCH=$(VX_BUILD))
endif
$(HOST_ARCH)/Makefile: Makefile
if [ ! -d "$(HOST_ARCH)" ]; \
then \
mkdir $(HOST_ARCH); \
fi
echo "IN_OBJ_DIR=1" > $@
cat $< >> $@
ifdef VX_BUILD
$(VX_BUILD)/Makefile: Makefile
if [ ! -d "$(VX_BUILD)" ]; \
then \
mkdir $(VX_BUILD); \
fi
echo "IN_OBJ_DIR=1" > $@
cat $< >> $@
endif
endif
# -----------------------------
all: aitGen gddApps.h $(DEPLIB) dbMapper.o $(DEST_DEPLIB)
check_arch:
@echo "architecture=$(CCTYPE)"
$(DEST_DEPLIB): $(DEPLIB)
cp $^ $@
# -----------------------------
$(DEPLIB): $(OBJS)
/bin/rm -f $@
$(AR) r $@ $^
cp $@ $(DEST_DEPLIB)
ifeq ($(CCTYPE),sun4)
$(RANLIB) $@
$(RANLIB) $(DEST_DEPLIB)
endif
ifeq ($(CCTYPE),vw)
$(RANLIB) $@
$(RANLIB) $(DEST_DEPLIB)
endif
# -----------------------------
ifneq ($(CCTYPE),vw)
genApps: genApps.o $(OBJS) $(DEPLIB)
$(CCC) $(LDFLAGS) -o $@ $< $(LIBFLAGS_T)
gddApps.h: genApps
./$< gddApps.h
cp gddApps.h ..
genApps.o: genApps.cc gddAppTable.h aitTypes.h $(INCS)
else
genApps:
@echo "Not going to build $@ for vw"
endif
aitGen: aitGen.o aitTypes.o
$(CC_NORMAL) -O -o $@ $^
aitGen.o: aitGen.c aitTypes.h
$(CC_NORMAL) -D$(CCTYPE) -O -c -I. $<
aitConvertGenerated.cc: aitGen aitTypes.h aitConvert.h aitConvert.cc aitTypes.c
./aitGen
# -----------------------------
gdd.o: gdd.cc $(INCS)
gddTest.o: gddTest.cc $(INCS)
gddNewDel.o: gddNewDel.cc gddNewDel.h gddUtils.h
gddAppTable.o: gddAppTable.cc gddAppTable.h $(INCS)
gddAppDefs.o: gddAppDefs.cc gddAppTable.h $(INCS)
aitTypes.o: aitTypes.c aitTypes.h
aitConvert.o: aitConvert.cc aitConvertGenerated.cc aitConvert.h aitTypes.h
dbMapper.o: dbMapper.cc dbMapper.h gddApps.h
$(CCC) $(CCFLAGS) -c $<
ifeq ($(CCTYPE),solaris)
# $(CCC) -xar -o $(DEST_DEPLIB) $(CCFLAGS) $<
# $(CCC) -xar -o $(DEST_DEPLIB) $(CCFLAGS) $@
endif
$(AR) r $(DEST_DEPLIB) $@
$(RANLIB) $(DEST_DEPLIB)
ifdef IN_OBJ_DIR
clean:
/bin/rm -f *.o *.a aitGen genApps
/bin/rm -f *pure* p.out mon.out
/bin/rm -rf Templates.DB ptrepository
else
clean:
/bin/rm -rf $(HOST_ARCH) $(VX_BUILD) gddApps.h
endif