#
# $Id$
#
# The Harbour project
# GNU MAKE file for Watcom C/C++ 10.x

include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf

OBJ_EXT = .obj
EXE_EXT = .exe
LIB_PREF =
LIB_EXT = .lib

$(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP = $(subst /,\,$(GRANDP))

CC = wpp386
CC_IN =
CC_OUT = -fo=

#CPPFLAGS = -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT
CPPFLAGS = -w2 -d1 -zq -bt=NT

#architecture flags
CPPFLAGS += -5 -fp5

# optimization flags
# don't enable -ol optimization in OpenWatcom 1.1 - gives buggy code
CPPFLAGS += -onaehtzr -oi+ -ei -zp8 -s -zt0

CPPFLAGS += -i. -i$(TOP)include -i$(TOP)$(ROOT)include -iinclude
ifneq ($(HB_LIB_COMPILE),)
	CPPFLAGS += -i$(HB_INC_COMPILE)
endif

# work arround to DOS command line size limit
export WPP386 := $(strip $(CPPFLAGS))
CPPFLAGS =

# Note: The empty line directly before 'endef' HAVE TO exist!
# It causes that the 'echo' command is separated by LF
define link_file
echo. FILE $(file) >> __link__.tmp

endef

#Note: The empty line directly before 'endef' HAVE TO exist!
define link_lib
echo. LIB $(lib) >> __link__.tmp

endef

define link_exe_file
echo. $(LDFLAGS) NAME $@ > __link__.tmp
echo. LIB kernel32.lib, user32.lib, winspool.lib, oleaut32.lib, uuid.lib, comctl32.lib, mapi32.lib, wsock32.lib >> __link__.tmp
$(foreach file, $(^F), $(link_file))
$(foreach lib, $(LINKLIBS), $(link_lib))
$(foreach lib, $(RDDLIBS), $(link_lib))
$(foreach lib, $(GTLIBS), $(link_lib))
-$(LD) @__link__.tmp
endef

LD = wlink
LDFLAGS = debug all OP osn=NT OP stack=65536 OP CASEEXACT

ifeq ($(HB_LIB_COMPILE),)
   LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(TOP)$(ROOT)contrib/$(lib)/$(HB_ARCH)/$(subst lib,,$(lib))))
   LINKLIBS += $(foreach lib, $(LIBS), $(subst /,\,$(TOP)$(ROOT)source/$(lib)/$(HB_ARCH)/$(lib)))
else
   LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(HB_LIB_COMPILE)/$(lib)))
   LINKLIBS += $(foreach lib, $(LIBS), $(subst /,\,$(HB_LIB_COMPILE)/$(lib)))
endif

# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
   ifeq ($(HB_LIB_COMPILE),)
      RDDLIBS := $(foreach drv, $(HB_DB_DRIVERS), $(TOP)$(ROOT)source/rdd/$(drv)/$(HB_ARCH)/$(drv))
   else
      RDDLIBS := $(foreach drv, $(HB_DB_DRIVERS), $(HB_LIB_COMPILE)/$(drv))
   endif
   RDDLIBS := $(subst /,\,$(RDDLIBS))
endif

ifeq ($(findstring rtl,$(LIBS)),rtl)
   ifeq ($(HB_LIB_COMPILE),)
      GTLIBS := $(foreach gt, $(HB_GT_LIBS), $(TOP)$(ROOT)source/rtl/$(gt)/$(HB_ARCH)/$(gt))
   else
      GTLIBS := $(foreach gt, $(HB_GT_LIBS), $(HB_LIB_COMPILE)/$(gt))
   endif
   GTLIBS := $(subst /,\,$(GTLIBS))
endif

LD_RULE = $(link_exe_file)

#Note: The empty line below HAVE TO exist!
define lib_object
echo. -+$(file) >> __lib__.tmp

endef

define create_library
echo. $@ > __lib__.tmp
$(foreach file, $(^F), $(lib_object))
$(AR) $(ARFLAGS) @__lib__.tmp
endef

AR = wlib
ARFLAGS = -p=64 -c -n $(A_USR)
AR_RULE = $(create_library)

include $(TOP)$(ROOT)config/rules.cf

HB := $(subst /,\,$(HB))
HB_FLAGS := $(subst /,\,$(HB_FLAGS))

# work arround to DOS command line size limit
export HARBOURCMD := $(HB_FLAGS)
HB_FLAGS =
