-# This file was automatically generated by tmake at 10:56, 2001/11/03
+# This file was automatically generated by tmake
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE DOS.T!
#
GENERICOBJS= $(GENDIR)\busyinfo.obj \
$(GENDIR)\calctrl.obj \
$(GENDIR)\choicdgg.obj \
+ $(GENDIR)\dcbuffer.obj \
$(GENDIR)\dcpsg.obj \
$(GENDIR)\dirctrlg.obj \
$(GENDIR)\dirdlgg.obj \
$(GENDIR)\laywin.obj \
$(GENDIR)\listctrl.obj \
$(GENDIR)\logg.obj \
+ $(GENDIR)\mdig.obj \
$(GENDIR)\notebook.obj \
$(GENDIR)\numdlgg.obj \
$(GENDIR)\panelg.obj \
$(GENDIR)\prntdlgg.obj \
$(GENDIR)\progdlgg.obj \
- $(GENDIR)\prop.obj \
- $(GENDIR)\propform.obj \
- $(GENDIR)\proplist.obj \
$(GENDIR)\sashwin.obj \
$(GENDIR)\scrlwing.obj \
+ $(GENDIR)\selstore.obj \
$(GENDIR)\spinctlg.obj \
$(GENDIR)\splash.obj \
$(GENDIR)\splitter.obj \
$(GENDIR)\tipdlg.obj \
$(GENDIR)\tipwin.obj \
$(GENDIR)\treectlg.obj \
- $(GENDIR)\treelay.obj \
$(GENDIR)\wizard.obj
# we can't have all objects in one list because the library becomes too big
COMMONOBJS1 = \
- $(COMMDIR)\y_tab.obj \
+ $(COMMDIR)\accesscmn.obj \
+ $(COMMDIR)\appbase.obj \
$(COMMDIR)\appcmn.obj \
+ $(COMMDIR)\artprov.obj \
+ $(COMMDIR)\artstd.obj \
+ $(COMMDIR)\bmpbase.obj \
$(COMMDIR)\choiccmn.obj \
$(COMMDIR)\clipcmn.obj \
$(COMMDIR)\clntdata.obj \
$(COMMDIR)\cshelp.obj \
$(COMMDIR)\ctrlcmn.obj \
$(COMMDIR)\ctrlsub.obj \
+ $(COMMDIR)\datacmn.obj \
$(COMMDIR)\datetime.obj \
$(COMMDIR)\datstrm.obj \
$(COMMDIR)\dcbase.obj \
$(COMMDIR)\dobjcmn.obj \
$(COMMDIR)\docmdi.obj \
$(COMMDIR)\docview.obj \
+ $(COMMDIR)\dpycmn.obj \
$(COMMDIR)\dseldlg.obj \
$(COMMDIR)\dynarray.obj \
$(COMMDIR)\dynlib.obj \
+ $(COMMDIR)\dynload.obj \
$(COMMDIR)\effects.obj \
$(COMMDIR)\encconv.obj \
$(COMMDIR)\event.obj \
$(COMMDIR)\filefn.obj \
$(COMMDIR)\filename.obj \
$(COMMDIR)\filesys.obj \
+ $(COMMDIR)\fldlgcmn.obj \
+ $(COMMDIR)\fmapbase.obj \
$(COMMDIR)\fontcmn.obj \
$(COMMDIR)\fontmap.obj \
$(COMMDIR)\framecmn.obj \
$(COMMDIR)\geometry.obj \
$(COMMDIR)\gifdecod.obj \
$(COMMDIR)\hash.obj \
+ $(COMMDIR)\hashmap.obj \
$(COMMDIR)\helpbase.obj \
+ $(COMMDIR)\iconbndl.obj \
$(COMMDIR)\imagall.obj \
$(COMMDIR)\imagbmp.obj \
$(COMMDIR)\image.obj \
+ $(COMMDIR)\imagfill.obj \
$(COMMDIR)\imaggif.obj \
+ $(COMMDIR)\imagiff.obj \
$(COMMDIR)\imagxpm.obj \
$(COMMDIR)\intl.obj \
$(COMMDIR)\ipcbase.obj \
$(COMMDIR)\memory.obj \
$(COMMDIR)\menucmn.obj \
$(COMMDIR)\module.obj \
+ $(COMMDIR)\msgout.obj \
$(COMMDIR)\mstream.obj \
$(COMMDIR)\nbkbase.obj \
- $(COMMDIR)\object.obj \
- $(COMMDIR)\objstrm.obj \
- $(COMMDIR)\odbc.obj
+ $(COMMDIR)\object.obj
COMMONOBJS2 = \
$(COMMDIR)\paper.obj \
$(COMMDIR)\quantize.obj \
$(COMMDIR)\radiocmn.obj \
$(COMMDIR)\regex.obj \
- $(COMMDIR)\resource.obj \
- $(COMMDIR)\serbase.obj \
+ $(COMMDIR)\rgncmn.obj \
+ $(COMMDIR)\settcmn.obj \
$(COMMDIR)\sizer.obj \
$(COMMDIR)\statbar.obj \
+ $(COMMDIR)\stopwatch.obj \
$(COMMDIR)\strconv.obj \
$(COMMDIR)\stream.obj \
$(COMMDIR)\string.obj \
$(COMMDIR)\sysopt.obj \
+ $(COMMDIR)\taskbarcmn.obj \
$(COMMDIR)\tbarbase.obj \
+ $(COMMDIR)\textbuf.obj \
$(COMMDIR)\textcmn.obj \
$(COMMDIR)\textfile.obj \
$(COMMDIR)\timercmn.obj \
$(COMMDIR)\wfstream.obj \
$(COMMDIR)\wincmn.obj \
$(COMMDIR)\wxchar.obj \
- $(COMMDIR)\wxexpr.obj \
$(COMMDIR)\xpmdecod.obj \
$(COMMDIR)\zipstrm.obj \
$(COMMDIR)\zstream.obj
# we can't have all objects in one list because the library becomes too big
MSWOBJS1 = $(MSWDIR)\accel.obj \
$(MSWDIR)\app.obj \
+ $(MSWDIR)\basemsw.obj \
$(MSWDIR)\bitmap.obj \
$(MSWDIR)\bmpbuttn.obj \
$(MSWDIR)\brush.obj \
$(MSWDIR)\colour.obj \
$(MSWDIR)\combobox.obj \
$(MSWDIR)\control.obj \
- $(MSWDIR)\curico.obj \
$(MSWDIR)\cursor.obj \
$(MSWDIR)\data.obj \
$(MSWDIR)\dc.obj \
$(MSWDIR)\dialog.obj \
$(MSWDIR)\dialup.obj \
$(MSWDIR)\dib.obj \
- $(MSWDIR)\dibutils.obj \
$(MSWDIR)\dir.obj \
$(MSWDIR)\dragimag.obj \
$(MSWDIR)\evtloop.obj \
$(MSWDIR)\fontenum.obj \
$(MSWDIR)\fontutil.obj \
$(MSWDIR)\frame.obj \
- $(MSWDIR)\gaugemsw.obj \
$(MSWDIR)\gdiimage.obj \
$(MSWDIR)\gdiobj.obj \
$(MSWDIR)\glcanvas.obj \
$(MSWDIR)\metafile.obj \
$(MSWDIR)\minifram.obj \
$(MSWDIR)\msgdlg.obj \
+ $(MSWDIR)\mslu.obj \
$(MSWDIR)\nativdlg.obj \
$(MSWDIR)\ownerdrw.obj
MSWOBJS2 = $(MSWDIR)\palette.obj \
$(MSWDIR)\pen.obj \
$(MSWDIR)\penwin.obj \
+ $(MSWDIR)\popupwin.obj \
$(MSWDIR)\printdlg.obj \
$(MSWDIR)\printwin.obj \
$(MSWDIR)\radiobox.obj \
$(MSWDIR)\toplevel.obj \
$(MSWDIR)\utils.obj \
$(MSWDIR)\utilsexc.obj \
+ $(MSWDIR)\utilsgui.obj \
+ $(MSWDIR)\uxtheme.obj \
+ $(MSWDIR)\volume.obj \
$(MSWDIR)\wave.obj \
$(MSWDIR)\window.obj
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(MSWDIR)/basemsw.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(MSWDIR)/bitmap.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(MSWDIR)/curico.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
$(MSWDIR)/cursor.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(MSWDIR)/dibutils.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
$(MSWDIR)/dir.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(MSWDIR)/gaugemsw.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
$(MSWDIR)/gdiimage.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(MSWDIR)/mslu.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(MSWDIR)/nativdlg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(MSWDIR)/popupwin.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(MSWDIR)/printdlg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(MSWDIR)/utilsgui.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(MSWDIR)/uxtheme.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(MSWDIR)/volume.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(MSWDIR)/wave.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/accesscmn.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(COMMDIR)/appbase.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/appcmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/artprov.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(COMMDIR)/artstd.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(COMMDIR)/bmpbase.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/choiccmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/datacmn.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/datetime.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/dpycmn.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/dseldlg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/dynload.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/effects.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/fldlgcmn.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
+$(COMMDIR)/fmapbase.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/fontcmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/hashmap.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/iconbndl.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/imagall.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/imagfill.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/imaggif.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/imagiff.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/imagxpm.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/mstream.obj: $*.$(SRCSUFF)
+$(COMMDIR)/msgout.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/nbkbase.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
-$(COMMDIR)/object.obj: $*.$(SRCSUFF)
+$(COMMDIR)/mstream.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/objstrm.obj: $*.$(SRCSUFF)
+$(COMMDIR)/nbkbase.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/odbc.obj: $*.$(SRCSUFF)
+$(COMMDIR)/object.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/resource.obj: $*.$(SRCSUFF)
+$(COMMDIR)/rgncmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/serbase.obj: $*.$(SRCSUFF)
+$(COMMDIR)/settcmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/stopwatch.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/strconv.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/taskbarcmn.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(COMMDIR)/textbuf.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(COMMDIR)/textcmn.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
$(COMMDIR)/xpmdecod.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(GENDIR)/dcbuffer.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(GENDIR)/dcpsg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(GENDIR)/mdig.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(GENDIR)/notebook.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(GENDIR)/prop.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
-$(GENDIR)/propform.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
-$(GENDIR)/proplist.obj: $*.$(SRCSUFF)
+$(GENDIR)/sashwin.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(GENDIR)/sashwin.obj: $*.$(SRCSUFF)
+$(GENDIR)/scrlwing.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(GENDIR)/scrlwing.obj: $*.$(SRCSUFF)
+$(GENDIR)/selstore.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
-$(GENDIR)/treelay.obj: $*.$(SRCSUFF)
- cl @<<
-$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-<<
-
$(GENDIR)/wizard.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
-$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c
- cl @<<
-$(CPPFLAGS2) -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ /I ..\common /c $*.c
-<<
-
-$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c
- copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c
-
-$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c
- copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c
-
$(OBJECTS): $(WXDIR)/include/wx/setup.h
# Peripheral components