Files
harbour-core/harbour/config/os2/gcc.cf
Przemyslaw Czerpak d8ef95e7be 2006-03-10 21:15 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/config/rules.cf
  * harbour/config/bsd/gcc.cf
  * harbour/config/darwin/gcc.cf
  * harbour/config/dos/bcc16.cf
  * harbour/config/dos/djgpp.cf
  * harbour/config/dos/owatcom.cf
  * harbour/config/dos/rsx32.cf
  * harbour/config/dos/watcom.cf
  * harbour/config/linux/gcc.cf
  * harbour/config/os2/gcc.cf
  * harbour/config/os2/icc.cf
  * harbour/config/sunos/gcc.cf
  * harbour/config/w32/bcc32.cf
  * harbour/config/w32/gcc.cf
  * harbour/config/w32/global.cf
  * harbour/config/w32/icc.cf
  * harbour/config/w32/mingw32.cf
  * harbour/config/w32/msvc.cf
  * harbour/config/w32/rsxnt.cf
  * harbour/config/w32/watcom.cf
    * use F macro extension to extract file name from given macros.
      It simplified some rules and allow to use vpath and differ file
      locations in GNU Makefiles
    * moved the BCC16 excpetion for C_RULE from global rules.cf to
      DOS bcc16.cf file
    * use mainstd library in MinGW build

  * harbour/include/hbapi.h
    + added two new functions: hb_winmainArgInit() and hb_winmainArgGet()
      to set/retrieve WinMain() parameters.
    + added hb_strMatchWildExact()

  * harbour/source/pp/ppcore.c
    * initialized variable to avoid compiler warning

  * harbour/source/rtl/console.c
    * cleaned comment

  * harbour/source/rtl/hbffind.c
    ! Fixed invalid handle error in Windows when file() fails
      (fix borrowed from xHarbour)

  * harbour/source/rtl/strmatch.c
    + added hb_strMatchWildExact()
    + added 3-rd parameter <lExact> to WildMatch() - when it's TRUE
      WildMatch() will check if given pattern cover the whole string.
      Without it it check if pattern is valid prefix only.

  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtcrs/gtcrs.h
  * harbour/source/rtl/gtsln/mousesln.c
    * do not call Gpm_GetSnapshot() to avoid stupid message on stderr
      generated from GPM library - I lost the the hope that it will be
      fixed ;-)

  * harbour/source/rtl/gtpca/gtpca.c
    * use select() in *nixes for cursor position terminal feedback.

  * harbour/source/rtl/gtwin/gtwin.c
    * try to always allocate console when compiled without
      HB_NO_ALLOC_CONSOLE. It allow to use GTWIN also in real windows
      programs.

  + harbour/source/rtl/gtwvt/Makefile
  + harbour/source/rtl/gtwvt/gtwvt.c
  + harbour/source/rtl/gtwvt/gtwvt.h
    + added new GT driver GTWVT - the core of this driver it's Peter Ress
      work in xHarbour. In Harbour GTWVT contains only pure GT code without
      local to GTWVT xHarbour extensions and GTWVT contrib libraries.
      This extensions can be added but later but I want to keep them
      separated from the core GTWVT code and add them as upper level GT
      which can inherit from GTWVT. Just like I've implemented CTWIN.
      Please update non GNU make files and test this GT in Windows.
      The programs which want to use GTWVT should be compiled as standard
      Windows GUI programs. GTWVT replaces window console code.
      if you add to your code:
         proc GTSYS()
         request HB_GT_WIN
         request HB_GT_WVT
         return
      then the final binaries will be linked with both GT drivers and you
      can switch between them using //gt[:]<name> switch. F.e.:
         ./my_prog //gtwin
      or
         ./my_prog //gtwvt
      this feature works in all platforms.
      People who works in shell environment (*nixes, MSYS, DJGPP) and use
      hb* scripts does not have to use GTSYS() in source code but can simply
      use -gt<name> switch in hblnk and hbmk.

  * harbour/source/rtl/gtxwc/gtxwc.c
    * some minor cleanups and code formatting

  * harbour/source/vm/Makefile
  + harbour/source/vm/mainstd/Makefile
    * moved mainstd.c to separate mainstd library for MinGW32 build.
      Unfortunately MinGW always link main() function if it locate
      it in libraries and ignores WinMain() what effectively makes
      impossible to create Windows GUI programs if we have main() in
      VM library. People who are using MinGW and wants to create only
      pure console programs should now include mainstd library to linked
      library list.

  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/mainwin.c
    + added two new functions: hb_winmainArgInit() and hb_winmainArgGet()
      to set/retrieve WinMain() parameters.
2006-03-10 20:16:35 +00:00

111 lines
3.0 KiB
CFEngine3

#
# $Id$
#
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$(TOP)include -I$(HB_INC_COMPILE)
CFLAGS = -W -Wall -O2 -DHB_OS_OS2 -fsigned-char
# 26/03/2004 - <maurilio.longo@libero.it>
# added -DTCPV40HDRS to compile with GCC 3.2.2 on OS/2 v4.0 with mixed 16/32 bit tcp/ip stack
# to be removed if compiled on a tcp/ip stack >= 4.1 (eComStation, for example)
CFLAGS += -DTCPV40HDRS
ifeq ($(HB_LEX),SIMPLEX)
CFLAGS += -DSIMPLEX
endif
LD = gcc
LDFLAGS =
LD_OUT = -o $(SPACE)
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 += $(foreach lib, $(CONTRIBS), -L$(TOP)$(ROOT)contrib/$(lib)/$(HB_ARCH))
LINKPATHS += $(foreach lib, $(LIBS), -L$(TOP)$(ROOT)source/$(lib)/$(HB_ARCH))
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)
LINKPATHS += $(foreach drv, $(HB_DB_DRIVERS), -L$(TOP)$(ROOT)source/rdd/$(drv)/$(HB_ARCH))
LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv))
# add a last round of rtl/vm to solve positional interdependencies (at the moment hbrun requires this)
LINKLIBS += -lrtl -lvm -lrtl
endif
# Add the specified GT driver library
ifeq ($(findstring rtl,$(LIBS)),rtl)
ifeq ($(C_MAIN),)
ifeq ($(HB_GT_LIB),os2pm)
# Special handling for PM mode
LINKPATHS += -L$(TOP)$(ROOT)contrib/hgf/$(HB_GT_LIB)/$(HB_ARCH)
LINKLIBS += -l$(HB_GT_LIB)
LINKPATHS += -L$(TOP)$(ROOT)source/rtl/gtos2/$(HB_ARCH)
LINKLIBS += -lgtos2
else
LINKPATHS += -L$(TOP)$(ROOT)source/rtl/$(HB_GT_LIB)/$(HB_ARCH)
LINKLIBS += -l$(HB_GT_LIB)
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 $@ $(RM) $@
echo CREATE $@ > __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