Dear Christos, On 2017-01-04, Christos Zoulas wrote: > In article <20170104195823.GD26839@HOME>, > Yorick Hardy <yorickha...@gmail.com> wrote: > >Dear Martin, > > > >On 2017-01-04, Martin Husemann wrote: > >> Can't you just use swap${.TARGET}.c instead of the wildcard? > >> > >> Martin > > > >I don't think so, because then we pickup more than one swap*.o > >when linking (and redefinition of symbols). > > > >Or did I misunderstand? (I assumed you meant swap${.TARGET}.o). > > > >I think I have a working patch, but I think we can do better (i.e. less > >assumptions about filenames): > > > >Index: sys/conf/Makefile.kern.inc > >=================================================================== > >RCS file: /cvsroot/src/sys/conf/Makefile.kern.inc,v > >retrieving revision 1.251 > >diff -u -r1.251 Makefile.kern.inc
[snip] > I thought we wanted to match the M and N modifiers so we select and deselect > the same files? That was my thought too! But when multiple kernels are configured we get multiple swap*.o files with duplicate symbols. How about the following? This patch removes all the wildcards, removes the swap*.o files for all configured kernels and includes the swap*.o file for the current target. Did I miss anything? -- Kind regards, Yorick Hardy Index: sys/conf/Makefile.kern.inc =================================================================== RCS file: /cvsroot/src/sys/conf/Makefile.kern.inc,v retrieving revision 1.252 diff -u -r1.252 Makefile.kern.inc --- sys/conf/Makefile.kern.inc 4 Jan 2017 19:55:06 -0000 1.252 +++ sys/conf/Makefile.kern.inc 4 Jan 2017 20:26:50 -0000 @@ -203,6 +203,10 @@ SYSTEM_LIB= ${MD_LIBS} ${SYSLIBCOMPAT} ${LIBKERN} SYSTEM_OBJ?= ${_MD_OBJS} ${OBJS} ${SYSTEM_LIB} +REMOVE_SWAP= [@] +.for k in ${KERNELS} +REMOVE_SWAP:= ${REMOVE_SWAP}:Nswap${k}.o +.endfor SYSTEM_DEP+= Makefile ${SYSTEM_OBJ:O} .if defined(CTFMERGE) SYSTEM_CTFMERGE= ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o @@ -213,11 +217,11 @@ SYSTEM_LD?= ${_MKSHMSG} " link ${.CURDIR:T}/${.TARGET}"; \ ${_MKSHECHO}\ ${LD} -Map ${.TARGET}.map --cref ${LINKFLAGS} -o ${.TARGET} \ - '$${SYSTEM_OBJ:N*swap${.TARGET}.o}' '$${EXTRA_OBJ}' vers.o \ - ${OBJS:M*swap${.TARGET}.o}; \ + '$${SYSTEM_OBJ:${REMOVE_SWAP}}' '$${EXTRA_OBJ}' vers.o \ + ${OBJS:Mswap${.TARGET}.o}; \ ${LD} -Map ${.TARGET}.map --cref ${LINKFLAGS} -o ${.TARGET} \ - ${SYSTEM_OBJ:N*swap${.TARGET}.o} ${EXTRA_OBJ} vers.o \ - ${OBJS:M*swap${.TARGET}.o} + ${SYSTEM_OBJ:${REMOVE_SWAP}} ${EXTRA_OBJ} vers.o \ + ${OBJS:Mswap${.TARGET}.o} TEXTADDR?= ${LOADADDRESS} # backwards compatibility LINKTEXT?= ${TEXTADDR:C/.+/-Ttext &/}