I have the following Makefile for a shared library at $work:

ISI_TOP=        ../..

LIB=            isi_date
SHLIB_MAJOR=    1
SHLIB_MINOR=    0
SRCS=           date.c date_parser.new.c lex.yy.c
INCS=           date.h
INCLUDEDIR=     /usr/include/isi_date

YFLAGS+=        -vt
FLEX=           /usr/bin/flex
LDADD=          -ll

CLEANFILES+=    date_parser.new.c y.tab.h y.tab.c lex.yy.c y.output \
                check_date.log test

lex.yy.c: date_lexer.new.l
        ${FLEX} $>

CFLAGS+=        -I${.CURDIR}
#CFLAGS+=       -g

.include "${ISI_TOP}/isi.lib.mk"



This builds fine as on i386.  I'm trying to get all our user-space to
be 64-bit clean, and I run into an error when building on amd64:

/data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/bin/ld:
/data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a(libyywrap.o):
relocation R_X86_64_32 can not be used when making a shared object;
recompile with -fPIC
/data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a:
could not read symbols: Bad value

The following diff makes the compile work, but I have no idea (yet)
whether this will run, if it's the right solution, etc.


Index: usr.bin/lex/lib/Makefile
===================================================================
--- usr.bin/lex/lib/Makefile    (revision 153343)
+++ usr.bin/lex/lib/Makefile    (working copy)
@@ -4,11 +4,16 @@

 LIB=    ln
 SRCS=   libmain.c libyywrap.c
-NO_PIC=
+#NO_PIC=

+SHLIB_MAJOR=   1
+SHLIB_MINOR=   0
+
 .if ${MK_INSTALLLIB} != "no"
 LINKS=  ${LIBDIR}/libln.a ${LIBDIR}/libl.a
 LINKS+=        ${LIBDIR}/libln.a ${LIBDIR}/libfl.a
+LINKS+=        ${LIBDIR}/libln.so ${LIBDIR}/libl.so
+LINKS+=        ${LIBDIR}/libln${LIB_SUFFIX}.so ${LIBDIR}/libl${LIB_SUFFIX}.so
 .endif

 .if ${MK_PROFILE} != "no"


Thanks,
matthew
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to