dos

  Previous topic Next topic JavaScript is required for the print function Mail us feedback on this topic! Mail us feedback on this topic!  
c:\harbour\config\dos
c:\harbour\config\dos\bcc16.cf
# 
# $Id: bcc16.cf 8262 2008-01-31 17:44:30Z rglab $
#
# The Harbour Project
# GNU MAKE file for Borland C/C++ 3.x, 4.x, 5.0x

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))
_HB_INC_COMPILE = $(subst /,\\,$(HB_INC_COMPILE))
_HL = $(notdir $(HB_LIB_COMPILE))
ifeq ($(_HL),)
#there is an ending slash
_HB_LIB_COMPILE = $(subst /,\\,$(HB_LIB_COMPILE))
else
_HB_LIB_COMPILE = $(subst /,\\,$(HB_LIB_COMPILE)/)
endif

CC = bcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -I$($(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP) -I$(_HB_INC_COMPILE)
CFLAGS = -i48 -O2 -mh -d -DHB_LONG_LONG_OFF

# BCC (at least version 3.1) requires that the output file be listed ahead of the input file
CC_RULE = $(CC) $(CPPFLAGS) $(CFLAGS) $(C_USR) $(CC_OUT)$(?F:.c=$(OBJ_EXT)) $(CC_IN) $?


#Note: The empty line below HAVE TO exist!
define link_file
echo. $(file) >> __link__.tmp

endef


define link_exe_file
echo. $(LDFLAGS) -e$@ > __link__.tmp
$(foreach file, $(^F), $(link_file))
$(foreach file, $(LINKLIBS), $(link_file))
-$(LD) @__link__.tmp
endef

LD = bcc
LDFLAGS = -i48 -O2 -mh $(L_USR)
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS += $(foreach lib, $(CONTRIBS), $(LIB_DIR)/$(lib)$(LIB_EXT))
LINKLIBS += $(foreach lib, $(LIBS), $(LIB_DIR)/$(lib)$(LIB_EXT))
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach lib, $(HB_DB_DRIVERS), $(LIB_DIR)$(lib)$(LIB_EXT))
endif
else
LINKLIBS += $(foreach lib, $(CONTRIBS), $(subst lib,,$(lib))$(LIB_EXT))
LINKLIBS += $(foreach lib, $(LIBS), $(lib)$(LIB_EXT))
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach lib, $(HB_DB_DRIVERS), $(lib)$(LIB_EXT))
endif
endif
LD_RULE = $(link_exe_file)

# Add the specified GT driver library
ifeq ($(findstring rtl,$(LIBS)),rtl)
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), $(LIB_DIR)/$(gt)$(LIB_EXT))
else
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), $(gt)$(LIB_EXT))
endif
endif

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

endef

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

AR = tlib
ARFLAGS = /C $(A_USR)
AR_RULE = $(create_library)

include $(TOP)$(ROOT)config/rules.cf
c:\harbour\config\dos\dir.cf
#
# $Id: dir.cf 6424 2004-10-11 20:44:30Z druzus $
#

ifeq ($(PM),) # Only traverse directories if not compiling a specific module

ifeq ($(DIRS),) # Empty directory list

DIR_RULE = @echo Done

else

ifeq ($(SHLVL),) # COMMAND.COM

# We have to use script to overcome the DOS limit of max 128 characters
# NOTE: The empty line directly before 'endef' HAVE TO exist!
# It causes that every commands will be separated by LF
define dir_mk
$(DIR_MAKE) -C $(file) $@

endef

DIR_LIST := $(subst /,\,$(DIRS))
DIR_MAKE := $(subst /,\,$(MK))
DIR_RULE = $(foreach file, $(DIR_LIST), $(dir_mk))

else  # bash
DIR_LIST = $(subst \,/,$(DIRS))
DIR_RULE =\
	for d in $(DIR_LIST); do \
	  if [ -d $$d ]; then \
	    $(MAKE) -C $$d $@; \
	  fi \
	done

endif # ! COMMAND.COM

endif # ! Empty directory list

endif # ! compiling a specific program module
c:\harbour\config\dos\djgpp.cf
#
# $Id: djgpp.cf 9516 2008-09-29 14:02:59Z vszakats $
#

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

OBJ_EXT = .o
EXE_EXT = .exe
LIB_PREF = lib
LIB_EXT = .a

CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -I. -I$(HB_INC_COMPILE)
CFLAGS = -Wall -W -O3

LD = gcc
LD_OUT = -o
LDLIBS = -lm

# Add all libraries specified in CONTRIBS and LIBS.
ifeq ($(HB_LIB_COMPILE),)
LINKPATHS += -L$(LIB_DIR)
else
LINKPATHS += -L$(HB_LIB_COMPILE)
endif
LINKLIBS += $(foreach lib, $(CONTRIBS), -l$(subst lib,,$(lib)))
LINKLIBS += $(foreach lib, $(LIBS), -l$(lib))

# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv))
endif

# Add the specified GT driver library and other RTLs
ifeq ($(findstring rtl,$(LIBS)),rtl)
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt))
endif

# NOTE: The empty line directly before 'endef' HAVE TO exist!
# It causes that every echo command will be separated by LF
define lib_object
echo. ADDMOD $(file) >> __lib__.tmp

endef

# We have to use script to overcome the DOS limit of max 128 characters
# in commmand line
define create_library
echo. CREATE $(LIB_DIR)/$@ > __lib__.tmp
$(foreach file, $(^F), $(lib_object))
echo. SAVE >> __lib__.tmp
echo. END >> __lib__.tmp
$(AR) $(ARFLAGS) -M < __lib__.tmp
endef

# NOTE: The empty line below HAVE TO exist!
define link_file
echo. $(file) >> __link__.tmp

endef

define link_exe_file
echo. $(LDFLAGS) $(L_USR) $(LD_OUT)$@ > __link__.tmp
$(foreach file, $(^F), $(link_file))
$(foreach file, $(LINKPATHS), $(link_file))
echo. -Wl,--start-group >> __link__.tmp
$(foreach file, $(LINKLIBS), $(link_file))
echo. -Wl,--end-group >> __link__.tmp
echo. $(LDLIBS) >> __link__.tmp
-$(LD) @__link__.tmp
endef

AR = ar
ARFLAGS = $(A_USR)
AR_RULE = $(create_library)

LD_RULE = $(link_exe_file)

include $(TOP)$(ROOT)config/rules.cf
c:\harbour\config\dos\global.cf
#
# $Id: global.cf 9484 2008-09-23 22:24:26Z vszakats $
#

ifndef MK

all : first

HB_GT_LIST=\
	gtcgi \
	gtpca \
	gtstd \
	gtdos \

#	gtcrs \
#	gtsln \

# verify if GT drivers exist
#HB_GT_LIBS := $(foreach gt, $(HB_GT_LIST), $(if $(wildcard $(TOP)$(ROOT)source/rtl/$(gt)),$(gt),))
HB_GT_LIBS := $(HB_GT_LIST)

ifeq ($(SHLVL),) # COMMAND.COM

# There is a conflict with the use of '\' and '/' characters
# The MAKE requires '/' in filenames (ARCH_DIR) however some compilers
# and some DOS commands require '\' (ARCH_DOS)
ARCH_DIR = $(subst \,/,$(HB_ARCH))
ARCH_DOS = $(subst /,\,$(HB_ARCH))
LIB_DIR_DOS = $(subst /,\,$(LIB_DIR))
LIB_PATH_DOS = $(subst /,\,$(LIB_PATH))
LIB_ARCH_DOS = $(subst /,\,$(LIB_ARCH))
DIRSEP = $(subst /,\,\)

MK := $(subst \,/,$(subst \~,~,$(MAKE)))

ifeq ($(COMSPEC),) #location of command.com
   COMSPEC := command.com
else
   ifeq ($(HB_COMPILER),bcc16)
      #Use standard dos path, which is already set up.
   else
      ifeq ($(HB_COMPILER),rsx32)
         #Use standard dos path, which is already set up.
      else
         ifneq ($(findstring watcom,$(HB_COMPILER)),)
            #Use standard dos path, which is already set up.
         else
            ifeq ($(HB_COMPILER),djgpp)
               #Use standard dos path, which is already set up.
            else
               ifeq ($(HB_COMPILER),emx)
                  #Use standard dos path, which is already set up.
               else
                  COMSPEC := $(subst \,/,$(COMSPEC))
               endif
            endif
         endif
      endif
   endif
endif

RM = del
RD = rmdir
CP = $(COMSPEC) /Ccopy
MV = move
MD = md

#this will be used only under DJGPP
RANLIB = ranlib

dirbase::
	-@$(COMSPEC) /Cfor %d in ($(HB_ARCHITECTURE) $(ARCH_DOS)) do if not exist %d\nul $(MD) %d
	$(if $(LIB_PATH_DOS),-@$(COMSPEC) /Cfor %d in ($(LIB_PATH_DOS) $(LIB_DIR_DOS)) do if not exist %d\nul $(MD) %d,)

clean::
	-@$(COMSPEC) /Cfor %f in ($(ARCH_DOS)\*.* *.bak *.obj *.o *.tds) do $(RM) %f
	-@$(COMSPEC) /Cfor %d in ($(ARCH_DOS) $(HB_ARCHITECTURE)) do if exist %d\nul $(RD) %d
	$(if $(LIB_ARCH_DOS),-@$(COMSPEC) /Cif exist $(LIB_ARCH_DOS) $(RM) $(LIB_ARCH_DOS),)

else  # bash

ARCH_DIR = $(HB_ARCH)
MK = $(MAKE)

RM = rm -f
RD = rm -f -r
CP = cp -f
MV = mv -f
MD = mkdir
MDP = mkdir -p

#this will be used only under MINGW
RANLIB = ranlib

dirbase::
	@[ -d $(ARCH_DIR) ] || $(MDP) $(ARCH_DIR)
	@[ -z $(LIB_DIR) ] || [ -d $(LIB_DIR) ] || $(MDP) $(LIB_DIR)

clean::
	-$(RD) $(ARCH_DIR) $(LIB_ARCH)

endif
endif
c:\harbour\config\dos\install.cf
#
# $Id: install.cf 8279 2008-02-04 08:32:17Z druzus $
#

ifeq ($(INSTALL_OBJS),) # Empty install list

INSTALL_RULE = @echo Done

else

ifeq ($(SHLVL),) # COMMAND.COM

# We have to use script to overcome the DOS limit of max 128 characters
# NOTE: The empty line directly before 'endef' HAVE TO exist!
# It causes that every commands will be separated by LF
define inst_file
$(CP) $(file) $(subst /,\,$(INSTALL_DIR))

endef

INSTALL_LIST = $(subst /,\,$(INSTALL_OBJS))
INSTALL_RULE = $(foreach file, $(INSTALL_LIST), $(inst_file))

else  # bash

INSTALL_DIRSH = $(subst \,/,$(INSTALL_DIR))
INSTALL_OBJSH = $(subst \,/,$(INSTALL_OBJS))
INSTALL_RULE =\
	@if [ ! -d $(INSTALL_DIRSH) ]; \
	then \
	  echo "! Can't install, path not found: $(INSTALL_DIRSH)" 1>&2; \
	else \
	  for i in $(INSTALL_OBJSH); \
	  do \
	    if [ -r $$i ]; \
	    then \
	      echo "! Installing $$i on $(INSTALL_DIRSH)"; \
	      $(CP) $$i $(INSTALL_DIRSH); \
	    else \
	      echo "! Can't install $$i, not found" 1>&2; \
	    fi \
	  done \
	fi

endif

endif
c:\harbour\config\dos\owatcom.cf
#
# $Id: owatcom.cf 9173 2008-08-13 13:30:56Z druzus $
#
# The Harbour project
# GNU MAKE file for OpenWatcom

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

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

ifeq ($(SHLVL),)
   ECHO=echo.
   DSEP=$(subst /,\,\)
else
   ECHO=echo
   DSEP=$(subst /,\,\\)
endif

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

CC = wpp386
CC_IN =
CC_OUT = -fo=

#CPPFLAGS = -j -w3 -d1 -5s -5r -fp5 -oehtz -s -zq -zt0 -bt=DOS
CPPFLAGS = -w2 -d1 -zq -bt=DOS

#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 $(subst /,$(DSEP),$(subst \,/,$(file))) >> __link__.tmp

endef

#Note: The empty line directly before 'endef' HAVE TO exist!
define link_lib
$(ECHO) LIB $(subst /,$(DSEP),$(subst \,/,$(lib))) >> __link__.tmp

endef

define link_exe_file
$(ECHO) $(subst /,$(DSEP),$(subst \,/,$(LDFLAGS))) NAME $@ > __link__.tmp
$(foreach file, $(^F), $(link_file))
$(foreach lib, $(HB_USER_LIBS), $(link_lib))
$(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=DOS OP stack=65536 OP CASEEXACT OP stub=cwstub.exe

ifeq ($(HB_LIB_COMPILE),)
   LINKLIBS = $(foreach lib, $(CONTRIBS), $(LIB_DIR)/$(lib))
   LINKLIBS += $(foreach lib, $(LIBS), $(LIB_DIR)/$(lib))
else
   LINKLIBS = $(foreach lib, $(CONTRIBS), $(HB_LIB_COMPILE)/$(lib))
   LINKLIBS += $(foreach lib, $(LIBS), $(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), $(LIB_DIR)/$(drv))
   else
      RDDLIBS = $(foreach drv, $(HB_DB_DRIVERS), $(HB_LIB_COMPILE)/$(drv))
   endif
endif

ifeq ($(findstring rtl,$(LIBS)),rtl)
   ifeq ($(HB_LIB_COMPILE),)
      GTLIBS = $(foreach gt, $(HB_GT_LIBS), $(LIB_DIR)/$(gt))
   else
      GTLIBS = $(foreach gt, $(HB_GT_LIBS), $(HB_LIB_COMPILE)/$(gt))
   endif
endif

LD_RULE = $(link_exe_file)

#Note: The empty line below HAVE TO exist!
define lib_object
$(ECHO) -+$(subst /,$(DSEP),$(subst \,/,$(file))) >> __lib__.tmp

endef

define create_library
$(ECHO) $(subst /,$(DSEP),$(subst \,/,$(LIB_DIR)))$(DSEP)$@ > __lib__.tmp
$(foreach file, $(^F), $(lib_object))
$(AR) $(ARFLAGS) @__lib__.tmp
endef


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

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

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

# work arround to DOS command line size limit
export HARBOURCMD := $(HB_FLAGS)
HB_FLAGS =
c:\harbour\config\dos\rsx32.cf
#
# $Id: rsx32.cf 9516 2008-09-29 14:02:59Z vszakats $
#
# GNU Make file for RSXNT for DOS target

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

OBJ_EXT = .o
EXE_EXT = .exe
LIB_PREF =
LIB_EXT = .a

CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -I. -I$(HB_INC_COMPILE) -Zrsx32
CFLAGS = -Wall -W -O3

LD = gcc
LDFLAGS = -Zrsx32
# Note the space after -o
LD_OUT = -o 

# Add all libraries specified in CONTRIBS and LIBS.
ifeq ($(HB_LIB_COMPILE),)
LINKPATHS += -L$(LIB_DIR)
else
LINKPATHS += -L$(HB_LIB_COMPILE)
endif

# The -( option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-(
LINKLIBS += $(foreach lib, $(CONTRIBS), -l$(subst lib,,$(lib)))
LINKLIBS += $(foreach lib, $(LIBS), -l$(lib))

# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv))
endif

# Add the specified GT driver library and other RTLs
ifeq ($(findstring rtl,$(LIBS)),rtl)
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt)) -lhbrtl
endif

# The -) option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-)

LDFLAGS += $(LINKPATHS)

AR = ar
ARFLAGS = $(A_USR)
AR_RULE = $(AR) $(ARFLAGS) r $(LIB_DIR)/$@ $(^F) || ( $(RM) $(LIB_DIR)/$@ && false )

include $(TOP)$(ROOT)config/rules.cf
c:\harbour\config\dos\watcom.cf
#
# $Id: watcom.cf 8262 2008-01-31 17:44:30Z rglab $
#
# 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 = -d2 -w2 -5r -zq -zt0 -bt=DOS4G
CFLAGS := -i$(subst \,\\,$(WATCOM))\\h -i$(subst /,\\,$(HB_INC_COMPILE)) -i.

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

endef

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

endef

define link_exe_file
$(COMSPEC) /E:2048 /Cecho $(LDFLAGS) NAME $@ > __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=DOS4G OP stack=65536 OP CASEEXACT
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(LIB_DIR)/$(lib)))
LINKLIBS += $(foreach lib, $(LIBS), $(subst /,\,$(LIB_DIR)/$(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)
RDDLIBS := $(foreach drv, $(HB_DB_DRIVERS), $(subst /,\,$(LIB_DIR)/$(drv)))
endif

GTLIBS := $(foreach gt, $(HB_GT_LIBS), $(subst /,\,$(LIB_DIR)/$(gt)))

LD_RULE = $(link_exe_file)

#Note: The empty line below HAVE TO exist!
define lib_object
$(COMSPEC) /E:2048 /Cecho -+$(file) >> __lib__.tmp

endef

LIB_DDIR := $(subst /,\,$(LIB_DIR))

define create_library
$(COMSPEC) /E:2048 /Cecho $(LIB_DDIR)\$@ > __lib__.tmp
$(foreach file, $(^F), $(lib_object))
$(AR) $(ARFLAGS) @__lib__.tmp
endef

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

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

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

Page url: http://www.yourdomain.com/help/index.html?dos.htm