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
