10 # Makefile : Builds wxWindows library wx.lib for MS Windows,
11 # and Borland C++ (32-bit).
14 !error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4
18 !error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx
22 !include $(WXDIR)\src\makeb32.env
24 # Please set these according to the settings in wx_setup.h, so we can include
25 # the appropriate libraries in wx.lib
33 !if "$(USE_CTL3D)" == "1"
34 #Use WIN32S/WIN95 32 bit version ctl3d32.dll under win95 (Andre Beltman)
35 PERIPH_LIBS=$(WXDIR)\lib\ctl3d32.lib $(PERIPH_LIBS)
36 PERIPH_TARGET=ctl3d $(PERIPH_TARGET)
37 PERIPH_CLEAN_TARGET=clean_ctl3d $(PERIPH_CLEAN_TARGET)
40 !if "$(USE_XPM_IN_MSW)" == "1"
41 PERIPH_LIBS=$(WXLIB)\xpm.lib $(PERIPH_LIBS)
42 PERIPH_TARGET=xpm $(PERIPH_TARGET)
43 PERIPH_CLEAN_TARGET=clean_xpm $(PERIPH_CLEAN_TARGET)
46 LIBTARGET= $(WXLIBDIR)\wx32.lib
54 DOCDIR = $(WXDIR)\docs
57 $(MSWDIR)\choicdgg.obj \
58 $(MSWDIR)\colrdlgg.obj \
59 $(MSWDIR)\fontdlgg.obj \
61 $(MSWDIR)\helpxlp.obj \
62 $(MSWDIR)\msgdlgg.obj \
63 $(MSWDIR)\panelg.obj \
64 $(MSWDIR)\printps.obj \
65 $(MSWDIR)\prntdlgg.obj \
66 $(MSWDIR)\scrolwin.obj \
67 $(MSWDIR)\splitter.obj \
68 $(MSWDIR)\statusbr.obj \
70 $(MSWDIR)\textdlgg.obj
73 $(MSWDIR)\config.obj \
74 $(MSWDIR)\cmndata.obj \
75 $(MSWDIR)\docview.obj \
76 $(MSWDIR)\dynarray.obj \
79 $(MSWDIR)\fileconf.obj \
80 $(MSWDIR)\filefn.obj \
81 $(MSWDIR)\gdicmn.obj \
82 $(MSWDIR)\helpbase.obj \
84 $(MSWDIR)\ipcbase.obj \
86 $(MSWDIR)\layout.obj \
87 $(MSWDIR)\memory.obj \
88 $(MSWDIR)\module.obj \
89 $(MSWDIR)\object.obj \
91 $(MSWDIR)\postscrp.obj \
92 $(MSWDIR)\prntbase.obj \
93 $(MSWDIR)\resource.obj \
94 $(MSWDIR)\tbarbase.obj \
95 $(MSWDIR)\tbarsmpl.obj \
96 $(MSWDIR)\textfile.obj \
97 $(MSWDIR)\timercmn.obj \
98 $(MSWDIR)\utilscmn.obj \
99 $(MSWDIR)\validate.obj \
100 $(MSWDIR)\valtext.obj \
104 $(MSWDIR)\string.obj \
106 $(MSWDIR)\wxexpr.obj \
107 $(MSWDIR)\y_tab.obj \
108 $(MSWDIR)\stream.obj \
109 $(MSWDIR)\fstream.obj \
110 $(MSWDIR)\mstream.obj \
111 $(MSWDIR)\zstream.obj \
112 $(MSWDIR)\datstrm.obj \
113 $(MSWDIR)\extended.obj
115 # $(MSWDIR)\matrix.obj \
119 $(MSWDIR)\bitmap.obj \
120 $(MSWDIR)\bmpbuttn.obj \
121 $(MSWDIR)\brush.obj \
122 $(MSWDIR)\button.obj \
123 $(MSWDIR)\checkbox.obj \
124 $(MSWDIR)\checklst.obj \
125 $(MSWDIR)\choice.obj \
126 $(MSWDIR)\clipbrd.obj \
127 $(MSWDIR)\colordlg.obj \
128 $(MSWDIR)\colour.obj \
129 $(MSWDIR)\combobox.obj \
130 $(MSWDIR)\control.obj \
131 $(MSWDIR)\curico.obj \
132 $(MSWDIR)\cursor.obj \
135 $(MSWDIR)\dcmemory.obj \
136 $(MSWDIR)\dcclient.obj \
137 $(MSWDIR)\dcprint.obj \
138 $(MSWDIR)\dcscreen.obj \
140 $(MSWDIR)\dialog.obj \
142 $(MSWDIR)\dirdlg.obj \
143 $(MSWDIR)\filedlg.obj \
145 $(MSWDIR)\fontdlg.obj \
146 $(MSWDIR)\frame.obj \
147 $(MSWDIR)\gauge95.obj \
148 $(MSWDIR)\gaugemsw.obj \
149 $(MSWDIR)\gdiobj.obj \
150 $(MSWDIR)\helpwin.obj \
152 $(MSWDIR)\imaglist.obj \
153 $(MSWDIR)\joystick.obj \
154 $(MSWDIR)\listbox.obj \
155 $(MSWDIR)\listctrl.obj \
159 $(MSWDIR)\menuitem.obj \
160 $(MSWDIR)\metafile.obj \
161 $(MSWDIR)\minifram.obj \
162 $(MSWDIR)\msgdlg.obj \
163 $(MSWDIR)\nativdlg.obj \
164 $(MSWDIR)\notebook.obj \
165 $(MSWDIR)\ownerdrw.obj \
166 $(MSWDIR)\palette.obj \
168 $(MSWDIR)\penwin.obj \
169 $(MSWDIR)\printdlg.obj \
170 $(MSWDIR)\printwin.obj \
171 $(MSWDIR)\radiobox.obj \
172 $(MSWDIR)\radiobut.obj \
173 $(MSWDIR)\region.obj \
174 $(MSWDIR)\registry.obj \
175 $(MSWDIR)\scrolbar.obj \
176 $(MSWDIR)\settings.obj \
177 $(MSWDIR)\slidrmsw.obj \
178 $(MSWDIR)\slider95.obj \
179 $(MSWDIR)\spinbutt.obj \
180 $(MSWDIR)\statbmp.obj \
181 $(MSWDIR)\statbox.obj \
182 $(MSWDIR)\statbr95.obj \
183 $(MSWDIR)\stattext.obj \
184 $(MSWDIR)\tabctrl.obj \
185 $(MSWDIR)\taskbar.obj \
186 $(MSWDIR)\tbar95.obj \
187 $(MSWDIR)\tbarmsw.obj \
188 $(MSWDIR)\textctrl.obj \
189 $(MSWDIR)\thread.obj \
190 $(MSWDIR)\timer.obj \
191 $(MSWDIR)\treectrl.obj \
192 $(MSWDIR)\utils.obj \
193 $(MSWDIR)\utilsexc.obj \
195 $(MSWDIR)\window.obj \
196 $(MSWDIR)\droptgt.obj \
197 $(MSWDIR)\dropsrc.obj \
198 $(MSWDIR)\dataobj.obj \
199 $(MSWDIR)\oleutils.obj \
202 OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS)
206 wx: $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET)
208 all: all_libs all_execs
210 $(LIBTARGET): $(DUMMY).obj $(OBJECTS) $(BASEOBJECTS)
212 tlib $(LIBTARGET) /P512 @&&!
213 -+$(OBJECTS:.obj =.obj -+) -+$(BASEOBJECTS:.obj =.obj -+) -+$(PERIPH_LIBS:.lib =.lib -+)
216 dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h
217 dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h
219 $(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c
222 #$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@
225 $(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c
226 copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c
228 $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c
229 copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c
231 #$(OBJECTS): $(WXDIR)\include\wx\setup.h
233 $(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF)
235 $(MSWDIR)\bitmap.obj: $(MSWDIR)\bitmap.$(SRCSUFF)
237 $(MSWDIR)\bmpbuttn.obj: $(MSWDIR)\bmpbuttn.$(SRCSUFF)
239 $(MSWDIR)\brush.obj: $(MSWDIR)\brush.$(SRCSUFF)
241 $(MSWDIR)\button.obj: $(MSWDIR)\button.$(SRCSUFF)
243 $(MSWDIR)\choice.obj: $(MSWDIR)\choice.$(SRCSUFF)
245 $(MSWDIR)\checkbox.obj: $(MSWDIR)\checkbox.$(SRCSUFF)
247 $(MSWDIR)\checklst.obj: $(MSWDIR)\checklst.$(SRCSUFF)
249 $(MSWDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.$(SRCSUFF)
251 $(MSWDIR)\colordlg.obj: $(MSWDIR)\colordlg.$(SRCSUFF)
253 $(MSWDIR)\colour.obj: $(MSWDIR)\colour.$(SRCSUFF)
255 $(MSWDIR)\combobox.obj: $(MSWDIR)\combobox.$(SRCSUFF)
257 $(MSWDIR)\control.obj: $(MSWDIR)\control.$(SRCSUFF)
259 $(MSWDIR)\curico.obj: $(MSWDIR)\curico.$(SRCSUFF)
261 $(MSWDIR)\cursor.obj: $(MSWDIR)\cursor.$(SRCSUFF)
263 $(MSWDIR)\data.obj: $(MSWDIR)\data.$(SRCSUFF)
265 $(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF)
267 $(MSWDIR)\dc.obj: $(MSWDIR)\dc.$(SRCSUFF)
269 $(MSWDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.$(SRCSUFF)
271 $(MSWDIR)\dcclient.obj: $(MSWDIR)\dcclient.$(SRCSUFF)
273 $(MSWDIR)\dcprint.obj: $(MSWDIR)\dcprint.$(SRCSUFF)
275 $(MSWDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.$(SRCSUFF)
277 $(MSWDIR)\dialog.obj: $(MSWDIR)\dialog.$(SRCSUFF)
279 $(MSWDIR)\dib.obj: $(MSWDIR)\dib.$(SRCSUFF)
281 $(MSWDIR)\dirdlg.obj: $(MSWDIR)\dirdlg.$(SRCSUFF)
283 $(MSWDIR)\filedlg.obj: $(MSWDIR)\filedlg.$(SRCSUFF)
285 $(MSWDIR)\font.obj: $(MSWDIR)\font.$(SRCSUFF)
287 $(MSWDIR)\fontdlg.obj: $(MSWDIR)\fontdlg.$(SRCSUFF)
289 $(MSWDIR)\frame.obj: $(MSWDIR)\frame.$(SRCSUFF)
291 $(MSWDIR)\gaugemsw.obj: $(MSWDIR)\gaugemsw.$(SRCSUFF)
293 $(MSWDIR)\gauge95.obj: $(MSWDIR)\gauge95.$(SRCSUFF)
295 $(MSWDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.$(SRCSUFF)
297 $(MSWDIR)\icon.obj: $(MSWDIR)\icon.$(SRCSUFF)
299 $(MSWDIR)\imaglist.obj: $(MSWDIR)\imaglist.$(SRCSUFF)
301 $(MSWDIR)\joystick.obj: $(MSWDIR)\joystick.$(SRCSUFF)
303 $(MSWDIR)\listbox.obj: $(MSWDIR)\listbox.$(SRCSUFF)
305 $(MSWDIR)\listctrl.obj: $(MSWDIR)\listctrl.$(SRCSUFF)
307 $(MSWDIR)\main.obj: $(MSWDIR)\main.$(SRCSUFF)
309 $(MSWDIR)\mdi.obj: $(MSWDIR)\mdi.$(SRCSUFF)
311 $(MSWDIR)\menu.obj: $(MSWDIR)\menu.$(SRCSUFF)
313 $(MSWDIR)\menuitem.obj: $(MSWDIR)\menu.$(SRCSUFF)
315 $(MSWDIR)\metafile.obj: $(MSWDIR)\metafile.$(SRCSUFF)
317 $(MSWDIR)\minifram.obj: $(MSWDIR)\minifram.$(SRCSUFF)
319 $(MSWDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.$(SRCSUFF)
321 $(MSWDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.$(SRCSUFF)
323 $(MSWDIR)\notebook.obj: $(MSWDIR)\notebook.$(SRCSUFF)
325 $(MSWDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.$(SRCSUFF)
327 $(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF)
329 $(MSWDIR)\pen.obj: $(MSWDIR)\pen.$(SRCSUFF)
331 $(MSWDIR)\penwin.obj: $(MSWDIR)\penwin.$(SRCSUFF)
333 $(MSWDIR)\printdlg.obj: $(MSWDIR)\printdlg.$(SRCSUFF)
335 $(MSWDIR)\printwin.obj: $(MSWDIR)\printwin.$(SRCSUFF)
337 $(MSWDIR)\radiobox.obj: $(MSWDIR)\radiobox.$(SRCSUFF)
339 $(MSWDIR)\radiobut.obj: $(MSWDIR)\radiobut.$(SRCSUFF)
341 $(MSWDIR)\region.obj: $(MSWDIR)\region.$(SRCSUFF)
343 $(MSWDIR)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF)
345 $(MSWDIR)\scrolbar.obj: $(MSWDIR)\scrolbar.$(SRCSUFF)
347 $(MSWDIR)\settings.obj: $(MSWDIR)\settings.$(SRCSUFF)
349 $(MSWDIR)\slidrmsw.obj: $(MSWDIR)\slidrmsw.$(SRCSUFF)
351 $(MSWDIR)\slider95.obj: $(MSWDIR)\slider95.$(SRCSUFF)
353 $(MSWDIR)\spinbutt.obj: $(MSWDIR)\spinbutt.$(SRCSUFF)
355 $(MSWDIR)\statbmp.obj: $(MSWDIR)\statbmp.$(SRCSUFF)
357 $(MSWDIR)\statbox.obj: $(MSWDIR)\statbox.$(SRCSUFF)
359 $(MSWDIR)\statbr95.obj: $(MSWDIR)\statbr95.$(SRCSUFF)
361 $(MSWDIR)\stattext.obj: $(MSWDIR)\stattext.$(SRCSUFF)
363 $(MSWDIR)\tabctrl.obj: $(MSWDIR)\tabctrl.$(SRCSUFF)
365 $(MSWDIR)\taskbar.obj: $(MSWDIR)\taskbar.$(SRCSUFF)
367 $(MSWDIR)\tbar95.obj: $(MSWDIR)\tbar95.$(SRCSUFF)
369 $(MSWDIR)\tbarmsw.obj: $(MSWDIR)\tbarmsw.$(SRCSUFF)
371 $(MSWDIR)\textctrl.obj: $(MSWDIR)\textctrl.$(SRCSUFF)
373 $(MSWDIR)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF)
375 $(MSWDIR)\timer.obj: $(MSWDIR)\timer.$(SRCSUFF)
377 $(MSWDIR)\treectrl.obj: $(MSWDIR)\treectrl.$(SRCSUFF)
379 $(MSWDIR)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF)
381 $(MSWDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF)
383 $(MSWDIR)\wave.obj: $(MSWDIR)\wave.$(SRCSUFF)
385 $(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF)
387 $(MSWDIR)\droptgt.obj: $(OLEDIR)\droptgt.$(SRCSUFF)
389 $(MSWDIR)\dropsrc.obj: $(OLEDIR)\dropsrc.$(SRCSUFF)
391 $(MSWDIR)\dataobj.obj: $(OLEDIR)\dataobj.$(SRCSUFF)
393 $(MSWDIR)\oleutils.obj: $(OLEDIR)\oleutils.$(SRCSUFF)
395 $(MSWDIR)\uuid.obj: $(OLEDIR)\uuid.$(SRCSUFF)
397 ########################################################
398 # Common objects (always compiled)
400 $(MSWDIR)\config.obj: $(COMMDIR)\config.$(SRCSUFF)
402 $(MSWDIR)\cmndata.obj: $(COMMDIR)\cmndata.$(SRCSUFF)
404 $(MSWDIR)\docview.obj: $(COMMDIR)\docview.$(SRCSUFF)
406 $(MSWDIR)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF)
408 $(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF)
410 $(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF)
412 $(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF)
414 $(MSWDIR)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF)
416 $(MSWDIR)\gdicmn.obj: $(COMMDIR)\gdicmn.$(SRCSUFF)
418 $(MSWDIR)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF)
420 $(MSWDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF)
422 $(MSWDIR)\helpbase.obj: $(COMMDIR)\helpbase.$(SRCSUFF)
424 $(MSWDIR)\layout.obj: $(COMMDIR)\layout.$(SRCSUFF)
426 $(MSWDIR)\log.obj: $(COMMDIR)\log.$(SRCSUFF)
428 $(MSWDIR)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF)
430 $(MSWDIR)\module.obj: $(COMMDIR)\module.$(SRCSUFF)
432 $(MSWDIR)\object.obj: $(COMMDIR)\object.$(SRCSUFF)
434 $(MSWDIR)\odbc.obj: $(COMMDIR)\odbc.$(SRCSUFF)
436 $(MSWDIR)\postscrp.obj: $(COMMDIR)\postscrp.$(SRCSUFF)
438 $(MSWDIR)\prntbase.obj: $(COMMDIR)\prntbase.$(SRCSUFF)
440 $(MSWDIR)\resource.obj: $(COMMDIR)\resource.$(SRCSUFF)
442 $(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF)
444 $(MSWDIR)\tbarsmpl.obj: $(COMMDIR)\tbarsmpl.$(SRCSUFF)
446 $(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF)
448 $(MSWDIR)\timercmn.obj: $(COMMDIR)\timercmn.$(SRCSUFF)
450 $(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF)
452 $(MSWDIR)\validate.obj: $(COMMDIR)\validate.$(SRCSUFF)
454 $(MSWDIR)\valtext.obj: $(COMMDIR)\valtext.$(SRCSUFF)
456 $(MSWDIR)\date.obj: $(COMMDIR)\date.$(SRCSUFF)
458 $(MSWDIR)\wxexpr.obj: $(COMMDIR)\wxexpr.$(SRCSUFF)
460 $(MSWDIR)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF)
462 $(MSWDIR)\list.obj: $(COMMDIR)\list.$(SRCSUFF)
464 $(MSWDIR)\string.obj: $(COMMDIR)\string.$(SRCSUFF)
466 $(MSWDIR)\matrix.obj: $(COMMDIR)\matrix.$(SRCSUFF)
468 $(MSWDIR)\time.obj: $(COMMDIR)\time.$(SRCSUFF)
470 $(MSWDIR)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF)
472 $(MSWDIR)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF)
474 $(MSWDIR)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF)
476 $(MSWDIR)\fstream.obj: $(COMMDIR)\fstream.$(SRCSUFF)
478 $(MSWDIR)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF)
480 $(MSWDIR)\extended.obj: $(COMMDIR)\extended.c
482 ########################################################
483 # Generic objects (not always compiled, depending on
484 # whether platforms have native implementations)
486 $(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF)
488 $(MSWDIR)\colrdlgg.obj: $(GENDIR)\colrdlgg.$(SRCSUFF)
490 $(MSWDIR)\fontdlgg.obj: $(GENDIR)\fontdlgg.$(SRCSUFF)
492 $(MSWDIR)\gridg.obj: $(GENDIR)\gridg.$(SRCSUFF)
494 $(MSWDIR)\helpxlp.obj: $(GENDIR)\helpxlp.$(SRCSUFF)
496 $(MSWDIR)\msgdlgg.obj: $(GENDIR)\msgdlgg.$(SRCSUFF)
498 $(MSWDIR)\panelg.obj: $(GENDIR)\panelg.$(SRCSUFF)
500 $(MSWDIR)\printps.obj: $(GENDIR)\printps.$(SRCSUFF)
502 $(MSWDIR)\prntdlgg.obj: $(GENDIR)\prntdlgg.$(SRCSUFF)
504 $(MSWDIR)\scrolwin.obj: $(GENDIR)\scrolwin.$(SRCSUFF)
506 $(MSWDIR)\splitter.obj: $(GENDIR)\splitter.$(SRCSUFF)
508 $(MSWDIR)\statusbr.obj: $(GENDIR)\statusbr.$(SRCSUFF)
510 $(MSWDIR)\textdlgg.obj: $(GENDIR)\textdlgg.$(SRCSUFF)
512 $(MSWDIR)\tabg.obj: $(GENDIR)\tabg.$(SRCSUFF)
526 make -f makefile.b32 all_execs
531 make -f makefile.b32 ctl3d dib fafa gauge hytext itsy prologio rcparser wx wxgraph\
532 wxstring wxtree mfutils # wxxpm
536 make -f makefile.b32 ctl3d fafa wxstring itsy gauge # wxxpm
540 cd $(WXDIR)\src\msw\ctl3d\borland
541 make -f makefile.b32 -DCFG=$(CFG)
545 cd $(WXDIR)\src\common\wxxpm
546 make -f makefile.b32 -DCFG=$(CFG) -DFINAL=$(FINAL) -DWXWIN=$(WXDIR) -DDEBUG=$(DEBUG)
551 -H=$(WXDIR)\src\msw\wx32.csm
563 -I$(WXINC);$(BCCDIR)\include;-I$(WXDIR)/src/png;-I$(WXDIR)/src/zlib
564 -I$(WXDIR)\include\msw\gnuwin32
575 #-I$(WXDIR)\src\common\wxxpm\libxpm.34b\lib
577 clean: $(PERIPH_CLEAN_TARGET)
583 erase ..\common\y_tab.c
584 erase ..\common\lex_yy.c