# # Makefile.leaf,v 1.7 2002/07/22 22:56:09 joel Exp # # Templates/Makefile.leaf # Template leaf node Makefile # # LIBNAME=libif_le.a # C source names, if any, go here -- minus the .c C_PIECES= C_PIECES+=lance am79900 if_le_pci C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) # C++ source names, if any, go here -- minus the .cc CC_PIECES= CC_FILES=$(CC_PIECES:%=%.cc) CC_O_FILES=$(CC_PIECES:%=${ARCH}/%.o) H_FILES= LINKS+=dev/le/lancereg.h LINKS+=dev/le/lancevar.h LINKS+=dev/le/am79900reg.h LINKS+=dev/le/am79900var.h # Assembly source names, if any, go here -- minus the .S S_PIECES= S_FILES=$(S_PIECES:%=%.S) S_O_FILES=$(S_FILES:%.S=${ARCH}/%.o) SRCS=$(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES) OBJS=$(C_O_FILES) $(CC_O_FILES) $(S_O_FILES) # If your PGMS target has the '.exe' extension, a statically # linked application is generated. # If it has a '.obj' extension, a loadable module is built. # # ifdef LIBNAME LIB=${ARCH}/${LIBNAME} else PGMS=${ARCH}/if_pcn.obj endif # List of RTEMS Classic API Managers to be included in the application # goes here. Use: # MANAGERS=all # to include all RTEMS Classic API Managers in the application or # something like this to include a specific set of managers. # MANAGERS=io event message rate_monotonic semaphore timer # # UNUSED for loadable modules MANAGERS=ALL all: depend: ${LINKS} ifndef RTEMS_MAKEFILE_PATH $(error you need to set the RTEMS_MAKEFILE_PATH environment variable) endif include $(RTEMS_MAKEFILE_PATH)/Makefile.inc include $(RTEMS_CUSTOM) ifdef LIBNAME include $(RTEMS_ROOT)/make/lib.cfg else include $(RTEMS_ROOT)/make/leaf.cfg endif # # (OPTIONAL) Add local stuff here using += # #DEFINES += -DLEDEBUG CPPFLAGS += -I. -I../libbsdport -I../libbsdport/dummyheaders CPPFLAGS += $(CPPFLAGS_82542_SUPPORT_$(ENBL_82542_SUPPORT)) CFLAGS += # # CFLAGS_DEBUG_V are used when the `make debug' target is built. # To link your application with the non-optimized RTEMS routines, # uncomment the following line: # CFLAGS_DEBUG_V += -qrtems_debug # LD_PATHS += LD_LIBS += LDFLAGS += # # Add your list of files to delete here. The config files # already know how to delete some stuff, so you may want # to just run 'make clean' first to see what gets missed. # 'make clobber' already includes 'make clean' # CLEAN_ADDITIONS += CLOBBER_ADDITIONS += $(sort $(foreach n,$(LINKS),$(firstword $(subst /, ,$(n))))) all: ${LINKS} ${ARCH} $(SRCS) $(PGMS) ${LIB} #How to make a relocatable object $(filter %.obj, $(PGMS)): ${OBJS} $(make-obj) #How to make an executable (statically linked) $(filter %.exe,$(PGMS)): ${LINK_FILES} $(make-exe) ifdef ELFEXT ifdef XSYMS $(XSYMS) $(@:%.exe=%.$(ELFEXT)) $(@:%.exe=%.sym) endif endif $(LIB): ${OBJS} $(make-library) ifndef RTEMS_SITE_INSTALLDIR RTEMS_SITE_INSTALLDIR = $(PROJECT_RELEASE) endif # for each name listed in LINKS, create parent directories (if needed) # and a symlink to file in . # E.g., LINKS=a/b/c.h # creates a/b/c.h -> ../../c.h $(LINKS): @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@); fi @ln -s `echo $@ | sed -e 's%[^/]\+[/]\+%../%g'` $@ ${RTEMS_SITE_INSTALLDIR}/include \ ${RTEMS_SITE_INSTALLDIR}/lib \ ${RTEMS_SITE_INSTALLDIR}/bin: test -d $@ || mkdir -p $@ # Install the program(s), appending _g or _p as appropriate. # for include files, just use $(INSTALL_CHANGE) # # - Some BSPs might generate bootable executables in yet another # format (such as .srec) and you might need to extend the rule # below so the essential files get installed. YMMV. ifdef LIBNAME install: all $(RTEMS_SITE_INSTALLDIR)/lib $(INSTALL_VARIANT) -m 644 ${LIB} ${RTEMS_SITE_INSTALLDIR}/lib else install: all $(RTEMS_SITE_INSTALLDIR)/bin $(INSTALL_VARIANT) -m 555 ${PGMS} ${PGMS:%.exe=%.bin} ${PGMS:%.exe=%.sym} ${RTEMS_SITE_INSTALLDIR}/bin endif