xref: /netbsd-src/external/bsd/elftosb/dist/makefile.rules (revision 993229b6fea628ff8b1fa09146c80b0cfb2768eb)
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