--- a/bin/mklib +++ b/bin/mklib @@ -2,31 +2,17 @@ # USAGE: # mklib -# -# FUNCTION -# Creates ".a" files in "$saclib/lib/" depending on the argument: -# - 'std' causes a standard library to be built. The library file will have -# the name "saclib.a" and the corresponding object files are in -# "saclib/lib/obj". -# - 'deb' switches on the '-g' option of the compiler which includes -# debugging information in the object files. The library file will have -# the name "saclibd.a" and the corresponding object files are in -# "saclib/lib/objd". -# - 'opt' switches on the '-O' option which produces optimized code. The -# library file will have the name "saclibo.a" and the corresponding object -# files are in "saclib/lib/objo". -# - 'all' builds all three types of libraries. -if [ $# -lt 1 ] +if [ $# -lt 1 ] then echo "USAGE:" echo " mklib " exit fi -if [ $1 = "clean" ] +if [ $1 = "clean" ] then - ### remove .o and .a and makefiles + ### remove .o and .so and makefiles echo "Removing object files, libraries and makefiles ..." pushd >/dev/null $saclib/lib/objo 'rm' -f * @@ -35,7 +21,7 @@ 'rm' -f * popd >/dev/null pushd >/dev/null $saclib/lib/ - 'rm' -f *.a + 'rm' -f *.so popd >/dev/null ### do sysdep cleanup echo "Removing system-dependent files ..." @@ -57,12 +43,6 @@ exit fi - -if [ ! -n "${CC+1}" ] -then - CC=cc -fi - echo "Compiling with" $CC if [ $1 = "std" ] @@ -70,15 +50,15 @@ echo "This option no longer exists!" elif [ $1 = "deb" ]; then pushd >/dev/null $saclib/lib/objd - make CC=$CC "SACFLAG=-g -DNO_SACLIB_MACROS" EXTENSION=d + make CC=$CC "SACFLAG=-fPIC ${CFLAGS} -DNO_SACLIB_MACROS" EXTENSION=d popd >/dev/null elif [ $1 = "opt" ]; then pushd >/dev/null $saclib/lib/objo - make CC=$CC "SACFLAG=" EXTENSION=o + make CC=$CC "SACFLAG=-fPIC ${CFLAGS}" EXTENSION=o popd >/dev/null elif [ $1 = "all" ]; then pushd >/dev/null $saclib/lib/objd - make CC=$CC "SACFLAG=-g -DNO_SACLIB_MACROS" EXTENSION=d + make CC=$CC "SACFLAG=-fPIC ${CFLAGS} -DNO_SACLIB_MACROS" EXTENSION=d popd >/dev/null pushd >/dev/null $saclib/lib/objo make CC=$CC "SACFLAG=" EXTENSION=o --- a/bin/mkmake +++ b/bin/mkmake @@ -25,20 +25,16 @@ # E.g. if is -g and is d, the library will be # compiled with the debug option set and the library name will be # "saclibg.a". -# +# # REMARK # This file should not be modified. Modify 'mkmake' instead and then use it -# to create the new makefile. +# to create the new makefile. # Macros SRCDIR = ${saclib}/src -TARGET = ${saclib}/lib/saclib${EXTENSION}.a -CFLAGS = -I${saclib}/include -c ${SACFLAG} -AFLAGS = -I${saclib}/include -P -AS = as -AR = ar -RANLIB = ranlib +TARGET = ${saclib}/lib/${FULLLIBNAME} +CFLAGS = -I${saclib}/include ${SACFLAG} -fPIC # Object files @@ -81,21 +77,13 @@ # cat >> $MAKEFILE <<\EOF - + # Target dependencies -new: ${OBJS1} ${OBJS2a} ${OBJS2b} ${OBJS3} ${OBJS4} +$(TARGET): ${OBJS1} ${OBJS2a} ${OBJS2b} ${OBJS3} ${OBJS4} rm -f ${TARGET} - ${AR} cq ${TARGET} ${OBJS1} - ${AR} cq ${TARGET} ${OBJS2a} - ${AR} cq ${TARGET} ${OBJS2b} - ${AR} cq ${TARGET} ${OBJS3} - ${AR} cq ${TARGET} ${OBJS4} -# Use "ar ts" if your system does not have "ranlib". -# ${AR} ts ${TARGET} -# Use "ranlib" if your system's "ar" does not have the option "s". - ${RANLIB} ${TARGET} + $(CXX) ${OBJS1} ${OBJS2a} ${OBJS2b} ${OBJS3} ${OBJS4} ${saclib}/src/gcword.cc -I${saclib}/include -I${saclib}/src -fPIC -shared ${CXXFLAGS} -o $@ ${LDFLAGS} -Wl,-soname,${FULLLIBNAME} @echo "Created '${TARGET}'." EOF @@ -113,7 +101,7 @@ 'ls' *.[c] 2> /dev/null |\ -awk -F. '{printf "%s.o: ${SRCDIR}/%s\n\t${CC} ${CFLAGS} ${SRCDIR}/%s\n",$1,$0,$0}' >>$MAKEFILE +awk -F. '{printf "%s.o: ${SRCDIR}/%s\n\t${CC} ${CFLAGS} -c ${SRCDIR}/%s\n",$1,$0,$0}' >>$MAKEFILE 'ls' *.[s] 2> /dev/null |\ awk -F. '{printf "%s.o: ${SRCDIR}/%s\n\t${AS} ${AFLAGS} ${SRCDIR}/%s -o %s.o\n",$1,$0,$0,$1}' >>$MAKEFILE @@ -123,7 +111,7 @@ # ## Done -# +# 'cp' $MAKEFILE $saclib/lib/objd popd >/dev/null