COPT = -Wall -pthread

CC  = g++

LOPT= -lpthread -lrt

LIBWXA= libwx.a
LIBWXSO= libwx-0.0.8.so

WXOBJS= wxdefs.o wxret.o wxpathname.o wxnum.o wxsyslog.o wxfilestat.o\
        wxdirent.o  wxbytetape.o wxfilehandle.o wxstr.o\
        wxmutex.o wxcond.o wxtime.o wxdate.o wxthread.o wxonce.o wxbyteflow.o\
        wx__handle.o wxiconv.o wxdirfile.o wxchrfile.o wxfifofile.o\
        wxterminal.o wxregfile.o wxsockaddrlocal.o wxsockfile.o\
        wxsockaddrinet.o  wxlnkfile.o wx__dirhandle.o

$(LIBWXA): $(WXOBJS)
	ar scr $(LIBWXA) $(WXOBJS)

$(LIBWXSO): $(WXOBJS)
	$(CC) $(WXOBJS) -shared -o $@

# Basic header files (included in wxdefs.h)
WXDEF= wxreqs.h wxdefs.h wx__base.h    # Basic header files

# wxret.h included files
RETH= $(WXDEF) wxret.h wxr_errmsg.h wxr_ret.h wxr_except.h 

#----------------#
#  Version 0.08  #
#----------------#
wxdefs.o: wxdefs.cpp $(WXDEF)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxdefs.cpp
wxret.o: wxret.cpp $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxret.cpp
wxpathname.o: wxpathname.cpp wxpathname.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxpathname.cpp
wxstr.o: wxstr.cpp wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxstr.cpp
wxmutex.o: wxmutex.cpp wxmutex.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxmutex.cpp
wxtime.o: wxtime.cpp wxtime.h wxmutex.h wxnum.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxtime.cpp
wxdate.o: wxdate.cpp wxdate.h wxtime.h wxnum.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxdate.cpp
wxcond.o: wxcond.cpp wxcond.h wxmutex.h wxtime.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxcond.cpp
wxonce.o: wxonce.cpp wxonce.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxonce.cpp
wxthread.o: wxthread.cpp wxthread.h wxmutex.h wxcond.h wxnum.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxthread.cpp
wx__handle.o: wx__handle.cpp wx__handle.h wxnum.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wx__handle.cpp
wxfilehandle.o: wxfilehandle.cpp wxfilehandle.h wxfilestat.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxfilehandle.cpp
wx__dirhandle.o: wx__dirhandle.cpp wx__dirhandle.h wxmutex.o wxfilestat.o\
                 wxpathname.o wxdirent.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wx__dirhandle.cpp
wxbytetape.o: wxbytetape.cpp wxbytetape.h wxpathname.h wx__handle.h wxfilehandle.h\
               $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxbytetape.cpp
wxbyteflow.o: wxbyteflow.cpp wxbyteflow.h wxfilestat.h wxpathname.h\
              wx__handle.h wxfilehandle.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxbyteflow.cpp
wxnum.o: wxnum.cpp wxnum.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxnum.cpp
wxsyslog.o: wxsyslog.cpp wxsyslog.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxsyslog.cpp
wxfilestat.o: wxfilestat.cpp wxfilestat.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxfilestat.cpp
wxdirent.o: wxdirent.cpp wxdirent.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxdirent.cpp
wxregfile.o: wxregfile.cpp wxregfile.h wxbytetape.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxregfile.cpp
wxchrfile.o: wxchrfile.cpp wxchrfile.h wxbyteflow.o wxpathname.o wxfilehandle.o\
             $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxchrfile.cpp
wxfifofile.o: wxfifofile.cpp wxfifofile.h wxbyteflow.o wxpathname.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxfifofile.cpp
wxlnkfile.o: wxlnkfile.cpp wxlnkfile.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxlnkfile.cpp
wxsockfile.o: wxsockfile.cpp wxsockfile.h wxbyteflow.o wx_sockaddr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxsockfile.cpp
wxterminal.o: wxterminal.cpp wxterminal.h wxchrfile.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxterminal.cpp
wxsockaddrlocal.o: wxsockaddrlocal.cpp wxsockaddrlocal.h wxret.o wxpathname.o\
         wx_sockaddr.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxsockaddrlocal.cpp
wxsockaddrinet.o: wxsockaddrinet.cpp wxsockaddrinet.h wxret.o wxpathname.o\
         wx_sockaddr.h wxstr.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxsockaddrinet.cpp
wxiconv.o: wxiconv.cpp wxiconv.h $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxiconv.cpp
wxdirfile.o: wxdirfile.cpp wxdirfile.h wx__dirhandle.o $(RETH)
	$(CC) -c -o $@ $(CFLAGS) $(COPT) wxdirfile.cpp
#------------------------------------------------------------
chk_errmsg: chk_errmsg.cpp wxret.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_errmsg.cpp wxret.o wxstr.o
chk_ret: chk_ret.cpp wxret.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_ret.cpp wxret.o wxstr.o
chk_except: chk_except.cpp wxret.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_except.cpp wxret.o wxstr.o
chk_str: chk_str.cpp wxret.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_str.cpp wxret.o wxstr.o
chk_num: chk_num.cpp wxret.o wxnum.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_num.cpp wxret.o wxnum.o wxstr.o
chk_mutex: chk_mutex.cpp wxmutex.o wxret.o wxdefs.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_mutex.cpp wxmutex.o wxret.o wxdefs.o\
              wxstr.o -lpthread
chk_time: chk_time.cpp wxtime.o wxret.o wxdefs.o wxmutex.o wxnum.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_time.cpp wxtime.o wxret.o wxdefs.o\
              wxmutex.o wxnum.o wxstr.o -lpthread -lrt
chk_cond: chk_cond.cpp wxcond.o wxmutex.o wxtime.o wxret.o wxdefs.o wxnum.o\
              wxstr.o  $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_cond.cpp wxcond.o wxmutex.o wxret.o\
              wxdefs.o wxtime.o wxnum.o wxstr.o -lpthread -pthread -lrt
chk_once: chk_once.cpp wxonce.o wxret.o wxdefs.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_once.cpp wxonce.o wxret.o wxdefs.o\
              wxstr.o -lpthread
chk_ptr: chk_ptr.cpp wxptr.h wxret.o wxdefs.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_ptr.cpp wxret.o wxdefs.o wxstr.o -lpthread
chk_pathname: chk_pathname.cpp wxpathname.o wxret.o wxdefs.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_pathname.cpp wxpathname.o wxstr.o\
              wxret.o wxdefs.o
chk_date: chk_date.cpp wxdate.o wxtime.o wxret.o wxdefs.o wxmutex.o wxnum.o\
              wxstr.o  $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_date.cpp wxdate.o wxret.o wxdefs.o\
              wxmutex.o wxnum.o wxtime.o wxstr.o -lpthread -lrt
chk_thread1: chk_thread1.cpp wxthread.o wxtime.o wxret.o wxdefs.o wxmutex.o\
              wxnum.o wxcond.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_thread1.cpp wxthread.o wxret.o wxdefs.o\
              wxmutex.o wxnum.o wxtime.o wxcond.o wxstr.o -lpthread -lrt
chk_thread2: chk_thread2.cpp wxthread.o wxtime.o wxret.o wxdefs.o wxmutex.o\
              wxnum.o wxcond.o wxstr.o $(RETH)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_thread2.cpp wxthread.o wxret.o wxdefs.o\
              wxmutex.o wxnum.o wxtime.o wxcond.o wxstr.o -lpthread -lrt
chk_filestat: chk_filestat.cpp wxret.o wxdefs.o wxfilestat.o wxtime.o wxnum.o\
              wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_filestat.cpp wxfilestat.o wxret.o\
              wxdefs.o wxtime.o wxnum.o wxstr.o -lpthread -lrt
chk_dirent: chk_dirent.cpp wxret.o wxdefs.o wxdirent.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_dirent.cpp wxdirent.o wxret.o\
              wxdefs.o wxstr.o

SYSFILE_BASE_OBJ= wxdefs.o wxret.o wxpathname.o wxnum.o wxfilestat.o wxtime.o\
             wxmutex.o wxfilehandle.o wx__handle.o
chk_regfile: chk_regfile.cpp wxbytetape.o wxregfile.o wxstr.o $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_regfile.cpp wxbytetape.o wxregfile.o\
             wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_fifofile: chk_fifofile.cpp wxbyteflow.o wxfifofile.o wxstr.o $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_fifofile.cpp wxbyteflow.o wxfifofile.o\
             wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_sockaddrlocal: chk_sockaddrlocal.cpp wxsockaddrlocal.o wxret.o wxdefs.o\
             wxpathname.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_sockaddrlocal.cpp wxsockaddrlocal.o\
             wxret.o wxdefs.o wxpathname.o wxstr.o
chk_sockaddrinet: chk_sockaddrinet.cpp wxsockaddrinet.o wxret.o wxdefs.o\
             wxpathname.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_sockaddrinet.cpp wxsockaddrinet.o wxstr.o\
             wxret.o wxdefs.o wxpathname.o
chk_sockfile: chk_sockfile.cpp wxbyteflow.o wxsockfile.o wxstr.o\
             wxsockaddrlocal.o wxsockaddrinet.o $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_sockfile.cpp wxbyteflow.o wxsockfile.o\
             wxsockaddrlocal.o wxsockaddrinet.o wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_termios: chk_termios.cpp wxbyteflow.o wxchrfile.o wxterminal.o wxstr.o\
             $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_termios.cpp wxbyteflow.o wxterminal.o\
             wxchrfile.o wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_terminal: chk_terminal.cpp wxbyteflow.o wxchrfile.o wxterminal.o wxstr.o\
             $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_terminal.cpp wxbyteflow.o wxterminal.o\
             wxchrfile.o wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_dirfile: chk_dirfile.cpp wxdirfile.o  wxdirent.o wx__dirhandle.o wxstr.o\
             $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_dirfile.cpp wxdirfile.o wxdirent.o\
             wx__dirhandle.o wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_lnkfile: chk_lnkfile.cpp wxlnkfile.o wxstr.o $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_lnkfile.cpp wxlnkfile.o wxstr.o\
             $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_chrfile: chk_chrfile.cpp wxbyteflow.o wxchrfile.o wxstr.o $(SYSFILE_BASE_OBJ)
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_chrfile.cpp wxbyteflow.o wxchrfile.o\
             wxstr.o $(SYSFILE_BASE_OBJ) -lpthread -lrt
chk_stdin: chk_stdin.cpp $(SYSFILE_BASE_OBJ) wxchrfile.o wxterminal.o wxregfile.o\
         wxbyteflow.o wxbytetape.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_stdin.cpp $(SYSFILE_BASE_OBJ) wxchrfile.o\
              wxterminal.o wxregfile.o wxbyteflow.o wxbytetape.o\
              wxstr.o  -lpthread -lrt
chk_stdout: chk_stdout.cpp $(SYSFILE_BASE_OBJ) wxchrfile.o wxterminal.o\
            wxregfile.o wxbyteflow.o wxbytetape.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_stdout.cpp $(SYSFILE_BASE_OBJ)\
              wxchrfile.o wxterminal.o wxregfile.o wxbyteflow.o wxbytetape.o\
              wxstr.o -lpthread -lrt
chk_stderr: chk_stderr.cpp $(SYSFILE_BASE_OBJ) wxchrfile.o wxterminal.o\
            wxregfile.o wxbyteflow.o wxbytetape.o wxstr.o
	$(CC) -o $@ $(CFLAGS) $(COPT) chk_stderr.cpp $(SYSFILE_BASE_OBJ)\
              wxchrfile.o wxterminal.o wxregfile.o wxbyteflow.o wxbytetape.o\
              wxstr.o -lpthread -lrt
CHK_FILES_EXE=chk_errmsg chk_ret chk_except chk_num chk_mutex chk_time chk_cond\
         chk_ptr chk_once chk_pathname chk_date chk_thread1 chk_thread2 chk_str\
         chk_filestat chk_dirent chk_regfile chk_fifofile chk_sockaddrlocal\
         chk_sockaddrinet chk_sockfile chk_termios chk_terminal chk_dirfile\
         chk_lnkfile chk_chrfile chk_stdin chk_stdout chk_stderr
#------------------------------------------------------------
demo_errmsg: demo_errmsg.cpp wxret.o wxstr.h
	$(CC) -o $@ demo_errmsg.cpp $(COPT) $(CFLAGS) $(LIBWXA) $(LOPT)
demo_time: demo_time.cpp wxdate.o
	$(CC) -o $@ demo_time.cpp $(COPT) $(CFLAGS) $(LIBWXA) $(LOPT)
demo_thread: demo_thread.cpp wxthread.o wxtime.o
	$(CC) -o $@ demo_thread.cpp $(COPT) $(CFLAGS) $(LIBWXA) $(LOPT)
#------------------------------------------------------------
all: $(LIBWXA) demo_errmsg demo_time demo_thread  $(CHK_FILES_EXE)

clean:
	rm -f core t a.out *.o demo_errmsg demo_time demo_thread\
           $(CHK_FILES_EXE) $(LIBWXA)
