# [Makefile wk 08.12.95] Wam Makefile
#	(c) Werner Koch (dd9jn) 1992,1995
#--------------------------------------------------
# WAM = Werners Application Model
#
# Namen der Libraries: "libwam1", "wamgupta", "wamos2pm"
#------------------------------------------
# $Id: Makefile,v 1.7 1997/03/24 19:54:05 wk Exp $
#------------------------------------------

# Try to get some standard macros
-include $(WKLIBS)/wklib/config.mak

#ifndef GUPTA_LIB
GUPTA_LIB := c:/usr/sqlbase/capi/sqlos2.lib
#endif
#ifndef ODBC_HDR
ODBC_HDR := c:/usr/wsql/h
ODBC_LIB := c:/usr/wsql/lib/wodbc2.lib
#endif

ifndef PROD
D=1
endif
MULTI_THREADED=1

include $(WKLIBS)/wklib/common.mak
TARGET_PREFIX := ../obj-wam
LDSH_FLAGS = -m
include $(WKLIBS)/wklib/wklib.mak

X = $(exe_dir)/
O = $(obj_dir)/
C = $(target_prefix)/common/

#---- list of source files ------
SRCS := Makefile
ifneq ($(SYSTEM),msdos)
SRCS += dllmain.c	# Pull in the DLL-Initialization functions
endif
SRCS += version.h
SRCS += wammain.h
SRCS += wamgui.h
SRCS += wamdb.h
SRCS += init.c		# Zusammenfassung aller Initialisierungen
SRCS += process.c	# Process relevant functions (OS depending)
SRCS += messager.c	# Dispatcher for messages
SRCS += nil.c		# Nil-Handler
SRCS += object.c	# Class Object
SRCS += symbol.c	# Class Symbol
SRCS += string.c	# Class String
SRCS += message.c	# Class Message
SRCS += integer.c	# Class Integer
SRCS += float.c 	# Class Float
SRCS += date.c		# Class Date
SRCS += time.c		# Class Time
SRCS += timestamp.c	# Class Timestamp
SRCS += idarray.c	# Class IdArray
SRCS += strgarry.c	# Class StringArray
SRCS += wordarray.c	# Class WordArray
SRCS += symbset.c	# Class SymbolSet
SRCS += dctnry.c	# Class Dictionary
SRCS += symbldct.c	# Class SymbolDictionary (specialized dictionary)
SRCS += gui.c		# GUI Handler
SRCS += form.c		# Class Form
SRCS += formitem.c	# Class FormItem
SRCS += fitext.c	# Class FormItemText
SRCS += finumber.c	# Class FormItemNumber
SRCS += fiint.c 	# Class FormItemInteger
SRCS += fidate.c	# Class FormItemDate
SRCS += fikey.c 	# Class FormItemKey
SRCS += fimenu.c	# Class FormItemMenu
SRCS += fimenu2.c	# Class FormItemCheckMenu
SRCS += fitoggle.c	# Class FormItemToggle
SRCS += firadio.c	# Class FormItemRadio
SRCS += finspin.c	# Class FormItemNumericSpin
SRCS += fivalset.c	# Class FormItemValueSet
SRCS += filist.c	# Class FormItemList
SRCS += autoform.c	# Class AutomaticForm
SRCS += view.c		# Class View
SRCS += database.c	# Class Database
SRCS += table.c 	# Class Table
SRCS += tablerow.c	# Class TableRow

PM_SRCS := pmmain.c	   # GUI Handler for OS/2 Presentation Manager
PM_SRCS += pmsup1.c	   # Support for GUI Handler
PM_SRCS += pmsup2.c	   # Help Features of GUI Handler

GUPTA_SRCS := dbgupta.c  # GUPTA SQLBase Handler
ODBC_SRCS  := dbodbc.c	 # ODBC Handler

TSRCS := flogon.c	 # Class FormLogon - Generic Logon Form
TSRCS += vmain.c	 # Example Main View
TSRCS += ftest.c	 # Test Form
TSRCS += vtest.c	 # Test View
TSRCS += fsqlwndw.c	 # SQL-Window
TSRCS += vsqlwndw.c	 # SQL-Window
#----- end of source list -----

OBJS := $(strip $(addprefix $(obj_dir)/, \
			    $(patsubst %.c,%$o	,$(filter %.c,$(SRCS)))))
TOBJS := $(strip $(addprefix $(obj_dir)/, \
			    $(patsubst %.c,%$o	,$(filter %.c,$(TSRCS)))))
GUPTA_OBJS := $(strip $(addprefix $(obj_dir)/, \
			    $(patsubst %.c,%$o	,$(filter %.c,$(GUPTA_SRCS)))))
ODBC_OBJS := $(strip $(addprefix $(obj_dir)/, \
			    $(patsubst %.c,%$o	,$(filter %.c,$(ODBC_SRCS)))))
ifneq ($(SYSTEM),msdos)
PM_OBJS := $(strip $(addprefix $(obj_dir)/, \
			    $(patsubst %.c,%$o	,$(filter %.c,$(PM_SRCS)))))
endif

ifeq ($(COMPANY),wtc)
ADD_CFLAGS = -I$(subst /,\\,$(ODBC_HDR))
else
ADD_CFLAGS = -I$(ODBC_HDR)
endif

ifeq ($(SYSTEM),msdos)	# only static libs for MSDOS and no PM
default :  check-args $Xlibwam1$a $Xwamodbc$a
else
default :  check-args $Xlibwam1$s $Xwamos2pm$s $Xwamodbc$s ###wamgupta$s
endif

world : check-args
	$(MAKE) -C $(WKLIBS)/wklib for-wam
	$(MAKE)

make-dirs:
ifdef host_is_os2
	echo Directories sollten bereits angelegt sein
else
	for f in $(target_prefix) $(target_prefix)/common \
		 $(target_prefix)/$(target) $(obj_dir); do \
	   test -d $$f || mkdir $$f; \
	done
endif

$Xlibwam1$s : $(OBJS) $Oi-init$o libwam1.def
	$(LDSH) $(LDSH_FLAGS) $(LDSH_FLAGS_4DLL) -L$(basename $@)$i \
	    $(LDSH_OBJS_4DLL) $(ADD_LDSH_MACROS) TARGET=$(target) $@ $^ \
	    $(wklib_dir)/$(wklib_4dll) $(LDSH_LIBS_4DLL)

$Xlibwam1$a : $(OBJS) $Oi-init$o
	$(LDSH) $(LDSH_FLAGS) \
	    $(ADD_LDSH_MACROS) TARGET=$(target) $@ $^ \
	    $(wklib_dir)/$(wklib) $(LDSH_LIBS)

$Xlibwam1$i : $Xlibwam1$s

$Xwamos2pm$s : $(PM_OBJS) wamos2pm.def	$Xlibwam1$i
	$(LDSH) $(LDSH_FLAGS) $(LDSH_FLAGS_4DLL) \
	    $(LDSH_OBJS_4DLL) $(ADD_LDSH_MACROS) TARGET=$(target) $@ $^ \
	    $(wklib_dir)/$(wklib_4dll) $(LDSH_LIBS_4DLL)

$Xwamgupta$s : $(GUPTA_OBJS) wamgupta.def $Xlibwam1$i
	$(LDSH) $(LDSH_FLAGS) $(LDSH_FLAGS_4DLL) \
	    $(LDSH_OBJS_4DLL) $(ADD_LDSH_MACROS) TARGET=$(target) $@ $^ \
	    $(wklib_dir)/$(wklib_4dll) $(LDSH_LIBS_4DLL)

$Xwamodbc$s : $(ODBC_OBJS) wamodbc.def $Xlibwam1$i
	$(LDSH) $(LDSH_FLAGS) $(LDSH_FLAGS_4DLL) \
	    $(LDSH_OBJS_4DLL) $(ADD_LDSH_MACROS) TARGET=$(target) $@ $^ \
	    $(wklib_dir)/$(wklib_4dll) $(LDSH_LIBS_4DLL) $(ODBC_LIB)


i-init.c : $(filter %.c,$(SRCS))
	symcllct -m1 -q -oi-init.c $(obj_dir)/*$o


# Bei Watcom muss min. ein Modul jeder DLL mit der Option -bd
# compiled werden, damit die richtige Library benutzt wird.
ifeq ($(COMPANY),wtc)
$(obj_dir)/dllmain$o : dllmain.c
	$(CC) -bd $(ADD_CFLAGS) $(CFLAGS) $<
$(obj_dir)/pmsup1$o : pmsup1.c
	$(CC) -bd $(ADD_CFLAGS) $(CFLAGS) $<
$(obj_dir)/dbgupta$o : dbgupta.c
	$(CC) -bd $(ADD_CFLAGS) $(CFLAGS) $<
$(obj_dir)/dbodbc$o : dbodbc.c
	$(CC) -bd $(ADD_CFLAGS) $(CFLAGS) $<
endif


#######  dependencies  ##########
.PHONY: world

$Odbgupta$o : dbgupta.c  gupta.h

$Odbodbc$o : dbodbc.c wammain.h wamdb.h

$Odatabase$o : wamdb.h

$(OBJS) $(TOBJS) $(GUPTA_OBJS) $(ODBC_OBJS) $(PM_OBJS) : version.h

#---- end of makefile ----#
