mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-12-27 07:49:06 +08:00
41677b308e
+ add configure option --enable-pthreads-eintr to control whether the new EINTR feature is enabled. + modify logic in pthread configuration to allow EINTR to interrupt a read operation in wgetch() (Novell #540571, patch by Werner Fink). + drop mkdirs.sh, use "mkdir -p". + add configure option --disable-libtool-version, to use the "-version-number" feature which was added in libtool 1.5 (report by Peter Haering). The default value for the option uses the newer feature, which makes libraries generated using libtool compatible with the standard builds of ncurses. + updated test/configure to match configure script macros. + fixes for configure script from lynx changes: + improve CF_FIND_LINKAGE logic for the case where a function is found in predefined libraries. + revert part of change to CF_HEADER (cf: 20100424)
482 lines
16 KiB
Awk
482 lines
16 KiB
Awk
# $Id: mk-1st.awk,v 1.83 2010/05/15 19:14:44 tom Exp $
|
|
##############################################################################
|
|
# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
|
|
# #
|
|
# Permission is hereby granted, free of charge, to any person obtaining a #
|
|
# copy of this software and associated documentation files (the "Software"), #
|
|
# to deal in the Software without restriction, including without limitation #
|
|
# the rights to use, copy, modify, merge, publish, distribute, distribute #
|
|
# with modifications, sublicense, and/or sell copies of the Software, and to #
|
|
# permit persons to whom the Software is furnished to do so, subject to the #
|
|
# following conditions: #
|
|
# #
|
|
# The above copyright notice and this permission notice shall be included in #
|
|
# all copies or substantial portions of the Software. #
|
|
# #
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
|
|
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
|
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
|
|
# DEALINGS IN THE SOFTWARE. #
|
|
# #
|
|
# Except as contained in this notice, the name(s) of the above copyright #
|
|
# holders shall not be used in advertising or otherwise to promote the sale, #
|
|
# use or other dealings in this Software without prior written #
|
|
# authorization. #
|
|
##############################################################################
|
|
#
|
|
# Author: Thomas E. Dickey
|
|
#
|
|
# Generate list of objects for a given model library
|
|
# Variables:
|
|
# name (library name, e.g., "ncurses", "panel", "forms", "menus")
|
|
# traces ("all" or "DEBUG", to control whether tracing is compiled in)
|
|
# MODEL (e.g., "DEBUG", uppercase; toupper is not portable)
|
|
# model (directory into which we compile, e.g., "obj")
|
|
# prefix (e.g., "lib", for Unix-style libraries)
|
|
# suffix (e.g., "_g.a", for debug libraries)
|
|
# subset ("none", "base", "base+ext_funcs" or "termlib", etc.)
|
|
# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
|
|
# ShlibVerInfix ("yes" or "no", determines location of version #)
|
|
# TermlibRoot ("tinfo" or other root for libterm.so)
|
|
# TermlibSuffix (".so" or other suffix for libterm.so)
|
|
# ReLink ("yes", or "no", flag to rebuild shared libs on install)
|
|
# DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
|
|
# rmSoLocs ("yes" or "no", flag to add extra clean target)
|
|
# ldconfig (path for this tool, if used)
|
|
# overwrite ("yes" or "no", flag to add link to libcurses.a
|
|
# depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
|
|
# host (cross-compile host, if any)
|
|
# libtool_version (libtool "-version-info" or "-version-number")
|
|
#
|
|
# Notes:
|
|
# CLIXs nawk does not like underscores in command-line variable names.
|
|
# Mixed-case variable names are ok.
|
|
# HP/UX requires shared libraries to have executable permissions.
|
|
#
|
|
function is_ticlib() {
|
|
return ( subset ~ /^ticlib$/ );
|
|
}
|
|
function is_termlib() {
|
|
return ( subset ~ /^(ticlib\+)?termlib((\+[^+ ]+)*\+[a-z_]+_tinfo)?$/ );
|
|
}
|
|
# see lib_name
|
|
function lib_name_of(a_name) {
|
|
return sprintf("%s%s%s", prefix, a_name, suffix)
|
|
}
|
|
# see imp_name
|
|
function imp_name_of(a_name) {
|
|
if (ShlibVerInfix == "cygdll") {
|
|
result = sprintf("%s%s%s.a", prefix, a_name, suffix);
|
|
} else {
|
|
result = "";
|
|
}
|
|
return result;
|
|
}
|
|
# see abi_name
|
|
function abi_name_of(a_name) {
|
|
if (ShlibVerInfix == "cygdll") {
|
|
result = sprintf("%s%s$(ABI_VERSION)%s", "cyg", a_name, suffix);
|
|
} else if (ShlibVerInfix == "yes") {
|
|
result = sprintf("%s%s.$(ABI_VERSION)%s", prefix, a_name, suffix);
|
|
} else {
|
|
result = sprintf("%s.$(ABI_VERSION)", lib_name_of(a_name));
|
|
}
|
|
return result;
|
|
}
|
|
# see rel_name
|
|
function rel_name_of(a_name) {
|
|
if (ShlibVerInfix == "cygdll") {
|
|
result = sprintf("%s%s$(REL_VERSION)%s", "cyg", a_name, suffix);
|
|
} else if (ShlibVerInfix == "yes") {
|
|
result = sprintf("%s%s.$(REL_VERSION)%s", prefix, a_name, suffix);
|
|
} else {
|
|
result = sprintf("%s.$(REL_VERSION)", lib_name_of(a_name));
|
|
}
|
|
return result;
|
|
}
|
|
# see end_name
|
|
function end_name_of(a_name) {
|
|
if ( MODEL != "SHARED" ) {
|
|
result = lib_name_of(a_name);
|
|
} else if ( DoLinks == "reverse") {
|
|
result = lib_name_of(a_name);
|
|
} else {
|
|
if ( ShlibVer == "rel" ) {
|
|
result = rel_name_of(a_name);
|
|
} else if ( ShlibVer == "abi" || ShlibVer == "cygdll" ) {
|
|
result = abi_name_of(a_name);
|
|
} else {
|
|
result = lib_name_of(a_name);
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
function symlink(src,dst) {
|
|
if ( src != dst ) {
|
|
printf "rm -f %s; ", dst
|
|
printf "$(LN_S) %s %s; ", src, dst
|
|
}
|
|
}
|
|
function rmlink(directory, dst) {
|
|
printf "\t-rm -f %s/%s\n", directory, dst
|
|
}
|
|
function removelinks(directory) {
|
|
rmlink(directory, end_name);
|
|
if ( DoLinks == "reverse" ) {
|
|
if ( ShlibVer == "rel" ) {
|
|
rmlink(directory, abi_name);
|
|
rmlink(directory, rel_name);
|
|
} else if ( ShlibVer == "abi" ) {
|
|
rmlink(directory, abi_name);
|
|
}
|
|
} else {
|
|
if ( ShlibVer == "rel" ) {
|
|
rmlink(directory, abi_name);
|
|
rmlink(directory, lib_name);
|
|
} else if ( ShlibVer == "abi" ) {
|
|
rmlink(directory, lib_name);
|
|
}
|
|
}
|
|
}
|
|
function make_shlib(objs, shlib_list) {
|
|
printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s) $(LDFLAGS)\n", objs, shlib_list
|
|
}
|
|
function sharedlinks(directory) {
|
|
if ( ShlibVer != "auto" && ShlibVer != "cygdll" ) {
|
|
printf "\tcd %s && (", directory
|
|
if ( DoLinks == "reverse" ) {
|
|
if ( ShlibVer == "rel" ) {
|
|
symlink(lib_name, abi_name);
|
|
symlink(abi_name, rel_name);
|
|
} else if ( ShlibVer == "abi" ) {
|
|
symlink(lib_name, abi_name);
|
|
}
|
|
} else {
|
|
if ( ShlibVer == "rel" ) {
|
|
symlink(rel_name, abi_name);
|
|
symlink(abi_name, lib_name);
|
|
} else if ( ShlibVer == "abi" ) {
|
|
symlink(abi_name, lib_name);
|
|
}
|
|
}
|
|
printf ")\n"
|
|
}
|
|
}
|
|
# termlib may be named explicitly via "--with-termlib=XXX", which overrides
|
|
# any suffix. Temporarily override "suffix" to account for this.
|
|
function termlib_end_of() {
|
|
termlib_save_suffix = suffix;
|
|
suffix = TermlibSuffix;
|
|
termlib_temp_result = end_name_of(TermlibRoot);
|
|
suffix = termlib_save_suffix;
|
|
return termlib_temp_result;
|
|
}
|
|
function shlib_build(directory) {
|
|
dst_libs = sprintf("%s/%s", directory, end_name);
|
|
printf "%s : \\\n", dst_libs
|
|
printf "\t\t%s \\\n", directory
|
|
if (subset ~ /^base/ || subset == "ticlib" ) {
|
|
save_suffix = suffix
|
|
sub(/^[^.]\./,".",suffix)
|
|
if (directory != "../lib") {
|
|
printf "\t\t%s/%s \\\n", "../lib", termlib_end_of();
|
|
}
|
|
printf "\t\t%s/%s \\\n", directory, termlib_end_of();
|
|
suffix = save_suffix
|
|
}
|
|
printf "\t\t$(%s_OBJS)\n", OBJS
|
|
printf "\t@echo linking $@\n"
|
|
if ( is_ticlib() ) {
|
|
make_shlib(OBJS, "TICS_LIST")
|
|
} else if ( is_termlib() ) {
|
|
make_shlib(OBJS, "TINFO_LIST")
|
|
} else {
|
|
make_shlib(OBJS, "SHLIB_LIST")
|
|
}
|
|
sharedlinks(directory)
|
|
}
|
|
function shlib_install(directory) {
|
|
src_lib1 = sprintf("../lib/%s", end_name);
|
|
dst_lib1 = sprintf("%s/%s", directory, end_name);
|
|
printf "%s : \\\n", dst_lib1
|
|
printf "\t\t%s \\\n", directory
|
|
printf "\t\t%s\n", src_lib1
|
|
printf "\t@echo installing $@\n"
|
|
printf "\t$(INSTALL_LIB) %s %s\n", src_lib1, dst_lib1;
|
|
sharedlinks(directory)
|
|
}
|
|
function install_dll(directory,filename) {
|
|
src_name = sprintf("../lib/%s", filename);
|
|
dst_name = sprintf("$(DESTDIR)%s/%s", directory, filename);
|
|
printf "\t@echo installing %s as %s\n", src_name, dst_name
|
|
if ( directory == "$(bindir)" ) {
|
|
program = "$(INSTALL) -m 755";
|
|
} else {
|
|
program = "$(INSTALL_LIB)";
|
|
}
|
|
printf "\t%s %s %s\n", program, src_name, dst_name
|
|
}
|
|
BEGIN {
|
|
found = 0
|
|
using = 0
|
|
}
|
|
/^@/ {
|
|
using = 0
|
|
if (subset == "none") {
|
|
using = 1
|
|
} else if (index(subset,$2) > 0) {
|
|
if (using == 0) {
|
|
if (found == 0) {
|
|
print ""
|
|
printf "# generated by mk-1st.awk (subset=%s)\n", subset
|
|
printf "# name: %s\n", name
|
|
printf "# traces: %s\n", traces
|
|
printf "# MODEL: %s\n", MODEL
|
|
printf "# model: %s\n", model
|
|
printf "# prefix: %s\n", prefix
|
|
printf "# suffix: %s\n", suffix
|
|
printf "# subset: %s\n", subset
|
|
printf "# ShlibVer: %s\n", ShlibVer
|
|
printf "# ShlibVerInfix: %s\n", ShlibVerInfix
|
|
printf "# TermlibRoot: %s\n", TermlibRoot
|
|
printf "# TermlibSuffix: %s\n", TermlibSuffix
|
|
printf "# ReLink: %s\n", ReLink
|
|
printf "# DoLinks: %s\n", DoLinks
|
|
printf "# rmSoLocs: %s\n", rmSoLocs
|
|
printf "# ldconfig: %s\n", ldconfig
|
|
printf "# overwrite: %s\n", overwrite
|
|
printf "# depend: %s\n", depend
|
|
printf "# host: %s\n", host
|
|
print ""
|
|
}
|
|
using = 1
|
|
}
|
|
if ( is_ticlib() ) {
|
|
OBJS = MODEL "_P"
|
|
} else if ( is_termlib() ) {
|
|
OBJS = MODEL "_T"
|
|
} else {
|
|
OBJS = MODEL
|
|
}
|
|
}
|
|
}
|
|
/^[@#]/ {
|
|
next
|
|
}
|
|
$1 ~ /trace/ {
|
|
if (traces != "all" && traces != MODEL && $1 != "lib_trace")
|
|
next
|
|
}
|
|
{
|
|
if (using \
|
|
&& ( $1 != "link_test" ) \
|
|
&& ( $2 == "lib" \
|
|
|| $2 == "progs" \
|
|
|| $2 == "c++" \
|
|
|| $2 == "tack" ))
|
|
{
|
|
if ( found == 0 )
|
|
{
|
|
printf "%s_OBJS =", OBJS
|
|
if ( $2 == "lib" )
|
|
found = 1
|
|
else
|
|
found = 2
|
|
}
|
|
printf " \\\n\t../%s/%s$o", model, $1
|
|
}
|
|
}
|
|
END {
|
|
print ""
|
|
if ( found != 0 )
|
|
{
|
|
printf "\n$(%s_OBJS) : %s\n", OBJS, depend
|
|
}
|
|
if ( found == 1 )
|
|
{
|
|
print ""
|
|
lib_name = lib_name_of(name);
|
|
if ( MODEL == "SHARED" )
|
|
{
|
|
abi_name = abi_name_of(name);
|
|
rel_name = rel_name_of(name);
|
|
imp_name = imp_name_of(name);
|
|
end_name = end_name_of(name);
|
|
|
|
shlib_build("../lib")
|
|
|
|
print ""
|
|
print "install \\"
|
|
print "install.libs \\"
|
|
|
|
if ( ShlibVer == "cygdll" ) {
|
|
|
|
dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)";
|
|
printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs
|
|
install_dll("$(bindir)",end_name);
|
|
install_dll("$(libdir)",imp_name);
|
|
|
|
} else {
|
|
|
|
lib_dir = "$(DESTDIR)$(libdir)";
|
|
printf "install.%s :: %s/%s\n", name, lib_dir, end_name
|
|
print ""
|
|
if ( ReLink == "yes" ) {
|
|
shlib_build(lib_dir)
|
|
} else {
|
|
shlib_install(lib_dir)
|
|
}
|
|
}
|
|
|
|
if ( overwrite == "yes" && name == "ncurses" )
|
|
{
|
|
if ( ShlibVer == "cygdll" ) {
|
|
ovr_name = sprintf("libcurses%s.a", suffix)
|
|
printf "\t@echo linking %s to %s\n", imp_name, ovr_name
|
|
printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, imp_name, ovr_name
|
|
} else {
|
|
ovr_name = sprintf("libcurses%s", suffix)
|
|
printf "\t@echo linking %s to %s\n", end_name, ovr_name
|
|
printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
|
|
}
|
|
}
|
|
if ( ldconfig != "" && ldconfig != ":" ) {
|
|
printf "\t- test -z \"$(DESTDIR)\" && %s\n", ldconfig
|
|
}
|
|
print ""
|
|
print "uninstall \\"
|
|
print "uninstall.libs \\"
|
|
printf "uninstall.%s ::\n", name
|
|
if ( ShlibVer == "cygdll" ) {
|
|
|
|
printf "\t@echo uninstalling $(DESTDIR)$(bindir)/%s\n", end_name
|
|
printf "\t-@rm -f $(DESTDIR)$(bindir)/%s\n", end_name
|
|
|
|
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", imp_name
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", imp_name
|
|
|
|
} else {
|
|
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", end_name
|
|
removelinks("$(DESTDIR)$(libdir)")
|
|
if ( overwrite == "yes" && name == "ncurses" )
|
|
{
|
|
if ( ShlibVer == "cygdll" ) {
|
|
ovr_name = sprintf("libcurses%s.a", suffix)
|
|
} else {
|
|
ovr_name = sprintf("libcurses%s", suffix)
|
|
}
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name
|
|
}
|
|
}
|
|
if ( rmSoLocs == "yes" ) {
|
|
print ""
|
|
print "mostlyclean \\"
|
|
print "clean ::"
|
|
printf "\t-@rm -f so_locations\n"
|
|
}
|
|
}
|
|
else if ( MODEL == "LIBTOOL" )
|
|
{
|
|
if ( $2 == "c++" ) {
|
|
compile="CXX"
|
|
} else {
|
|
compile="CC"
|
|
}
|
|
end_name = lib_name;
|
|
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
|
|
if ( is_ticlib() ) {
|
|
printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TICS_LIST)\n", compile, lib_name, OBJS, libtool_version
|
|
} else if ( is_termlib() ) {
|
|
printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TINFO_LIST)\n", compile, lib_name, OBJS, libtool_version
|
|
} else {
|
|
printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(SHLIB_LIST)\n", compile, lib_name, OBJS, libtool_version
|
|
}
|
|
print ""
|
|
print "install \\"
|
|
print "install.libs \\"
|
|
printf "install.%s :: $(DESTDIR)$(libdir) ../lib/%s\n", name, lib_name
|
|
printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name
|
|
printf "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(DESTDIR)$(libdir)\n", lib_name
|
|
print ""
|
|
print "uninstall \\"
|
|
print "uninstall.libs \\"
|
|
printf "uninstall.%s ::\n", name
|
|
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name
|
|
printf "\t-@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
|
|
}
|
|
else
|
|
{
|
|
end_name = lib_name;
|
|
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
|
|
printf "\t$(AR) $(ARFLAGS) $@ $?\n"
|
|
printf "\t$(RANLIB) $@\n"
|
|
if ( host == "vxworks" )
|
|
{
|
|
printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=$o)\n"
|
|
}
|
|
print ""
|
|
print "install \\"
|
|
print "install.libs \\"
|
|
printf "install.%s :: $(DESTDIR)$(libdir) ../lib/%s\n", name, lib_name
|
|
printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name
|
|
printf "\t$(INSTALL_DATA) ../lib/%s $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name
|
|
if ( overwrite == "yes" && lib_name == "libncurses.a" )
|
|
{
|
|
printf "\t@echo linking libcurses.a to libncurses.a\n"
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n"
|
|
printf "\t(cd $(DESTDIR)$(libdir) && $(LN_S) libncurses.a libcurses.a)\n"
|
|
}
|
|
printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name
|
|
if ( host == "vxworks" )
|
|
{
|
|
printf "\t@echo installing ../lib/lib%s$o as $(DESTDIR)$(libdir)/lib%s$o\n", name, name
|
|
printf "\t$(INSTALL_DATA) ../lib/lib%s$o $(DESTDIR)$(libdir)/lib%s$o\n", name, name
|
|
}
|
|
print ""
|
|
print "uninstall \\"
|
|
print "uninstall.libs \\"
|
|
printf "uninstall.%s ::\n", name
|
|
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
|
|
if ( overwrite == "yes" && lib_name == "libncurses.a" )
|
|
{
|
|
printf "\t@echo linking libcurses.a to libncurses.a\n"
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n"
|
|
}
|
|
if ( host == "vxworks" )
|
|
{
|
|
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/lib%s$o\n", name
|
|
printf "\t-@rm -f $(DESTDIR)$(libdir)/lib%s$o\n", name
|
|
}
|
|
}
|
|
print ""
|
|
print "clean ::"
|
|
removelinks("../lib");
|
|
print ""
|
|
print "mostlyclean::"
|
|
printf "\t-rm -f $(%s_OBJS)\n", OBJS
|
|
if ( MODEL == "LIBTOOL" ) {
|
|
printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
|
|
}
|
|
}
|
|
else if ( found == 2 )
|
|
{
|
|
print ""
|
|
print "mostlyclean::"
|
|
printf "\t-rm -f $(%s_OBJS)\n", OBJS
|
|
if ( MODEL == "LIBTOOL" ) {
|
|
printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
|
|
}
|
|
print ""
|
|
print "clean ::"
|
|
printf "\t-rm -f $(%s_OBJS)\n", OBJS
|
|
if ( MODEL == "LIBTOOL" ) {
|
|
printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
|
|
}
|
|
}
|
|
}
|
|
# vile:ts=4 sw=4
|