#
#  Can be used to build the NetOS graphics library.
#

# The following generally will be overridden by the caller
TARGETDIR=.

all: localall

BASEDIR=../..
SRCDIR=$(BASEDIR)/lib/graphics


-include $(TARGETDIR)/Makefile.mms
-include $(BASEDIR)/Makefile.inc

INCDIRS += -I$(BASEDIR)/conf
INCDIRS += -I$(BASEDIR)/conf/bootparm
INCDIRS += -I$(BASEDIR)/conf/rci
INCDIRS += -I$(BASEDIR)/util
INCDIRS += -I$(BASEDIR)/os/netos/src
INCDIRS += -I$(BASEDIR)/os/netos/src/usb_host_drivers/mouse
INCDIRS += -I$(BASEDIR)/os/netos/src/usb_host_drivers/touch
INCDIRS += -I$(BASEDIR)/os/netos/src/usb_host_drivers/keyboard
INCDIRS += -I$(BASEDIR)/os/netos/h
INCDIRS += -I$(SRCDIR)/jpeg
INCDIRS += -I$(SRCDIR)/png
INCDIRS += -I$(SRCDIR)/SDL_image
INCDIRS += -I$(SRCDIR)/wxWidgets/netos/lib/wx/include/netosuniv-ansi-release-2.8
INCDIRS += -I$(SRCDIR)/wxWidgets/include

LOCAL_LIB = $(notdir $(LIBGRAPHICS))


localall: $(LOCAL_LIB)

CROSS_DEFS += -DPNG_USER_CONFIG
CROSS_DEFS += -D__WXNETOS__
CROSS_DEFS += -D__WXUNIVERSAL__


#
# search path(s) for source file or library
#
# (clear the EOS specific vpath first)
#
vpath

VPATH  = $(SRCDIR)
VPATH += $(SRCDIR)/jpeg
VPATH += $(SRCDIR)/png
VPATH += $(SRCDIR)/SDL_image
VPATH += $(SRCDIR)/wxWidgets/src/common
VPATH += $(SRCDIR)/wxWidgets/src/generic
VPATH += $(SRCDIR)/wxWidgets/src/netos
VPATH += $(SRCDIR)/wxWidgets/src/univ
VPATH += $(SRCDIR)/wxWidgets/src/univ/themes


#
# source files
#
JPEG_C_SRC= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
        jquant2.c jutils.c jmemmgr.c jmemnobs.c

PNG_C_SRC= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
	pngwtran.c pngmem.c pngerror.c pngpread.c pngtest.c

# from wxWidgets/src/common...
WX_BASE_CMN_SRC= \
    appbase.cpp \
    arcall.cpp \
    arcfind.cpp \
    archive.cpp \
    clntdata.cpp \
    cmdline.cpp \
    config.cpp \
    convauto.cpp \
    datetime.cpp \
    datstrm.cpp \
    dircmn.cpp \
    dynarray.cpp \
    dynlib.cpp \
    dynload.cpp \
    encconv.cpp \
    filtall.cpp \
    filtfind.cpp \
    fmapbase.cpp \
    fs_arc.cpp \
    fs_filter.cpp \
    hash.cpp \
    hashmap.cpp \
    init.cpp \
    intl.cpp \
    ipcbase.cpp \
    list.cpp \
    log.cpp \
    longlong.cpp \
    memory.cpp \
    mimecmn.cpp \
    module.cpp \
    mstream.cpp \
    object.cpp \
    platinfo.cpp \
    powercmn.cpp \
    process.cpp \
    regex.cpp \
    stdpbase.cpp \
    sstream.cpp \
    stopwatch.cpp \
    strconv.cpp \
    stream.cpp \
    string.cpp \
    sysopt.cpp \
    tarstrm.cpp \
    tokenzr.cpp \
    txtstrm.cpp \
    uri.cpp \
    variant.cpp \
    wfstream.cpp \
    wxchar.cpp \
    xti.cpp \
    xtistrm.cpp \
    zipstrm.cpp \
    zstream.cpp
# TODO: file support
#    file.cpp \
#    filefn.cpp \
#    filename.cpp \
#    ffile.cpp \
#    fileback.cpp \
#    fileconf.cpp \
#    filesys.cpp \
# TODO: text buffer/file support
#    textbuf.cpp \
#    textfile.cpp \

# from wxWidgets/src/common...
WX_BASE_AND_GUI_CMN_SRC = \
    event.cpp \
    fs_mem.cpp \
    msgout.cpp \
    utilscmn.cpp

# from wxWidgets/src/common (debugrpt.cpp)... 
# from wxWidgets/src/generic (dbgrptg.cpp)...
WX_QA_SRC= \
    debugrpt.cpp \
    dbgrptg.cpp

# from wxWidgets/src/common (accesscmn.cpp - xpmdecod.cpp)...
# from wxWidgets/src/generic (busyinfo.cpp - vscroll.cpp)...
WX_GUI_CMN_SRC= \
    accesscmn.cpp \
    anidecod.cpp \
    appcmn.cpp \
    artprov.cpp \
    artstd.cpp \
    bmpbase.cpp \
    bookctrl.cpp \
    choiccmn.cpp \
    clipcmn.cpp \
    clrpickercmn.cpp \
    colourcmn.cpp \
    combocmn.cpp \
    cmdproc.cpp \
    cmndata.cpp \
    containr.cpp \
    cshelp.cpp \
    ctrlcmn.cpp \
    ctrlsub.cpp \
    datacmn.cpp \
    dcbase.cpp \
    dcbufcmn.cpp \
    dcgraph.cpp \
    dlgcmn.cpp \
    dndcmn.cpp \
    dobjcmn.cpp \
    docmdi.cpp \
    docview.cpp \
    dpycmn.cpp \
    dseldlg.cpp \
    effects.cpp \
    evtloopcmn.cpp \
    fddlgcmn.cpp \
    filepickercmn.cpp \
    fontpickercmn.cpp \
    fldlgcmn.cpp \
    fontcmn.cpp \
    fontenumcmn.cpp \
    fontmap.cpp \
    framecmn.cpp \
    gaugecmn.cpp \
    gbsizer.cpp \
    gdicmn.cpp \
    geometry.cpp \
    gifdecod.cpp \
    graphcmn.cpp \
    helpbase.cpp \
    iconbndl.cpp \
    imagall.cpp \
    imagbmp.cpp \
    image.cpp \
    imagfill.cpp \
    imaggif.cpp \
    imagiff.cpp \
    imagjpeg.cpp \
    imagpcx.cpp \
    imagpng.cpp \
    imagpnm.cpp \
    imagtga.cpp \
    imagtiff.cpp \
    imagxpm.cpp \
    layout.cpp \
    lboxcmn.cpp \
    listctrlcmn.cpp \
    matrix.cpp \
    menucmn.cpp \
    nbkbase.cpp \
    overlaycmn.cpp \
    paper.cpp \
    pickerbase.cpp \
    popupcmn.cpp \
    prntbase.cpp \
    quantize.cpp \
    radiocmn.cpp \
    rendcmn.cpp \
    rgncmn.cpp \
    settcmn.cpp \
    sizer.cpp \
    statbar.cpp \
    stockitem.cpp \
    tbarbase.cpp \
    textcmn.cpp \
    timercmn.cpp \
    toplvcmn.cpp \
    treebase.cpp \
    valgen.cpp \
    validate.cpp \
    valtext.cpp \
    wincmn.cpp \
    xpmdecod.cpp \
    busyinfo.cpp \
    buttonbar.cpp \
    choicdgg.cpp \
    choicbkg.cpp \
    clrpickerg.cpp \
    collpaneg.cpp \
    combog.cpp \
    dcpsg.cpp \
    dirctrlg.cpp \
    dragimgg.cpp \
    filepickerg.cpp \
    fontpickerg.cpp \
    laywin.cpp \
    listbkg.cpp \
    logg.cpp \
    numdlgg.cpp \
    panelg.cpp \
    progdlgg.cpp \
    printps.cpp \
    renderg.cpp \
    sashwin.cpp \
    scrlwing.cpp \
    selstore.cpp \
    spinctlg.cpp \
    splitter.cpp \
    textdlgg.cpp \
    tipwin.cpp \
    toolbkg.cpp \
    treectlg.cpp \
    treebkg.cpp \
    vlbox.cpp \
    vscroll.cpp

# from wxWidgets/src/common (fontmgrcmn.cpp)...
# from wxWidgets/src/generic (caret.cpp - timer.cpp)...
# from wxWidgets/src/netos (app.cpp - window.cpp)...
WX_NETOS_LOWLEVEL_SRC= \
    fontmgrcmn.cpp \
    caret.cpp \
    colour.cpp \
    icon.cpp \
    imaglist.cpp \
    mask.cpp \
    timer.cpp \
    app.cpp \
    base.cpp \
    bitmap.cpp \
    brush.cpp \
    clipbrd.cpp \
    cursor.cpp \
    data.cpp \
    dc.cpp \
    dcclient.cpp \
    dcmemory.cpp \
    dcscreen.cpp \
    dirnetos.cpp \
    evtloop.cpp \
    font.cpp \
    fontenum.cpp \
    fontmgr.cpp \
    fontutil.cpp \
    main.cpp \
    palette.cpp \
    pen.cpp \
    region.cpp \
    settings.cpp \
    sjisconv.cpp \
    thread.cpp \
    toplevel.cpp \
    utils.cpp \
    window.cpp

# from wxWidgets/src/univ/themes...
WX_UNIV_THEMES_SRC= \
    gtk.cpp \
    metal.cpp \
    mono.cpp \
    win32.cpp

# from wxWidgets/src/generic (accel.cpp - tabg.cpp)...
# from wxWidgets/src/univ (bmpbuttn.cpp - winuniv.cpp)...
WX_UNIV_SRC= \
    accel.cpp \
    colrdlgg.cpp \
    dirdlgg.cpp \
    fdrepdlg.cpp \
    filedlgg.cpp \
    fontdlgg.cpp \
    listctrl.cpp \
    mdig.cpp \
    msgdlgg.cpp \
    prntdlgg.cpp \
    tabg.cpp \
    bmpbuttn.cpp \
    button.cpp \
    checkbox.cpp \
    checklst.cpp \
    choice.cpp \
    colschem.cpp \
    combobox.cpp \
    control.cpp \
    ctrlrend.cpp \
    dialog.cpp \
    framuniv.cpp \
    gauge.cpp \
    inpcons.cpp \
    inphand.cpp \
    listbox.cpp \
    menu.cpp \
    notebook.cpp \
    radiobox.cpp \
    radiobut.cpp \
    scrarrow.cpp \
    scrolbar.cpp \
    scrthumb.cpp \
    slider.cpp \
    spinbutt.cpp \
    statbmp.cpp \
    statbox.cpp \
    statline.cpp \
    stattext.cpp \
    statusbr.cpp \
    stdrend.cpp \
    textctrl.cpp \
    tglbtn.cpp \
    theme.cpp \
    toolbar.cpp \
    topluniv.cpp \
    winuniv.cpp

# from wxWidgets/src/common...
WX_C_SRC = extended.c

SDL_C_SRC= IMG.c IMG_gif.c IMG_bmp.c 


C_SRC=  gfxepoc.c \
        gfxcustomize.c \
        gfx.c \
        gfxdevice.c \
        gfxsurface.c \
        gfxfont.c \
        gfximage.c \
        gfxcursor.c \
        defaultfont.c \
        gfxevent.c \
        gfxeventlistenermgr.c \
        gfxoperation.c \
        gfxwindow.c \
	gfxutil.c \
        jpeg.c \
        jpeg_shim.c \
        png_shim.c \
        SDL_shim.c \
        $(JPEG_C_SRC) \
        $(PNG_C_SRC) \
        $(SDL_C_SRC) \
	$(WX_C_SRC)

ifneq "$(SM501_SUPPORT)" "0"
C_SRC += gfxdevice_sm.c \
        gfxsurface_sm.c
endif	

ifneq "$(LCD_SUPPORT)" "0"
C_SRC += gfxdevice_lcd.c
endif	

C_OBJ= $(C_SRC:%.c=%.o)

CC_SRC= gfxwrappers.cc \
	gfxtest.cc \
	gfxtest_graphics.cc \
	gfxtest_wxwidgets.cc
CC_OBJ= $(CC_SRC:%.cc=%.o)

CPP_SRC= \
	$(WX_BASE_CMN_SRC) \
	$(WX_BASE_AND_GUI_CMN_SRC) \
	$(WX_QA_SRC) \
	$(WX_GUI_CMN_SRC) \
	$(WX_NETOS_LOWLEVEL_SRC) \
	$(WX_UNIV_THEMES_SRC) \
	$(WX_UNIV_SRC)
CPP_OBJ= $(CPP_SRC:%.cpp=%.o)

S_SRC=
S_OBJ= $(S_SRC:%.s=%.o)

BIGS_SRC=
BIGS_OBJ= $(BIGS_SRC:%.S=%.o)

ALL_SRC= $(C_SRC) $(CC_SRC) $(CPP_SRC) $(S_SRC) $(BIGS_SRC)
ALL_OBJ= $(C_OBJ) $(CC_OBJ) $(CPP_OBJ) $(S_OBJ) $(BIGS_OBJ)

#$(ALL_OBJ)/%.o: %.c
#	$(CC) -c $(INC) $(CCFLAGS) $< -o $@

$(LOCAL_LIB): $(ALL_OBJ)
	$(AR) -rv $(LOCAL_LIB) $(ALL_OBJ)


# generate dependencies
depend.mk: $(ALL_SRC) Makefile $(BASEDIR)/Makefile.inc
	@for i in $^ ; \
	do \
		case $$i in \
		*.c|*.cc|*.cpp|*.s|*.S) \
			$(CC) -MM -MG $(CFLAGS) $$i ;; \
		esac ; \
	done > depend.mk


# clean up
cleandep:
	rm -f depend.mk

clean: cleandep
	rm -f *.o

clobber: clean
	rm -f $(LOCAL_LIB)

-include depend.mk

.PHONY: all localall cleandep clean clobber
