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.
This commit is contained in:
Landon Curt Noll
2023-08-12 00:28:53 -07:00
parent 0b044ce972
commit bf5b56d263
4 changed files with 269 additions and 122 deletions

4
.gitignore vendored
View File

@@ -6,12 +6,14 @@
# #
.dynamic .dynamic
.hsrc .hsrc
.static
Makefile.our Makefile.our
NOTES NOTES
align32.h align32.h
args.h args.h
cal/.all cal/.all
calc calc
calc-static
calc.1 calc.1
calc.usage calc.usage
calcerr.c calcerr.c
@@ -99,7 +101,9 @@ libcustcalc*
longbits longbits
longbits.h longbits.h
sample_many sample_many
sample_many-static
sample_rand sample_rand
sample_rand-static
tags tags
terminal.h terminal.h
ver_calc ver_calc

17
CHANGES
View File

@@ -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. 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: The following are the changes from calc version 2.14.2.1 to 2.14.3.0:

185
Makefile
View File

@@ -2624,32 +2624,38 @@ calc-dynamic-only: ${DYNAMIC_FIRST_TARGETS} ${EARLY_TARGETS} \
${SAMPLE_TARGETS} ${LATE_TARGETS} ${SAMPLE_TARGETS} ${LATE_TARGETS}
.dynamic: ${MAKE_FILE} ${LOC_MKF} .dynamic: ${MAKE_FILE} ${LOC_MKF}
${Q} r="calc-dynamic-only"; \ ${Q} d="calc-dynamic-only"; \
if [ "${BLD_TYPE}" != "$$r" ]; then \ s="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$d" ]; then \
echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ 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 " type of: ${BLD_TYPE}, so you need to use" 1>&2; \
echo " the following make command:" 1>&2; \ echo " the following make command:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "NOTE: It is a very good idea to first clobber any" 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 " 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 1; \ exit 1; \
fi fi
${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \ ${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \
libcalc.a custom/libcustcalc.a; do \ libcalc.a custom/libcustcalc.a; do \
r="calc-dynamic-only"; \ d="calc-dynamic-only"; \
if [ -r "$$i" ]; then \ s="calc-static-only"; \
echo "Found the static target $$i file. You must:" 1>&2; \ 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 "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 2; \ exit 2; \
@@ -2670,32 +2676,38 @@ calc-static-only: ${STATIC_FIRST_TARGETS} ${EARLY_TARGETS} \
done done
.static: ${MAKE_FILE} ${LOC_MKF} .static: ${MAKE_FILE} ${LOC_MKF}
${Q} r="calc-static-only"; \ ${Q} d="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$r" ]; then \ s="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$s" ]; then \
echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ 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 " type of: ${BLD_TYPE}, so you need to use" 1>&2; \
echo " the following make command:" 1>&2; \ echo " the following make command:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "NOTE: It is a very good idea to first clobber any" 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 " 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 3; \ exit 3; \
fi fi
${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \ ${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \
custom/libcustcalc${LIB_EXT_VERSION}; do \ custom/libcustcalc${LIB_EXT_VERSION}; do \
r="calc-static-only"; \ d="calc-dynamic-only"; \
s="calc-static-only"; \
if [ -r "$$i" ]; then \ if [ -r "$$i" ]; then \
echo "Found the dynamic target $$i file. You must:" 1>&2; \ echo "Found the dynamic target $$i file. You must:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ echo "If you are trying to install the dynamic calc, you must install using:" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \
echo "" 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 4; \ exit 4; \
@@ -4898,7 +4910,7 @@ Makefile.simple: Makefile custom/Makefile.simple
echo 'old $@ is now $@.bak'; \ echo 'old $@ is now $@.bak'; \
echo 'updated top level $@ formed'; \ echo 'updated top level $@ formed'; \
${DIFF} -u $@.bak $@; \ ${DIFF} -u $@.bak $@; \
fi \ fi; \
else \ else \
echo 'new top level $@ formed'; \ echo 'new top level $@ formed'; \
echo; \ echo; \
@@ -5643,28 +5655,49 @@ endif
else \ else \
${TRUE}; \ ${TRUE}; \
fi 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 \ -${Q} if [ -f calc-static${EXT} ]; then \
if ${CMP} -s calc-static${EXT} \ if ${CMP} -s calc-static${EXT} \
${T}${BINDIR}/calc-static${EXT}; then \ ${T}${BINDIR}/calc-static${EXT}; then \
${TRUE}; \ ${TRUE}; \
else \ else \
echo ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \
${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} \ ${CP} -f calc-static${EXT} \
${T}${BINDIR}/calc-static.new${EXT}; \ ${T}${BINDIR}/calc-static.new${EXT}; \
echo ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \
${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} \ ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \
${T}${BINDIR}/calc-static${EXT}; \ ${T}${BINDIR}/calc-static${EXT}; \
echo "installed ${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; \ 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 fi
${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
${Q} cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install ${Q} cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install
@@ -5689,13 +5722,18 @@ endif
${Q} cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install ${Q} cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
-${Q} if [ -f libcalc.a ]; then \ -${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}; \ ${TRUE}; \
else \ else \
echo ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \
${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; \ ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \
echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \
${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; \ ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \
echo ${RANLIB} ${T}${LIBDIR}/libcalc.a; \
${RANLIB} ${T}${LIBDIR}/libcalc.a; \ ${RANLIB} ${T}${LIBDIR}/libcalc.a; \
echo "installed ${T}${LIBDIR}/libcalc.a"; \ echo "installed ${T}${LIBDIR}/libcalc.a"; \
fi; \ fi; \
@@ -5703,37 +5741,62 @@ endif
${Q}# NOTE: The this makefile installs libcustcalc${LIB_EXT_VERSION} ${Q}# NOTE: The this makefile installs libcustcalc${LIB_EXT_VERSION}
${Q}# because we only want to perform one ${LDCONFIG} for both ${Q}# because we only want to perform one ${LDCONFIG} for both
${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}. ${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}.
-${Q} if ${CMP} -s libcalc${LIB_EXT_VERSION} \ -${Q} if [ -f libcalc${LIB_EXT_VERSION} ]; then \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION} && \ if ${CMP} -s libcalc${LIB_EXT_VERSION} \
${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; then \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ ${TRUE}; \
${TRUE}; \ else \
else \ echo ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${CP} -f libcalc${LIB_EXT_VERSION} \ echo ${CP} -f libcalc${LIB_EXT_VERSION} \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${CP} -f libcalc${LIB_EXT_VERSION} \
${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${LN} -f -s libcalc${LIB_EXT_VERSION} \ echo ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \
${T}${LIBDIR}/libcalc${LIB_EXT}; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \
${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \
${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ echo ${LN} -f -s libcalc${LIB_EXT_VERSION} \
${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT}; \
${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ ${LN} -f -s libcalc${LIB_EXT_VERSION} \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ ${T}${LIBDIR}/libcalc${LIB_EXT}; \
echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \
${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ fi; \
${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ fi
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ -${Q} if [ -f custom/libcustcalc${LIB_EXT_VERSION} ]; then \
if [ -z "${T}" -o "/" = "${T}" ]; then \ if ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \
if [ ! -z "${LDCONFIG}" ]; then \ ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \
echo "running ${LDCONFIG}"; \ ${TRUE}; \
${LDCONFIG} -v; \ else \
echo "finished ${LDCONFIG}"; \ 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; \ fi; \
fi fi

View File

@@ -1971,32 +1971,38 @@ calc-dynamic-only: ${DYNAMIC_FIRST_TARGETS} ${EARLY_TARGETS} \
${SAMPLE_TARGETS} ${LATE_TARGETS} ${SAMPLE_TARGETS} ${LATE_TARGETS}
.dynamic: ${MAKE_FILE} ${LOC_MKF} .dynamic: ${MAKE_FILE} ${LOC_MKF}
${Q} r="calc-dynamic-only"; \ ${Q} d="calc-dynamic-only"; \
if [ "${BLD_TYPE}" != "$$r" ]; then \ s="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$d" ]; then \
echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ 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 " type of: ${BLD_TYPE}, so you need to use" 1>&2; \
echo " the following make command:" 1>&2; \ echo " the following make command:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "NOTE: It is a very good idea to first clobber any" 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 " 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 1; \ exit 1; \
fi fi
${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \ ${Q} for i in .static calc-static${EXT} ${SAMPLE_STATIC_TARGETS} \
libcalc.a custom/libcustcalc.a; do \ libcalc.a custom/libcustcalc.a; do \
r="calc-dynamic-only"; \ d="calc-dynamic-only"; \
if [ -r "$$i" ]; then \ s="calc-static-only"; \
echo "Found the static target $$i file. You must:" 1>&2; \ 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 "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 2; \ exit 2; \
@@ -2017,32 +2023,38 @@ calc-static-only: ${STATIC_FIRST_TARGETS} ${EARLY_TARGETS} \
done done
.static: ${MAKE_FILE} ${LOC_MKF} .static: ${MAKE_FILE} ${LOC_MKF}
${Q} r="calc-static-only"; \ ${Q} d="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$r" ]; then \ s="calc-static-only"; \
if [ "${BLD_TYPE}" != "$$s" ]; then \
echo "NOTE: The host target $(target) defaults to a build" 1>&2; \ 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 " type of: ${BLD_TYPE}, so you need to use" 1>&2; \
echo " the following make command:" 1>&2; \ echo " the following make command:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 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 "" 1>&2; \
echo "NOTE: It is a very good idea to first clobber any" 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 " 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 3; \ exit 3; \
fi fi
${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \ ${Q} for i in .dynamic ${CALC_DYNAMIC_LIBS} ${SYM_DYNAMIC_LIBS} \
custom/libcustcalc${LIB_EXT_VERSION}; do \ custom/libcustcalc${LIB_EXT_VERSION}; do \
r="calc-static-only"; \ d="calc-dynamic-only"; \
s="calc-static-only"; \
if [ -r "$$i" ]; then \ if [ -r "$$i" ]; then \
echo "Found the dynamic target $$i file. You must:" 1>&2; \ echo "Found the dynamic target $$i file. You must:" 1>&2; \
echo "" 1>&2; \ echo "" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} clobber" 1>&2; \ echo "If you are trying to install the dynamic calc, you must install using:" 1>&2; \
echo " ${MAKE} -f ${MAKE_FILE} $$r BLD_TYPE=$$r" 1>&2; \
echo "" 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 "" 1>&2; \
echo "=== aborting make ===" 1>&2; \ echo "=== aborting make ===" 1>&2; \
exit 4; \ exit 4; \
@@ -4191,7 +4203,7 @@ Makefile.simple: Makefile custom/Makefile.simple
echo 'old $@ is now $@.bak'; \ echo 'old $@ is now $@.bak'; \
echo 'updated top level $@ formed'; \ echo 'updated top level $@ formed'; \
${DIFF} -u $@.bak $@; \ ${DIFF} -u $@.bak $@; \
fi \ fi; \
else \ else \
echo 'new top level $@ formed'; \ echo 'new top level $@ formed'; \
echo; \ echo; \
@@ -4920,28 +4932,49 @@ install: ${LIB_H_SRC} ${BUILD_H_SRC} calc.1 all custom/Makefile
else \ else \
${TRUE}; \ ${TRUE}; \
fi 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 \ -${Q} if [ -f calc-static${EXT} ]; then \
if ${CMP} -s calc-static${EXT} \ if ${CMP} -s calc-static${EXT} \
${T}${BINDIR}/calc-static${EXT}; then \ ${T}${BINDIR}/calc-static${EXT}; then \
${TRUE}; \ ${TRUE}; \
else \ else \
echo ${RM} -f ${T}${BINDIR}/calc-static.new${EXT}; \
${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} \ ${CP} -f calc-static${EXT} \
${T}${BINDIR}/calc-static.new${EXT}; \ ${T}${BINDIR}/calc-static.new${EXT}; \
echo ${CHMOD} 0755 ${T}${BINDIR}/calc-static.new${EXT}; \
${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} \ ${MV} -f ${T}${BINDIR}/calc-static.new${EXT} \
${T}${BINDIR}/calc-static${EXT}; \ ${T}${BINDIR}/calc-static${EXT}; \
echo "installed ${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; \ 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 fi
${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
${Q} cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install ${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 ${Q} cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
-${Q} if [ -f libcalc.a ]; then \ -${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}; \ ${TRUE}; \
else \ else \
echo ${RM} -f ${T}${LIBDIR}/libcalc.a.new; \
${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; \ ${CP} -f libcalc.a ${T}${LIBDIR}/libcalc.a.new; \
echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc.a.new; \
${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; \ ${MV} -f ${T}${LIBDIR}/libcalc.a.new ${T}${LIBDIR}/libcalc.a; \
echo ${RANLIB} ${T}${LIBDIR}/libcalc.a; \
${RANLIB} ${T}${LIBDIR}/libcalc.a; \ ${RANLIB} ${T}${LIBDIR}/libcalc.a; \
echo "installed ${T}${LIBDIR}/libcalc.a"; \ echo "installed ${T}${LIBDIR}/libcalc.a"; \
fi; \ 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}# NOTE: The this makefile installs libcustcalc${LIB_EXT_VERSION}
${Q}# because we only want to perform one ${LDCONFIG} for both ${Q}# because we only want to perform one ${LDCONFIG} for both
${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}. ${Q}# libcalc${LIB_EXT_VERSION} and libcustcalc${LIB_EXT_VERSION}.
-${Q} if ${CMP} -s libcalc${LIB_EXT_VERSION} \ -${Q} if [ -f libcalc${LIB_EXT_VERSION} ]; then \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION} && \ if ${CMP} -s libcalc${LIB_EXT_VERSION} \
${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; then \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \ ${TRUE}; \
${TRUE}; \ else \
else \ echo ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${RM} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${CP} -f libcalc${LIB_EXT_VERSION} \ echo ${CP} -f libcalc${LIB_EXT_VERSION} \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \ ${CP} -f libcalc${LIB_EXT_VERSION} \
${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \ echo ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \ ${CHMOD} 0644 ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new; \
${LN} -f -s libcalc${LIB_EXT_VERSION} \ echo ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \
${T}${LIBDIR}/libcalc${LIB_EXT}; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ ${MV} -f ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}.new \
${RM} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}; \
${CP} -f custom/libcustcalc${LIB_EXT_VERSION} \ echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT_VERSION}"; \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ echo ${LN} -f -s libcalc${LIB_EXT_VERSION} \
${CHMOD} 0644 ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new; \ ${T}${LIBDIR}/libcalc${LIB_EXT}; \
${MV} -f ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}.new \ ${LN} -f -s libcalc${LIB_EXT_VERSION} \
${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; \ ${T}${LIBDIR}/libcalc${LIB_EXT}; \
echo "installed ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}"; \ echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \
${LN} -f -s libcustcalc${LIB_EXT_VERSION} \ fi; \
${T}${LIBDIR}/libcustcalc${LIB_EXT}; \ fi
echo "installed ${T}${LIBDIR}/libcalc${LIB_EXT}"; \ -${Q} if [ -f custom/libcustcalc${LIB_EXT_VERSION} ]; then \
if [ -z "${T}" -o "/" = "${T}" ]; then \ if ${CMP} -s custom/libcustcalc${LIB_EXT_VERSION} \
if [ ! -z "${LDCONFIG}" ]; then \ ${T}${LIBDIR}/libcustcalc${LIB_EXT_VERSION}; then \
echo "running ${LDCONFIG}"; \ ${TRUE}; \
${LDCONFIG} -v; \ else \
echo "finished ${LDCONFIG}"; \ 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; \ fi; \
fi fi