Files
harbour-core/harbour/config/os2/gcc.cf
Przemyslaw Czerpak a455bf0d4c 2007-08-25 12:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
  * harbour/source/vm/extend.c
    ! fixed hb_stor*() functions return value to be Clipper compatible.
      These functions should return 1 _ONLY_ when the operation is really
      successful; otherwise, they return zero.
    + added hb_storclen_buffer(), hb_arraySetPtrGC()

  * harbour/config/darwin/gcc.cf
  * harbour/config/hpux/gcc.cf
  * harbour/config/dos/rsx32.cf
  * harbour/config/os2/gcc.cf
  * harbour/config/sunos/gcc.cf
  * harbour/config/w32/gcc.cf
  * harbour/config/w32/rsxnt.cf
    + added rtl library after gt drivers for linker which do not support
      backward references
2007-08-25 10:20:35 +00:00

110 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 -DHB_OS_OS2 -O2
# 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)
# disabled, if you need it please use: C_USR=-DTCPV40HDRS
# CFLAGS += -DTCPV40HDRS
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 += $(foreach gt, $(HB_GT_LIBS), -L$(TOP)$(ROOT)source/rtl/$(gt)/$(HB_ARCH))
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt)) -lrtl
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