2009-08-21 13:59 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* config/global.mk
  * INSTALL
    + Added HB_DYN_INSTALL envvar. This will tell where to copy
      Harbour dynamic libraries. By default it's set to HB_LIB_INSTALL
      for *nix targets and HB_BIN_INSTALL for non-*nix targets.

  * bin/postinst.bat
  - bin/hb-mkdyn.bat
    - Deleted batch script to create .dlls. Now done from GNU Make
      system. This means it work on all shells we support, not just
      nt ones.
    ; TOFIX: Delete win-based gcc family support from hb-mkdyn.sh, 
             now it's redundant.
This commit is contained in:
Viktor Szakats
2009-08-21 11:59:41 +00:00
parent f9143cfa55
commit 31efbd75c4
5 changed files with 30 additions and 249 deletions

View File

@@ -17,6 +17,21 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-08-21 13:59 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/global.mk
* INSTALL
+ Added HB_DYN_INSTALL envvar. This will tell where to copy
Harbour dynamic libraries. By default it's set to HB_LIB_INSTALL
for *nix targets and HB_BIN_INSTALL for non-*nix targets.
* bin/postinst.bat
- bin/hb-mkdyn.bat
- Deleted batch script to create .dlls. Now done from GNU Make
system. This means it work on all shells we support, not just
nt ones.
; TOFIX: Delete win-based gcc family support from hb-mkdyn.sh,
now it's redundant.
2009-08-21 13:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/os2/gcc.mk
% Using $(wildcard) instead of echo trick to delete target lib.

View File

@@ -309,6 +309,7 @@ OPTIONS AVAILABLE WHEN BUILDING HARBOUR
- HB_BIN_INSTALL Override directory to install executables
- HB_LIB_INSTALL Override directory to install libraries
- HB_DYN_INSTALL Override directory to install dynamic libraries
- HB_INC_INSTALL Override directory to install language headers
- HB_DOC_INSTALL Override directory to install documentation

View File

@@ -1,244 +0,0 @@
@rem
@rem $Id$
@rem
@echo off
rem ---------------------------------------------------------------
rem Copyright 2009 Viktor Szakats (harbour.01 syenar.hu)
rem See COPYING for licensing terms.
rem ---------------------------------------------------------------
if not "%OS%" == "Windows_NT" echo ! hb-mkdyn.bat Harbour build script requires Windows NT or upper.
if not "%OS%" == "Windows_NT" goto :EOF
setlocal
rem NOTE: .prg files have to be compiled with -n1
rem NOTE: .c files have to be compiled with -DHB_DYNLIB
if "%HB_ARCHITECTURE%" == "" ( echo ! HB_ARCHITECTURE needs to be set. && goto END )
if "%HB_COMPILER%" == "" ( echo ! HB_COMPILER needs to be set. && goto END )
if "%HB_BIN_INSTALL%" == "" ( echo ! HB_BIN_INSTALL needs to be set. && goto END )
if "%HB_LIB_INSTALL%" == "" ( echo ! HB_LIB_INSTALL needs to be set. && goto END )
set HB_DLL_VERSION=20
set HB_DLL_LIBS=source\common source\pp source\rtl source\macro source\lang source\codepage source\hbpcre source\hbzlib source\hbextern source\rdd source\rdd\dbfntx source\rdd\dbfnsx source\rdd\dbfcdx source\rdd\dbffpt source\rdd\hbsix source\rdd\hsx source\rdd\usrrdd source\rtl\gtcgi source\rtl\gtpca source\rtl\gtstd source\rtl\gtwvt source\rtl\gtgui
set HB_DLL_LIBS_WIN=source\rtl\gtwin
set HB_DLL_LIBS_ST=source\vm
set HB_DLL_LIBS_MT=source\vm\vmmt
set HB_DLL_LIBS_WATCOM=source\vm\maindllh
set HB_OBJ_EXT=_dyn.obj
set HB_OBJ_PREF=
set HB_OBJ_POST=
set _DST_NAME_POST=
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_bcc" set _DST_NAME_POST=-bcc
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" set _DST_NAME_POST=-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw64" set _DST_NAME_POST=-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" set _DST_NAME_POST=-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _DST_NAME_POST=-ia64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" set _DST_NAME_POST=-ia64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" set _DST_NAME_POST=-wce-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" set _DST_NAME_POST=-wce-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" set _DST_NAME_POST=-wce-arm
set _DST_NAME_ST=harbour-%HB_DLL_VERSION%%_DST_NAME_POST%
set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%%_DST_NAME_POST%
set _LIST_ST=%HB_BIN_INSTALL%\_hballst.txt
set _LIST_MT=%HB_BIN_INSTALL%\_hballmt.txt
if "%HB_ARCHITECTURE%" == "wce" set HB_DLL_LIBS_WIN=
if not "%HB_COMPILER%" == "watcom" set HB_DLL_LIBS_WATCOM=
if "%HB_COMPILER%" == "mingw" set HB_OBJ_EXT=.o
if "%HB_COMPILER%" == "mingw64" set HB_OBJ_EXT=.o
if "%HB_COMPILER%" == "mingwarm" set HB_OBJ_EXT=.o
if "%HB_COMPILER%" == "cygwin" set HB_OBJ_EXT=.o
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw64" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_cygwin" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_bcc" goto DO_BCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_watcom" goto DO_WATCOM
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" goto DO_POCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" goto DO_POCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" goto DO_POCC
echo ! Platform %HB_ARCHITECTURE% / %HB_COMPILER% isn't supported.
goto END
:DO_MSVC
echo.> "%_LIST_ST%"
echo.> "%_LIST_MT%"
call :MAKE_LISTS
set _BIN_LINK=link
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" set _BIN_LINK=xilink
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _BIN_LINK=xilink
if "%HB_ARCHITECTURE%" == "win" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%" == "wce" set _SYSLIBS=coredll.lib ws2.lib
echo ! Making %_DST_NAME_ST%.dll... && %_BIN_LINK% /nologo /dll /subsystem:console %HB_USER_DFLAGS% /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @"%_LIST_ST%" %_SYSLIBS% %HB_DLLIBS%
echo ! Making %_DST_NAME_MT%.dll... && %_BIN_LINK% /nologo /dll /subsystem:console %HB_USER_DFLAGS% /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @"%_LIST_MT%" %_SYSLIBS% %HB_DLLIBS%
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.exp"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.exp"
del "%_LIST_ST%"
del "%_LIST_MT%"
goto END
:DO_GCC
echo.> "%_LIST_ST%"
echo.> "%_LIST_MT%"
call :MAKE_LISTS
rem Can't do this with HB_OBJ_PREF/POST because cmd processor
rem gets confused about the closing paranthesis. [vszakats]
echo.> "%_LIST_ST%_"
for /f %%f in (%_LIST_ST%) do echo INPUT( %%f )>> "%_LIST_ST%_"
echo.> "%_LIST_MT%_"
for /f %%f in (%_LIST_MT%) do echo INPUT( %%f )>> "%_LIST_MT%_"
del "%_LIST_ST%"
del "%_LIST_MT%"
if "%HB_ARCHITECTURE%" == "win" set _SYSLIBS=-luser32 -lws2_32 -ladvapi32 -lgdi32
if "%HB_ARCHITECTURE%" == "wce" set _SYSLIBS=-lcoredll -lws2
echo ! Making %_DST_NAME_ST%.dll... && %HB_CCPREFIX%gcc -shared %HB_USER_DFLAGS% -o "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" "%_LIST_ST%_" %HB_USER_LDFLAGS% %_SYSLIBS% %HB_DLLIBS% -Wl,--output-def,"%HB_BIN_INSTALL%\%_DST_NAME_ST%.def"
echo ! Making %_DST_NAME_MT%.dll... && %HB_CCPREFIX%gcc -shared %HB_USER_DFLAGS% -o "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" "%_LIST_MT%_" %HB_USER_LDFLAGS% %_SYSLIBS% %HB_DLLIBS% -Wl,--output-def,"%HB_BIN_INSTALL%\%_DST_NAME_MT%.def"
rem ,--out-implib,"%HB_LIB_INSTALL%\lib%_DST_NAME_ST%.a"
rem ,--out-implib,"%HB_LIB_INSTALL%\lib%_DST_NAME_MT%.a"
del "%_LIST_ST%_"
del "%_LIST_MT%_"
goto END
:DO_BCC
if exist "%_LIST_ST%" del "%_LIST_ST%"
if exist "%_LIST_MT%" del "%_LIST_MT%"
set HB_OBJ_PREF=
set HB_OBJ_POST= +
call :MAKE_LISTS
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll",, cw32mt.lib import32.lib %HB_DLLIBS% >> "%_LIST_ST%"
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll",, cw32mt.lib import32.lib %HB_DLLIBS% >> "%_LIST_MT%"
echo ! Making %_DST_NAME_ST%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x %HB_USER_DFLAGS% c0d32.obj @%_LIST_ST%
echo ! Making %_DST_NAME_MT%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x %HB_USER_DFLAGS% c0d32.obj @%_LIST_MT%
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
del "%_LIST_ST%"
del "%_LIST_MT%"
goto END
:DO_WATCOM
echo.> "%_LIST_ST%"
echo.> "%_LIST_MT%"
set HB_OBJ_PREF=FILE '
set HB_OBJ_POST='
call :MAKE_LISTS
echo ! Making %_DST_NAME_ST%.dll... && wlink OP QUIET SYS NT_DLL %HB_USER_DFLAGS% OP IMPLIB NAME '%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll' @'%_LIST_ST%' LIB user32.lib, ws2_32.lib, advapi32.lib, gdi32.lib
echo ! Making %_DST_NAME_MT%.dll... && wlink OP QUIET SYS NT_DLL %HB_USER_DFLAGS% OP IMPLIB NAME '%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll' @'%_LIST_MT%' LIB user32.lib, ws2_32.lib, advapi32.lib, gdi32.lib
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
del "%_LIST_ST%"
del "%_LIST_MT%"
goto END
:DO_POCC
echo.> "%_LIST_ST%"
echo.> "%_LIST_MT%"
call :MAKE_LISTS
if "%HB_ARCHITECTURE%" == "win" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%" == "wce" set _SYSLIBS=coredll.lib ws2.lib
echo ! Making %_DST_NAME_ST%.dll... && polink /nologo /dll %HB_USER_DFLAGS% /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @%_LIST_ST% %_SYSLIBS% %HB_DLLIBS%
echo ! Making %_DST_NAME_MT%.dll... && polink /nologo /dll %HB_USER_DFLAGS% /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @%_LIST_MT% %_SYSLIBS% %HB_DLLIBS%
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.exp"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" move /Y "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.exp"
del "%_LIST_ST%"
del "%_LIST_MT%"
goto END
:MAKE_LISTS
rem echo ! Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%...
rem ; Extract neutral objects
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN% %HB_DLL_LIBS_WATCOM%) do (
if exist "%%f\%HB_OBJ_DIR%" (
rem echo ! Processing directory: %%f\%HB_OBJ_DIR%
dir /b "%%f\%HB_OBJ_DIR%\*%HB_OBJ_EXT%" > "%HB_BIN_INSTALL%\_hboraw.txt"
for /F %%p in (%HB_BIN_INSTALL%\_hboraw.txt) do (
echo %HB_OBJ_PREF%%%f\%HB_OBJ_DIR%\%%p%HB_OBJ_POST%>> "%_LIST_ST%"
echo %HB_OBJ_PREF%%%f\%HB_OBJ_DIR%\%%p%HB_OBJ_POST%>> "%_LIST_MT%"
)
del "%HB_BIN_INSTALL%\_hboraw.txt"
) else ( echo ! Directory not found: %%f\%HB_OBJ_DIR% )
)
rem ; Extract ST objects
for %%f in (%HB_DLL_LIBS_ST%) do (
if exist "%%f\%HB_OBJ_DIR%" (
rem echo ! Processing directory: %%f\%HB_OBJ_DIR%
dir /b "%%f\%HB_OBJ_DIR%\*%HB_OBJ_EXT%" > "%HB_BIN_INSTALL%\_hboraw.txt"
for /F %%p in (%HB_BIN_INSTALL%\_hboraw.txt) do echo %HB_OBJ_PREF%%%f\%HB_OBJ_DIR%\%%p%HB_OBJ_POST%>> "%_LIST_ST%"
)
del "%HB_BIN_INSTALL%\_hboraw.txt"
) else ( echo ! Directory not found: %%f\%HB_OBJ_DIR% )
)
rem ; Extract MT objects
for %%f in (%HB_DLL_LIBS_MT%) do (
if exist "%%f\%HB_OBJ_DIR%" (
rem echo ! Processing directory: %%f\%HB_OBJ_DIR%
dir /b "%%f\%HB_OBJ_DIR%\*%HB_OBJ_EXT%" > "%HB_BIN_INSTALL%\_hboraw.txt"
for /F %%p in (%HB_BIN_INSTALL%\_hboraw.txt) do echo %HB_OBJ_PREF%%%f\%HB_OBJ_DIR%\%%p%HB_OBJ_POST%>> "%_LIST_MT%"
del "%HB_BIN_INSTALL%\_hboraw.txt"
) else ( echo ! Directory not found: %%f\%HB_OBJ_DIR% )
)
goto :EOF
:END
endlocal

View File

@@ -55,8 +55,6 @@ goto INST_%HB_ARCHITECTURE%
if "%HB_BUILD_DLL%" == "no" goto _SKIP_DLL_BIN
call "%~dp0hb-mkdyn.bat"
if exist "%HB_BIN_INSTALL%\*.dll" (
echo ! Making shared version of Harbour binaries...
"%HB_HOST_BIN_DIR%\hbmk2" -q0 -lng=en-EN -shared "-o%HB_BIN_INSTALL%\hbrun-dll" "%~dp0..\utils\hbrun\hbrun.hbp"

View File

@@ -265,6 +265,9 @@ ifeq ($(HB_INIT_DONE),)
ifneq ($(HB_LIB_INSTALL),)
$(info ! HB_LIB_INSTALL: $(HB_LIB_INSTALL))
endif
ifneq ($(HB_DYN_INSTALL),)
$(info ! HB_DYN_INSTALL: $(HB_DYN_INSTALL))
endif
ifneq ($(HB_INC_INSTALL),)
$(info ! HB_INC_INSTALL: $(HB_INC_INSTALL))
endif
@@ -716,10 +719,10 @@ ARCH_COMP := $(HB_ARCHITECTURE)/$(HB_COMPILER)$(subst \,/,$(HB_BUILD_NAME))
OBJ_DIR := obj/$(ARCH_COMP)
BIN_DIR := $(TOP)$(ROOT)bin/$(ARCH_COMP)
LIB_DIR := $(TOP)$(ROOT)lib/$(ARCH_COMP)
ifeq ($(HB_OS_UNIX),yes)
DYN_DIR := $(LIB_DIR)
else
ifeq ($(HB_OS_UNIX),no)
DYN_DIR := $(BIN_DIR)
else
DYN_DIR := $(LIB_DIR)
endif
# define PKG_DIR only if run from root Makefile
ifeq ($(ROOT),./)
@@ -970,6 +973,7 @@ ifeq ($(HB_BUILD_PKG),yes)
HB_BIN_INSTALL :=
HB_INC_INSTALL :=
HB_LIB_INSTALL :=
HB_DYN_INSTALL :=
HB_DOC_INSTALL :=
endif
else
@@ -1042,6 +1046,13 @@ ifneq ($(HB_INSTALL_PREFIX),)
ifeq ($(HB_LIB_INSTALL),)
export HB_LIB_INSTALL := $(HB_INSTALL_PREFIX)$(DIRSEP)lib$(LIBPOSTFIX)
endif
ifeq ($(HB_DYN_INSTALL),)
ifeq ($(HB_OS_UNIX),no)
export HB_DYN_INSTALL := $(HB_BIN_INSTALL)
else
export HB_DYN_INSTALL := $(HB_LIB_INSTALL)
endif
endif
ifeq ($(HB_INC_INSTALL),)
ifneq ($(HB_INSTALL_PREFIX),$(HB_INSTALL_PREFIX_TOP))
export HB_INC_INSTALL := $(HB_INSTALL_PREFIX)$(DIRSEP)include$(INCPOSTFIX)