1*993229b6Sjkunz#******************************************************************************* 2*993229b6Sjkunz# makefile.rules 3*993229b6Sjkunz# Description: 4*993229b6Sjkunz# gnu make makefile rules for elftosb executable. make needs to be called 5*993229b6Sjkunz# with the following command: 6*993229b6Sjkunz# 7*993229b6Sjkunz# make -C ${BUILD_DIR} -f ${SRC_DIR}/makefile.rules SRC_DIR=${SRC_DIR} $@; 8*993229b6Sjkunz# 9*993229b6Sjkunz# SRC_DIR needs to be passed in. It is assumed that make is running in 10*993229b6Sjkunz# the build directory. 11*993229b6Sjkunz 12*993229b6Sjkunz#******************************************************************************* 13*993229b6Sjkunz# Environment 14*993229b6Sjkunz 15*993229b6Sjkunz# UNAMES is going to be set to either "Linux" or "CYGWIN_NT-5.1" 16*993229b6SjkunzUNAMES = $(shell uname -s) 17*993229b6Sjkunz 18*993229b6Sjkunz#******************************************************************************* 19*993229b6Sjkunz# Directories 20*993229b6Sjkunz 21*993229b6Sjkunz#******************************************************************************* 22*993229b6Sjkunz# Paths 23*993229b6Sjkunz 24*993229b6Sjkunz# search path for source files. make finds them automatically. 25*993229b6SjkunzVPATH = \ 26*993229b6Sjkunz ${SRC_DIR}/common \ 27*993229b6Sjkunz ${SRC_DIR}/elftosb2 \ 28*993229b6Sjkunz ${SRC_DIR}/sbtool \ 29*993229b6Sjkunz ${SRC_DIR}/keygen 30*993229b6Sjkunz 31*993229b6Sjkunz# include directories 32*993229b6SjkunzINC_PATH = \ 33*993229b6Sjkunz -I${SRC_DIR}/elftosb2 \ 34*993229b6Sjkunz -I${SRC_DIR}/keygen \ 35*993229b6Sjkunz -I${SRC_DIR}/sbtool \ 36*993229b6Sjkunz -I${SRC_DIR}/common 37*993229b6Sjkunz 38*993229b6Sjkunz#******************************************************************************* 39*993229b6Sjkunz# Build flags 40*993229b6Sjkunz# gcc Compiler flags 41*993229b6Sjkunz# -g : Produce debugging information. 42*993229b6Sjkunz 43*993229b6SjkunzCFLAGS = -g $(INC_PATH) -D${UNAMES} 44*993229b6Sjkunz 45*993229b6Sjkunz#******************************************************************************* 46*993229b6Sjkunz# File lists 47*993229b6Sjkunz 48*993229b6SjkunzOBJ_FILES_COMMON = \ 49*993229b6Sjkunz AESKey.o \ 50*993229b6Sjkunz Blob.o \ 51*993229b6Sjkunz crc.o \ 52*993229b6Sjkunz DataSource.o \ 53*993229b6Sjkunz DataTarget.o \ 54*993229b6Sjkunz ELFSourceFile.o \ 55*993229b6Sjkunz EncoreBootImage.o \ 56*993229b6Sjkunz EvalContext.o \ 57*993229b6Sjkunz GHSSecInfo.o \ 58*993229b6Sjkunz GlobMatcher.o \ 59*993229b6Sjkunz HexValues.o \ 60*993229b6Sjkunz Logging.o \ 61*993229b6Sjkunz Operation.o \ 62*993229b6Sjkunz OptionDictionary.o \ 63*993229b6Sjkunz options.o \ 64*993229b6Sjkunz OutputSection.o \ 65*993229b6Sjkunz Random.o \ 66*993229b6Sjkunz RijndaelCBCMAC.o \ 67*993229b6Sjkunz rijndael.o \ 68*993229b6Sjkunz SHA1.o \ 69*993229b6Sjkunz SourceFile.o \ 70*993229b6Sjkunz SRecordSourceFile.o \ 71*993229b6Sjkunz stdafx.o \ 72*993229b6Sjkunz StELFFile.o \ 73*993229b6Sjkunz StExecutableImage.o \ 74*993229b6Sjkunz StSRecordFile.o \ 75*993229b6Sjkunz Value.o \ 76*993229b6Sjkunz Version.o \ 77*993229b6Sjkunz format_string.o \ 78*993229b6Sjkunz ExcludesListMatcher.o \ 79*993229b6Sjkunz SearchPath.o \ 80*993229b6Sjkunz DataSourceImager.o \ 81*993229b6Sjkunz IVTDataSource.o 82*993229b6Sjkunz 83*993229b6SjkunzOBJ_FILES_ELFTOSB2 = \ 84*993229b6Sjkunz ${OBJ_FILES_COMMON} \ 85*993229b6Sjkunz BootImageGenerator.o \ 86*993229b6Sjkunz ConversionController.o \ 87*993229b6Sjkunz ElftosbAST.o \ 88*993229b6Sjkunz elftosb.o \ 89*993229b6Sjkunz elftosb_lexer.o \ 90*993229b6Sjkunz ElftosbLexer.o \ 91*993229b6Sjkunz elftosb_parser.tab.o \ 92*993229b6Sjkunz EncoreBootImageGenerator.o 93*993229b6Sjkunz 94*993229b6SjkunzOBJ_FILES_SBTOOL = \ 95*993229b6Sjkunz ${OBJ_FILES_COMMON} \ 96*993229b6Sjkunz EncoreBootImageReader.o \ 97*993229b6Sjkunz sbtool.o 98*993229b6Sjkunz 99*993229b6SjkunzOBJ_FILES_KEYGEN = \ 100*993229b6Sjkunz ${OBJ_FILES_COMMON} \ 101*993229b6Sjkunz keygen.o 102*993229b6Sjkunz 103*993229b6Sjkunz 104*993229b6SjkunzLIBS = -lstdc++ 105*993229b6Sjkunz 106*993229b6Sjkunz 107*993229b6Sjkunzifeq ("${UNAMES}", "Linux") 108*993229b6SjkunzEXEC_FILE_ELFTOSB2 = elftosb 109*993229b6SjkunzEXEC_FILE_SBTOOL = sbtool 110*993229b6SjkunzEXEC_FILE_KEYGEN = keygen 111*993229b6Sjkunzelse 112*993229b6Sjkunzifeq ("${UNAMES}", "CYGWIN_NT-5.1") 113*993229b6SjkunzEXEC_FILE_ELFTOSB2 = elftosb.exe 114*993229b6SjkunzEXEC_FILE_SBTOOL = sbtool.exe 115*993229b6SjkunzEXEC_FILE_KEYGEN = keygen.exe 116*993229b6Sjkunzendif # ifeq ("${UNAMES}", "CYGWIN_NT-5.1") 117*993229b6Sjkunzendif # ifeq ("${UNAMES}", "Linux") 118*993229b6Sjkunz 119*993229b6Sjkunz 120*993229b6Sjkunz#******************************************************************************* 121*993229b6Sjkunz# Targets 122*993229b6Sjkunz 123*993229b6Sjkunzall: elftosb sbtool keygen 124*993229b6Sjkunz 125*993229b6Sjkunz# Uncomment the next line to print out the environment variables. 126*993229b6Sjkunzall: exec_always 127*993229b6Sjkunz 128*993229b6Sjkunzexec_always: 129*993229b6Sjkunz @echo "SRC_DIR = ${SRC_DIR}" 130*993229b6Sjkunz @echo "OBJ_FILES = ${OBJ_FILES_ELFTOSB2}" 131*993229b6Sjkunz @echo "LIBS = ${LIBS}" 132*993229b6Sjkunz @echo "EXEC_FILE = ${EXEC_FILE}" 133*993229b6Sjkunz @echo "BUILD_DIR = ${BUILD_DIR}" 134*993229b6Sjkunz 135*993229b6Sjkunzclean: 136*993229b6Sjkunz rm -f ${OBJ_FILES_ELFTOSB2} ${OBJ_FILES_SBTOOL} ${OBJ_FILES_KEYGEN} \ 137*993229b6Sjkunz ${EXEC_FILE_ELFTOSB2} ${EXEC_FILE_SBTOOL} ${EXEC_FILE_KEYGEN} 138*993229b6Sjkunz 139*993229b6Sjkunzelftosb: ${OBJ_FILES_ELFTOSB2} 140*993229b6Sjkunz gcc ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2} 141*993229b6Sjkunz 142*993229b6Sjkunzsbtool: ${OBJ_FILES_SBTOOL} 143*993229b6Sjkunz gcc ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL} 144*993229b6Sjkunz 145*993229b6Sjkunzkeygen: ${OBJ_FILES_KEYGEN} 146*993229b6Sjkunz gcc ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN} 147*993229b6Sjkunz 148*993229b6Sjkunz 149*993229b6Sjkunz#ifeq ("${UNAMES}", "Linux") 150*993229b6Sjkunz#ifeq ("${UNAMES}", "Linux") 151*993229b6Sjkunz# Use default rules for creating all the .o files from the .c files. Only 152*993229b6Sjkunz# for linux 153*993229b6Sjkunz.SUFFIXES : .c .cpp 154*993229b6Sjkunz 155*993229b6Sjkunz.c.o : 156*993229b6Sjkunz gcc ${CFLAGS} -c $< 157*993229b6Sjkunz 158*993229b6Sjkunz.cpp.o : 159*993229b6Sjkunz gcc ${CFLAGS} -c $< 160*993229b6Sjkunz 161*993229b6Sjkunz#endif 162*993229b6Sjkunz 163*993229b6Sjkunz#******************************************************************************* 164*993229b6Sjkunz# Automatic dependency generation 165*993229b6Sjkunz 166*993229b6Sjkunz%.d: %.c 167*993229b6Sjkunz @set -e; \ 168*993229b6Sjkunz $(CC) -MM $(CFLAGS) $< | \ 169*993229b6Sjkunz sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ 170*993229b6Sjkunz [ -s $@ ] || rm -f $@ 171*993229b6Sjkunz 172*993229b6Sjkunz%.d: %.cpp 173*993229b6Sjkunz @set -e; \ 174*993229b6Sjkunz $(CC) -MM $(CFLAGS) $< | \ 175*993229b6Sjkunz sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ 176*993229b6Sjkunz [ -s $@ ] || rm -f $@ 177*993229b6Sjkunz 178*993229b6Sjkunz#******************************************************************************* 179