# # Name: Makehead.linux # # Purpose: This file is used to customize operating system and installation # dependent features of the MX makefiles. This version is customized # for Linux. # # Normally, the only things that end users may have to modify in this file are # the definitions of INCLUDES, LIB_DIRS, and LIBRARIES. # INCLUDES = $(MX_INCLUDES) #INCLUDES = $(MX_INCLUDES) -I/usr/local/include #LIB_DIRS = -L$(MX_LIB_DIR) $(USER_LIB_DIRS) #LIBRARIES = $(USER_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) #LIBRARIES = -lpthread -lrt -lm LIB_DIRS = -L$(MX_LIB_DIR) $(EPICS_LIB_DIRS) LIBRARIES = $(EPICS_LIBRARIES) -lpthread -lrt -lm # # The following is for use with mx_caserver. # #LIBRARIES = $(EPICS_LIBRARIES) -lpthread -lrt -lrt -lstdc++ -lm # Note: EPICS and EPIX are not related to each other. The naming is just # a coincidence. #LIB_DIRS = -L$(MX_LIB_DIR) $(EPIX_XCLIB_LIB_DIRS) #LIBRARIES = $(EPIX_XCLIB_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(EDT_LIB_DIRS) #LIBRARIES = $(EDT_LIBRARIES) -ldl -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(NI_VISA_LIB_DIRS) #LIBRARIES = $(NI_VISA_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(LIBUSB_LIB_DIRS) #LIBRARIES = $(LIBUSB_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(SIS3100_LIB_DIRS) #LIBRARIES = $(SIS3100_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(NI488_LIB_DIRS) #LIBRARIES = $(NI488_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(LINUX_GPIB_LIB_DIRS) #LIBRARIES = $(LINUX_GPIB_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(XIA_HANDEL_LIB_DIRS) #LIBRARIES = $(XIA_HANDEL_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(JORWAY_CAMAC_LIB_DIRS) #LIBRARIES = $(JORWAY_CAMAC_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(EPIX_XCLIB_LIB_DIRS) $(EDT_LIB_DIRS) #LIBRARIES = $(EPIX_XCLIB_LIBRARIES) $(EDT_LIBRARIES) \ # -ldl -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(NI488_LIB_DIRS) $(EPICS_LIB_DIRS) #LIBRARIES = $(NI488_LIBRARIES) $(EPICS_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(SIS3100_LIB_DIRS) $(EPICS_LIB_DIRS) #LIBRARIES = $(SIS3100_LIBRARIES) $(EPICS_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(XIA_HANDEL_LIB_DIRS) $(EPICS_LIB_DIRS) #LIBRARIES = $(XIA_HANDEL_LIBRARIES) $(EPICS_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(EPICS_LIB_DIRS) $(LIBUSB_LIB_DIRS) #LIBRARIES = $(EPICS_LIBRARIES) $(LIBUSB_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(NI_VISA_LIB_DIRS) $(EPICS_LIB_DIRS) \ # $(XIA_HANDEL_LIB_DIRS) #LIBRARIES = $(NI_VISA_LIBRARIES) $(EPICS_LIBRARIES) \ # $(XIA_HANDEL_LIBRARIES) -lpthread -lrt -lm #LIB_DIRS = -L$(MX_LIB_DIR) $(EPICS_LIB_DIRS) $(NI488_LIB_DIRS) \ # $(NI_VISA_LIB_DIRS) $(SIS3100_LIB_DIRS) \ # $(LIBUSB_LIB_DIRS) $(JORWAY_CAMAC_LIB_DIRS) # #LIBRARIES = $(EPICS_LIBRARIES) $(NI488_LIBRARIES) \ # $(NI_VISA_LIBRARIES) $(SIS3100_LIBRARIES) \ # $(LIBUSB_LIBRARIES) $(JORWAY_CAMAC_LIBRARIES) \ # -lpthread -lrt -lm #-------------------------------------------------------------------------- # # If you are compiling for an embedded Linux system, you may need to # change the value of MX_LINUX_BSP. At present, the primary usage of this # definition is to select special subsets of MX drivers for small systems # that do not have enough memory to load all of the available MX drivers. # Unless you are working with embedded systems, you should probably leave # this at the default value of 'default'. # # If you have never heard of the term BSP (board support package), then # you should definitely leave this option alone. # MX_LINUX_BSP = default #-------- # # MX_LINUX_BSP_MVME162 has been used successfully with a 16 megabyte # MVME162-532A VME system controller. # #MX_LINUX_BSP = mvme162 # MX drivers to load for the MVME162. MX_DRIVER_MVME162_SRCS = i_tty.c i_mmap_vme.c \ i_pdi40.c i_pdi45.c i_vme58.c i_vsc16.c i_iseries.c \ d_soft_ainput.c d_soft_aoutput.c d_soft_dinput.c d_soft_doutput.c \ d_pdi45_aio.c d_pdi45_dio.c d_iseries_aio.c d_iseries_dio.c \ d_bit.c d_vme_dio.c \ d_soft_motor.c d_pdi40.c d_stp100.c d_vme58.c d_elapsed_time.c \ d_soft_scaler.c d_vsc16_scaler.c d_vsc16_timer.c \ d_pdi45_scaler.c d_pdi45_timer.c d_soft_timer.c d_interval_timer.c \ d_soft_amplifier.c d_generic_relay.c d_blind_relay.c \ d_pdi45_pulser.c v_mathop.c #-------------------------------------------------------------------------- # # Motor will be linked with the bundled copy of 'editline' if you use the # following definitions. # READLINE_LIB_DIRS = -L../tools/unix/src/editline READLINE_LIBRARIES = -ledit # # If you prefer to link motor to GNU Readline instead, uncomment the # following definitions. # #READLINE_LIB_DIRS = #READLINE_LIBRARIES = -lreadline -lncurses #-------------------------------------------------------------------------- # # You may also need to modify some of the following definitions, depending # on the drivers you plan to use. # # NI488_LIB_DIR = -L/usr/local/lib NI488_LIBRARIES = -lgpib #NI488_LIBRARIES = -lgpibenet # LINUX_GPIB_LIB_DIR = LINUX_GPIB_LIBRARIES = -lgpib # LIBUSB_INCLUDES = LIBUSB_LIB_DIRS = LIBUSB_LIBRARIES = -lusb # NI_VISA_DIR = /usr/local/vxipnp/linux NI_VISA_INCLUDES = -I$(NI_VISA_DIR)/include -DIS_MX_DRIVER NI_VISA_LIB_DIRS = -L$(NI_VISA_DIR)/lib NI_VISA_LIBRARIES = -lvisa # SIS3100_DIR = /usr/local/src/sis1100/V2.02/sis3100_calls SIS3100_INCLUDES = -I$(SIS3100_DIR) -DIS_MX_DRIVER SIS3100_LIB_DIRS = -L$(SIS3100_DIR) SIS3100_LIBRARIES = -l_sis3100 # JORWAY_CAMAC_DIR = /usr/local/src/sjyLX-v2.2 JORWAY_CAMAC_LIB_DIRS = -L$(JORWAY_CAMAC_DIR)/lib JORWAY_CAMAC_LIBRARIES = -lsjy ESONE_CAMAC_INCLUDES = -I$(JORWAY_CAMAC_DIR)/include # LABPC_INCLUDES = # I8255_INCLUDES = # AM9513_INCLUDES = # LINUX_PORTIO_INCLUDES = # LIBUSB_FLAGS = -Wno-shadow # VIDEO_4_LINUX_2_FLAGS = -DIS_MX_DRIVER # LINUX_IOPL_FLAGS = -Wno-missing-prototypes # # Compiled with Handel 0.4.5 (May 2004) # # Note that support for Linux in Handel itself is not yet available. # XIA_HANDEL_DIR = /opt/xia/handel #XIA_HANDEL_DIR = /home/lavender/xia/handel XIA_HANDEL_INCLUDES = -I$(XIA_HANDEL_DIR)/inc -DIS_MX_DRIVER \ -Wno-shadow -Wno-strict-prototypes XIA_HANDEL_LIB_DIRS = -L$(XIA_HANDEL_DIR)/lib XIA_HANDEL_LIBRARIES = -lhandel -lxerxes -lfdd -lmd # # EPICS includes and libraries. # EPICS_ARCH = linux-x86 # For EPICS 3.14 #EPICS_ARCH = linux-x86-debug # For EPICS 3.14 #EPICS_ARCH = Linux # For EPICS 3.13 #EPICS_TOP = /opt/epics #EPICS_TOP = /opt/epics/R3_14_7 #EPICS_TOP = /usr/local/epics #EPICS_TOP = /home/lavender/epics #EPICS_INCLUDES = -Wno-shadow -I$(EPICS_TOP)/base/include \ # -I$(EPICS_TOP)/base/include/os/Linux #EPICS_LIB_DIRS = -L$(EPICS_TOP)/base/lib/$(EPICS_ARCH) #EPICS_LIBRARIES = -lca -lCom # If you are using the EPICS Debian package, use the following definitions. EPICS_INCLUDES = -Wno-shadow -I/usr/include/epics \ -I/usr/include/epics/os/Linux EPICS_LIB_DIRS = EPICS_LIBRARIES = -lca -lCom # # EPICS and EPIX have nothing to do with each other. The fact that they have # similar names is a coincidence. # EPIX_XCLIB_DIR = /usr/local/xclib EPIX_XCLIB_INCLUDES = -I$(EPIX_XCLIB_DIR) -DIS_MX_DRIVER \ -Wno-strict-prototypes -Wno-unused-variable \ -Wno-shadow EPIX_XCLIB_LIB_DIRS = -L$(EPIX_XCLIB_DIR) EPIX_XCLIB_LIBRARIES = $(EPIX_XCLIB_DIR)/xclib_i386.a # EDT_DIR = /opt/EDTpdv EDT_INCLUDES = -I$(EDT_DIR) -DIS_MX_DRIVER -Wno-strict-prototypes EDT_LIB_DIRS = -L$(EDT_DIR) EDT_LIBRARIES = $(EDT_DIR)/libpdv.a # #======================================================================== # # Generally, you should not have to modify anything after this point. # # # gcc specific flags # GCCFLAGS = -Wall -Werror \ -Wstrict-prototypes \ -Wpointer-arith \ -Wcast-align \ -Wcast-qual \ -Wshadow \ -Wmissing-prototypes \ -Wnested-externs \ -Winline # Intel x86/m68k/sparc with GCC under Linux. # CC = gcc #CFLAGS = -g -O2 -fPIC $(GCCFLAGS) $(INCLUDES) -DOS_LINUX \ # $(EXTRA_FLAGS) -DDEBUG $(USER_CFLAGS) CFLAGS = -g -fPIC $(GCCFLAGS) $(INCLUDES) -DOS_LINUX \ $(EXTRA_FLAGS) -DDEBUG $(USER_CFLAGS) CFLAGS_EPICS = $(CFLAGS) -Wno-strict-prototypes # Special cases for individual files. #CFLAGS_MX_CFN = -DHAVE_LSB CFLAGS_MX_EPICS = $(CFLAGS_EPICS) -Wno-cast-qual CFLAGS_MX_VERS = $(CFLAGS) -DMX_MAJOR_VERSION=$(MX_MAJOR_VERSION) \ -DMX_MINOR_VERSION=$(MX_MINOR_VERSION) \ -DMX_UPDATE_VERSION=$(MX_UPDATE_VERSION) COMPILE = $(CC) -c DEFINE = -D MAKEDEPEND = gcc -MM $(CFLAGS) \ $(READLINE_INCLUDES) $(EDT_INCLUDES) \ $(EPICS_INCLUDES) $(EPIX_XCLIB_INCLUDES) \ $(NI_VISA_INCLUDES) $(SIS3100_INCLUDES) $(ESONE_CAMAC_INCLUDES) \ $(XIA_HANDEL_INCLUDES) *.c > Makefile.depend MAKEDEPEND_CLEAN = rm Makefile.depend # #--------------------------------------------------- # ifeq ($(MX_LINUX_BSP),default) MX_LIB_SRCS = mx_driver.c $(MX_CORE_SRCS) $(MX_DRIVER_SRCS) endif ifeq ($(MX_LINUX_BSP),mvme162) MX_LIB_SRCS = mx_driver_linux_mvme162.c \ $(MX_CORE_SRCS) $(MX_DRIVER_MVME162_SRCS) endif # #--------------------------------------------------- # # See libMx/Makehead.irix for why this is here. # MX_LIB_OBJS = $(MX_LIB_SRCS:.c=.$(OBJ)) MOTOR_OBJS = $(MOTOR_SRCS:.c=.$(OBJ)) SERVER_OBJS = $(SERVER_SRCS:.c=.$(OBJ)) UPDATE_OBJS = $(UPDATE_SRCS:.c=.$(OBJ)) MXDRIVERINFO_OBJS = $(MXDRIVERINFO_SRCS:.c=.$(OBJ)) #---- MX_LIB_OBJS += ../tools/strlcpy.o ../tools/strlcat.o # #--------------------------------------------------- # RM = rm -f MAKE = make MKDIR = mkdir OBJ = o EXEOUT = -o DOTEXE = # #--------------------------------------------------- # MX_LIB_DIR = ../libMx MX_INC_DIR = $(MX_LIB_DIR) MX_INCLUDES = -I$(MX_INC_DIR) MX_SONAME = libMx.so.$(MX_MAJOR_VERSION) MX_LIBRARY_NAME = $(MX_SONAME).$(MX_MINOR_VERSION).$(MX_UPDATE_VERSION) MX_LIBRARY_STATIC_NAME = libMx.a MX_LIBRARY_PATH = $(MX_LIB_DIR)/$(MX_LIBRARY_NAME) MX_LIBRARY_DELETE = rm $(MX_LIBRARY_NAME) $(MX_SONAME) libMx.so $(MX_LIBRARY_STATIC_NAME) $(MX_LIBRARY_NAME): $(MX_LIB_OBJS) -$(MX_LIBRARY_DELETE) gcc -shared -Wl,-soname,$(MX_SONAME) -o $(MX_LIBRARY_NAME) \ $(LIB_DIRS) $(MX_LIB_OBJS) $(LIBRARIES) -lc ln -sf $(MX_LIBRARY_NAME) $(MX_SONAME) ln -sf $(MX_LIBRARY_NAME) libMx.so ar rcs $(MX_LIBRARY_STATIC_NAME) $(MX_LIB_OBJS) ranlib $(MX_LIBRARY_STATIC_NAME) library_install: -mkdir $(MX_INSTALL_DIR)/bin -mkdir $(MX_INSTALL_DIR)/etc -mkdir $(MX_INSTALL_DIR)/etc/startup -mkdir $(MX_INSTALL_DIR)/include -mkdir $(MX_INSTALL_DIR)/lib -mkdir $(MX_INSTALL_DIR)/log -mkdir $(MX_INSTALL_DIR)/run -mkdir $(MX_INSTALL_DIR)/sbin -mkdir $(MX_INSTALL_DIR)/state install -m 644 mx*.h $(MX_INSTALL_DIR)/include install -m 644 $(MX_LIBRARY_NAME) $(MX_INSTALL_DIR)/lib install -m 644 $(MX_LIBRARY_STATIC_NAME) $(MX_INSTALL_DIR)/lib ( cd $(MX_INSTALL_DIR)/lib ; ln -sf $(MX_LIBRARY_NAME) $(MX_SONAME) ) ( cd $(MX_INSTALL_DIR)/lib ; ln -sf $(MX_LIBRARY_NAME) libMx.so ) touch $(MX_INSTALL_DIR)/etc/motor.dat touch $(MX_INSTALL_DIR)/etc/scan.dat install -m 755 ../plotgnu/plotgnu.pl $(MX_INSTALL_DIR)/bin install -m 755 ../plotgnu/showdata $(MX_INSTALL_DIR)/bin install -m 755 ../plotgnu/showplot $(MX_INSTALL_DIR)/bin install -m 755 ../plotgnu/plot2ps $(MX_INSTALL_DIR)/bin # #--------------------------------------------------- # MOTOR_NAME = motor MOTOR_NAME2 = motor.static $(MOTOR_NAME): $(MOTOR_OBJS) $(MX_LIBRARY_PATH) $(CC) $(CFLAGS) -o $(MOTOR_NAME) $(MOTOR_OBJS) \ $(LIB_DIRS) $(READLINE_LIB_DIRS) \ -lMx $(LIBRARIES) $(READLINE_LIBRARIES) $(CC) $(CFLAGS) -o $(MOTOR_NAME2) $(MOTOR_OBJS) \ $(LIB_DIRS) $(READLINE_LIB_DIRS) \ ../libMx/$(MX_LIBRARY_STATIC_NAME) \ $(LIBRARIES) $(READLINE_LIBRARIES) motor_install: install -m 755 $(MOTOR_NAME) $(MX_INSTALL_DIR)/bin install -m 755 $(MOTOR_NAME2) $(MX_INSTALL_DIR)/bin install -m 755 ../scripts/motor_xterm $(MX_INSTALL_DIR)/bin # #--------------------------------------------------- # SERVER_NAME = mxserver $(SERVER_NAME): $(SERVER_OBJS) $(MX_LIBRARY_PATH) $(CC) $(CFLAGS) -o $(SERVER_NAME) $(SERVER_OBJS) \ $(LIB_DIRS) -lMx $(LIBRARIES) server_install: install -m 755 $(SERVER_NAME) $(MX_INSTALL_DIR)/sbin install -m 755 ../scripts/startmxserver $(MX_INSTALL_DIR)/sbin install -m 755 ../scripts/mx $(MX_INSTALL_DIR)/sbin touch $(MX_INSTALL_DIR)/etc/mxserver.dat touch $(MX_INSTALL_DIR)/etc/mxserver.acl # #--------------------------------------------------- # UPDATE_NAME = mxupdate $(UPDATE_NAME): $(UPDATE_OBJS) $(MX_LIBRARY_PATH) $(CC) $(CFLAGS) -o $(UPDATE_NAME) $(UPDATE_OBJS) \ $(LIB_DIRS) -lMx $(LIBRARIES) update_install: install -m 755 $(UPDATE_NAME) $(MX_INSTALL_DIR)/sbin install -m 755 ../scripts/startmxupdate $(MX_INSTALL_DIR)/sbin touch $(MX_INSTALL_DIR)/etc/mxupdate.dat # #--------------------------------------------------- # MXDRIVERINFO_NAME = mxdriverinfo $(MXDRIVERINFO_NAME): $(MXDRIVERINFO_OBJS) $(MX_LIBRARY_PATH) $(CC) $(CFLAGS) -o $(MXDRIVERINFO_NAME) \ $(MXDRIVERINFO_OBJS) $(LIB_DIRS) -lMx $(LIBRARIES) MXSERIAL_NAME = mxserial $(MXSERIAL_NAME): mxserial.o $(MX_LIBRARY_PATH) $(CC) $(CFLAGS) -o $(MXSERIAL_NAME) mxserial.o \ $(LIB_DIRS) -lMx $(LIBRARIES) mxserial.o: mxserial_fork.c $(CC) $(CFLAGS) -c mxserial_fork.c -o mxserial.o util_install: install -m 755 $(MXDRIVERINFO_NAME) $(MX_INSTALL_DIR)/bin install -m 755 $(MXSERIAL_NAME) $(MX_INSTALL_DIR)/bin