# # Name: Makehead.ecos # # Purpose: This file is used to customize operating system and installation # dependent features of the MX makefiles. This version is customized # for eCos. # # Warning: This build target does not actually work yet. # ECOS_TOP_DIR = /home/lavender/ecos ECOS_BSP = i386_pc #ECOS_BSP = linux PKG_INSTALL_DIR = /home/lavender/ecos/linux/ecos_install INCLUDES = $(MX_INCLUDES) LIB_DIRS = -L$(MX_LIB_DIR) LIBRARIES = -lm # # eCos often runs on resource constrained systems, so we define here # a list of MX drivers that only includes the actual drivers we need. # You must also edit libMx/mx_driver_ecos.c to match. # # The following is just an example. You should customize it to match # the configuration you actually need. # MX_DRIVER_ECOS_SRCS = i_tty.c i_pdi40.c i_pdi45.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_soft_motor.c d_pdi40.c d_stp100.c d_elapsed_time.c \ d_soft_scaler.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 # #======================================================================== # # Generally, you should not have to modify anything after this point unless # you are adding a new board support package, where you must customize the # makefile conditionals that use ECOS_BSP below. # # # Define a CPP macro describing the board support package (BSP) in use # and also define any BSP specific CPP macro definitions as well. # ifeq ($(ECOS_BSP),linux) BSP_FLAGS = -DMX_ECOS_BSP_LINUX MX_LIB_SRCS = mx_driver_ecos.c $(MX_CORE_SRCS) $(MX_DRIVER_ECOS_SRCS) PKG_INSTALL_DIR = $(ECOS_TOP_DIR)/$(ECOS_BSP)/ecos_install CC = i386-elf-gcc endif ifeq ($(ECOS_BSP),i386_pc) BSP_FLAGS = -DMX_ECOS_BSP_I386_PC MX_LIB_SRCS = mx_driver_ecos.c $(MX_CORE_SRCS) $(MX_DRIVER_ECOS_SRCS) PKG_INSTALL_DIR = $(ECOS_TOP_DIR)/$(ECOS_BSP)/ecos_install CC = i386-elf-gcc endif #------------------------------------------------------------------------ # # gcc specific flags # #GCCFLAGS = -Wall -Werror \ #-Wstrict-prototypes \ #-Wpointer-arith \ #-Wcast-align \ #-Wcast-qual \ #-Wmissing-prototypes \ #-Wnested-externs \ #-Winline # GCCFLAGS = -Wall -Werror # eCos with GCC # CFLAGS = -g $(GCCFLAGS) -ffunction-sections -fdata-sections \ -I$(PKG_INSTALL_DIR)/include \ $(INCLUDES) -DOS_ECOS -D__ECOS \ $(EXTRA_FLAGS) -DDEBUG \ $(BSP_FLAGS) CFLAGS_EPICS = $(CFLAGS) # Special cases for individual files. 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 = $(CC) -MM $(CFLAGS) *.c > Makefile.depend MAKEDEPEND_CLEAN = rm Makefile.depend # #--------------------------------------------------- # # # 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/getopt.o MX_LIB_OBJS += ../tools/strlcpy.o ../tools/strlcat.o MX_LIB_OBJS += ../tools/xdr.o ../tools/xdr_hyper.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_LIBRARY_NAME = libMx.a MX_LIBRARY_STATIC_NAME = $(MX_LIBRARY_NAME) MX_LIBRARY_PATH = $(MX_LIB_DIR)/$(MX_LIBRARY_NAME) MX_LIBRARY_DELETE = rm $(MX_LIBRARY_NAME) $(MX_LIBRARY_NAME): $(MX_LIB_OBJS) -$(MX_LIBRARY_DELETE) ar rcs $(MX_LIBRARY_NAME) $(MX_LIB_OBJS) ranlib $(MX_LIBRARY_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 libMx.a $(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.exe $(MOTOR_NAME): mecos.o $(MOTOR_OBJS) $(MX_LIBRARY_PATH) $(CC) -nostartfiles -L$(PKG_INSTALL_DIR)/lib \ -Wl,--gc-sections -Wl,--Map -Wl,motor.map \ -o $(MOTOR_NAME) mecos.o $(MOTOR_OBJS) $(MX_LIBRARY_PATH) \ -Ttarget.ld -nostdlib mecos.o: mecos.c $(COMPILE) $(CFLAGS) mecos.c motor_install: install -m 755 $(MOTOR_NAME) $(MX_INSTALL_DIR)/bin # #--------------------------------------------------- # SERVER_NAME = mxserver.exe $(SERVER_NAME): ms_ecos.o $(SERVER_OBJS) $(MX_LIBRARY_PATH) $(LINK_FILES) $(CC) -nostartfiles -L$(PKG_INSTALL_DIR)/lib \ -Wl,--gc-sections -Wl,--Map -Wl,server.map \ -o $(SERVER_NAME) ms_ecos.o $(SERVER_OBJS) $(MX_LIBRARY_PATH) \ -Ttarget.ld -nostdlib ms_ecos.o: ms_ecos.c $(COMPILE) $(CFLAGS) ms_ecos.c server_install: install -m 755 $(SERVER_NAME) $(MX_INSTALL_DIR)/sbin touch $(MX_INSTALL_DIR)/etc/mxserver.dat touch $(MX_INSTALL_DIR)/etc/mxserver.acl # #--------------------------------------------------- # UPDATE_NAME = mxupdate.exe $(UPDATE_NAME): update_install: # #--------------------------------------------------- # MXDRIVERINFO_NAME = mxdriverinfo.exe $(MXDRIVERINFO_NAME): util_install: