On Sun, Aug 11, 2024, 06:29 Kaz Kylheku <k...@kylheku.com> wrote: > Your makefile is broken, or at least not suitable for parallel builds. > > You should add .NOTPARALLEL: to it. That's the minimal change that will > fix it. A makefile with the .NOTPARALLEL: target will not be parallelized > even if -j is requested on the command line or via the environment. > > Why it's broken is that you have multiple rules that update the same > object. > > An archive should be built by exactly one rule which has all the > prerequisites that are going into the archive. > > On August 10, 2024 4:04:13 AM PDT, Navin P <navinp0...@gmail.com> wrote: > >Hi, > > I ran multiple instances of ar during a parallel build and they were > >updating different object files using ar rv sometimes the same object file > >again. > > > >When i run make -j1 i find all the object files libx.a but when i do make > >-j8 i find some missing object files inside libx.a. > > > >Then i looked at ar.c and found that there is no synchronization between 2 > >instances of ar on same library. The problem is that makefile is generated > >and there are lots of bash scripts doing that. > > > >Is there any way to fix the problem? > >1. Without changing makefile > >2. With changing the makefile in long term. > > >
I was looking at https://stackoverflow.com/questions/8824969/how-do-i-avoid-concurrency-problems-when-using-gnu-make-for-parallel-builds-of-a AR := flock make.lock $(AR) What are the problems with using flock ? Regards, Navin