251 lines
6.5 KiB
Makefile
Executable File
251 lines
6.5 KiB
Makefile
Executable File
# 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
|
|
#==========================================================================
|
|
|
|
.PHONY: sct
|
|
|
|
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.
|
|
|
|
libsearcha = $(wildcard /usr/lib*/lib$(1).a)
|
|
libsearchso = $(wildcard /usr/lib*/lib$(1).so /usr/lib*/lib$(1).so.? /usr/lib*/lib$(1).so.??*)
|
|
libsearch = $(firstword $(call libsearcha,$(1)) $(call libsearchso,$(1)))
|
|
libsearch1 = $(firstword $(call libsearch,$(1)))
|
|
incsearch = $(wildcard /usr/include/$(1) /usr/local/include/$(1))
|
|
incsearch1 = $(firstword $(call incsearch,$(1)))
|
|
|
|
ifeq (1,$(VERBOSE))
|
|
mylibs := tcl8.5 hdf5 mxml json-c json ghttp
|
|
$(foreach mylib,$(mylibs),$(info libsearch($(mylib)) = $(call libsearch,$(mylib))))
|
|
$(foreach mylib,$(mylibs),$(info libsearch1($(mylib)) = $(call libsearch1,$(mylib))))
|
|
|
|
myincs := tcl.h tcl8.5/tcl.h tcl8.4/tcl.h hdf5.h mxml.h json/json.h ghttp.h
|
|
$(foreach myinc,$(myincs),$(info incsearch($(myinc)) = $(call incsearch,$(myinc))))
|
|
$(foreach myinc,$(myincs),$(info incsearch1($(myinc)) = $(call incsearch1,$(myinc))))
|
|
endif
|
|
|
|
# TCL 8.5 or 8.4
|
|
LIB_TCL8 = $(firstword $(call libsearchso,tcl8.5) $(call libsearchso,tcl8.4))
|
|
INC_TCL8 = $(firstword $(call incsearch1,tcl.h) $(call incsearch1,tcl8.5/tcl.h) $(call incsearch1,tcl8.4/tcl.h))
|
|
|
|
ifeq (,$(LIB_TCL8))
|
|
$(warning LIB_TCL8 not found)
|
|
else
|
|
$(info LIB_TCL8 = $(LIB_TCL8))
|
|
endif
|
|
|
|
ifeq (,$(INC_TCL8))
|
|
$(warning INC_TCL8 not found)
|
|
else
|
|
$(info TCL8 is $(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 := $(call libsearch1,hdf5)
|
|
ifeq (,$(LIB_HDF5))
|
|
$(warning LIB_HDF5 not found)
|
|
else
|
|
$(info LIB_HDF5 = $(LIB_HDF5))
|
|
endif
|
|
#
|
|
INC_HDF5 := $(call incsearch1,hdf5.h)
|
|
ifeq (,$(INC_HDF5))
|
|
$(warning INC_HDF5 not found)
|
|
else
|
|
$(info HDF5 is $(INC_HDF5))
|
|
ifeq ("$(dir $(INC_HDF5))","/usr/include/")
|
|
$(info HDF5 in /usr/include)
|
|
INC_HDF5 :=
|
|
else
|
|
INC_HDF5 := -I$(dir $(INC_HDF5))
|
|
endif
|
|
$(info INC_HDF5 = $(INC_HDF5))
|
|
endif
|
|
|
|
# JSON-C
|
|
LIB_JSON = $(firstword $(call libsearch1,json-c) $(call libsearch1,json))
|
|
ifeq (,$(LIB_JSON))
|
|
$(warning LIB_JSON not found)
|
|
else
|
|
$(info LIB_JSON = $(LIB_JSON))
|
|
endif
|
|
|
|
# MXML
|
|
LIB_MXML := $(call libsearch1,mxml)
|
|
ifeq (,$(LIB_MXML))
|
|
$(warning LIB_MXML not found)
|
|
else
|
|
$(info LIB_MXML = $(LIB_MXML))
|
|
endif
|
|
|
|
# GHTTP
|
|
LIB_HTTP := $(call libsearch1,ghttp)
|
|
ifeq (,$(LIB_HTTP))
|
|
$(warning LIB_HTTP not found)
|
|
else
|
|
$(info LIB_HTTP = $(LIB_HTTP))
|
|
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 libhardsup SICServer
|
|
|
|
SICServer: ../SICSmain.o libansto.a hardsup/libhlib.a ../libsics.a ../matrix/libmatrix.a | config libsics libhardsup
|
|
$(CC) -g -o SICServer ../SICSmain.o $(SUBLIBS) $(GHTTP_LIBS)
|
|
|
|
config:
|
|
@bash make_config.sh
|
|
|
|
xref: all
|
|
python xref.py $(SUBLIBS) $(GHTTP_LIBS)
|
|
|
|
sct1:
|
|
find . -name "*.sct" -exec python instrument/util/gen_sct.py {} \;
|
|
sct2:
|
|
python instrument/util/gen_sct.py `find . -name "*.sct"`
|
|
sct3:
|
|
find . -name "*.sct" | xargs python instrument/util/gen_sct.py
|
|
|
|
sct: | sct2
|
|
|
|
#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
|
|
bilby: all
|
|
emu: all
|
|
|
|
libansto.a: $(OBJ)
|
|
rm -f libansto.a
|
|
ar cr libansto.a $(OBJ)
|
|
ranlib libansto.a
|
|
|
|
libhardsup:
|
|
$(MAKE) -C hardsup/ INC_TCL8="$(INC_TCL8)" "CC=${CC}"
|
|
|
|
libsics:
|
|
$(MAKE) -C .. -f site_ansto/Makefile_SICS INC_TCL8="$(INC_TCL8)" INC_HDF5="$(INC_HDF5)" "CC=${CC}" 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)
|