os2

  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\os2
c:\harbour\config\os2\dir.cf
#
# $Id: dir.cf 8286 2008-02-07 19:17:55Z druzus $
#

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

ifeq ($(SHLVL),) # An OS/2 command shell

ifeq ($(DIRS),) # Empty directory list
DIR_RULE =\
	@echo Done
else
DIR_MAKE = $(subst /,\,$(MK))
DIR_LIST = $(subst /,\,$(DIRS))
DIR_RULE = CMD.EXE /C FOR %d IN ($(DIR_LIST)) DO $(DIR_MAKE) -C %d $@
endif

else  # bash

DIR_RULE =\
	@for d in $(DIRS); do \
		if [ -d $$d ]; then \
			$(MAKE) -C $$d $@; \
		fi \
	done

endif # ! Windows

endif # ! compiling a specific program module
c:\harbour\config\os2\gcc.cf
#
# $Id: gcc.cf 9519 2008-09-29 16:50:43Z druzus $
#

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)
CFLAGS = -Wall -W -O3

LD = gcc
LDFLAGS =
# NOTE: The ending space after -o is important, please preserve it.
#       Now solved with '$(subst x,x, )' expression.
LD_OUT = -o$(subst x,x, )

ifeq ($(C_MAIN),)
ifeq ($(HB_GT_LIB),os2pm)
# If building a PM program, override the main object.
LDFLAGS +=$(TOP)$(ROOT)source/vm/$(HB_ARCH)/mainpm.o
endif
endif

# Add all libraries specified in CONTRIBS and LIBS.
ifeq ($(HB_LIB_COMPILE),)
LINKPATHS += -L$(LIB_DIR)
else
LINKPATHS += -L$(HB_LIB_COMPILE)
endif
#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
ifeq ($(findstring rtl,$(LIBS)),rtl)
ifeq ($(C_MAIN),)
ifeq ($(findstring os2pm,$(HB_GT_LIB)),os2pm)
# Special handling for PM mode
LINKLIBS += -l$(HB_GT_LIB)
LINKLIBS += -lgtos2
else

LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt)) -lhbrtl

endif
endif
endif

# add socket library
LINKLIBS += -lsocket

#LINKLIBS += -Wl,-)
# statical linking with GCC 3.2.2 libc as not require its presence on user system
LDFLAGS += $(LINKPATHS)

ifeq ($(C_MAIN),)
ifeq ($(HB_GT_LIB),os2pm)
# Override the default link rule in order to add a call to emxbind
LD_RULE = $(LD) $(CFLAGS) $(LD_OUT)$@ $(^F) $(LDFLAGS) $(L_USR) $(LINKLIBS) & emxbind -ep $@
endif
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 a script to overcome the AR limit of max 850 characters
# in commmand line
define create_library
IF EXIST $(OS2_LIB_ARCH) $(RM) $(OS2_LIB_ARCH)
echo CREATE $(LIB_DIR)/$@ > __lib__.tmp
$(foreach file, $(^F), $(lib_object))
echo SAVE >> __lib__.tmp
echo END >> __lib__.tmp
$(AR) -M < __lib__.tmp
endef

# Under OS/2 || isn't a command separator (inside a shell, that is); correct separator is &
AR = ar
ARFLAGS = $(A_USR)
AR_RULE = $(create_library) & $(RM) __lib__.tmp

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

all : first

HB_GT_LIST=\
	gtcgi \
	gtos2 \
	gtpca \
	gtstd \

# verify if GT drivers exist
#HB_GT_LIBS := $(foreach gt, $(HB_GT_LIST), $(if $(wildcard $(TOP)$(ROOT)source/rtl/$(gt)),$(gt),))
# temporary workaround for some possible problems with some GNU make versions
HB_GT_LIBS := $(HB_GT_LIST)

ifeq ($(SHLVL),) # An OS/2 command shell

ARCH_DIR = $(HB_ARCH)
OS2_ARCH_DIR = $(subst /,\,$(HB_ARCH))
OS2_LIB_DIR  = $(subst /,\,$(LIB_DIR))
OS2_LIB_PATH = $(subst /,\,$(LIB_PATH))
OS2_LIB_ARCH = $(subst /,\\,$(LIB_ARCH))
DIRSEP = $(subst /,\,\)

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

ifeq ($(OS2_SHELL),)
	# Not running on OS/2 (which comes in handy for 'make -r clean')
	RM = del /q
else
	# Running on OS/2
	RM = del /n
endif
RD = rmdir
CP = copy
MV = move
MD = md

ifeq ($(LIB_PATH),)

dirbase::
	-CMD.EXE /C FOR %d IN ($(HB_ARCHITECTURE) $(OS2_ARCH_DIR)) DO IF NOT EXIST %d $(MD) %d

clean::
	-CMD.EXE /C IF EXIST $(OS2_ARCH_DIR)\*.* $(RM) $(OS2_ARCH_DIR)\\*.*
	-CMD.EXE /C FOR %d IN ($(OS2_ARCH_DIR) $(HB_ARCHITECTURE)) DO IF EXIST %d $(RD) %d

else

dirbase::
	-CMD.EXE /C FOR %d IN ($(HB_ARCHITECTURE) $(OS2_ARCH_DIR) $(OS2_LIB_PATH) $(OS2_LIB_DIR)) DO IF NOT EXIST %d $(MD) %d

clean::
	-CMD.EXE /C IF EXIST $(OS2_ARCH_DIR)\*.* $(RM) $(OS2_ARCH_DIR)\\*.*
	-CMD.EXE /C FOR %d IN ($(OS2_ARCH_DIR) $(HB_ARCHITECTURE)) DO IF EXIST %d $(RD) %d
	-CMD.EXE /C IF EXIST $(OS2_LIB_ARCH) $(RM) $(OS2_LIB_ARCH)

endif

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

OS2_LIB_ARCH = $(LIB_ARCH)

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

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

endif
c:\harbour\config\os2\icc.cf
#
# $Id: icc.cf 8262 2008-01-31 17:44:30Z rglab $
#

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

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

CC = icc
CC_IN = /C+ /Tp
CC_OUT = /Fo
CPPFLAGS = /I$(GRANDP) /I$(HB_INC_COMPILE)
#CFLAGS = /Gs+ /W2 /Se /Sd+ /Ti+
CFLAGS = /Gs+ /W2 /Se /Sd+ -DHB_LONG_LONG_OFF

LD = icc
LD_OUT = /Fe
LDFLAGS = /C- /B"/NOIgnoreCase"
ifeq ($(HB_MAIN),)
else
ifeq ($(C_MAIN),)
ifeq ($(HB_GT_LIB),os2pm)
LDFLAGS +=/B"/PMtype:PM" $(TOP)$(ROOT)source/vm/$(HB_ARCH)/mainpm.obj
else
LDFLAGS += $(TOP)$(ROOT)source/vm/$(HB_ARCH)/mainstd.obj
endif
endif
endif
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS = $(foreach lib, $(CONTRIBS), $(LIB_DIR)/$(lib)$(LIB_EXT))
LINKLIBS += $(foreach lib, $(LIBS), $(LIB_DIR)/$(lib)$(LIB_EXT))
# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach lib, $(HB_DB_DRIVERS), $(LIB_DIR)/$(lib)$(LIB_EXT))
endif
else
LINKLIBS = $(foreach lib, $(LIBS), $(lib)$(LIB_EXT))
# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach lib, $(HB_DB_DRIVERS), $(lib)$(LIB_EXT))
endif
endif

# Add the specified GT driver library
ifeq ($(C_MAIN),)
ifeq ($(findstring rtl,$(LIBS)),rtl)
ifeq ($(HB_GT_LIB),hbgfos2pm)
# Special handling for PM mode
LINKLIBS += $(LIB_DIR)/hbgfos2pm.lib
LINKLIBS += $(LIB_DIR)/gtos2.lib
else
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
endif
endif

# HB_SCREEN_LIB: empty, or one of ncurses, slang
# HB_SCREEN_LIB=ncurses
# HB_SCREEN_LIB=slang

ifneq ($(HB_SCREEN_LIB),)
LINKLIBS += $(HB_SCREEN_LIB)
endif

AR = ilib
ARFLAGS = /NOE /NOIgnoreCase $(A_USR)
AROBJS = $(foreach file, $(^F), -+$(file))
AR_RULE = $(AR) $(ARFLAGS) $(LIB_DIR)/$@ $(AROBJS),,

include $(TOP)$(ROOT)config/rules.cf
c:\harbour\config\os2\install.cf
#
# $Id: install.cf 9191 2008-08-19 13:11:22Z vszakats $
#

ifeq ($(SHLVL),) # An OS/2 command shell

define inst_file
ECHO $(CP) $(file) $(INSTALL_OS2_DIR) >> _nstall.cmd

endef

INSTALL_LIST = $(subst /,\,$(INSTALL_OBJS))
INSTALL_OS2_DIR = $(subst /,\,$(INSTALL_DIR))
INSTALL_RULE = $(foreach file, $(INSTALL_LIST), $(inst_file)) \
	$(COMSPEC) /c _nstall.cmd & $(RM) _nstall.cmd

else  # bash

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

endif

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