##################################################################
#
# Xlib for Presentation Manager
#
##################################################################

CC=gcc
AS=as
MKLIB=ar r
MAKE=make
CP=cp
RM=rm -f
RC=rc

.SUFFIXES: .c .obj

XDEFS=-DXLIB_ILLEGAL_ACCESS -DXKB
CDEFS=-DHAVE_SETSYSERRNO -DPTHREAD_RTL -DOS2I18N -DX_LOCALE
CFLAGS=-Zmt -Zomf -O3 -mpentium -Wall $(CDEFS) $(XDEFS)
DLLFLAGS=-Zdll -Zcrtdll=pthrdrtl -Zbsd-signals $(CFLAGS) -s
EXEFLAGS=-Zexe -Zcrtdll=pthrdrtl -Zbsd-signals $(CFLAGS) -s

# Uncomment the following lines to build a debug version.
# Will require ICSDEBUG or SD386 to debug in OMF mode

CDEFS=-DHAVE_SETSYSERRNO -DPTHREAD_RTL -DDEBUG -DOS2I18N -DX_LOCALE
CFLAGS=-Zmt -Zomf -O -g -Wall $(CDEFS) $(XDEFS)
DLLFLAGS=-Zdll -Zcrtdll=pthrdrtl -Zbsd-signals $(CFLAGS)
EXEFLAGS=-Zexe -Zbsd-signals $(CFLAGS)

##################################################################

HEADER=Xlib.h Xlib_private.h

LIB_RES=X11.res
LIB_DLL=X11.dll
LIB_DEF=X11.def
LIB_OUT=X11.lib
EXELIBS=-L. -lX11 -lbsd
EXESLIB=-L. -lX11_s -lbsd

HK_DLL=X11pmhk.dll
HK_DEF=X11pmhk.def

SLIB_OMF=X11_s.lib

XLIB_SRC=\
	Xlib_OpenDisplay.c Xlib_CreateWindow.c Xlib_CreateGC.c \
	Xlib_pmctls.c Xlib_Protocol.c Xlib_NextEvent.c Xlib_Atom.c \
	Xlib_ResizeWindow.c Xlib_DrawLine.c Xlib_misc.c Xlib_simple.c \
	Xlib_Text.c Xlib_Free.c Xlib_evtomask.c Xlib_Keyboard.c \
	Xlib_TextExt.c Xlib_PropAlloc.c Xlib_DrawPoly.c Xlib_PutImage.c \
	Xlib_CrBFData.c Xlib_CrPFBData.c Xlib_WrBitF.c Xlib_RegstFlt.c \
	Xlib_Region.c Xlib_PolyReg.c Xlib_SetCRects.c Xlib_FilterEv.c \
	Xlib_CrPixmap.c Xlib_InitExt.c Xlib_Context.c Xlib_ErrHndlr.c \
	Xlib_GetGCVals.c Xlib_WMProps.c Xlib_WMGeom.c Xlib_SetTxtProp.c \
	Xlib_SetWMProto.c Xlib_SetHints.c Xlib_SetNrmHint.c Xlib_Cursor.c \
	Xlib_LookupCol.c Xlib_GetColor.c Xlib_Pointer.c Xlib_FontNames.c \
	Xlib_Property.c Xlib_StrToText.c Xlib_ImUtil.c Xlib_Grab.c \
	Xlib_GetImage.c Xlib_Geom.c Xlib_ParseGeom.c Xlib_GetHints.c \
	Xlib_Synchro.c Xlib_TextToStr.c Xlib_FontAlias.c Xlib_SetFont.c \
	Xlib_LoadFont.c Xlib_FSWrap.c Xlib_ReconfWin.c Xlib_QuColors.c \
	Xlib_QuColor.c Xlib_GetFProp.c Xlib_ChangeGC.c Xlib_ChWAttrs.c \
	Xlib_Depths.c Xlib_CopyArea.c Xlib_CopyPlane.c Xlib_CopyGC.c \
	Xlib_KeyBind.c Xlib_ModMap.c Xlib_QuExt.c Xlib_PMWM.c \
	Xlib_Border.c Xlib_BorderWidth.c Xlib_uconv.c Xlib_TrCoords.c \
	Xlib_Colormap.c Xlib_QuTree.c Xlib_VisUtil.c Xlib_GetWAttrs.c \
	Xlib_StBytes.c Xlib_RotProp.c Xlib_RdBitF.c Xlib_Focus.c \
	Xlib_PixFormats.c Xlib_ScrnSav.c Xlib_ListExt.c Xlib_QryBest.c \
	Xlib_ParseCol.c Xlib_StName.c Xlib_GCMisc.c Xlib_pmatms.c \
	Xlib_SetStip.c Xlib_GetWMCMapW.c Xlib_Geometry.c Xlib_mbWMProps.c \
        Xlib_imLcGIc.c Xlib_FetchName.c Xlib_GContextFromGC.c \
	Xlib_GetTextProperty.c Xlib_GetMotionEvents.c Xlib_GetIconName.c \
	Xlib_LockDisplay.c Xlib_RecolorCursor.c Xlib_FreeCursor.c \
	Xlib_FreeFontInfo.c Xlib_FreeFontPath.c Xlib_WarpPointer.c \
	Xlib_UninstallColormap.c Xlib_SetClipMask.c Xlib_SetClOrig.c \
	Xlib_Stubs.c

XRM_SRC=\
	Xrm_Core.c Xrm_Quarks.c Xrm_Defaults.c Xrm_ParseCmd.c

XLC_SRC=\
	Xlc_Init.c Xlc_Wrap.c Xlc_GenConv.c Xlc_DefConv.c Xlc_CT.c \
	Xlc_SetLocale.c Xlc_CharSet.c Xlc_Std.c Xlc_PubWrap.c \
	Xlc_Conv.c Xlc_Public.c Xlc_File.c Xlc_DB.c Xlc_Generic.c \
	Xlc_PrTxt.c Xlc_TxtPr.c Xlc_Util.c Xlc_RM.c Xlc_UTF.c \
	Xom_Default.c Xom_Generic.c Xom_ImText.c Xom_Text.c Xom_Wrap.c \
	Xom_TextEsc.c Xom_TextExt.c Xom_TextPer.c Xom_XChar.c \
	Xoc_Wrap.c Xic_Wrap.c Xmb_Wrap.c Xwc_Wrap.c \
	Xim_Wrap.c Xim_Core.c Xim_Conv.c Xim_ImSw.c Xim_TransR.c Xim_Rm.c \
	Xim_LcIm.c Xim_ThaiIm.c Xim_DefIm.c Xim_LcLkup.c Xim_LcPrs.c \
	Xim_LcIc.c Xim_LcFlt.c

XCMS_SRC=\
	Xcms_ColNm.c Xcms_QRed.c Xcms_QGreen.c Xcms_QBlue.c Xcms_Int.c \
	Xcms_Globals.c Xcms_LRGB.c Xcms_UNDEF.c Xcms_XYZ.c Xcms_uvY.c \
	Xcms_xyY.c Xcms_Lab.c Xcms_Luv.c Xcms_HVC.c Xcms_XRGB.c \
	Xcms_CvCols.c Xcms_Cmap.c Xcms_QuCols.c Xcms_SetGetCols.c \
	Xcms_CCC.c Xcms_SetCCC.c Xcms_Trig.c Xcms_Math.c

XKBD_SRC=\
	XKB.c XKBAlloc.c XKBBell.c XKBCompat.c XKBCtrls.c XKBCvt.c \
	XKBExtDev.c XKBGAlloc.c XKBGeom.c XKBGetByName.c XKBGetMap.c \
	XKBleds.c XKBList.c XKBMAlloc.c XKBMisc.c XKBNames.c XKBRdBuf.c \
	XKBSetGeom.c XKBSetMap.c XKBUse.c XKBBind.c

XLIB_OMF=xlib_s.lib
XLIB_OBJ=\
	Xlib_OpenDisplay.obj Xlib_CreateWindow.obj Xlib_CreateGC.obj \
	Xlib_pmctls.obj Xlib_Protocol.obj Xlib_NextEvent.obj Xlib_Atom.obj \
	Xlib_ResizeWindow.obj Xlib_DrawLine.obj Xlib_misc.obj Xlib_simple.obj \
	Xlib_Text.obj Xlib_Free.obj Xlib_evtomask.obj Xlib_Keyboard.obj \
	Xlib_TextExt.obj Xlib_PropAlloc.obj Xlib_DrawPoly.obj Xlib_PutImage.obj \
	Xlib_CrBFData.obj Xlib_CrPFBData.obj Xlib_WrBitF.obj Xlib_RegstFlt.obj \
	Xlib_Region.obj Xlib_PolyReg.obj Xlib_SetCRects.obj Xlib_FilterEv.obj \
	Xlib_CrPixmap.obj Xlib_InitExt.obj Xlib_Context.obj Xlib_ErrHndlr.obj \
	Xlib_GetGCVals.obj Xlib_WMProps.obj Xlib_WMGeom.obj Xlib_SetTxtProp.obj \
	Xlib_SetWMProto.obj Xlib_SetHints.obj Xlib_SetNrmHint.obj Xlib_Cursor.obj \
	Xlib_LookupCol.obj Xlib_GetColor.obj Xlib_Pointer.obj Xlib_FontNames.obj \
	Xlib_Property.obj Xlib_StrToText.obj Xlib_ImUtil.obj Xlib_Grab.obj \
	Xlib_GetImage.obj Xlib_Geom.obj Xlib_ParseGeom.obj Xlib_GetHints.obj \
	Xlib_Synchro.obj Xlib_TextToStr.obj Xlib_FontAlias.obj Xlib_SetFont.obj \
	Xlib_LoadFont.obj Xlib_FSWrap.obj Xlib_ReconfWin.obj Xlib_QuColors.obj \
	Xlib_QuColor.obj Xlib_GetFProp.obj Xlib_ChangeGC.obj Xlib_ChWAttrs.obj \
	Xlib_Depths.obj Xlib_CopyArea.obj Xlib_CopyPlane.obj Xlib_CopyGC.obj \
	Xlib_KeyBind.obj Xlib_ModMap.obj Xlib_QuExt.obj Xlib_PMWM.obj \
	Xlib_Border.obj Xlib_BorderWidth.obj Xlib_uconv.obj Xlib_TrCoords.obj \
	Xlib_Colormap.obj Xlib_QuTree.obj Xlib_VisUtil.obj Xlib_GetWAttrs.obj \
	Xlib_StBytes.obj Xlib_RotProp.obj Xlib_RdBitF.obj Xlib_Focus.obj \
	Xlib_PixFormats.obj Xlib_ScrnSav.obj Xlib_ListExt.obj Xlib_QryBest.obj \
	Xlib_ParseCol.obj Xlib_StName.obj Xlib_GCMisc.obj Xlib_pmatms.obj \
	Xlib_SetStip.obj Xlib_GetWMCMapW.obj Xlib_Geometry.obj Xlib_mbWMProps.obj \
        Xlib_imLcGIc.obj Xlib_FetchName.obj Xlib_GContextFromGC.obj \
	Xlib_GetTextProperty.obj Xlib_GetMotionEvents.obj Xlib_GetIconName.obj \
	Xlib_LockDisplay.obj Xlib_RecolorCursor.obj Xlib_FreeCursor.obj \
	Xlib_FreeFontInfo.obj Xlib_FreeFontPath.obj Xlib_WarpPointer.obj \
	Xlib_UninstallColormap.obj Xlib_SetClipMask.obj Xlib_SetClOrig.obj \
	Xlib_Stubs.obj

XRM_OMF=xrm_s.lib
XRM_OBJ=\
	Xrm_Core.obj Xrm_Quarks.obj Xrm_Defaults.obj Xrm_ParseCmd.obj

XLC_OMF=xlc_s.lib
XLC_OBJ=\
	Xlc_Init.obj Xlc_Wrap.obj Xlc_GenConv.obj Xlc_DefConv.obj Xlc_CT.obj \
	Xlc_SetLocale.obj Xlc_CharSet.obj Xlc_Std.obj Xlc_PubWrap.obj \
	Xlc_Conv.obj Xlc_Public.obj Xlc_File.obj Xlc_DB.obj Xlc_Generic.obj \
	Xlc_PrTxt.obj Xlc_TxtPr.obj Xlc_Util.obj Xlc_RM.obj Xlc_UTF.obj \
	Xom_Default.obj Xom_Generic.obj Xom_ImText.obj Xom_Text.obj Xom_Wrap.obj \
	Xom_TextEsc.obj Xom_TextExt.obj Xom_TextPer.obj Xom_XChar.obj \
	Xoc_Wrap.obj Xic_Wrap.obj Xmb_Wrap.obj Xwc_Wrap.obj \
	Xim_Wrap.obj Xim_Core.obj Xim_Conv.obj Xim_ImSw.obj Xim_TransR.obj Xim_Rm.obj \
	Xim_LcIm.obj Xim_ThaiIm.obj Xim_DefIm.obj Xim_LcLkup.obj Xim_LcPrs.obj \
	Xim_LcIc.obj Xim_LcFlt.obj

XCMS_OMF=xcms_s.lib
XCMS_OBJ=\
	Xcms_ColNm.obj Xcms_QRed.obj Xcms_QGreen.obj Xcms_QBlue.obj Xcms_Int.obj \
	Xcms_Globals.obj Xcms_LRGB.obj Xcms_UNDEF.obj Xcms_XYZ.obj Xcms_uvY.obj \
	Xcms_xyY.obj Xcms_Lab.obj Xcms_Luv.obj Xcms_HVC.obj Xcms_XRGB.obj \
	Xcms_CvCols.obj Xcms_Cmap.obj Xcms_QuCols.obj Xcms_SetGetCols.obj \
	Xcms_CCC.obj Xcms_SetCCC.obj Xcms_Trig.obj Xcms_Math.obj

XKB_OMF=xkb_s.lib
XKB_OBJ=\
	XKB.obj XKBAlloc.obj XKBBell.obj XKBCompat.obj XKBCtrls.obj XKBCvt.obj \
	XKBExtDev.obj XKBGAlloc.obj XKBGeom.obj XKBGetByName.obj XKBGetMap.obj \
	XKBleds.obj XKBList.obj XKBMAlloc.obj XKBMisc.obj XKBNames.obj XKBRdBuf.obj \
	XKBSetGeom.obj XKBSetMap.obj XKBUse.obj XKBBind.obj

LIB_OMF=$(XLIB_OMF) $(XRM_OMF) $(XLC_OMF) $(XCMS_OMF) $(XKB_OMF)
LIB_OBJ=$(XLIB_OBJ) $(XRM_OBJ) $(XLC_OBJ) $(XCMS_OBJ) $(XKB_OBJ) \
	Xlib_private.obj

##################################################################

CRTL_LIB=\
	crtl/bsd.lib crtl/c_alias.lib crtl/c_static.lib crtl/emx2.lib \
	crtl/os2.lib pthrdrtl.lib crtl/gcc.lib crtl/c.lib

CLEAN_FILES=$(LIB_DLL) $(HK_DLL) $(LIB_OBJ) $(LIB_OUT) $(SLIB_OUT)\
	$(SLIB_OMF) $(CRTL_LIB) $(LIB_RES)

##################################################################

all: banner headers lib res dll example

banner:

headers: $(HEADER)

lib:	$(LIB_OUT) $(SLIB_OUT)

dll:	$(LIB_DLL) $(HK_DLL)

res:	$(LIB_RES)

example: test

clean:
	$(RM) test test.exe test_s test_s.exe $(CLEAN_FILES)

$(LIB_RES): X11.rc
	rc -r -p -x X11.rc $(LIB_RES)

$(LIB_DLL): $(LIB_DEF) $(LIB_OBJ) $(CRTL_LIB)
	$(RM) *.lib $(LIB_DLL) unconv.lib
	emximp -o uconv.lib uconv.def
	$(CC) -Zomf $(DLLFLAGS) -Lcrtl -o $(LIB_DLL) $(LIB_OBJ) -lbsd -luconv $(LIB_DEF)
	emximp -o $(LIB_OUT) $(LIB_DEF)
	$(RC) $(LIB_RES) $(LIB_DLL) -x2

$(HK_DLL): $(HK_DEF) $(CRTL_LIB) X11pmhk.c X11pmhk.h
	$(RM) $(HK_DLL)
	$(CC) -Zdll -Zno-rte -Zomf -DNO_RTE -Lcrtl -o $(HK_DLL) X11pmhk.c $(HK_DEF)

$(LIB_OUT): $(LIB_DEF)
	emximp -o $(LIB_OUT) $(LIB_DEF)

# test program

test: test.c $(LIB_OUT)
	$(CC) $(EXEFLAGS) -o test test.c $(EXELIBS)

# DEPENDANCY INFOMATION

$(LIB_OBJ): $(HEADER)

##################################################################

.c.obj:
	$(CC) -c $(CFLAGS) $<

.s.obj:
	$(CC) -c $(CFLAGS) $<

crtl/bsd.lib: $(EMX_LIBDIR)/bsd.a
	emxomf -o $@ $<
crtl/c_alias.lib: $(EMX_LIBDIR)/c_alias.a
	emxomf -o $@ $<
crtl/c_static.lib: $(EMX_LIBDIR)/c_static.a
	emxomf -o $@ $<
crtl/emx2.lib: $(EMX_LIBDIR)/emx2.a
	emxomf -o $@ $<
crtl/os2.lib: $(EMX_LIBDIR)/os2.a
	emxomf -o $@ $<
pthrdrtl.lib: pthrdrtl.a
	emxomf -o $@ $<
crtl/gcc.lib: $(EMX_LIBDIR)/gcc.a
	emxomf -o $@ $<
crtl/c.lib: $(EMX_LIBDIR)/st/c.a
	emxomf -o $@ $<

# END OF MAKEFILE