Files
harbour-core/harbour/harbour-win-spec
Viktor Szakats a93731df1b 2010-01-22 13:36 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbwin/wapi_wingdi.c
  * contrib/hbwin/wapi_winuser.c
  * contrib/hbwin/hbwapi.h
    + Added hbwapi_stor_*() functions to store Windows structures
      RECT, POINT and DEVMODE. Latter supports hash only (due
      to large number of structure members), other two supports
      both array and hash.
      Please review my code.
    + WAPI_MOVETOEX() now uses hbwapi_stor_POINT().
    ! WAPI_DRAWTEXT() fixed to return RECT (using hbwapi_stor_RECT()).

  * contrib/hbwin/legacy.prg
  * contrib/xhb/xhw32prn.prg
    * Moved Win32Bmp compatibility class from hbwin to xhb lib.
    ! Deleted Win32Prn compatibility clsss from hbwin, as it's
      now implemented in xhb in a better way.

  * harbour-win-spec
  * harbour-wce-spec
  * harbour.spec
  * include/hbver.h
  * config/global.mk
    + Changed to new major version number:
         2.1.0dev (from 2.0.1dev)
      This gives way for 2.0.x branch to take
      the 2.0.1dev version number.
2010-01-22 12:27:04 +00:00

272 lines
9.0 KiB
Plaintext

#
# $Id$
#
# ---------------------------------------------------------------
# Copyright 2007 Przemyslaw Czerpak (druzus/at/priv.onet.pl),
# Harbour-MinGW cross build RPM spec file
#
# See COPYING for licensing terms.
# ---------------------------------------------------------------
######################################################################
## Definitions.
######################################################################
%define name harbour-win
%define version 2.1.0
%define releasen dev
%define hb_pref hbw
%define hb_host www.harbour-project.org
%define readme README.RPM
# Workaround for the problem of /usr/bin/strip not handling PE binaries.
%define hb_ccpath /opt/xmingw/bin
%define hb_ccpref i386-mingw-
%define __strip %{hb_ccpath}/%{hb_ccpref}strip
%define __objdump %{hb_ccpath}/%{hb_ccpref}objdump
######################################################################
## Preamble.
######################################################################
Summary: Free software Clipper compatible compiler
Summary(pl): Darmowy kompilator kompatybilny z jêzykiem Clipper.
Name: %{name}
Version: %{version}
Release: %{releasen}
License: GPL (plus exception)
Group: Development/Languages
Vendor: %{hb_host}
URL: http://%{hb_host}/
Source: harbour-%{version}.src.tar.gz
Packager: Przemys³aw Czerpak (druzus/at/priv.onet.pl)
BuildPrereq: gcc binutils bash
Requires: gcc binutils bash sh-utils harbour = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: %{name}
BuildRoot: /tmp/%{name}-%{version}-root
%define _noautoreq 'libharbour.*'
%description
Harbour is a CA-Cl*pper compatible compiler for multiple platforms. This
package includes a compiler, pre-processor, header files, virtual machine
and libraries for creating MS-Windows application in Linux box using MinGW
GCC port.
%description -l pl
Harbour to kompatybilny z jêzykiem CA-Cl*pper kompilator rozwijany na
wielu ró¿nych platformach. Ten pakiet zawiera kompilator, preprocesor,
zbiory nag³ówkowe, wirtualn+ maszynê oraz biblioteki pozwalaj+ce na
tworzenie aplikacji dla MS-Windows przy u¿yciu MinGW GCC.
######################################################################
## Preperation.
######################################################################
%prep
%setup -c harbour
rm -fR $RPM_BUILD_ROOT
######################################################################
## Build.
######################################################################
%build
#export HB_BUILD_PARTS=compiler
export HB_CONTRIBLIBS=no
export HB_PLATFORM=linux
export HB_COMPILER=gcc
make %{?_smp_mflags}
unset HB_COMPILER
unset HB_CONTRIBLIBS
export HB_BUILD_PARTS=lib
export HB_PLATFORM=win
export HB_BIN_COMPILE="$(pwd)/bin/linux/gcc"
export CC_HB_USER_PRGFLAGS="-undef:.ARCH. -D__PLATFORM__WINDOWS"
make %{?_smp_mflags}
######################################################################
## Install.
######################################################################
%install
# Install harbour itself.
export HB_BUILD_PARTS=lib
export HB_PLATFORM=win
unset HB_COMPILER
export HB_BIN_COMPILE="$(pwd)/bin/linux/gcc"
export CC_HB_USER_PRGFLAGS="-undef:.ARCH. -D__PLATFORM__WINDOWS"
export HB_BIN_INSTALL=%{_bindir}
export HB_INC_INSTALL=%{_includedir}/%{name}
export HB_LIB_INSTALL=%{_libdir}/%{name}
export HB_DYN_INSTALL=${HB_LIB_INSTALL}
export _DEFAULT_BIN_DIR=$HB_BIN_INSTALL
export _DEFAULT_INC_DIR=$HB_INC_INSTALL
export _DEFAULT_LIB_DIR=$HB_LIB_INSTALL
export HB_BIN_INSTALL=$RPM_BUILD_ROOT/$HB_BIN_INSTALL
export HB_INC_INSTALL=$RPM_BUILD_ROOT/$HB_INC_INSTALL
export HB_LIB_INSTALL=$RPM_BUILD_ROOT/$HB_LIB_INSTALL
export HB_DYN_INSTALL=${HB_LIB_INSTALL}
export HB_BUILD_STRIP=lib
mkdir -p $HB_BIN_INSTALL
make install %{?_smp_mflags}
# remove unused files
rm -fR ${HB_BIN_INSTALL}/{harbour,hbpp,hbmk2,hbrun,hbi18n,hbtest}.exe
rm -fR ${HB_BIN_INSTALL}/{hb,%{hb_pref}}mk.cfg
# Create a README file for people using this RPM.
cat > doc/%{readme} <<EOF
This RPM distribution of Harbour includes extra commands to make compiling
and linking with Harbour a little easier. There are compiler and linker
wrappers called "%{hb_pref}cc", "%{hb_pref}cmp", "%{hb_pref}lnk" and "%{hb_pref}mk".
"%{hb_pref}cc" is a wrapper to the C compiler only. It sets all flags
and paths necessary to compile .c files which include Harbour header
files. The result of its work is an object file.
Use "%{hb_pref}cmp" exactly as you would use the harbour compiler itself.
The main difference with %{hb_pref}cmp is that it results in an object file,
not a C file that needs compiling down to an object. %{hb_pref}cmp also
ensures that the harbour include directory is seen by the harbour compiler.
"%{hb_pref}lnk" simply takes a list of object files and links them together
with the harbour virtual machine and run-time library to produce an
executable. The executable will be given the basename of the first object
file if not directly set by the "-o" command line switch.
"%{hb_pref}mk" tries to produce an executable from your .prg file. It's a simple
equivalent of cl.bat from the CA-Cl*pper distribution.
All these scripts accept command line switches:
-o<outputfilename> # output file name
-static # link with static Harbour libs
-fullstatic # link with all static libs
-shared # link with shared libs (default)
-mt # link with multi-thread libs
-gt<hbgt> # link with <hbgt> GT driver, can be repeated to
# link with more GTs. The first one will be
# the default at runtime
-xbgtk # link with xbgtk library (xBase GTK+ interface)
-hwgui # link with HWGUI library (GTK+ interface)
-l<libname> # link with <libname> library
-L<libpath> # additional path to search for libraries
-[no]strip # strip (no strip) binaries
-main=<main_func> # set the name of main program function/procedure.
# if not set then 'MAIN' is used or if it doesn't
# exist the name of first public function/procedure
# in first linked object module (link)
Link options work only with "%{hb_pref}lnk" and "%{hb_pref}mk" and have no effect
in "%{hb_pref}cc" and "%{hb_pref}cmp".
Other options are passed to Harbour/C compiler/linker.
An example compile/link session looks like:
----------------------------------------------------------------------
druzus@uran:~/tmp$ cat foo.prg
function main()
? "Hello, World!"
return nil
druzus@uran:~/tmp$ %{hb_pref}cmp foo
Harbour 1.0.0 Intl. (Rev. 9099)
Copyright (c) 1999-2008, http://www.harbour-project.org/
Compiling 'foo.prg'...
Lines 5, Functions/Procedures 2
Generating C source output to 'foo.c'... Done.
druzus@uran:~/tmp$ %{hb_pref}lnk foo.o
druzus@uran:~/tmp$ ls -l foo
-rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo.exe
----------------------------------------------------------------------
or using %{hb_pref}mk only:
----------------------------------------------------------------------
druzus@uran:~/tmp$ cat foo.prg
function main()
? "Hello, World!"
return nil
druzus@uran:~/tmp$ %{hb_pref}mk foo
Harbour 1.0.0 Intl. (Rev. 9099)
Copyright (c) 1999-2008, http://www.harbour-project.org/
Compiling 'foo.prg'...
Lines 5, Functions/Procedures 2
Generating C source output to 'foo.c'... Done.
druzus@uran:~/tmp$ ls -l foo
-rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo.exe
----------------------------------------------------------------------
I hope this RPM is useful. Have fun with Harbour.
Przemyslaw Czerpak (druzus/at/priv.onet.pl)
EOF
######################################################################
## Post install
######################################################################
#%post lib
#/sbin/ldconfig
######################################################################
## Post uninstall
######################################################################
#%postun lib
#/sbin/ldconfig
######################################################################
## Clean.
######################################################################
%clean
rm -fR $RPM_BUILD_ROOT
######################################################################
## File list.
######################################################################
%files
%defattr(-,root,root,755)
%doc doc/%{readme}
%{_bindir}/%{hb_pref}-mkdyn
%{_bindir}/%{hb_pref}-mkslib
%{_bindir}/%{hb_pref}-build
%{_bindir}/%{hb_pref}cc
%{_bindir}/%{hb_pref}cmp
%{_bindir}/%{hb_pref}lnk
%{_bindir}/%{hb_pref}mk
%defattr(644,root,root,755)
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/*
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*.a
%defattr(755,root,root,755)
%{_libdir}/%{name}/*.dll
######################################################################
## Spec file Changelog.
######################################################################
%changelog
* Thu Oct 23 2007 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
- initial release