Files
sics/site_ansto/Makefile

211 lines
5.6 KiB
Makefile

# vim: ft=make ts=4 sw=4 noet cindent
#---------------------------------------------------------------------------
# Makefile for SICS
# machine-dependent part for Redhat Linux with AFS at PSI
#
# Mark Koennecke 1996-2001
# Markus Zolliker, March 2003
#==========================================================================
default: all
# ANSTO rules and variables
PSI_SLIBS = ../libsics.a ../matrix/libmatrix.a
PSI_LIBS = \
$(LIB_TCL8) $(LIB_HDF5) -lpthread \
-ldl -lz -lm -lc $(LIB_MXML) $(LIB_JSON)
CC = gcc
INCFLAGS = -Ihardsup -I.. $(INC_HDF5) $(INC_TCL8)
# NOTE -std=gnu99 adds c99 support with gnu extensions, it eliminates implicit function warnings
# for c99 functions like roundf. We don't use -std=c99 because it generates compiler errors in
# code modules that use the timeval struct without including sys/time.h, c99 also generates
# implicit function declaration warnings on string functions like strdup.
# On different systems, there may be different versions of libraries or they
# may be in different locations. This code tries to find the include files and
# libraries required in descending order of preference.
# TCL 8.4 or 8.5
LIB_TCL8 := $(firstword $(wildcard /usr/lib/libtcl8.5.a /usr/lib/libtcl8.5.so /usr/lib/libtcl8.4.a /usr/lib/libtcl8.4.so /usr/lib/libtcl.so))
LIB_TCL8 := $(firstword $(wildcard /usr/lib/libtcl8.5.so /usr/lib/libtcl8.5.so /usr/lib/libtcl8.4.so /usr/lib/libtcl8.4.so /usr/lib/libtcl.so))
ifeq (,$(LIB_TCL8))
$(warning LIB_TCL8 not found)
else
XLIB_TCL8 := -L$(dir $(LIB_TCL8)) -l$(subst lib,,$(basename $(notdir $(LIB_TCL8))))
# $(info LIB_TCL8 = $(LIB_TCL8))
endif
#
INC_TCL8 := $(firstword $(wildcard /usr/include/tcl.h /usr/include/tcl8.5/tcl.h /usr/lib/tcl8.4/tcl.h))
ifeq (,$(INC_TCL8))
$(warning INC_TCL8 not found)
else
$(info "INC_TCL8 is $(dir $(INC_TCL8))")
ifeq ($(dir $(INC_TCL8)),"/usr/include/")
$(info "TCL8 in /usr/include")
INC_TCL8 :=
else
INC_TCL8 := -isystem $(dir $(INC_TCL8))
endif
# $(info INC_TCL8 = $(INC_TCL8))
endif
# HDF5
LIB_HDF5 := $(firstword $(wildcard /usr/lib/libhdf5.a /usr/lib/libhdf5.so /usr/local/lib/libhdf5.a))
ifeq (,$(LIB_HDF5))
$(warning LIB_HDF5 not found)
endif
#
INC_HDF5 := $(firstword $(wildcard /usr/include/hdf5.h /usr/local/include/hdf5.h))
ifeq (,$(INC_HDF5))
$(warning INC_HDF5 not found)
else
$(info "INC_HDF5 is $(dir $(INC_HDF5))")
ifeq ("$(dir $(INC_HDF5))","/usr/include/")
$(info "HDF5 in /usr/include")
INC_HDF5 :=
else
INC_HDF5 := -I$(dir $(INC_HDF5))
endif
endif
# JSON-C
LIB_JSON := $(firstword $(wildcard /usr/lib/libjson.a /usr/lib/libjson.so /usr/local/lib/libjson.a))
ifeq (,$(LIB_JSON))
$(warning LIB_JSON not found)
endif
# MXML
LIB_MXML := $(firstword $(wildcard /usr/lib/libmxml.a /usr/local/lib/libmxml.a))
ifeq (,$(LIB_MXML))
$(warning LIB_MXML not found)
endif
# GHTTP
LIB_HTTP := $(firstword $(wildcard /usr/lib/libghttp.a /usr/local/lib/libghttp.a))
ifeq (,$(LIB_HTTP))
$(warning LIB_HTTP not found)
endif
#
DEBUGFLAGS = -Wall -Wextra -Wno-unused -Wno-comment -Wno-switch
CFLAGS = -g -std=gnu99
CFLAGS += $(INCFLAGS)
CFLAGS += $(DEBUGFLAGS)
CFLAGS += -MMD
SITENAME = _ansto
SITEDIR = site_ansto
SITELIB = libansto.a
SITEHARDSUP = hardsup/libhlib.a
HARDSUPDIR = $(SITEDIR)/hardsup
SUBLIBS = libansto.a hardsup/libhlib.a $(PSI_SLIBS) libansto.a hardsup/libhlib.a $(PSI_LIBS)
.SUFFIXES:
.SUFFIXES: .c .o .f
GHTTP_LIBS = $(LIB_HTTP)
#OBJ= site_ansto.o batch.o buffer.o ruli.o protocol.o sinfox.o \
# motor_asim.o motor_dmc2280.o motor_pdx.o \
# itc4.o itc4driv.o \
# hm_mrpd.o scan_mrpd.o
OBJ= site_ansto.o anstoutil.o\
ansto_sctdriveadapter.o\
ansto_tclmotdriv.o\
sctemonadapter.o\
motor_asim.o motor_dmc2280.o\
lh45.o lh45driv.o \
lakeshore340.o lakeshore340driv.o \
west4100.o west4100driv.o \
nhq200.o \
orhvps.o \
ls340.o \
fsm.o \
counterdriv.o \
safetyplc.o \
anstohttp.o \
hmcontrol_ansto.o\
lssmonitor.o \
beamstopaction.o action.o \
tclClock.o tclDate.o tclUnixTime.o
all: config libsics libansto.a libhardsup
$(CC) -g -o SICServer ../SICSmain.o $(SUBLIBS) $(GHTTP_LIBS)
config:
@bash make_config.sh
xref: all
python xref.py $(SUBLIBS) $(GHTTP_LIBS)
#TODO Add targets for other instruments
echidna: all
make -C instrument/hrpd
koala: all
make -C instrument/qld
kowari: all
make -C instrument/rsd
platypus: all
make -C instrument/reflectometer
quokka: all
make -C instrument/sans
taipan: all
make -C instrument/tas
wombat: all
make -C instrument/hipd
lyrebird: all
make -C instrument/lyrebird
pelican: all
make -C instrument/pelican
kookaburra: all
make -C instrument/kookaburra
dingo: all
make -C instrument/dingo
libansto.a: $(OBJ)
rm -f libansto.a
ar cr libansto.a $(OBJ)
ranlib libansto.a
libhardsup:
$(MAKE) -C hardsup/ INC_TCL8="$(INC_TCL8)"
libsics:
$(MAKE) -C .. -f site_ansto/Makefile_SICS INC_TCL8="$(INC_TCL8)" INC_HDF5="$(INC_HDF5)" all
anstohm.o : anstohm.cpp
$(CXX) -c anstohm.cpp $(CFLAGS) $(CXXFLAGS) -Wno-all
hm_mrpd.o : hm_mrpd.cpp
$(CXX) -c hm_mrpd.cpp $(CFLAGS) $(CXXFLAGS) -Wno-all
hm_asim.o : hm_asim.cpp
$(CXX) -c hm_asim.cpp $(CFLAGS) $(CXXFLAGS) -Wno-all
anstoclean:
$(MAKE) -C hardsup clean
rm -f SICServer *.a *.o *.d
sicsclean:
$(MAKE) -C .. -f site_ansto/Makefile_SICS clean
clean: anstoclean sicsclean
MZOBJ=fsm.o logger.o sugar.o pardef.o ease.o strobj.o oxinst.o \
ipsdriv.o ilmdriv.o itcdriv.o ighdriv.o euro2kdriv.o modbus.o
incflags:
@echo $(subst -isystem,-I,$(INCFLAGS))
cflags:
@echo ${CFLAGS}
deploy: all
cd instrument; ./make_sics_tar.tcl
# Use the dependency files we requested gcc to produce for us
DEPS := $(OBJ:.o=.d)
-include $(DEPS)