Very good description can be addedd to Victor's install? 2008/11/19 Przemyslaw Czerpak <[email protected]>: > On Wed, 19 Nov 2008, Pritpal Bedi wrote: > > Hi Pritpal, > >> I am playing with MinGW with MSYS. >> Everything is fine except few points below which >> I suspect more belongs to my poor general-knowledge >> and IQ. >> 1) ./make_gnu.sh install creates hbmk.sh in bin folder, <hbwin> is not >> included in the default library list. I tried to locate where I have >> to >> update this information but am at a loss. It is important for >> demowvg.prg >> to convert to executable. What I do that I change the lib list in >> hbmk.sh >> manually after each build. > > Looks that not all Harbour parts were updated for modifications > in environment variables and library names. > Look at function mk_hbgetlibsctb() in bin/hb-func.sh > It has list of contrib libraries. hbw32 should be changed to hbwin. > >> 2) What is the rule/procedure to build only a single contrib library? >> Now I have to issue from the /c/harbour ./make_gnu.sh install everytime >> I make a change to the source. Then I change hbmk.sh in bin folder. >> Then >> I compile demowvg.prg. A long edit/compile/link/execute cycle. > > It's very easy. In GNU make you can work with single library only. > It's one of the most important functionality for me which does not > exists in other make files. Just simply set two environment variables: > export HB_ARCHITECTURE=w32 > export HB_COMPILER=mingw > > When they are set you can execute in each directory make command > and modified files will be recompiled and new libraries will be > created in harbour/lib/$HB_ARCHITECTURE/$HB_COMPILER without > touching any other things. If you want to rebuild whole library > then you can simply execute: > make clean > it will erase (clean) on files related to library in the directory > you are working on without touch other code. > If you want to also install new library in given place then you should > set additional environment variable HB_LIB_INSTALL. If this variable > has some header files then you should also set HB_INC_INSTALL and if > some executable are also created and you want to install them then > HB_BIN_INSTALL is necessary. Yo can simply set all 3 variables, f.e.: > export HB_BIN_INSTALL="/c/harbour/mingw/bin" > export HB_INC_INSTALL="/c/harbour/mingw/include" > export HB_LIB_INSTALL="/c/harbour/mingw/lib" > > and then > make install > will work for any type of Harbour code. > When you executed make command then it works for given directory and all > subdirectoried. So when you execute it in harbour/source/rtl then he will > operate on rtl library and all GTs libraries which are in > harbour/source/rtl/gt* directoris, f.e.: > make clean > will clean rtl and all core GTs. make clean does not remove files > from final destination directories pointed by HB_*_INSTALL envvars > but only from Harbour source tree. > You can put all these environment variables in single script which > you may use to set you environment, f.e. in myhbsets.sh > #!/bin/sh > export HB_ARCHITECTURE=w32 > export HB_COMPILER=mingw > export HB_BIN_INSTALL="/c/harbour/mingw/bin" > export HB_INC_INSTALL="/c/harbour/mingw/include" > export HB_LIB_INSTALL="/c/harbour/mingw/lib" > > but please remember about one thing. In *nix like shells each > script operates on its own environment inherited from parent > process. It means that executing such scripts directly: > ./myhbsets.sh > will not change your environment variables. You have to "include" > it to current shell. It can be done by adding dot (.) and space > before script name, f.e.: > . ./myhbsets.sh > > In such form the variables will be set in current shell instance. > You can check it using simple 'set' command without parameters. > People who used to work with DOS/Windows very often forget about > the fact that *nix shells looks for programs to execute _ONLY_ in > directories which are in PATH envvar. It's the reason why simply > my_prog > does not work when my_prog is located in current directory. If you > do not like it then you can add current directory '.' to PATH envvar. > It's not set by default for important security reasons so it's not > good practice. For sure it should never be done in production environment > on machine with multiuser access. If you want to make it for you own > use then please add '.' at the end of path so programs in local directory > will not have higher priority then system ones. You can make it by: > export PATH="$PATH:." > In *nixes path delimiter is ":" not ";" like in DOS/Windows. > > I hope that above information will help you to start working > with *nix like shells and Harbour. There are also many other > possibilities but too much information at once can cause that > it may look more complicated then it really is. > > best regards, > Przemek > _______________________________________________ > Harbour mailing list > [email protected] > http://lists.harbour-project.org/mailman/listinfo/harbour
-- Massimo Belgrano Albo Nazionale Informatici Professionisti 2620 Socio 2843 Associazione Informatici prof. Analisi e sviluppo software per Lan e Web Consulenza informatica - Formazione Delta Informatica S.r.l. http://www.deltain.it Via Torelli,31 - 28100 Novara - Tel: 0321/30281 _______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
