From bf5b56d263ae30783dbe417b43fea7ef6731148f Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Sat, 12 Aug 2023 00:28:53 -0700 Subject: [PATCH] fixed install of statically linked calc under macOS Improved .gitignore to ignore .static, calc-static, sample_many-static and sample_rand-static. Improved error messages when trying to compile with with one calc type (when BLD_TYPE=calc-dynamic-only or BLD_TYPE=calc-static-only) and install with the other. When installing with BLD_TYPE=calc-static-only, the installed calc and calc-static are links to each other. Thanks to GitHub user @urtleWilly for this suggestion. The dynamic shared libraries are not installed if they are not built. So when installing with BLD_TYPE=calc-static-only, the install rule will not attempt to install dynamic shared libraries. Thanks to GitHub user @urtleWilly for bringing to our attention, problems related to building a statically linked calc under macOS. --- .gitignore | 4 ++ CHANGES | 17 +++++ Makefile | 185 ++++++++++++++++++++++++++++++++---------------- Makefile.simple | 185 ++++++++++++++++++++++++++++++++---------------- 4 files changed, 269 insertions(+), 122 deletions(-) diff --git a/.gitignore b/.gitignore index b409073..0374de4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,12 +6,14 @@ # .dynamic .hsrc +.static Makefile.our NOTES align32.h args.h cal/.all calc +calc-static calc.1 calc.usage calcerr.c @@ -99,7 +101,9 @@ libcustcalc* longbits longbits.h sample_many +sample_many-static sample_rand +sample_rand-static tags terminal.h ver_calc diff --git a/CHANGES b/CHANGES index 9e30fb4..62658c4 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,23 @@ The following are the changes from calc version 2.14.3.1 to date: Fix typo in the `make debug` Makefile rule. + Improved .gitignore to ignore .static, calc-static, + sample_many-static and sample_rand-static. + + Improved error messages when trying to compile with + with one calc type (when BLD_TYPE=calc-dynamic-only or + BLD_TYPE=calc-static-only) and install with the other. + + When installing with BLD_TYPE=calc-static-only, the + installed calc and calc-static are links to each other. + Thanks to GitHub user @urtleWilly for this suggestion. + + The dynamic shared libraries are not installed if they are not + built. So when installing with BLD_TYPE=calc-static-only, the + install rule will not attempt to install dynamic shared libraries. + Thanks to GitHub user @urtleWilly for bringing to our attention, + problems related to building a statically linked calc under macOS. + The following are the changes from calc version 2.14.2.1 to 2.14.3.0: diff --git a/Makefile b/Makefile index 1caaa6e..f4d62fd 100644 --- a/Makefile +++ b/Makefile @@ -2624,32 +2624,38 @@ calc-dynamic-only: ${DYNAMIC_FIRST_TARGETS} ${EARLY_TARGETS} \ ${SAMPLE_TARGETS} ${LATE_TARGETS} .dynamic: ${MAKE_FILE} ${LOC_MKF} - ${Q} r="calc-dynamic-only"; \ - if [ "${BLD_TYPE}" != "$$r" ]; then \ + ${Q} d="calc-dynamic-only"; \ + s="calc-static-only"; \ + if [ "${BLD_TYPE}" != "$$d" ]; then \ echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ echo " type of: ${BLD_TYPE}, so you need to use" 1>&2; \ echo " the following make command:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$d BLD_TYPE=$$d" 1>&2; \ echo "" 1>&2; \ echo "NOTE: It is a very good idea to first clobber any" 1>&2; \ echo " previously built .o, libs and executables" 1>&2; \ - echo " before switching to $$r!" 1>&2; \ + echo " before switching to $$d ." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 1; \ fi ${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \ libcalc.a custom/libcustcalc.a; do \ - r="calc-dynamic-only"; \ - if [ -r "$$i" ]; then \ - echo "Found the static target $$i file. You must:" 1>&2; \ + d="calc-dynamic-only"; \ + s="calc-static-only"; \ + if [ -e "$$i" ]; then \ + echo "Found the static target $$i file." 1>&2; \ + echo "" 1>&2; \ + echo "If you are trying to install the static calc, you must install using:" 1>&2; \ + echo "" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$s install BLD_TYPE=$$s" 1>&2; \ + echo "" 1>&2; \ + echo "Otherwise you need to first clean out previously built static files" 1>&2; \ + echo "before trying to build and/or install dynamic calc:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ - echo "" 1>&2; \ - echo "to clean out any previously built static files." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 2; \ @@ -2670,32 +2676,38 @@ calc-static-only: ${STATIC_FIRST_TARGETS} ${EARLY_TARGETS} \ done .static: ${MAKE_FILE} ${LOC_MKF} - ${Q} r="calc-static-only"; \ - if [ "${BLD_TYPE}" != "$$r" ]; then \ + ${Q} d="calc-static-only"; \ + s="calc-static-only"; \ + if [ "${BLD_TYPE}" != "$$s" ]; then \ echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ echo " type of: ${BLD_TYPE}, so you need to use" 1>&2; \ echo " the following make command:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$s BLD_TYPE=$$s" 1>&2; \ echo "" 1>&2; \ echo "NOTE: It is a very good idea to first clobber any" 1>&2; \ echo " previously built .o, libs and executables" 1>&2; \ - echo " before switching to $$r!" 1>&2; \ + echo " before switching to $$s ." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 3; \ fi ${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \ custom/libcustcalc${LIB_EXT_VERSION}; do \ - r="calc-static-only"; \ + d="calc-dynamic-only"; \ + s="calc-static-only"; \ if [ -r "$$i" ]; then \ echo "Found the dynamic target $$i file. You must:" 1>&2; \ echo "" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo "If you are trying to install the dynamic calc, you must install using:" 1>&2; \ echo "" 1>&2; \ - echo "to clean out any previously built dynamic files." 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$d install BLD_TYPE=$$d" 1>&2; \ + echo "" 1>&2; \ + echo "Otherwise you need to first clean out previously built dynamic files" 1>&2; \ + echo "before trying to build and/or install static calc:" 1>&2; \ + echo "" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 4; \ @@ -4898,7 +4910,7 @@ Makefile.simple: Makefile custom/Makefile.simple echo 'old $@ is now $@.bak'; \ echo 'updated top level $@ formed'; \ ${DIFF} -u $@.bak $@; \ - fi \ + fi; \ else \ echo 'new top level $@ formed'; \ echo; \ @@ -5643,28 +5655,49 @@ endif else \ ${TRUE}; \ fi - -${Q} if ${CMP} -s calc${EXT} ${T}${BINDIR}/calc${EXT}; then \ - ${TRUE}; \ - else \ - ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ - ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ - ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ - ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ - echo "installed ${T}${BINDIR}/calc${EXT}"; \ - fi -${Q} if [ -f calc-static${EXT} ]; then \ if ${CMP} -s calc-static${EXT} \ ${T}${BINDIR}/calc-static${EXT}; then \ ${TRUE}; \ else \ + echo ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \ ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${CP} -f calc-static${EXT} \ + ${T}${BINDIR}/calc-static.new${EXT}; \ ${CP} -f calc-static${EXT} \ ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \ ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \ + ${T}${BINDIR}/calc-static${EXT}; \ ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \ ${T}${BINDIR}/calc-static${EXT}; \ echo "installed ${T}${BINDIR}/calc-static${EXT}"; \ + echo ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + echo ${LN} -f ${T}${BINDIR}/calc-static${EXT} \ + ${T}${BINDIR}/calc.new${EXT}; \ + ${LN} -f ${T}${BINDIR}/calc-static${EXT} \ + ${T}${BINDIR}/calc.new${EXT}; \ + echo "${MV} -f ${T}${BINDIR}/calc.new${EXT}" \ + "${T}${BINDIR}/calc${EXT}"; \ + ${MV} -f ${T}${BINDIR}/calc.new${EXT} \ + ${T}${BINDIR}/calc${EXT}; \ + echo "linked ${T}${BINDIR}/calc-static${EXT}" \ + "to ${T}${BINDIR}/calc${EXT}"; \ fi; \ + elif ${CMP} -s calc${EXT} ${T}${BINDIR}/calc${EXT}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + echo ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ + ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ + echo ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ + ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ + echo ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ + ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ + echo "installed ${T}${BINDIR}/calc${EXT}"; \ fi ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${Q} cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install @@ -5689,13 +5722,18 @@ endif ${Q} cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' -${Q} if [ -f libcalc.a ]; then \ - if ${CMP} -s libcalc.a ${T}${LIBDIR}/libcalc.a; then \ + if ${CMP} -s libcalc.a ${T}${LIBDIR}/libcalc.a; then \ ${TRUE}; \ - else \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \ ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \ + echo ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \ ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \ ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \ ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \ + echo ${RANLIB} ${T}${LIBDIR}/libcalc.a; \ ${RANLIB} ${T}${LIBDIR}/libcalc.a; \ echo "installed ${T}${LIBDIR}/libcalc.a"; \ fi; \ @@ -5703,37 +5741,62 @@ endif ${Q}# NOTE: The this makefile installs libcustcalc${LIB_EXT_VERSION} ${Q}# because we only want to perform one ${LDCONFIG} for both ${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}. - -${Q} if ${CMP} -s libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION} && \ - ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ - ${TRUE}; \ - else \ - ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${CP} -f libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ - ${LN} -f -s libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ - ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ - echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ - ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ - if [ -z "${T}" -o "/" = "${T}" ]; then \ - if [ ! -z "${LDCONFIG}" ]; then \ - echo "running ${LDCONFIG}"; \ - ${LDCONFIG} -v; \ - echo "finished ${LDCONFIG}"; \ + -${Q} if [ -f libcalc${LIB_EXT_VERSION} ]; then \ + if ${CMP} -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${CP} -f libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${CP} -f libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ + ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ + echo ${LN} -f -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT}; \ + ${LN} -f -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ + fi; \ + fi + -${Q} if [ -f custom/libcustcalc${LIB_EXT_VERSION} ]; then \ + if ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ + ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ + echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ + echo ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ + ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ + if [ -z "${T}" -o "/" = "${T}" ]; then \ + if [ ! -z "${LDCONFIG}" ]; then \ + echo "running ${LDCONFIG}"; \ + ${LDCONFIG} -v; \ + echo "finished ${LDCONFIG}"; \ + else \ + echo "use of ${LDCONFIG} is not required on this platform"; \ + fi; \ fi; \ fi; \ fi diff --git a/Makefile.simple b/Makefile.simple index f68c074..4f2a9ba 100644 --- a/Makefile.simple +++ b/Makefile.simple @@ -1971,32 +1971,38 @@ calc-dynamic-only: ${DYNAMIC_FIRST_TARGETS} ${EARLY_TARGETS} \ ${SAMPLE_TARGETS} ${LATE_TARGETS} .dynamic: ${MAKE_FILE} ${LOC_MKF} - ${Q} r="calc-dynamic-only"; \ - if [ "${BLD_TYPE}" != "$$r" ]; then \ + ${Q} d="calc-dynamic-only"; \ + s="calc-static-only"; \ + if [ "${BLD_TYPE}" != "$$d" ]; then \ echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ echo " type of: ${BLD_TYPE}, so you need to use" 1>&2; \ echo " the following make command:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$d BLD_TYPE=$$d" 1>&2; \ echo "" 1>&2; \ echo "NOTE: It is a very good idea to first clobber any" 1>&2; \ echo " previously built .o, libs and executables" 1>&2; \ - echo " before switching to $$r!" 1>&2; \ + echo " before switching to $$d ." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 1; \ fi ${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \ libcalc.a custom/libcustcalc.a; do \ - r="calc-dynamic-only"; \ - if [ -r "$$i" ]; then \ - echo "Found the static target $$i file. You must:" 1>&2; \ + d="calc-dynamic-only"; \ + s="calc-static-only"; \ + if [ -e "$$i" ]; then \ + echo "Found the static target $$i file." 1>&2; \ + echo "" 1>&2; \ + echo "If you are trying to install the static calc, you must install using:" 1>&2; \ + echo "" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$s install BLD_TYPE=$$s" 1>&2; \ + echo "" 1>&2; \ + echo "Otherwise you need to first clean out previously built static files" 1>&2; \ + echo "before trying to build and/or install dynamic calc:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ - echo "" 1>&2; \ - echo "to clean out any previously built static files." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 2; \ @@ -2017,32 +2023,38 @@ calc-static-only: ${STATIC_FIRST_TARGETS} ${EARLY_TARGETS} \ done .static: ${MAKE_FILE} ${LOC_MKF} - ${Q} r="calc-static-only"; \ - if [ "${BLD_TYPE}" != "$$r" ]; then \ + ${Q} d="calc-static-only"; \ + s="calc-static-only"; \ + if [ "${BLD_TYPE}" != "$$s" ]; then \ echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ echo " type of: ${BLD_TYPE}, so you need to use" 1>&2; \ echo " the following make command:" 1>&2; \ echo "" 1>&2; \ echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$s BLD_TYPE=$$s" 1>&2; \ echo "" 1>&2; \ echo "NOTE: It is a very good idea to first clobber any" 1>&2; \ echo " previously built .o, libs and executables" 1>&2; \ - echo " before switching to $$r!" 1>&2; \ + echo " before switching to $$s ." 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 3; \ fi ${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \ custom/libcustcalc${LIB_EXT_VERSION}; do \ - r="calc-static-only"; \ + d="calc-dynamic-only"; \ + s="calc-static-only"; \ if [ -r "$$i" ]; then \ echo "Found the dynamic target $$i file. You must:" 1>&2; \ echo "" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ - echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \ + echo "If you are trying to install the dynamic calc, you must install using:" 1>&2; \ echo "" 1>&2; \ - echo "to clean out any previously built dynamic files." 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} $$d install BLD_TYPE=$$d" 1>&2; \ + echo "" 1>&2; \ + echo "Otherwise you need to first clean out previously built dynamic files" 1>&2; \ + echo "before trying to build and/or install static calc:" 1>&2; \ + echo "" 1>&2; \ + echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ echo "" 1>&2; \ echo "=== aborting make ===" 1>&2; \ exit 4; \ @@ -4191,7 +4203,7 @@ Makefile.simple: Makefile custom/Makefile.simple echo 'old $@ is now $@.bak'; \ echo 'updated top level $@ formed'; \ ${DIFF} -u $@.bak $@; \ - fi \ + fi; \ else \ echo 'new top level $@ formed'; \ echo; \ @@ -4920,28 +4932,49 @@ install: ${LIB_H_SRC} ${BUILD_H_SRC} calc.1 all custom/Makefile else \ ${TRUE}; \ fi - -${Q} if ${CMP} -s calc${EXT} ${T}${BINDIR}/calc${EXT}; then \ - ${TRUE}; \ - else \ - ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ - ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ - ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ - ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ - echo "installed ${T}${BINDIR}/calc${EXT}"; \ - fi -${Q} if [ -f calc-static${EXT} ]; then \ if ${CMP} -s calc-static${EXT} \ ${T}${BINDIR}/calc-static${EXT}; then \ ${TRUE}; \ else \ + echo ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \ ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${CP} -f calc-static${EXT} \ + ${T}${BINDIR}/calc-static.new${EXT}; \ ${CP} -f calc-static${EXT} \ ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \ ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \ + echo ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \ + ${T}${BINDIR}/calc-static${EXT}; \ ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \ ${T}${BINDIR}/calc-static${EXT}; \ echo "installed ${T}${BINDIR}/calc-static${EXT}"; \ + echo ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + echo ${LN} -f ${T}${BINDIR}/calc-static${EXT} \ + ${T}${BINDIR}/calc.new${EXT}; \ + ${LN} -f ${T}${BINDIR}/calc-static${EXT} \ + ${T}${BINDIR}/calc.new${EXT}; \ + echo "${MV} -f ${T}${BINDIR}/calc.new${EXT}" \ + "${T}${BINDIR}/calc${EXT}"; \ + ${MV} -f ${T}${BINDIR}/calc.new${EXT} \ + ${T}${BINDIR}/calc${EXT}; \ + echo "linked ${T}${BINDIR}/calc-static${EXT}" \ + "to ${T}${BINDIR}/calc${EXT}"; \ fi; \ + elif ${CMP} -s calc${EXT} ${T}${BINDIR}/calc${EXT}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + ${RM} -f ${T}${BINDIR}/calc.new${EXT}; \ + echo ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ + ${CP} -f calc${EXT} ${T}${BINDIR}/calc.new${EXT}; \ + echo ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ + ${CHMOD} 0755 ${T}${BINDIR}/calc.new${EXT}; \ + echo ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ + ${MV} -f ${T}${BINDIR}/calc.new${EXT} ${T}${BINDIR}/calc${EXT}; \ + echo "installed ${T}${BINDIR}/calc${EXT}"; \ fi ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${Q} cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install @@ -4956,13 +4989,18 @@ install: ${LIB_H_SRC} ${BUILD_H_SRC} calc.1 all custom/Makefile ${Q} cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' -${Q} if [ -f libcalc.a ]; then \ - if ${CMP} -s libcalc.a ${T}${LIBDIR}/libcalc.a; then \ + if ${CMP} -s libcalc.a ${T}${LIBDIR}/libcalc.a; then \ ${TRUE}; \ - else \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \ ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \ + echo ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \ ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \ ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \ ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \ + echo ${RANLIB} ${T}${LIBDIR}/libcalc.a; \ ${RANLIB} ${T}${LIBDIR}/libcalc.a; \ echo "installed ${T}${LIBDIR}/libcalc.a"; \ fi; \ @@ -4970,37 +5008,62 @@ install: ${LIB_H_SRC} ${BUILD_H_SRC} calc.1 all custom/Makefile ${Q}# NOTE: The this makefile installs libcustcalc${LIB_EXT_VERSION} ${Q}# because we only want to perform one ${LDCONFIG} for both ${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}. - -${Q} if ${CMP} -s libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION} && \ - ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ - ${TRUE}; \ - else \ - ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${CP} -f libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ - ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ - ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ - ${LN} -f -s libcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcalc${LIB_EXT}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ - ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ - ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ - echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ - ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ - ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ - echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ - if [ -z "${T}" -o "/" = "${T}" ]; then \ - if [ ! -z "${LDCONFIG}" ]; then \ - echo "running ${LDCONFIG}"; \ - ${LDCONFIG} -v; \ - echo "finished ${LDCONFIG}"; \ + -${Q} if [ -f libcalc${LIB_EXT_VERSION} ]; then \ + if ${CMP} -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${CP} -f libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${CP} -f libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ + ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ + echo ${LN} -f -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT}; \ + ${LN} -f -s libcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcalc${LIB_EXT}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ + fi; \ + fi + -${Q} if [ -f custom/libcustcalc${LIB_EXT_VERSION} ]; then \ + if ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ + ${TRUE}; \ + else \ + echo ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + ${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ + echo ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ + ${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ + echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ + echo ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ + ${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ + ${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ + echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ + if [ -z "${T}" -o "/" = "${T}" ]; then \ + if [ ! -z "${LDCONFIG}" ]; then \ + echo "running ${LDCONFIG}"; \ + ${LDCONFIG} -v; \ + echo "finished ${LDCONFIG}"; \ + else \ + echo "use of ${LDCONFIG} is not required on this platform"; \ + fi; \ fi; \ fi; \ fi