#*******************************************************************************
# makefile.rules
# Description:
# gnu make makefile rules for elftosb executable. make needs to be called
# with the following command:
#
# make -C ${BUILD_DIR} -f ${SRC_DIR}/makefile.rules SRC_DIR=${SRC_DIR} $@;
#
# SRC_DIR needs to be passed in. It is assumed that make is running in
# the build directory.
#*******************************************************************************
# Environment
# UNAMES is going to be set to either "Linux" or "CYGWIN_NT-5.1"
UNAMES = $(shell uname -s)
#*******************************************************************************
# Directories
#*******************************************************************************
# Paths
# search path for source files. make finds them automatically.
VPATH = \
${SRC_DIR}/common \
${SRC_DIR}/elftosb2 \
${SRC_DIR}/sbtool \
${SRC_DIR}/keygen
# include directories
INC_PATH = \
-I${SRC_DIR}/elftosb2 \
-I${SRC_DIR}/keygen \
-I${SRC_DIR}/sbtool \
-I${SRC_DIR}/common
#*******************************************************************************
# Build flags
# gcc Compiler flags
# -g : Produce debugging information.
CFLAGS = -g $(INC_PATH) -D${UNAMES}
#*******************************************************************************
# File lists
OBJ_FILES_COMMON = \
AESKey.o \
Blob.o \
crc.o \
DataSource.o \
DataTarget.o \
ELFSourceFile.o \
EncoreBootImage.o \
EvalContext.o \
GHSSecInfo.o \
GlobMatcher.o \
HexValues.o \
Logging.o \
Operation.o \
OptionDictionary.o \
options.o \
OutputSection.o \
Random.o \
RijndaelCBCMAC.o \
rijndael.o \
SHA1.o \
SourceFile.o \
SRecordSourceFile.o \
stdafx.o \
StELFFile.o \
StExecutableImage.o \
StSRecordFile.o \
Value.o \
Version.o \
format_string.o \
ExcludesListMatcher.o \
SearchPath.o \
DataSourceImager.o \
IVTDataSource.o
OBJ_FILES_ELFTOSB2 = \
${OBJ_FILES_COMMON} \
BootImageGenerator.o \
ConversionController.o \
ElftosbAST.o \
elftosb.o \
elftosb_lexer.o \
ElftosbLexer.o \
elftosb_parser.tab.o \
EncoreBootImageGenerator.o
OBJ_FILES_SBTOOL = \
${OBJ_FILES_COMMON} \
EncoreBootImageReader.o \
sbtool.o
OBJ_FILES_KEYGEN = \
${OBJ_FILES_COMMON} \
keygen.o
LIBS = -lstdc++
ifeq ("${UNAMES}", "Linux")
EXEC_FILE_ELFTOSB2 = elftosb
EXEC_FILE_SBTOOL = sbtool
EXEC_FILE_KEYGEN = keygen
else
ifeq ("${UNAMES}", "CYGWIN_NT-5.1")
EXEC_FILE_ELFTOSB2 = elftosb.exe
EXEC_FILE_SBTOOL = sbtool.exe
EXEC_FILE_KEYGEN = keygen.exe
endif # ifeq ("${UNAMES}", "CYGWIN_NT-5.1")
endif # ifeq ("${UNAMES}", "Linux")
#*******************************************************************************
# Targets
all: elftosb sbtool keygen
# Uncomment the next line to print out the environment variables.
all: exec_always
exec_always:
@echo "SRC_DIR = ${SRC_DIR}"
@echo "OBJ_FILES = ${OBJ_FILES_ELFTOSB2}"
@echo "LIBS = ${LIBS}"
@echo "EXEC_FILE = ${EXEC_FILE}"
@echo "BUILD_DIR = ${BUILD_DIR}"
clean:
rm -f ${OBJ_FILES_ELFTOSB2} ${OBJ_FILES_SBTOOL} ${OBJ_FILES_KEYGEN} \
${EXEC_FILE_ELFTOSB2} ${EXEC_FILE_SBTOOL} ${EXEC_FILE_KEYGEN}
elftosb: ${OBJ_FILES_ELFTOSB2}
gcc ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2}
sbtool: ${OBJ_FILES_SBTOOL}
gcc ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL}
keygen: ${OBJ_FILES_KEYGEN}
gcc ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN}
#ifeq ("${UNAMES}", "Linux")
#ifeq ("${UNAMES}", "Linux")
# Use default rules for creating all the .o files from the .c files. Only
# for linux
.SUFFIXES : .c .cpp
.c.o :
gcc ${CFLAGS} -c $<
.cpp.o :
gcc ${CFLAGS} -c $<
#endif
#*******************************************************************************
# Automatic dependency generation
%.d: %.c
@set -e; \
$(CC) -MM $(CFLAGS) $< | \
sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
[ -s $@ ] || rm -f $@
%.d: %.cpp
@set -e; \
$(CC) -MM $(CFLAGS) $< | \
sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
[ -s $@ ] || rm -f $@
#*******************************************************************************