1# Additional compiler flags (OpenMP, SSEx, AVX, ...)
2
3#COPT_OPT=/arch:SSE2 /arch:AVX
4
5# Compile with RawSpeed support
6#CFLAGS_RAWSPEED=/DUSE_RAWSPEED /I"..\\RawSpeed" /I"..\\RawSpeed\include" /I"..\\RawSpeed\include\libjpeg"
7#LDFLAGS_RAWSPEED=..\RawSpeed\lib\rawspeed.lib ..\RawSpeed\lib\libxml2.lib ..\RawSpeed\lib\iconv.lib ..\RawSpeed\lib\charset.lib ..\RawSpeed\lib\turbojpeg-static.lib
8
9# Compile with DNG SDK support
10#CFLAGS_DNG=/DUSE_DNGSDK /I"..\\dng_sdk\\source"
11#LDFLAGS_DNG=..\\dng_sdk\\release\\libdng.lib  ..\\dng_sdk\\release\\XMPCore.lib
12# you may also need to specify zlib.lib and jpeg.lib in the line above
13
14# LCMS 1.x support
15#LCMS_DEF=/DUSE_LCMS /DCMS_DLL /I..\lcms-1.19\include
16#LCMS_LIB=..\lcms-1.19\bin\lcms.lib
17
18# LCMS 2.x support
19#LCMS_DEF=/DUSE_LCMS2 /DCMS_DLL /I..\lcms2-2.3\include
20#LCMS_LIB=..\lcms2-2.3\bin\lcms2_dll.lib
21
22# JPEG support for DNG
23#JPEG_DEF=/DUSE_JPEG /I..\jpeg-8d
24#JPEG_LIB=..\jpeg-8d\Release\jpeg.lib
25
26
27SAMPLES=bin\raw-identify.exe bin\simple_dcraw.exe  bin\dcraw_emu.exe bin\dcraw_half.exe \
28        bin\half_mt.exe bin\mem_image.exe bin\unprocessed_raw.exe bin\4channels.exe \
29        bin\multirender_test.exe bin\postprocessing_benchmark.exe bin\openbayer_sample.exe \
30	bin\rawtextdump.exe
31
32LIBSTATIC=lib\libraw_static.lib
33DLL=bin\libraw.dll
34LIBDLL=lib\libraw.lib
35
36all: $(DLL) $(LIBSTATIC) $(SAMPLES)
37
38$(LIBDLL): $(DLL)
39
40# Guess LIBPATH from $INCLUDE
41
42LIB_OBJECTS= object\libraw_datastream_st.obj object\libraw_c_api_st.obj \
43  object\cameralist_st.obj object\fuji_compressed_st.obj \
44  object\crx_st.obj object\fp_dng_st.obj object\decoders_libraw_st.obj \
45  object\unpack_st.obj object\unpack_thumb_st.obj \
46  object\rawspeed_glue_st.obj object\dngsdk_glue_st.obj \
47  object\colorconst_st.obj object\utils_libraw_st.obj object\init_close_utils_st.obj \
48  object\decoder_info_st.obj object\open_st.obj object\phaseone_processing_st.obj \
49  object\thumb_utils_st.obj \
50  object\tiff_writer_st.obj object\subtract_black_st.obj object\postprocessing_utils_st.obj \
51  object\dcraw_process_st.obj object\raw2image_st.obj object\mem_image_st.obj \
52  object\x3f_utils_patched_st.obj object\x3f_parse_process_st.obj \
53  object\read_utils_st.obj object\curves_st.obj object\utils_dcraw_st.obj \
54  object\colordata_st.obj \
55  object\canon_600_st.obj  object\decoders_dcraw_st.obj \
56  object\decoders_libraw_dcrdefs_st.obj  object\generic_st.obj \
57  object\kodak_decoders_st.obj object\dng_st.obj object\smal_st.obj \
58  object\load_mfbacks_st.obj \
59  object\sony_st.obj object\nikon_st.obj object\samsung_st.obj object\cr3_parser_st.obj \
60  object\canon_st.obj  object\epson_st.obj object\olympus_st.obj object\leica_st.obj \
61  object\fuji_st.obj object\adobepano_st.obj object\pentax_st.obj object\p1_st.obj \
62  object\makernotes_st.obj object\exif_gps_st.obj object\kodak_st.obj \
63  object\tiff_st.obj object\ciff_st.obj object\mediumformat_st.obj object\minolta_st.obj \
64  object\identify_tools_st.obj \
65  object\hasselblad_model_st.obj object\normalize_model_st.obj object\identify_st.obj \
66  object\misc_parsers_st.obj object\wblists_st.obj \
67  object\postprocessing_aux_st.obj object\postprocessing_utils_dcrdefs_st.obj \
68  object\aspect_ratio_st.obj \
69  object\misc_demosaic_st.obj object\xtrans_demosaic_st.obj object\ahd_demosaic_st.obj \
70  object\dht_demosaic_st.obj  object\aahd_demosaic_st.obj  object\dcb_demosaic_st.obj \
71  object\file_write_st.obj \
72  object\ext_preprocess_st.obj   object\apply_profile_st.obj
73
74
75DLL_OBJECTS= object\libraw_datastream.obj object\libraw_c_api.obj \
76  object\cameralist.obj object\fuji_compressed.obj \
77  object\crx.obj object\fp_dng.obj object\decoders_libraw.obj \
78  object\unpack.obj object\unpack_thumb.obj \
79  object\rawspeed_glue.obj object\dngsdk_glue.obj \
80  object\colorconst.obj object\utils_libraw.obj \
81  object\init_close_utils.obj \
82  object\decoder_info.obj object\open.obj object\phaseone_processing.obj \
83  object\thumb_utils.obj \
84  object\tiff_writer.obj object\subtract_black.obj \
85  object\postprocessing_utils.obj object\dcraw_process.obj \
86  object\raw2image.obj object\mem_image.obj \
87  object\x3f_utils_patched.obj object\x3f_parse_process.obj \
88  object\read_utils.obj object\curves.obj object\utils_dcraw.obj \
89  object\colordata.obj \
90  object\canon_600.obj  object\decoders_dcraw.obj \
91  object\decoders_libraw_dcrdefs.obj  object\generic.obj \
92  object\kodak_decoders.obj object\dng.obj object\smal.obj \
93  object\load_mfbacks.obj \
94  object\sony.obj object\nikon.obj object\samsung.obj \
95  object\cr3_parser.obj object\canon.obj  object\epson.obj \
96  object\olympus.obj object\leica.obj \
97  object\fuji.obj object\adobepano.obj object\pentax.obj object\p1.obj \
98  object\makernotes.obj object\exif_gps.obj object\kodak.obj \
99  object\tiff.obj object\ciff.obj object\mediumformat.obj \
100  object\minolta.obj \
101  object\identify_tools.obj \
102  object\hasselblad_model.obj object\normalize_model.obj object\identify.obj \
103  object\misc_parsers.obj object\wblists.obj \
104  object\postprocessing_aux.obj object\postprocessing_utils_dcrdefs.obj \
105  object\aspect_ratio.obj \
106  object\misc_demosaic.obj object\xtrans_demosaic.obj \
107  object\ahd_demosaic.obj object\dht_demosaic.obj \
108  object\aahd_demosaic.obj object\dcb_demosaic.obj \
109  object\file_write.obj \
110  object\ext_preprocess.obj   object\apply_profile.obj
111
112
113CC=cl.exe
114COPT=/EHsc /MP /MD /I. /DWIN32 /O2 /W0 /nologo $(COPT_OPT) $(CFLAGSG2) $(CFLAGSG3) $(LCMS_DEF) $(JPEG_DEF) $(CFLAGS_RAWSPEED) $(CFLAGS_DNG)
115
116LINKLIB=$(LIBDLL) $(LDFLAGS_RAWSPEED) $(LDFLAGS_DNG)
117
118
119
120# Samples - default to dynamic (DLL) link, uncomment next lines
121#CFLAGS2=/DLIBRAW_NODLL
122#LINKLIB=$(LIBSTATIC)
123
124bin\raw-identify.exe: $(LINKLIB) samples\raw-identify.cpp
125	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\raw-identify.exe" /Fo"object\\" samples\raw-identify.cpp $(LINKLIB)
126
127bin\unprocessed_raw.exe: $(LINKLIB) samples\unprocessed_raw.cpp
128	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\unprocessed_raw.exe" /Fo"object\\" samples\unprocessed_raw.cpp $(LINKLIB) ws2_32.lib
129
130bin\4channels.exe: $(LINKLIB) samples\4channels.cpp
131	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\4channels.exe" /Fo"object\\" samples\4channels.cpp $(LINKLIB)
132
133bin\rawtextdump.exe: $(LINKLIB) samples\rawtextdump.cpp
134	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\rawtextdump.exe" /Fo"object\\" samples\rawtextdump.cpp $(LINKLIB)
135
136bin\simple_dcraw.exe: $(LINKLIB) samples\simple_dcraw.cpp
137	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\simple_dcraw.exe" /Fo"object\\" samples\simple_dcraw.cpp $(LINKLIB)
138
139bin\postprocessing_benchmark.exe: $(LINKLIB) samples\postprocessing_benchmark.cpp
140	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\postprocessing_benchmark.exe" /Fo"object\\" samples\postprocessing_benchmark.cpp $(LINKLIB)
141
142bin\multirender_test.exe: $(LINKLIB) samples\multirender_test.cpp
143	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\multirender_test.exe" /Fo"object\\" samples\multirender_test.cpp $(LINKLIB)
144
145bin\openbayer_sample.exe: $(LINKLIB) samples\openbayer_sample.cpp
146	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\openbayer_sample.exe" /Fo"object\\" samples\openbayer_sample.cpp $(LINKLIB)
147
148bin\mem_image.exe: $(LINKLIB) samples\mem_image_sample.cpp
149	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\mem_image.exe" /Fo"object\\" samples\mem_image_sample.cpp $(LINKLIB)
150
151bin\dcraw_emu.exe: $(LINKLIB) samples\dcraw_emu.cpp
152	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\dcraw_emu.exe" /Fo"object\\" samples\dcraw_emu.cpp $(LINKLIB)
153
154bin\dcraw_half.exe: $(LINKLIB) samples\dcraw_half.c
155	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\dcraw_half.exe" /Fo"object\\" samples\dcraw_half.c $(LINKLIB)
156
157bin\half_mt.exe: $(LINKLIB) samples\half_mt_win32.c
158	$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\half_mt.exe" /Fo"object\\" samples\half_mt_win32.c $(LINKLIB)
159
160# DLL build
161
162$(DLL): $(DLL_OBJECTS)
163	-del /f $(DLL) $(LIBDLL)
164	cl $(COPT) /LD $(DLL_OBJECTS) $(LDFLAGS_RAWSPEED) $(LDFLAGS_DNG) $(LCMS_LIB) $(JPEG_LIB) /link /out:"$(DLL)" /implib:"$(LIBDLL)"
165
166# LIBRARY BUILD
167$(LIBSTATIC): $(LIB_OBJECTS)
168        -del /f $(LIBSTATIC)
169	lib /OUT:$(LIBSTATIC) /LTCG $(LIB_OBJECTS)
170
171# clean
172clean:
173	-del $(LIBSTATIC) $(LIBDLL) lib\*.exp
174	-del $(LIB_OBJECTS) $(DLL_OBJECTS)
175        -del object\*.o
176	-del $(DLL) $(SAMPLES)
177
178# OBJ generation rules
179object\canon_600_st.obj: src\decoders\canon_600.cpp
180	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\canon_600_st.obj" /c src\decoders\canon_600.cpp
181
182object\canon_600.obj: src\decoders\canon_600.cpp
183	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\canon_600.obj" /c src\decoders\canon_600.cpp
184
185object\crx_st.obj: src\decoders\crx.cpp
186	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\crx_st.obj" /c src\decoders\crx.cpp
187
188object\crx.obj: src\decoders\crx.cpp
189	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\crx.obj" /c src\decoders\crx.cpp
190
191object\decoders_dcraw_st.obj: src\decoders\decoders_dcraw.cpp
192	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_dcraw_st.obj" /c src\decoders\decoders_dcraw.cpp
193
194object\decoders_dcraw.obj: src\decoders\decoders_dcraw.cpp
195	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_dcraw.obj" /c src\decoders\decoders_dcraw.cpp
196
197object\decoders_libraw_dcrdefs_st.obj: src\decoders\decoders_libraw_dcrdefs.cpp
198	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_dcrdefs_st.obj" /c src\decoders\decoders_libraw_dcrdefs.cpp
199
200object\decoders_libraw_dcrdefs.obj: src\decoders\decoders_libraw_dcrdefs.cpp
201	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_dcrdefs.obj" /c src\decoders\decoders_libraw_dcrdefs.cpp
202
203object\decoders_libraw_st.obj: src\decoders\decoders_libraw.cpp
204	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_st.obj" /c src\decoders\decoders_libraw.cpp
205
206object\decoders_libraw.obj: src\decoders\decoders_libraw.cpp
207	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw.obj" /c src\decoders\decoders_libraw.cpp
208
209object\dng_st.obj: src\decoders\dng.cpp
210	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dng_st.obj" /c src\decoders\dng.cpp
211
212object\dng.obj: src\decoders\dng.cpp
213	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dng.obj" /c src\decoders\dng.cpp
214
215object\fp_dng_st.obj: src\decoders\fp_dng.cpp
216	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fp_dng_st.obj" /c src\decoders\fp_dng.cpp
217
218object\fp_dng.obj: src\decoders\fp_dng.cpp
219	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fp_dng.obj" /c src\decoders\fp_dng.cpp
220
221object\fuji_compressed_st.obj: src\decoders\fuji_compressed.cpp
222	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fuji_compressed_st.obj" /c src\decoders\fuji_compressed.cpp
223
224object\fuji_compressed.obj: src\decoders\fuji_compressed.cpp
225	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fuji_compressed.obj" /c src\decoders\fuji_compressed.cpp
226
227object\generic_st.obj: src\decoders\generic.cpp
228	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\generic_st.obj" /c src\decoders\generic.cpp
229
230object\generic.obj: src\decoders\generic.cpp
231	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\generic.obj" /c src\decoders\generic.cpp
232
233object\kodak_decoders_st.obj: src\decoders\kodak_decoders.cpp
234	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\kodak_decoders_st.obj" /c src\decoders\kodak_decoders.cpp
235
236object\kodak_decoders.obj: src\decoders\kodak_decoders.cpp
237	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\kodak_decoders.obj" /c src\decoders\kodak_decoders.cpp
238
239object\load_mfbacks_st.obj: src\decoders\load_mfbacks.cpp
240	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\load_mfbacks_st.obj" /c src\decoders\load_mfbacks.cpp
241
242object\load_mfbacks.obj: src\decoders\load_mfbacks.cpp
243	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\load_mfbacks.obj" /c src\decoders\load_mfbacks.cpp
244
245object\smal_st.obj: src\decoders\smal.cpp
246	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\smal_st.obj" /c src\decoders\smal.cpp
247
248object\smal.obj: src\decoders\smal.cpp
249	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\smal.obj" /c src\decoders\smal.cpp
250
251object\unpack_thumb_st.obj: src\decoders\unpack_thumb.cpp
252	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\unpack_thumb_st.obj" /c src\decoders\unpack_thumb.cpp
253
254object\unpack_thumb.obj: src\decoders\unpack_thumb.cpp
255	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\unpack_thumb.obj" /c src\decoders\unpack_thumb.cpp
256
257object\unpack_st.obj: src\decoders\unpack.cpp
258	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\unpack_st.obj" /c src\decoders\unpack.cpp
259
260object\unpack.obj: src\decoders\unpack.cpp
261	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\unpack.obj" /c src\decoders\unpack.cpp
262
263object\aahd_demosaic_st.obj: src\demosaic\aahd_demosaic.cpp
264	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\aahd_demosaic_st.obj" /c src\demosaic\aahd_demosaic.cpp
265
266object\aahd_demosaic.obj: src\demosaic\aahd_demosaic.cpp
267	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\aahd_demosaic.obj" /c src\demosaic\aahd_demosaic.cpp
268
269object\ahd_demosaic_st.obj: src\demosaic\ahd_demosaic.cpp
270	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ahd_demosaic_st.obj" /c src\demosaic\ahd_demosaic.cpp
271
272object\ahd_demosaic.obj: src\demosaic\ahd_demosaic.cpp
273	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ahd_demosaic.obj" /c src\demosaic\ahd_demosaic.cpp
274
275object\dcb_demosaic_st.obj: src\demosaic\dcb_demosaic.cpp
276	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dcb_demosaic_st.obj" /c src\demosaic\dcb_demosaic.cpp
277
278object\dcb_demosaic.obj: src\demosaic\dcb_demosaic.cpp
279	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dcb_demosaic.obj" /c src\demosaic\dcb_demosaic.cpp
280
281object\dht_demosaic_st.obj: src\demosaic\dht_demosaic.cpp
282	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dht_demosaic_st.obj" /c src\demosaic\dht_demosaic.cpp
283
284object\dht_demosaic.obj: src\demosaic\dht_demosaic.cpp
285	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dht_demosaic.obj" /c src\demosaic\dht_demosaic.cpp
286
287object\misc_demosaic_st.obj: src\demosaic\misc_demosaic.cpp
288	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\misc_demosaic_st.obj" /c src\demosaic\misc_demosaic.cpp
289
290object\misc_demosaic.obj: src\demosaic\misc_demosaic.cpp
291	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\misc_demosaic.obj" /c src\demosaic\misc_demosaic.cpp
292
293object\xtrans_demosaic_st.obj: src\demosaic\xtrans_demosaic.cpp
294	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\xtrans_demosaic_st.obj" /c src\demosaic\xtrans_demosaic.cpp
295
296object\xtrans_demosaic.obj: src\demosaic\xtrans_demosaic.cpp
297	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\xtrans_demosaic.obj" /c src\demosaic\xtrans_demosaic.cpp
298
299object\dngsdk_glue_st.obj: src\integration\dngsdk_glue.cpp
300	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dngsdk_glue_st.obj" /c src\integration\dngsdk_glue.cpp
301
302object\dngsdk_glue.obj: src\integration\dngsdk_glue.cpp
303	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dngsdk_glue.obj" /c src\integration\dngsdk_glue.cpp
304
305object\rawspeed_glue_st.obj: src\integration\rawspeed_glue.cpp
306	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\rawspeed_glue_st.obj" /c src\integration\rawspeed_glue.cpp
307
308object\rawspeed_glue.obj: src\integration\rawspeed_glue.cpp
309	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\rawspeed_glue.obj" /c src\integration\rawspeed_glue.cpp
310
311object\adobepano_st.obj: src\metadata\adobepano.cpp
312	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\adobepano_st.obj" /c src\metadata\adobepano.cpp
313
314object\adobepano.obj: src\metadata\adobepano.cpp
315	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\adobepano.obj" /c src\metadata\adobepano.cpp
316
317object\canon_st.obj: src\metadata\canon.cpp
318	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\canon_st.obj" /c src\metadata\canon.cpp
319
320object\canon.obj: src\metadata\canon.cpp
321	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\canon.obj" /c src\metadata\canon.cpp
322
323object\ciff_st.obj: src\metadata\ciff.cpp
324	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ciff_st.obj" /c src\metadata\ciff.cpp
325
326object\ciff.obj: src\metadata\ciff.cpp
327	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ciff.obj" /c src\metadata\ciff.cpp
328
329object\cr3_parser_st.obj: src\metadata\cr3_parser.cpp
330	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\cr3_parser_st.obj" /c src\metadata\cr3_parser.cpp
331
332object\cr3_parser.obj: src\metadata\cr3_parser.cpp
333	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\cr3_parser.obj" /c src\metadata\cr3_parser.cpp
334
335object\epson_st.obj: src\metadata\epson.cpp
336	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\epson_st.obj" /c src\metadata\epson.cpp
337
338object\epson.obj: src\metadata\epson.cpp
339	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\epson.obj" /c src\metadata\epson.cpp
340
341object\exif_gps_st.obj: src\metadata\exif_gps.cpp
342	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\exif_gps_st.obj" /c src\metadata\exif_gps.cpp
343
344object\exif_gps.obj: src\metadata\exif_gps.cpp
345	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\exif_gps.obj" /c src\metadata\exif_gps.cpp
346
347object\fuji_st.obj: src\metadata\fuji.cpp
348	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fuji_st.obj" /c src\metadata\fuji.cpp
349
350object\fuji.obj: src\metadata\fuji.cpp
351	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fuji.obj" /c src\metadata\fuji.cpp
352
353object\identify_tools_st.obj: src\metadata\identify_tools.cpp
354	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\identify_tools_st.obj" /c src\metadata\identify_tools.cpp
355
356object\identify_tools.obj: src\metadata\identify_tools.cpp
357	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\identify_tools.obj" /c src\metadata\identify_tools.cpp
358
359object\identify_st.obj: src\metadata\identify.cpp
360	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\identify_st.obj" /c src\metadata\identify.cpp
361
362object\identify.obj: src\metadata\identify.cpp
363	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\identify.obj" /c src\metadata\identify.cpp
364
365object\kodak_st.obj: src\metadata\kodak.cpp
366	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\kodak_st.obj" /c src\metadata\kodak.cpp
367
368object\kodak.obj: src\metadata\kodak.cpp
369	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\kodak.obj" /c src\metadata\kodak.cpp
370
371object\leica_st.obj: src\metadata\leica.cpp
372	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\leica_st.obj" /c src\metadata\leica.cpp
373
374object\leica.obj: src\metadata\leica.cpp
375	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\leica.obj" /c src\metadata\leica.cpp
376
377object\makernotes_st.obj: src\metadata\makernotes.cpp
378	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\makernotes_st.obj" /c src\metadata\makernotes.cpp
379
380object\makernotes.obj: src\metadata\makernotes.cpp
381	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\makernotes.obj" /c src\metadata\makernotes.cpp
382
383object\mediumformat_st.obj: src\metadata\mediumformat.cpp
384	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\mediumformat_st.obj" /c src\metadata\mediumformat.cpp
385
386object\mediumformat.obj: src\metadata\mediumformat.cpp
387	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\mediumformat.obj" /c src\metadata\mediumformat.cpp
388
389object\minolta_st.obj: src\metadata\minolta.cpp
390	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\minolta_st.obj" /c src\metadata\minolta.cpp
391
392object\minolta.obj: src\metadata\minolta.cpp
393	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\minolta.obj" /c src\metadata\minolta.cpp
394
395object\misc_parsers_st.obj: src\metadata\misc_parsers.cpp
396	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\misc_parsers_st.obj" /c src\metadata\misc_parsers.cpp
397
398object\misc_parsers.obj: src\metadata\misc_parsers.cpp
399	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\misc_parsers.obj" /c src\metadata\misc_parsers.cpp
400
401object\nikon_st.obj: src\metadata\nikon.cpp
402	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\nikon_st.obj" /c src\metadata\nikon.cpp
403
404object\nikon.obj: src\metadata\nikon.cpp
405	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\nikon.obj" /c src\metadata\nikon.cpp
406
407object\hasselblad_model_st.obj: src\metadata\hasselblad_model.cpp
408	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\hasselblad_model_st.obj" /c src\metadata\hasselblad_model.cpp
409
410object\hasselblad_model.obj: src\metadata\hasselblad_model.cpp
411	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\hasselblad_model.obj" /c src\metadata\hasselblad_model.cpp
412
413object\normalize_model_st.obj: src\metadata\normalize_model.cpp
414	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\normalize_model_st.obj" /c src\metadata\normalize_model.cpp
415
416object\normalize_model.obj: src\metadata\normalize_model.cpp
417	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\normalize_model.obj" /c src\metadata\normalize_model.cpp
418
419object\olympus_st.obj: src\metadata\olympus.cpp
420	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\olympus_st.obj" /c src\metadata\olympus.cpp
421
422object\olympus.obj: src\metadata\olympus.cpp
423	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\olympus.obj" /c src\metadata\olympus.cpp
424
425object\p1_st.obj: src\metadata\p1.cpp
426	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\p1_st.obj" /c src\metadata\p1.cpp
427
428object\p1.obj: src\metadata\p1.cpp
429	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\p1.obj" /c src\metadata\p1.cpp
430
431object\pentax_st.obj: src\metadata\pentax.cpp
432	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\pentax_st.obj" /c src\metadata\pentax.cpp
433
434object\pentax.obj: src\metadata\pentax.cpp
435	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\pentax.obj" /c src\metadata\pentax.cpp
436
437object\samsung_st.obj: src\metadata\samsung.cpp
438	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\samsung_st.obj" /c src\metadata\samsung.cpp
439
440object\samsung.obj: src\metadata\samsung.cpp
441	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\samsung.obj" /c src\metadata\samsung.cpp
442
443object\sony_st.obj: src\metadata\sony.cpp
444	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\sony_st.obj" /c src\metadata\sony.cpp
445
446object\sony.obj: src\metadata\sony.cpp
447	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\sony.obj" /c src\metadata\sony.cpp
448
449object\tiff_st.obj: src\metadata\tiff.cpp
450	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\tiff_st.obj" /c src\metadata\tiff.cpp
451
452object\tiff.obj: src\metadata\tiff.cpp
453	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\tiff.obj" /c src\metadata\tiff.cpp
454
455object\aspect_ratio_st.obj: src\postprocessing\aspect_ratio.cpp
456	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\aspect_ratio_st.obj" /c src\postprocessing\aspect_ratio.cpp
457
458object\aspect_ratio.obj: src\postprocessing\aspect_ratio.cpp
459	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\aspect_ratio.obj" /c src\postprocessing\aspect_ratio.cpp
460
461object\dcraw_process_st.obj: src\postprocessing\dcraw_process.cpp
462	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dcraw_process_st.obj" /c src\postprocessing\dcraw_process.cpp
463
464object\dcraw_process.obj: src\postprocessing\dcraw_process.cpp
465	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dcraw_process.obj" /c src\postprocessing\dcraw_process.cpp
466
467object\mem_image_st.obj: src\postprocessing\mem_image.cpp
468	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\mem_image_st.obj" /c src\postprocessing\mem_image.cpp
469
470object\mem_image.obj: src\postprocessing\mem_image.cpp
471	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\mem_image.obj" /c src\postprocessing\mem_image.cpp
472
473object\postprocessing_aux_st.obj: src\postprocessing\postprocessing_aux.cpp
474	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_aux_st.obj" /c src\postprocessing\postprocessing_aux.cpp
475
476object\postprocessing_aux.obj: src\postprocessing\postprocessing_aux.cpp
477	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_aux.obj" /c src\postprocessing\postprocessing_aux.cpp
478
479object\postprocessing_utils_dcrdefs_st.obj: src\postprocessing\postprocessing_utils_dcrdefs.cpp
480	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_dcrdefs_st.obj" /c src\postprocessing\postprocessing_utils_dcrdefs.cpp
481
482object\postprocessing_utils_dcrdefs.obj: src\postprocessing\postprocessing_utils_dcrdefs.cpp
483	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_dcrdefs.obj" /c src\postprocessing\postprocessing_utils_dcrdefs.cpp
484
485object\postprocessing_utils_st.obj: src\postprocessing\postprocessing_utils.cpp
486	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_st.obj" /c src\postprocessing\postprocessing_utils.cpp
487
488object\postprocessing_utils.obj: src\postprocessing\postprocessing_utils.cpp
489	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils.obj" /c src\postprocessing\postprocessing_utils.cpp
490
491object\ext_preprocess_st.obj: src\preprocessing\ext_preprocess.cpp
492	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ext_preprocess_st.obj" /c src\preprocessing\ext_preprocess.cpp
493
494object\ext_preprocess.obj: src\preprocessing\ext_preprocess.cpp
495	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ext_preprocess.obj" /c src\preprocessing\ext_preprocess.cpp
496
497object\raw2image_st.obj: src\preprocessing\raw2image.cpp
498	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\raw2image_st.obj" /c src\preprocessing\raw2image.cpp
499
500object\raw2image.obj: src\preprocessing\raw2image.cpp
501	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\raw2image.obj" /c src\preprocessing\raw2image.cpp
502
503object\subtract_black_st.obj: src\preprocessing\subtract_black.cpp
504	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\subtract_black_st.obj" /c src\preprocessing\subtract_black.cpp
505
506object\subtract_black.obj: src\preprocessing\subtract_black.cpp
507	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\subtract_black.obj" /c src\preprocessing\subtract_black.cpp
508
509object\cameralist_st.obj: src\tables\cameralist.cpp
510	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\cameralist_st.obj" /c src\tables\cameralist.cpp
511
512object\cameralist.obj: src\tables\cameralist.cpp
513	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\cameralist.obj" /c src\tables\cameralist.cpp
514
515object\colorconst_st.obj: src\tables\colorconst.cpp
516	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\colorconst_st.obj" /c src\tables\colorconst.cpp
517
518object\colorconst.obj: src\tables\colorconst.cpp
519	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\colorconst.obj" /c src\tables\colorconst.cpp
520
521object\colordata_st.obj: src\tables\colordata.cpp
522	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\colordata_st.obj" /c src\tables\colordata.cpp
523
524object\colordata.obj: src\tables\colordata.cpp
525	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\colordata.obj" /c src\tables\colordata.cpp
526
527object\wblists_st.obj: src\tables\wblists.cpp
528	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\wblists_st.obj" /c src\tables\wblists.cpp
529
530object\wblists.obj: src\tables\wblists.cpp
531	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\wblists.obj" /c src\tables\wblists.cpp
532
533object\curves_st.obj: src\utils\curves.cpp
534	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\curves_st.obj" /c src\utils\curves.cpp
535
536object\curves.obj: src\utils\curves.cpp
537	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\curves.obj" /c src\utils\curves.cpp
538
539object\decoder_info_st.obj: src\utils\decoder_info.cpp
540	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoder_info_st.obj" /c src\utils\decoder_info.cpp
541
542object\decoder_info.obj: src\utils\decoder_info.cpp
543	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoder_info.obj" /c src\utils\decoder_info.cpp
544
545object\init_close_utils_st.obj: src\utils\init_close_utils.cpp
546	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\init_close_utils_st.obj" /c src\utils\init_close_utils.cpp
547
548object\init_close_utils.obj: src\utils\init_close_utils.cpp
549	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\init_close_utils.obj" /c src\utils\init_close_utils.cpp
550
551object\open_st.obj: src\utils\open.cpp
552	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\open_st.obj" /c src\utils\open.cpp
553
554object\open.obj: src\utils\open.cpp
555	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\open.obj" /c src\utils\open.cpp
556
557object\phaseone_processing_st.obj: src\utils\phaseone_processing.cpp
558	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\phaseone_processing_st.obj" /c src\utils\phaseone_processing.cpp
559
560object\phaseone_processing.obj: src\utils\phaseone_processing.cpp
561	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\phaseone_processing.obj" /c src\utils\phaseone_processing.cpp
562
563object\read_utils_st.obj: src\utils\read_utils.cpp
564	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\read_utils_st.obj" /c src\utils\read_utils.cpp
565
566object\read_utils.obj: src\utils\read_utils.cpp
567	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\read_utils.obj" /c src\utils\read_utils.cpp
568
569object\thumb_utils_st.obj: src\utils\thumb_utils.cpp
570	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\thumb_utils_st.obj" /c src\utils\thumb_utils.cpp
571
572object\thumb_utils.obj: src\utils\thumb_utils.cpp
573	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\thumb_utils.obj" /c src\utils\thumb_utils.cpp
574
575object\utils_dcraw_st.obj: src\utils\utils_dcraw.cpp
576	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\utils_dcraw_st.obj" /c src\utils\utils_dcraw.cpp
577
578object\utils_dcraw.obj: src\utils\utils_dcraw.cpp
579	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\utils_dcraw.obj" /c src\utils\utils_dcraw.cpp
580
581object\utils_libraw_st.obj: src\utils\utils_libraw.cpp
582	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\utils_libraw_st.obj" /c src\utils\utils_libraw.cpp
583
584object\utils_libraw.obj: src\utils\utils_libraw.cpp
585	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\utils_libraw.obj" /c src\utils\utils_libraw.cpp
586
587object\apply_profile_st.obj: src\write\apply_profile.cpp
588	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\apply_profile_st.obj" /c src\write\apply_profile.cpp
589
590object\apply_profile.obj: src\write\apply_profile.cpp
591	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\apply_profile.obj" /c src\write\apply_profile.cpp
592
593object\file_write_st.obj: src\write\file_write.cpp
594	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\file_write_st.obj" /c src\write\file_write.cpp
595
596object\file_write.obj: src\write\file_write.cpp
597	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\file_write.obj" /c src\write\file_write.cpp
598
599object\tiff_writer_st.obj: src\write\tiff_writer.cpp
600	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\tiff_writer_st.obj" /c src\write\tiff_writer.cpp
601
602object\tiff_writer.obj: src\write\tiff_writer.cpp
603	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\tiff_writer.obj" /c src\write\tiff_writer.cpp
604
605object\x3f_parse_process_st.obj: src\x3f\x3f_parse_process.cpp
606	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\x3f_parse_process_st.obj" /c src\x3f\x3f_parse_process.cpp
607
608object\x3f_parse_process.obj: src\x3f\x3f_parse_process.cpp
609	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\x3f_parse_process.obj" /c src\x3f\x3f_parse_process.cpp
610
611object\x3f_utils_patched_st.obj: src\x3f\x3f_utils_patched.cpp
612	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\x3f_utils_patched_st.obj" /c src\x3f\x3f_utils_patched.cpp
613
614object\x3f_utils_patched.obj: src\x3f\x3f_utils_patched.cpp
615	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\x3f_utils_patched.obj" /c src\x3f\x3f_utils_patched.cpp
616
617object\libraw_c_api_st.obj: src\libraw_c_api.cpp
618	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\libraw_c_api_st.obj" /c src\libraw_c_api.cpp
619
620object\libraw_c_api.obj: src\libraw_c_api.cpp
621	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\libraw_c_api.obj" /c src\libraw_c_api.cpp
622
623object\libraw_datastream_st.obj: src\libraw_datastream.cpp
624	$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\libraw_datastream_st.obj" /c src\libraw_datastream.cpp
625
626object\libraw_datastream.obj: src\libraw_datastream.cpp
627	$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\libraw_datastream.obj" /c src\libraw_datastream.cpp
628
629