# # gcc-no_bsp.cfg,v 1.13 1995/12/19 19:59:57 joel Exp # # This is for the amd29k portsw board. # # THIS IS NOT A GNU TOOLS BASED PORT!!! # # Prefix on the installed GNU tools # Just use the native tools GNU_TOOLS_PREFIX= # Additional target names (other than debug, profile) TARGET_VARIANTS += # # Pre-processor defines. # Local tailoring (on the command line) can be done by setting XCPPFLAGS # which is never set in the Makefile's # # Possible defines include: # -DRTEMS_LIBC using libc bundled with RTEMS # -DRTEMS_NEWLIB using CYGNUS libc # -DMALLOC_PROVIDED must be used for newlib reent struct DEFINES:= $(LIBC_DEFINES) GCC_INCLUDE=. # Note: normally we do not want the standard include files # Also we usually include a "libc_include" directory CPPFLAGS=$(XCPPFLAGS) $(DEFINES) \ -I$(RTEMS_LIBC_DIR)/include \ -I$(PROJECT_INCLUDE) \ -I/opt/29k/src/inc # # Local tailoring (on the command line) can be done by setting XCFLAGS # which is never set in the Makefile's # # # CFLAGS_OPTIMIZE_V, CFLAGS_DEBUG_V, CFLAGS_PROFILE_V are the values we # would want the corresponding macros to be set to. # # CFLAGS_OPTIMIZE, CFLAGS_DEBUG, CFLAGS_PROFILE are set in the leaf # Makefiles by the 'debug:' and 'profile:' targets to their _V values. # # default flags CFLAGS_DEFAULT = -NB -bwc -nocrt0 -Ml -m -g -Hansi -Hon=Pointers_compatible -Hon=Pointers_compatible_with_ints -Dinline= -D___AM29K__ -Hnocopyr # optimize flag: typically -0, could use -O4 or -fast # -O4 is ok for RTEMS # -Os to optimize for size CFLAGS_OPTIMIZE_V=-Os # debug flag; typically -g CFLAGS_DEBUG_V=-g -O0 -DRTEMS_DEBUG -DSTACK_CHECKER_ON # profile flag; use gprof(1) CFLAGS_PROFILE_V= # default is to optimize CFLAGS_OPTIMIZE=$(CFLAGS_OPTIMIZE_V) # dynamic libraries CFLAGS_DYNAMIC_V=-fpic #ASFLAGS_DYNAMIC_V= CFLAGS=$(CFLAGS_DEFAULT) $(CFLAGS_OPTIMIZE) $(CFLAGS_DEBUG) $(CFLAGS_PROFILE) # List of library paths without -L LD_PATHS= $(PROJECT_RELEASE)/lib # libraries you want EVERYONE to link with LD_LIBS= # ld flag to ensure pure-text LDFLAGS_MUST_BE_PURE_V = # ld flag for [un]shared objects LDFLAGS_STATIC_LIBRARIES_V = LDFLAGS_SHARED_LIBRARIES_V = # ld flag for incomplete link LDFLAGS_INCOMPLETE = -i # Special linker options when building lib.so LDFLAGS_DYNAMIC_V = ?? # Some dynamic linking systems want the preferred name recorded in the binary # ref: src/libxil/Makefile LDFLAGS_DYNAMIC_LIBNAME_V = -h $(DYNAMIC_VERSION_LIBNAME) # ld flags for profiling, debugging LDFLAGS_PROFILE_V = LDFLAGS_DEBUG_V = LDFLAGS=$(LDFLAGS_PROFILE) $(LDFLAGS_DEBUG) $(LD_PATHS:%=-L %) # # Stuff to clean and clobber for the compiler and its tools # CLEAN_CC = a.out *.o *.BAK CLOBBER_CC = # # Client compiler and support tools # CC=/opt/29k/bin/hc29 CXX=$(CC) CCC=$(CXX) # CPP command to write file to standard output CPP=$(CC) -E # flags set by cc when running cpp CPP_CC_FLAGS=-D__STDC__ AS=/opt/29k/bin/as29 ASPP=ERROR_NO_ASPP ASFLAGS=-l -fcgimosx # NOTE: should never use full path .. but there is no guarantee ld, etc # will be in the same directory as gcc.. so hope they are in the path # Don't do this on a real target!!! LD=/opt/29k/bin/ld29 NM=/opt/29k/bin/nm29 AR=echo making library # egrep regexp to ignore symbol table entries in ar archives. # Only used to make sure we skip them when coalescing libraries. # skip __.SYMDEF and empty names (maybe bug in ranlib??). AR_SYMBOL_TABLE="HIGHLY-UNLIKELY-TO-CONFLICT" ARFLAGS=ruv # NOTE: see comment on ld, nm, ar SIZE=size # # Command to convert a normal archive to one searchable by $(LD) # Not needed on SVR4 # MKLIB=/opt/29k/bin/lib29 # # How to compile stuff into ${ARCH} subdirectory # # NOTE: we override COMPILE.c # COMPILE.c=$(CC) -c $(CFLAGS) $(CPPFLAGS) $(XCFLAGS) ${ARCH}/%.o: %.c ${COMPILE.c} -o $@ $< $(CHMOD) -f g+w $@ ${ARCH}/%.o: %.cc ${COMPILE.c} -o $@ $< $(CHMOD) -f g+w $@ ${ARCH}/%.o: %.s ${COMPILE.c} -DASM -o $@ $< $(CHMOD) -f g+w $@ ${ARCH}/%.o: %.S $(CP) $*.s $(ARCH)/$*.c $(CPP) $(CPPFLAGS) $(ARCH)/$*.c > $(ARCH)/$*.s ${COMPILE.c} -o $@ $(ARCH)/$*.s $(CHMOD) -f g+w $@ $(RM) $(ARCH)/$*.c # Specify our own default rule for this to prevent having CFLAGS and # CPPFLAGS being passed to linker ${ARCH}/%: ${ARCH}/%.o ${CC} ${LDFLAGS} -o $@ $@.o ${LD_LIBS} $(CHMOD) -f g+w $@ # Make foo.rel from foo.o ${ARCH}/%.rel: ${ARCH}/%.o ${LD} $(LDFLAGS_INCOMPLETE) -o $@ $^ $(CHMOD) -f g+w $@ # create $(ARCH)/pgm from pgm.sh ${ARCH}/%: %.sh $(RM) $@ $(CP) $< $@ $(CHMOD) +x $@ $(CHMOD) -f g+w $@ # Dependency files for use by gmake # NOTE: we don't put them into $(ARCH) # so that 'make clean' doesn't blow it away DEPEND=Depends-${ARCH} CLEAN_DEPEND=$(DEPEND).tmp CLOBBER_DEPEND=$(DEPEND) # We deliberately don't have anything depend on the # $(DEPEND) file; otherwise it will get rebuilt even # on 'make clean' # depend: $(C_FILES) $(CC_FILES) $(S_FILES) ifneq ($(words $(C_FILES) $(CC_FILES) $(S_FILES)), 0) # Use gcc -M to generate dependencies # Replace foo.o with $(ARCH)/foo.o # Replace $(ARCH) value with string $(ARCH) # so that it will for debug and profile cases $(COMPILE.c) -Hmake $^ | \ $(SED) -e 's?^\(.*\)\.o[ ]*:?$$(ARCH)/\1.o:?' \ -e 's?$(ARCH)/?$$(ARCH)/?' >$(DEPEND).tmp $(MV) $(DEPEND).tmp $(DEPEND) $(CHMOD) -f g+w $(DEPEND) endif # spell out all the LINK_FILE's, rather than using -lbsp, so # that $(LINK_FILES) can be a dependency # Start file must be one of # $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o # $(PROJECT_RELEASE)/lib/asmiface$(LIB_VARIANT).o # It defaults to start.o, but an app can override it. # Note: Normally RTEMS provides a start file... START_FILE= $(PROJECT_RELEASE)/lib/crt0$(LIB_VARIANT).o $(PROJECT_RELEASE)/lib/register$(LIB_VARIANT).o LIBC_LOW= $(PROJECT_RELEASE)/lib/libcsupport$(LIBSUFFIX_VA) LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name $(GCCSED)) LIBOSBOOT=/home/src/amd29k/sps2000/netrom.o LINK_FILES= \ $(START_FILE) \ $(OBJS) \ $(MANAGERS_NOT_WANTED:%=$(PROJECT_RELEASE)/lib/no-%$(LIB_VARIANT).rel) \ $(PROJECT_RELEASE)/lib/libbsp$(LIBSUFFIX_VA) \ $(LD_LIBS) \ $(PROJECT_RELEASE)/lib/libtest$(LIBSUFFIX_VA) \ $(PROJECT_RELEASE)/lib/librtems$(LIBSUFFIX_VA) \ $(LIBC_LOW) \ $(PROJECT_RELEASE)/lib/libmisc$(LIBSUFFIX_VA) \ $(LIBC_LIBC) \ $(LIBC_EXTRALIBS) \ $(LIBC_LIBM) # /home/craigl/osbdbg.o # Here is the rule to actually build a $(ARCH)/foo.exe # It also builds $(ARCH)/foo.sr and $(ARCH)/foo.nm # Usage ref: src/tests/sptest/sp1/Makefile define make-exe if [ $(NO_ROM) ]; then echo "\n\nskipping ROM compile\n"; else \ $(CC) -nocrt0 -cmd$(PROJECT_RELEASE)/lib/romlink -u _times -u _gettimeofday \ -u _sleep -o $(basename $@).out $(LIBOSBOOT) $(LINK_FILES); \ romcoff -r -t -l -b $(basename $@).out raminit.o; \ rm $(basename $@).out; \ $(CC) -m -u _times -u _gettimeofday -u _sleep -o $(basename $@).romcof $(LIBOSBOOT) \ $(LINK_FILES) raminit.o -nocrt0 -cmd$(PROJECT_RELEASE)/lib/romlink > $(basename $@).rommap ; \ rm raminit.o ; \ $(CHMOD) -f g+w $(basename $@).romcof; \ /opt/green/coff2sr -noS5 $(basename $@).romcof -o $(basename $@).srec; \ $(CHMOD) -f g+w $(basename $@).srec; \ fi if [ $(CREATE_MAP) ]; then \ $(CC) -m -u _times -u _gettimeofday -u _sleep -o $(basename $@).exe $(LINK_FILES) -nocrt0 -cmd$(PROJECT_RELEASE)/lib/ramlink > $(basename $@).rammap; \ else \ rm $(basename $@).rommap > /dev/null 2> /dev/null ; \ $(CC) -u _times -u _gettimeofday -u _sleep -o $(basename $@).exe $(LINK_FILES) -nocrt0 -cmd$(PROJECT_RELEASE)/lib/ramlink; \ fi $(CHMOD) -f g+w $(basename $@).exe # $(CC) -o $(basename $@).exe $(LINK_FILES) -nocrt0 -cmd/opt/29k/lib/link030.cmd $(NM) -g $(basename $@).exe > $(basename $@).num $(CHMOD) -f g+w $(basename $@).num # $(SIZE) $(basename $@).exe endef define make-rel $(LD) $(LDFLAGS_INCOMPLETE) $(XLDFLAGS) -o $@ $(OBJS) $(CHMOD) -f g+w $@ endef