Przemyslaw,

I hope I've solved this one, I hade to write in os/install.cf the install rule
this way. Note that removing the empty line inside inst_file and/or trying to
make a for %i in ( ... ) loop causes a segfault.

The fault is inside cmd.exe, I don't understand way the previous code was
failing, I mean, what really does make.exe when interpreting this rule,
anyway, this is a little bit slower, but I can execute it with -jn re-gaining
all the lost speed :)

define inst_file
$(COMSPEC) /C $(CP) $(file) $(INSTALL_OS2_DIR)

endef

INSTALL_LIST = $(subst /,\,$(INSTALL_OBJS))
INSTALL_OS2_DIR = $(subst /,\,$(INSTALL_DIR))
INSTALL_RULE = $(foreach file, $(INSTALL_LIST), $(inst_file))

I'll commit in a while.

Maurilio.


Maurilio Longo wrote:
> Przemyslaw,
> 
> make install fails as well :( with this error:
> 
> (E:\repository\harbour-svn)make install
> make -C doc install
> make[1]: Entering directory `E:/repository/harbour-svn/doc'
> make -C en install
> make[2]: Entering directory `E:/repository/harbour-svn/doc/en'
> make[2]: Nothing to be done for `install'.
> make[2]: Leaving directory `E:/repository/harbour-svn/doc/en'
> make -C es install
> make[2]: Entering directory `E:/repository/harbour-svn/doc/es'
> make[2]: Nothing to be done for `install'.
> make[2]: Leaving directory `E:/repository/harbour-svn/doc/es'
> make[1]: Leaving directory `E:/repository/harbour-svn/doc'
> make -C include install
> make[1]: Entering directory `E:/repository/harbour-svn/include'
> ECHO copy clipdefs.h e:\harbour\include >> _nstall.cmd
> make[1]: *** [install] Segmentation fault (core dumped)
> make[1]: Leaving directory `E:/repository/harbour-svn/include'
> make: *** [include.inst] Error 2
> 
> Looking a config/os2/install.cf it is unchanged since august 2008 and it does
> not include any other file, so, what went wrong?
> 
> Maurilio.
> 
> 
> Maurilio Longo wrote:
>> Przemyslaw Czerpak wrote:
>>> Interesting. Now it looks like GNU make problem.
>>> Maybe some trick with eval function can help, f.e. something like:
>>>
>>>    define lib_object
>>>    echo ADDMOD $(1) >> __lib__.tmp
>>>    endef
>>>
>>>    define create_library
>>>    IF EXIST $(OS2_LIB_ARCH) $(RM) $(OS2_LIB_ARCH)
>>>    echo CREATE $(LIB_DIR)/$@ > __lib__.tmp
>>>    $(foreach file, $(^F), $(eval $(call lib_object,$(file))))
>>>    echo SAVE >> __lib__.tmp
>>>    echo END >> __lib__.tmp
>>>    $(AR) -M < __lib__.tmp
>>>    endef
>>>
>> With this I get an  error:
>>
>> c ../../hbarch.c -ohbarch.o
>> gcc -I. -I../../../../include -Wall -W -O3 -DTCPV40HDRS 
>> -DHB_FM_STATISTICS_OFF -
>> c ../../reserved.c -oreserved.o
>> ../../../../config/lib.cf:30: *** missing separator.  Stop.
>> make[3]: Leaving directory `E:/repository/harbour-svn/source/common/os2/gcc'
>> make[2]: *** [descend] Error 2
>> make[2]: Leaving directory `E:/repository/harbour-svn/source/common'
>> make[1]: *** [common] Error 2
>> make[1]: Leaving directory `E:/repository/harbour-svn/source'
>> make: *** [source] Error 2
>>
>>
>>>> Of course it works on the assumption that the library is made up of .o 
>>>> files.
>>> You can use $(OBJ_EXT) instead of .o
>>>    $(COMSPEC) /C "for %i in ( *$(OBJ_EXT) ) do echo ADDMOD %i >> _l_.tmp"
>> Yes, I can even remove the
>>
>> $(COMSPEC) /C
>>
>> there is no need to spawn another shell.
>>
>>> I do not know OS2 command line size limit but if it's big enough then
>>> you can also use:
>> 1024 chars
>>
>>>    $(COMSPEC) /C "for %i in ($(^F)) do echo ADDMOD %i >> _l_.tmp"
>>> Though in such case it should be possible to directly call ar without
>>> the above trick by simple:
>>>    AR_RULE = $(AR) $(ARFLAGS) cr $(LIB_DIR)/$@ $(^F)
>>> so I guess it's smaller then necessary.
>>>
>> Yes, this limit was reached long ago and the script was created to bypass it.
>>
>> Thanks a lot.
>>
>> Maurilio.
>>
>> PS. I'll do some timing to see how much it takes to build with various -j 
>> ASAP :)
>>
>>> best regards,
>>> Przemek
>>> _______________________________________________
>>> Harbour mailing list
>>> [email protected]
>>> http://lists.harbour-project.org/mailman/listinfo/harbour
>>>
> 

-- 
 __________
|  |  | |__| Maurilio Longo
|_|_|_|____| farmaconsult s.r.l.


_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to