X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=mk-1st.awk;h=1b88127f88201fb63632b4012a8a428ca97839be;hp=da23aeaff6cd08fe9e9189b7a6aa9349112a7bbd;hb=87f20fc6e737084b06b6343c8c7206404daec4a2;hpb=e2d7d0028f4298dca2b0edaf2dc8ce30518d9218;ds=inline diff --git a/mk-1st.awk b/mk-1st.awk index da23aeaf..1b88127f 100644 --- a/mk-1st.awk +++ b/mk-1st.awk @@ -1,4 +1,4 @@ -# $Id: mk-1st.awk,v 1.90 2013/03/10 00:09:14 tom Exp $ +# $Id: mk-1st.awk,v 1.98 2014/12/20 23:54:22 tom Exp $ ############################################################################## # Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. # # # @@ -71,7 +71,7 @@ function lib_name_of(a_name) { } # see imp_name function imp_name_of(a_name) { - if (ShlibVerInfix == "cygdll" || ShlibVerInfix == "mingw") { + if (ShlibVerInfix == "cygdll" || ShlibVerInfix == "msysdll" || ShlibVerInfix == "mingw") { result = sprintf("%s%s%s.a", prefix, a_name, suffix); } else { result = ""; @@ -82,6 +82,8 @@ function imp_name_of(a_name) { function abi_name_of(a_name) { if (ShlibVerInfix == "cygdll") { result = sprintf("%s%s$(ABI_VERSION)%s", "cyg", a_name, suffix); + } else if (ShlibVerInfix == "msysdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix); } else if (ShlibVerInfix == "mingw") { result = sprintf("%s%s$(ABI_VERSION)%s", prefix, a_name, suffix); } else if (ShlibVerInfix == "yes") { @@ -95,6 +97,8 @@ function abi_name_of(a_name) { function rel_name_of(a_name) { if (ShlibVerInfix == "cygdll") { result = sprintf("%s%s$(REL_VERSION)%s", "cyg", a_name, suffix); + } else if (ShlibVerInfix == "msysdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix); } else if (ShlibVerInfix == "mingw") { result = sprintf("%s%s$(REL_VERSION)%s", prefix, a_name, suffix); } else if (ShlibVerInfix == "yes") { @@ -113,7 +117,7 @@ function end_name_of(a_name) { } else { if ( ShlibVer == "rel" ) { result = rel_name_of(a_name); - } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" || ShlibVer == "mingw" ) { + } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" ) { result = abi_name_of(a_name); } else { result = lib_name_of(a_name); @@ -130,23 +134,38 @@ function symlink(src,dst) { } } function rmlink(directory, dst) { - printf "\t-rm -f %s/%s\n", directory, dst + if ( dst != "" ) { + printf "\t-rm -f %s/%s\n", directory, dst + } } function removelinks(directory) { - rmlink(directory, end_name); + nlinks = 0; + links[nlinks++] = end_name; if ( DoLinks == "reverse" ) { if ( ShlibVer == "rel" ) { - rmlink(directory, abi_name); - rmlink(directory, rel_name); + links[nlinks++] = abi_name; + links[nlinks++] = rel_name; } else if ( ShlibVer == "abi" ) { - rmlink(directory, abi_name); + links[nlinks++] = abi_name; } } else { if ( ShlibVer == "rel" ) { - rmlink(directory, abi_name); - rmlink(directory, lib_name); + links[nlinks++] = abi_name; + links[nlinks++] = lib_name; } else if ( ShlibVer == "abi" ) { - rmlink(directory, lib_name); + links[nlinks++] = lib_name; + } + } + for (j = 0; j < nlinks; ++j) { + found = 0; + for (k = 0; k < j; ++k ) { + if ( links[j] == links[k] ) { + found = 1; + break; + } + } + if ( !found ) { + rmlink(directory, links[j]); } } } @@ -154,7 +173,7 @@ 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" && ShlibVer != "mingw" ) { + if ( ShlibVer != "auto" && ShlibVer != "cygdll" && ShlibVer != "msysdll" && ShlibVer != "mingw" ) { printf "\tcd %s && (", directory if ( DoLinks == "reverse" ) { if ( ShlibVer == "rel" ) { @@ -201,7 +220,7 @@ function shlib_build(directory) { printf "\t\t%s/%s \\\n", directory, termlib_end_of(); suffix = save_suffix } - printf "\t\t$(%s_OBJS)\n", OBJS + printf "\t\t$(RESULTING_SYMS) $(%s_OBJS)\n", OBJS printf "\t@echo linking $@\n" if ( is_ticlib() ) { make_shlib(OBJS, "TICS_LIST") @@ -234,8 +253,9 @@ function install_dll(directory,filename) { printf "\t%s %s %s\n", program, src_name, dst_name } BEGIN { - found = 0 - using = 0 + TOOL_PREFIX = ""; + found = 0; + using = 0; } /^@/ { using = 0 @@ -244,6 +264,15 @@ BEGIN { } else if (index(subset,$2) > 0) { if (using == 0) { if (found == 0) { + if ( name ~ /^.*\+\+.*/ ) { + if ( CXX_MODEL == "NORMAL" && MODEL == "SHARED" ) { + print "" + printf "# overriding model from %s to match CXX_MODEL\n", MODEL; + MODEL = "NORMAL"; + suffix = ".a"; + DoLinks = "no"; + } + } print "" printf "# generated by mk-1st.awk (subset=%s)\n", subset printf "# name: %s\n", name @@ -300,11 +329,19 @@ BEGIN { printf "%s_OBJS =", OBJS if ( $2 == "lib" ) { found = 1; - } else if ( $2 == "c++" && CXX_MODEL == "SHARED" ) { + } else if ( $2 == "c++" ) { + TOOL_PREFIX = "CXX_"; found = 1; } else { found = 2; } + if ( $2 == "c++" ) { + CC_NAME="CXX" + CC_FLAG="CXXFLAGS" + } else { + CC_NAME="CC" + CC_FLAG="CFLAGS" + } } printf " \\\n\t../%s/%s$o", model, $1; } @@ -332,7 +369,7 @@ END { print "install \\" print "install.libs \\" - if ( ShlibVer == "cygdll" || ShlibVer == "mingw") { + if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") { dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)"; printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs @@ -353,7 +390,7 @@ END { if ( overwrite == "yes" && name == "ncurses" ) { - if ( ShlibVer == "cygdll" || ShlibVer == "mingw") { + if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") { ovr_name = sprintf("libcurses%s.a", suffix) printf "\t@echo linking %s to %s\n", imp_name, ovr_name printf "\tcd $(DESTDIR)$(libdir) && (" @@ -374,7 +411,7 @@ END { print "uninstall \\" print "uninstall.libs \\" printf "uninstall.%s ::\n", name - if ( ShlibVer == "cygdll" || ShlibVer == "mingw") { + if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") { printf "\t@echo uninstalling $(DESTDIR)$(bindir)/%s\n", end_name printf "\t-@rm -f $(DESTDIR)$(bindir)/%s\n", end_name @@ -400,11 +437,6 @@ END { } 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() ) { @@ -414,7 +446,10 @@ END { } else { which_list = "SHLIB_LIST"; } - printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(%s) $(LDFLAGS)\n", compile, lib_name, OBJS, libtool_version, which_list + printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) $(%s) \\\n", CC_NAME, CC_FLAG; + printf "\t\t-o %s $(%s_OBJS:$o=.lo) \\\n", lib_name, OBJS; + printf "\t\t-rpath $(DESTDIR)$(libdir) \\\n"; + printf "\t\t%s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(%s) $(LDFLAGS)\n", libtool_version, which_list; print "" print "install \\" print "install.libs \\" @@ -432,7 +467,7 @@ END { { end_name = lib_name; printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS - printf "\t$(AR) $(ARFLAGS) $@ $?\n" + printf "\t$(%sAR) $(%sARFLAGS) $@ $?\n", TOOL_PREFIX, TOOL_PREFIX; printf "\t$(RANLIB) $@\n" if ( host == "vxworks" ) {