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