diff --git a/qse/cmd/awk/Makefile.am b/qse/cmd/awk/Makefile.am index 1c39b837..2f439318 100644 --- a/qse/cmd/awk/Makefile.am +++ b/qse/cmd/awk/Makefile.am @@ -7,7 +7,7 @@ AM_CPPFLAGS = \ if WIN32 # you must adjust the value of DEFAULT_MODPOSTFIX according to -# -version-info in ../../mod/awk/Makefile.am +# -version-info in ../../lib/awk/Makefile.am AM_CPPFLAGS += -DDEFAULT_MODPREFIX=\"libqseawk-\" -DDEFAULT_MODPOSTFIX=\"-1\" else AM_CPPFLAGS += -DDEFAULT_MODPREFIX=\"$(libdir)/libqseawk-\" -DDEFAULT_MODPOSTFIX=\"\" @@ -19,7 +19,7 @@ bin_PROGRAMS = qseawk qseawk_SOURCES = awk.c qseawk_LDFLAGS = -L../../lib/awk -L../../lib/cmn -L$(libdir) -qseawk_LDADD = -lqseawk -lqsecmn $(LIBM) $(LIBLTDL) +qseawk_LDADD = -lqseawk -lqsecmn $(LIBM) $(LIBLTDL) if WIN32 if WCHAR diff --git a/qse/cmd/awk/Makefile.in b/qse/cmd/awk/Makefile.in index 1647bb15..8c9ed082 100644 --- a/qse/cmd/awk/Makefile.in +++ b/qse/cmd/awk/Makefile.in @@ -36,7 +36,7 @@ build_triplet = @build@ host_triplet = @host@ # you must adjust the value of DEFAULT_MODPOSTFIX according to -# -version-info in ../../mod/awk/Makefile.am +# -version-info in ../../lib/awk/Makefile.am @WIN32_TRUE@am__append_1 = -DDEFAULT_MODPREFIX=\"libqseawk-\" -DDEFAULT_MODPOSTFIX=\"-1\" @WIN32_FALSE@am__append_2 = -DDEFAULT_MODPREFIX=\"$(libdir)/libqseawk-\" -DDEFAULT_MODPOSTFIX=\"\" bin_PROGRAMS = qseawk$(EXEEXT) diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index 690f4415..0ca285bf 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -1179,8 +1179,8 @@ static void open_mpi (mpi_t* mpi, int argc, qse_achar_t* argv[]) if (mpi->h) { - mpi->i = lt_dlsym (mpi->h, "mpi_init"); - mpi->f = lt_dlsym (mpi->h, "mpi_fini"); + mpi->i = lt_dlsym (mpi->h, "qse_awk_mod_mpi_init"); + mpi->f = lt_dlsym (mpi->h, "qse_awk_mod_mpi_fini"); if (mpi->i == QSE_NULL || mpi->f == QSE_NULL || diff --git a/qse/configure b/qse/configure index 04a86609..1b7da14c 100755 --- a/qse/configure +++ b/qse/configure @@ -636,6 +636,8 @@ QSE_SIZEOF_INT QSE_SIZEOF_LONG QSE_SIZEOF_LONG_LONG QSE_SIZEOF_WCHAR_T +ENABLE_STATIC_MODULE_FALSE +ENABLE_STATIC_MODULE_TRUE PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC @@ -20257,11 +20259,14 @@ else fi if test "${ac_cv_header_wctype_h}" = "no" -o "${ac_cv_func_wctrans}" = "no" -o "${ac_cv_func_wctype}" = "no" +then + enable_bundled_unicode_is=yes +fi +if test "${enable_bundled_unicode_is}" = "yes" then $as_echo "#define QSE_ENABLE_BUNDLED_UNICODE /**/" >>confdefs.h - enable_bundled_unicode_is=yes fi if test "${enable_bundled_unicode_is}" = "yes"; then ENABLE_BUNDLED_UNICODE_TRUE= @@ -20796,6 +20801,21 @@ $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if test "${enable_shared}" = "no" -a "${enable_static}" = "yes" +then + +$as_echo "#define QSE_ENABLE_STATIC_MODULE /**/" >>confdefs.h + +fi + if test "${enable_shared}" = "no" -a "${enable_static}" = "yes"; then + ENABLE_STATIC_MODULE_TRUE= + ENABLE_STATIC_MODULE_FALSE='#' +else + ENABLE_STATIC_MODULE_TRUE='#' + ENABLE_STATIC_MODULE_FALSE= +fi + + QSE_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t QSE_SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long @@ -21011,6 +21031,10 @@ if test -z "${ENABLE_CXX_TRUE}" && test -z "${ENABLE_CXX_FALSE}"; then as_fn_error $? "conditional \"ENABLE_CXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_STATIC_MODULE_TRUE}" && test -z "${ENABLE_STATIC_MODULE_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_STATIC_MODULE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 diff --git a/qse/configure.ac b/qse/configure.ac index b7f0bc7f..cc591466 100644 --- a/qse/configure.ac +++ b/qse/configure.ac @@ -427,9 +427,13 @@ AC_ARG_ENABLE([bundled-unicode], [AS_HELP_STRING([--enable-bundled-unicode],[use enable_bundled_unicode_is=$enableval,enable_bundled_unicode_is=yes) if test "${ac_cv_header_wctype_h}" = "no" -o "${ac_cv_func_wctrans}" = "no" -o "${ac_cv_func_wctype}" = "no" then - AC_DEFINE([QSE_ENABLE_BUNDLED_UNICODE],[],[use the bundled unicode routines]) + dnl force bundled-unicode to yes if some wchar functions are not available enable_bundled_unicode_is=yes fi +if test "${enable_bundled_unicode_is}" = "yes" +then + AC_DEFINE([QSE_ENABLE_BUNDLED_UNICODE],[],[use the bundled unicode routines]) +fi AM_CONDITIONAL(ENABLE_BUNDLED_UNICODE, test "${enable_bundled_unicode_is}" = "yes") AC_ARG_ENABLE([xcmgrs], [AS_HELP_STRING([--enable-xcmgrs],[include more built-in cmgrs like cp949 and cp950 when enabled (default. yes)])], @@ -490,6 +494,12 @@ AC_TRY_COMPILE([#define _POSIX_PII_SOCKET [AC_MSG_RESULT(no)] ) +if test "${enable_shared}" = "no" -a "${enable_static}" = "yes" +then + AC_DEFINE([QSE_ENABLE_STATIC_MODULE],[],[link modules statically into the main library]) +fi +AM_CONDITIONAL(ENABLE_STATIC_MODULE, test "${enable_shared}" = "no" -a "${enable_static}" = "yes") + AC_SUBST(QSE_SIZEOF_WCHAR_T, $ac_cv_sizeof_wchar_t) AC_SUBST(QSE_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long) AC_SUBST(QSE_SIZEOF_LONG, $ac_cv_sizeof_long) diff --git a/qse/include/qse/awk/awk.h b/qse/include/qse/awk/awk.h index a7b77940..ac5fad32 100644 --- a/qse/include/qse/awk/awk.h +++ b/qse/include/qse/awk/awk.h @@ -1189,7 +1189,8 @@ enum qse_awk_errnum_t QSE_AWK_EGBLTM, /**< too many global variables */ QSE_AWK_ELCLTM, /**< too many local variables */ QSE_AWK_EPARTM, /**< too many parameters */ - QSE_AWK_ESEGTM, /**< too many identifier segments */ + QSE_AWK_ESEGTM, /**< too many segments */ + QSE_AWK_ESEGTL, /**< segment '${0}' too long */ QSE_AWK_EBADARG, /**< bad argument */ QSE_AWK_ENOARG, /**< no argument */ QSE_AWK_EBREAK, /**< 'break' outside a loop */ diff --git a/qse/include/qse/conf-dos.h b/qse/include/qse/conf-dos.h index 77d12dd7..9c64276f 100644 --- a/qse/include/qse/conf-dos.h +++ b/qse/include/qse/conf-dos.h @@ -112,4 +112,7 @@ # error Define the size of various data types. #endif +/* well, supporting dynamic modules in DOS is nearly impossible */ +#define QSE_ENABLE_STATIC_MODULE 1 + #include diff --git a/qse/include/qse/config.h.in b/qse/include/qse/config.h.in index d9c3c013..491ebf7d 100644 --- a/qse/include/qse/config.h.in +++ b/qse/include/qse/config.h.in @@ -637,6 +637,9 @@ /* enable qse_sed_setexectracer() */ #undef QSE_ENABLE_SEDTRACER +/* link modules statically into the main library */ +#undef QSE_ENABLE_STATIC_MODULE + /* include more built-in cmgrs like cp949 and cp950 */ #undef QSE_ENABLE_XCMGRS diff --git a/qse/lib/awk/Makefile.am b/qse/lib/awk/Makefile.am index 62818ae4..f17df458 100644 --- a/qse/lib/awk/Makefile.am +++ b/qse/lib/awk/Makefile.am @@ -16,8 +16,8 @@ LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) LIBADD_LIB_COMMON = -lqsecmn $(LIBM) $(LIBLTDL) if WIN32 -# you must adjust the value of DEFAULT_MODPOSTFIX according to -# -version-info in mod/awk/Makefile.am +# you must adjust the value of DEFAULT_MODPOSTFIX according +# to the first number in -version-info above CPPFLAGS_LIB_COMMON += -DQSE_AWK_DEFAULT_MODPREFIX=\"libqseawk-\" -DQSE_AWK_DEFAULT_MODPOSTFIX=\"-1\" else CPPFLAGS_LIB_COMMON += -DQSE_AWK_DEFAULT_MODPREFIX=\"$(libdir)/libqseawk-\" -DQSE_AWK_DEFAULT_MODPOSTFIX=\"\" @@ -37,8 +37,30 @@ libqseawkxx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) libqseawkxx_la_LIBADD = -lqseawk -lqsecmnxx $(LIBADD_LIB_COMMON) endif +if ENABLE_STATIC_MODULE + ################################################## -# MODULES +# STATIC MODULES BUILT INTO MAIN LIBRARY +################################################## +libqseawk_la_SOURCES += \ + mod-dir.c mod-dir.h \ + mod-str.c mod-str.h \ + mod-sys.c mod-sys.h + +if HAVE_C_MPI +libqseawk_la_SOURCES += mod-mpi.c mod-mpi.h +libqseawk_la_CPPFLAGS += $(MPI_CFLAGS) +libqseawk_la_LDFLAGS += $(MPI_CLDFLAGS) +endif + +if HAVE_LIBUCI +libqseawk_la_SOURCES += mod-uci.c mod-uci.h +libqseawk_la_LIBADD += $(UCI_LIBS) +endif + +else +################################################## +# DYNAMIC MODULES ################################################## CPPFLAGS_MOD_COMMON = $(CPPFLAGS_ALL_COMMON) @@ -48,26 +70,26 @@ LIBADD_MOD_COMMON = -lqseawk -lqsecmn moddir = $(libdir) mod_LTLIBRARIES = libqseawk-dir.la -libqseawk_dir_la_SOURCES = mod-dir.c +libqseawk_dir_la_SOURCES = mod-dir.c mod-dir.h libqseawk_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) libqseawk_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) libqseawk_dir_la_LIBADD = $(LIBADD_MOD_COMMON) mod_LTLIBRARIES += libqseawk-str.la -libqseawk_str_la_SOURCES = mod-str.c +libqseawk_str_la_SOURCES = mod-str.c mod-str.h libqseawk_str_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) libqseawk_str_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) libqseawk_str_la_LIBADD = $(LIBADD_MOD_COMMON) mod_LTLIBRARIES += libqseawk-sys.la -libqseawk_sys_la_SOURCES = mod-sys.c +libqseawk_sys_la_SOURCES = mod-sys.c mod-sys.h libqseawk_sys_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) libqseawk_sys_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) libqseawk_sys_la_LIBADD = $(LIBADD_MOD_COMMON) if HAVE_C_MPI mod_LTLIBRARIES += libqseawk-mpi.la -libqseawk_mpi_la_SOURCES = mod-mpi.c +libqseawk_mpi_la_SOURCES = mod-mpi.c mod-mpi.h libqseawk_mpi_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) $(MPI_CFLAGS) libqseawk_mpi_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) $(MPI_CLDFLAGS) libqseawk_mpi_la_LIBADD = $(LIBADD_MOD_COMMON) @@ -75,10 +97,10 @@ endif if HAVE_LIBUCI mod_LTLIBRARIES += libqseawk-uci.la -libqseawk_uci_la_SOURCES = mod-uci.c +libqseawk_uci_la_SOURCES = mod-uci.c mod-uci.h libqseawk_uci_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) libqseawk_uci_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) libqseawk_uci_la_LIBADD = $(LIBADD_MOD_COMMON) $(UCI_LIBS) endif - +endif diff --git a/qse/lib/awk/Makefile.in b/qse/lib/awk/Makefile.in index b72068a6..732b94e3 100644 --- a/qse/lib/awk/Makefile.in +++ b/qse/lib/awk/Makefile.in @@ -35,13 +35,27 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -# you must adjust the value of DEFAULT_MODPOSTFIX according to -# -version-info in mod/awk/Makefile.am +# you must adjust the value of DEFAULT_MODPOSTFIX according +# to the first number in -version-info above @WIN32_TRUE@am__append_1 = -DQSE_AWK_DEFAULT_MODPREFIX=\"libqseawk-\" -DQSE_AWK_DEFAULT_MODPOSTFIX=\"-1\" @WIN32_FALSE@am__append_2 = -DQSE_AWK_DEFAULT_MODPREFIX=\"$(libdir)/libqseawk-\" -DQSE_AWK_DEFAULT_MODPOSTFIX=\"\" @ENABLE_CXX_TRUE@am__append_3 = libqseawkxx.la -@HAVE_C_MPI_TRUE@am__append_4 = libqseawk-mpi.la -@HAVE_LIBUCI_TRUE@am__append_5 = libqseawk-uci.la + +################################################## +# STATIC MODULES BUILT INTO MAIN LIBRARY +################################################## +@ENABLE_STATIC_MODULE_TRUE@am__append_4 = \ +@ENABLE_STATIC_MODULE_TRUE@ mod-dir.c mod-dir.h \ +@ENABLE_STATIC_MODULE_TRUE@ mod-str.c mod-str.h \ +@ENABLE_STATIC_MODULE_TRUE@ mod-sys.c mod-sys.h + +@ENABLE_STATIC_MODULE_TRUE@@HAVE_C_MPI_TRUE@am__append_5 = mod-mpi.c mod-mpi.h +@ENABLE_STATIC_MODULE_TRUE@@HAVE_C_MPI_TRUE@am__append_6 = $(MPI_CFLAGS) +@ENABLE_STATIC_MODULE_TRUE@@HAVE_C_MPI_TRUE@am__append_7 = $(MPI_CLDFLAGS) +@ENABLE_STATIC_MODULE_TRUE@@HAVE_LIBUCI_TRUE@am__append_8 = mod-uci.c mod-uci.h +@ENABLE_STATIC_MODULE_TRUE@@HAVE_LIBUCI_TRUE@am__append_9 = $(UCI_LIBS) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@am__append_10 = libqseawk-mpi.la +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@am__append_11 = libqseawk-uci.la subdir = lib/awk DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -87,50 +101,77 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(moddir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(mod_LTLIBRARIES) am__DEPENDENCIES_1 = -libqseawk_dir_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libqseawk_dir_la_OBJECTS = libqseawk_dir_la-mod-dir.lo +@ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_DEPENDENCIES = \ +@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) +am__libqseawk_dir_la_SOURCES_DIST = mod-dir.c mod-dir.h +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_dir_la_OBJECTS = \ +@ENABLE_STATIC_MODULE_FALSE@ libqseawk_dir_la-mod-dir.lo libqseawk_dir_la_OBJECTS = $(am_libqseawk_dir_la_OBJECTS) libqseawk_dir_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_dir_la_LDFLAGS) $(LDFLAGS) -o $@ -@HAVE_C_MPI_TRUE@libqseawk_mpi_la_DEPENDENCIES = \ -@HAVE_C_MPI_TRUE@ $(am__DEPENDENCIES_1) -am__libqseawk_mpi_la_SOURCES_DIST = mod-mpi.c -@HAVE_C_MPI_TRUE@am_libqseawk_mpi_la_OBJECTS = \ -@HAVE_C_MPI_TRUE@ libqseawk_mpi_la-mod-mpi.lo +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_dir_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_FALSE@ $(moddir) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__libqseawk_mpi_la_SOURCES_DIST = mod-mpi.c mod-mpi.h +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@am_libqseawk_mpi_la_OBJECTS = libqseawk_mpi_la-mod-mpi.lo libqseawk_mpi_la_OBJECTS = $(am_libqseawk_mpi_la_OBJECTS) libqseawk_mpi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_mpi_la_LDFLAGS) $(LDFLAGS) -o $@ -@HAVE_C_MPI_TRUE@am_libqseawk_mpi_la_rpath = -rpath $(moddir) -libqseawk_str_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libqseawk_str_la_OBJECTS = libqseawk_str_la-mod-str.lo +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@am_libqseawk_mpi_la_rpath = \ +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@ -rpath $(moddir) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_str_la_DEPENDENCIES = \ +@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) +am__libqseawk_str_la_SOURCES_DIST = mod-str.c mod-str.h +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_str_la_OBJECTS = \ +@ENABLE_STATIC_MODULE_FALSE@ libqseawk_str_la-mod-str.lo libqseawk_str_la_OBJECTS = $(am_libqseawk_str_la_OBJECTS) libqseawk_str_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_str_la_LDFLAGS) $(LDFLAGS) -o $@ -libqseawk_sys_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libqseawk_sys_la_OBJECTS = libqseawk_sys_la-mod-sys.lo +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_str_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_FALSE@ $(moddir) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_sys_la_DEPENDENCIES = \ +@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) +am__libqseawk_sys_la_SOURCES_DIST = mod-sys.c mod-sys.h +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_sys_la_OBJECTS = \ +@ENABLE_STATIC_MODULE_FALSE@ libqseawk_sys_la-mod-sys.lo libqseawk_sys_la_OBJECTS = $(am_libqseawk_sys_la_OBJECTS) libqseawk_sys_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_sys_la_LDFLAGS) $(LDFLAGS) -o $@ -@HAVE_LIBUCI_TRUE@libqseawk_uci_la_DEPENDENCIES = \ -@HAVE_LIBUCI_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__libqseawk_uci_la_SOURCES_DIST = mod-uci.c -@HAVE_LIBUCI_TRUE@am_libqseawk_uci_la_OBJECTS = \ -@HAVE_LIBUCI_TRUE@ libqseawk_uci_la-mod-uci.lo +@ENABLE_STATIC_MODULE_FALSE@am_libqseawk_sys_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_FALSE@ $(moddir) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@libqseawk_uci_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@ $(am__DEPENDENCIES_1) +am__libqseawk_uci_la_SOURCES_DIST = mod-uci.c mod-uci.h +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@am_libqseawk_uci_la_OBJECTS = libqseawk_uci_la-mod-uci.lo libqseawk_uci_la_OBJECTS = $(am_libqseawk_uci_la_OBJECTS) libqseawk_uci_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_uci_la_LDFLAGS) $(LDFLAGS) -o $@ -@HAVE_LIBUCI_TRUE@am_libqseawk_uci_la_rpath = -rpath $(moddir) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@am_libqseawk_uci_la_rpath = \ +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@ -rpath $(moddir) am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -libqseawk_la_DEPENDENCIES = $(am__DEPENDENCIES_2) +@ENABLE_STATIC_MODULE_TRUE@@HAVE_LIBUCI_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) +libqseawk_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_3) +am__libqseawk_la_SOURCES_DIST = awk.c err.c tree.c parse.c run.c rec.c \ + val.c fnc.c misc.c rio.c std.c awk.h err.h rio.h val.h fnc.h \ + misc.h parse.h run.h tree.h mod-dir.c mod-dir.h mod-str.c \ + mod-str.h mod-sys.c mod-sys.h mod-mpi.c mod-mpi.h mod-uci.c \ + mod-uci.h +@ENABLE_STATIC_MODULE_TRUE@am__objects_1 = libqseawk_la-mod-dir.lo \ +@ENABLE_STATIC_MODULE_TRUE@ libqseawk_la-mod-str.lo \ +@ENABLE_STATIC_MODULE_TRUE@ libqseawk_la-mod-sys.lo +@ENABLE_STATIC_MODULE_TRUE@@HAVE_C_MPI_TRUE@am__objects_2 = libqseawk_la-mod-mpi.lo +@ENABLE_STATIC_MODULE_TRUE@@HAVE_LIBUCI_TRUE@am__objects_3 = libqseawk_la-mod-uci.lo am_libqseawk_la_OBJECTS = libqseawk_la-awk.lo libqseawk_la-err.lo \ libqseawk_la-tree.lo libqseawk_la-parse.lo libqseawk_la-run.lo \ libqseawk_la-rec.lo libqseawk_la-val.lo libqseawk_la-fnc.lo \ - libqseawk_la-misc.lo libqseawk_la-rio.lo libqseawk_la-std.lo + libqseawk_la-misc.lo libqseawk_la-rio.lo libqseawk_la-std.lo \ + $(am__objects_1) $(am__objects_2) $(am__objects_3) libqseawk_la_OBJECTS = $(am_libqseawk_la_OBJECTS) libqseawk_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @@ -170,10 +211,12 @@ SOURCES = $(libqseawk_dir_la_SOURCES) $(libqseawk_mpi_la_SOURCES) \ $(libqseawk_str_la_SOURCES) $(libqseawk_sys_la_SOURCES) \ $(libqseawk_uci_la_SOURCES) $(libqseawk_la_SOURCES) \ $(libqseawkxx_la_SOURCES) -DIST_SOURCES = $(libqseawk_dir_la_SOURCES) \ +DIST_SOURCES = $(am__libqseawk_dir_la_SOURCES_DIST) \ $(am__libqseawk_mpi_la_SOURCES_DIST) \ - $(libqseawk_str_la_SOURCES) $(libqseawk_sys_la_SOURCES) \ - $(am__libqseawk_uci_la_SOURCES_DIST) $(libqseawk_la_SOURCES) \ + $(am__libqseawk_str_la_SOURCES_DIST) \ + $(am__libqseawk_sys_la_SOURCES_DIST) \ + $(am__libqseawk_uci_la_SOURCES_DIST) \ + $(am__libqseawk_la_SOURCES_DIST) \ $(am__libqseawkxx_la_SOURCES_DIST) ETAGS = etags CTAGS = ctags @@ -367,44 +410,48 @@ CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(LTDLINCL) \ LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) LIBADD_LIB_COMMON = -lqsecmn $(LIBM) $(LIBLTDL) lib_LTLIBRARIES = libqseawk.la $(am__append_3) -libqseawk_la_SOURCES = awk.c err.c tree.c parse.c run.c rec.c val.c fnc.c misc.c rio.c std.c awk.h err.h rio.h val.h fnc.h misc.h parse.h run.h tree.h -libqseawk_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) -libqseawk_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) -libqseawk_la_LIBADD = $(LIBADD_LIB_COMMON) +libqseawk_la_SOURCES = awk.c err.c tree.c parse.c run.c rec.c val.c \ + fnc.c misc.c rio.c std.c awk.h err.h rio.h val.h fnc.h misc.h \ + parse.h run.h tree.h $(am__append_4) $(am__append_5) \ + $(am__append_8) +libqseawk_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) $(am__append_6) +libqseawk_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) $(am__append_7) +libqseawk_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_9) @ENABLE_CXX_TRUE@libqseawkxx_la_SOURCES = Awk.cpp StdAwk.cpp @ENABLE_CXX_TRUE@libqseawkxx_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) @ENABLE_CXX_TRUE@libqseawkxx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) @ENABLE_CXX_TRUE@libqseawkxx_la_LIBADD = -lqseawk -lqsecmnxx $(LIBADD_LIB_COMMON) ################################################## -# MODULES +# DYNAMIC MODULES ################################################## -CPPFLAGS_MOD_COMMON = $(CPPFLAGS_ALL_COMMON) -LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON) -LIBADD_MOD_COMMON = -lqseawk -lqsecmn -moddir = $(libdir) -mod_LTLIBRARIES = libqseawk-dir.la libqseawk-str.la libqseawk-sys.la \ - $(am__append_4) $(am__append_5) -libqseawk_dir_la_SOURCES = mod-dir.c -libqseawk_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) -libqseawk_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) -libqseawk_dir_la_LIBADD = $(LIBADD_MOD_COMMON) -libqseawk_str_la_SOURCES = mod-str.c -libqseawk_str_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) -libqseawk_str_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) -libqseawk_str_la_LIBADD = $(LIBADD_MOD_COMMON) -libqseawk_sys_la_SOURCES = mod-sys.c -libqseawk_sys_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) -libqseawk_sys_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) -libqseawk_sys_la_LIBADD = $(LIBADD_MOD_COMMON) -@HAVE_C_MPI_TRUE@libqseawk_mpi_la_SOURCES = mod-mpi.c -@HAVE_C_MPI_TRUE@libqseawk_mpi_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) $(MPI_CFLAGS) -@HAVE_C_MPI_TRUE@libqseawk_mpi_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) $(MPI_CLDFLAGS) -@HAVE_C_MPI_TRUE@libqseawk_mpi_la_LIBADD = $(LIBADD_MOD_COMMON) -@HAVE_LIBUCI_TRUE@libqseawk_uci_la_SOURCES = mod-uci.c -@HAVE_LIBUCI_TRUE@libqseawk_uci_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) -@HAVE_LIBUCI_TRUE@libqseawk_uci_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) -@HAVE_LIBUCI_TRUE@libqseawk_uci_la_LIBADD = $(LIBADD_MOD_COMMON) $(UCI_LIBS) +@ENABLE_STATIC_MODULE_FALSE@CPPFLAGS_MOD_COMMON = $(CPPFLAGS_ALL_COMMON) +@ENABLE_STATIC_MODULE_FALSE@LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON) +@ENABLE_STATIC_MODULE_FALSE@LIBADD_MOD_COMMON = -lqseawk -lqsecmn +@ENABLE_STATIC_MODULE_FALSE@moddir = $(libdir) +@ENABLE_STATIC_MODULE_FALSE@mod_LTLIBRARIES = libqseawk-dir.la \ +@ENABLE_STATIC_MODULE_FALSE@ libqseawk-str.la libqseawk-sys.la \ +@ENABLE_STATIC_MODULE_FALSE@ $(am__append_10) $(am__append_11) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_SOURCES = mod-dir.c mod-dir.h +@ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_LIBADD = $(LIBADD_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_str_la_SOURCES = mod-str.c mod-str.h +@ENABLE_STATIC_MODULE_FALSE@libqseawk_str_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_str_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_str_la_LIBADD = $(LIBADD_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_sys_la_SOURCES = mod-sys.c mod-sys.h +@ENABLE_STATIC_MODULE_FALSE@libqseawk_sys_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_sys_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@libqseawk_sys_la_LIBADD = $(LIBADD_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_SOURCES = mod-mpi.c mod-mpi.h +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) $(MPI_CFLAGS) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) $(MPI_CLDFLAGS) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_LIBADD = $(LIBADD_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@libqseawk_uci_la_SOURCES = mod-uci.c mod-uci.h +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@libqseawk_uci_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@libqseawk_uci_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@@HAVE_LIBUCI_TRUE@libqseawk_uci_la_LIBADD = $(LIBADD_MOD_COMMON) $(UCI_LIBS) all: all-am .SUFFIXES: @@ -502,13 +549,13 @@ clean-modLTLIBRARIES: rm -f "$${dir}/so_locations"; \ done libqseawk-dir.la: $(libqseawk_dir_la_OBJECTS) $(libqseawk_dir_la_DEPENDENCIES) $(EXTRA_libqseawk_dir_la_DEPENDENCIES) - $(libqseawk_dir_la_LINK) -rpath $(moddir) $(libqseawk_dir_la_OBJECTS) $(libqseawk_dir_la_LIBADD) $(LIBS) + $(libqseawk_dir_la_LINK) $(am_libqseawk_dir_la_rpath) $(libqseawk_dir_la_OBJECTS) $(libqseawk_dir_la_LIBADD) $(LIBS) libqseawk-mpi.la: $(libqseawk_mpi_la_OBJECTS) $(libqseawk_mpi_la_DEPENDENCIES) $(EXTRA_libqseawk_mpi_la_DEPENDENCIES) $(libqseawk_mpi_la_LINK) $(am_libqseawk_mpi_la_rpath) $(libqseawk_mpi_la_OBJECTS) $(libqseawk_mpi_la_LIBADD) $(LIBS) libqseawk-str.la: $(libqseawk_str_la_OBJECTS) $(libqseawk_str_la_DEPENDENCIES) $(EXTRA_libqseawk_str_la_DEPENDENCIES) - $(libqseawk_str_la_LINK) -rpath $(moddir) $(libqseawk_str_la_OBJECTS) $(libqseawk_str_la_LIBADD) $(LIBS) + $(libqseawk_str_la_LINK) $(am_libqseawk_str_la_rpath) $(libqseawk_str_la_OBJECTS) $(libqseawk_str_la_LIBADD) $(LIBS) libqseawk-sys.la: $(libqseawk_sys_la_OBJECTS) $(libqseawk_sys_la_DEPENDENCIES) $(EXTRA_libqseawk_sys_la_DEPENDENCIES) - $(libqseawk_sys_la_LINK) -rpath $(moddir) $(libqseawk_sys_la_OBJECTS) $(libqseawk_sys_la_LIBADD) $(LIBS) + $(libqseawk_sys_la_LINK) $(am_libqseawk_sys_la_rpath) $(libqseawk_sys_la_OBJECTS) $(libqseawk_sys_la_LIBADD) $(LIBS) libqseawk-uci.la: $(libqseawk_uci_la_OBJECTS) $(libqseawk_uci_la_DEPENDENCIES) $(EXTRA_libqseawk_uci_la_DEPENDENCIES) $(libqseawk_uci_la_LINK) $(am_libqseawk_uci_la_rpath) $(libqseawk_uci_la_OBJECTS) $(libqseawk_uci_la_LIBADD) $(LIBS) libqseawk.la: $(libqseawk_la_OBJECTS) $(libqseawk_la_DEPENDENCIES) $(EXTRA_libqseawk_la_DEPENDENCIES) @@ -527,6 +574,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-err.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-fnc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-misc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-dir.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-mpi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-str.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-sys.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-uci.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-parse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-rec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-rio.Plo@am__quote@ @@ -674,6 +726,41 @@ libqseawk_la-std.lo: std.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c +libqseawk_la-mod-dir.lo: mod-dir.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-dir.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-dir.Tpo -c -o libqseawk_la-mod-dir.lo `test -f 'mod-dir.c' || echo '$(srcdir)/'`mod-dir.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libqseawk_la-mod-dir.Tpo $(DEPDIR)/libqseawk_la-mod-dir.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mod-dir.c' object='libqseawk_la-mod-dir.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-dir.lo `test -f 'mod-dir.c' || echo '$(srcdir)/'`mod-dir.c + +libqseawk_la-mod-str.lo: mod-str.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-str.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-str.Tpo -c -o libqseawk_la-mod-str.lo `test -f 'mod-str.c' || echo '$(srcdir)/'`mod-str.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libqseawk_la-mod-str.Tpo $(DEPDIR)/libqseawk_la-mod-str.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mod-str.c' object='libqseawk_la-mod-str.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-str.lo `test -f 'mod-str.c' || echo '$(srcdir)/'`mod-str.c + +libqseawk_la-mod-sys.lo: mod-sys.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-sys.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-sys.Tpo -c -o libqseawk_la-mod-sys.lo `test -f 'mod-sys.c' || echo '$(srcdir)/'`mod-sys.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libqseawk_la-mod-sys.Tpo $(DEPDIR)/libqseawk_la-mod-sys.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mod-sys.c' object='libqseawk_la-mod-sys.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-sys.lo `test -f 'mod-sys.c' || echo '$(srcdir)/'`mod-sys.c + +libqseawk_la-mod-mpi.lo: mod-mpi.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-mpi.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-mpi.Tpo -c -o libqseawk_la-mod-mpi.lo `test -f 'mod-mpi.c' || echo '$(srcdir)/'`mod-mpi.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libqseawk_la-mod-mpi.Tpo $(DEPDIR)/libqseawk_la-mod-mpi.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mod-mpi.c' object='libqseawk_la-mod-mpi.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-mpi.lo `test -f 'mod-mpi.c' || echo '$(srcdir)/'`mod-mpi.c + +libqseawk_la-mod-uci.lo: mod-uci.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-uci.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-uci.Tpo -c -o libqseawk_la-mod-uci.lo `test -f 'mod-uci.c' || echo '$(srcdir)/'`mod-uci.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libqseawk_la-mod-uci.Tpo $(DEPDIR)/libqseawk_la-mod-uci.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mod-uci.c' object='libqseawk_la-mod-uci.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-uci.lo `test -f 'mod-uci.c' || echo '$(srcdir)/'`mod-uci.c + .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po diff --git a/qse/lib/awk/awk.c b/qse/lib/awk/awk.c index 5d5a9443..21c7bf9e 100644 --- a/qse/lib/awk/awk.c +++ b/qse/lib/awk/awk.c @@ -313,7 +313,7 @@ static qse_rbt_walk_t unload_module (qse_rbt_t* rbt, qse_rbt_pair_t* pair, void* md = QSE_RBT_VPTR(pair); if (md->mod.unload) md->mod.unload (&md->mod, awk); - awk->prm.modclose (awk, md->handle); + if (md->handle) awk->prm.modclose (awk, md->handle); return QSE_RBT_WALK_FORWARD; } diff --git a/qse/lib/awk/err.c b/qse/lib/awk/err.c index 6be88608..04a6ab27 100644 --- a/qse/lib/awk/err.c +++ b/qse/lib/awk/err.c @@ -89,7 +89,8 @@ const qse_char_t* qse_awk_dflerrstr (const qse_awk_t* awk, qse_awk_errnum_t errn QSE_T("too many global variables"), QSE_T("too many local variables"), QSE_T("too many parameters"), - QSE_T("too many identifier segments"), + QSE_T("too many segments"), + QSE_T("segment '${0}' too long"), QSE_T("bad argument"), QSE_T("no argument provided"), QSE_T("'break' outside a loop"), diff --git a/qse/lib/awk/mod-dir.c b/qse/lib/awk/mod-dir.c index 4e392293..238bf41f 100644 --- a/qse/lib/awk/mod-dir.c +++ b/qse/lib/awk/mod-dir.c @@ -18,7 +18,7 @@ License along with QSE. If not, see . */ -#include +#include "mod-dir.h" #include #include #include @@ -579,7 +579,7 @@ static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) qse_rbt_close (rbt); } -QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) +int qse_awk_mod_dir (qse_awk_mod_t* mod, qse_awk_t* awk) { qse_rbt_t* rbt; @@ -601,8 +601,4 @@ QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) return 0; } -#if defined(__DOS__) -/* kind of DllMain() for Causeway DLL */ -int main (int eax) { return 0; } -#endif diff --git a/qse/lib/awk/mod-dir.h b/qse/lib/awk/mod-dir.h new file mode 100644 index 00000000..d61b12d7 --- /dev/null +++ b/qse/lib/awk/mod-dir.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#ifndef _QSE_LIB_AWK_MOD_DIR_H_ +#define _QSE_LIB_AWK_MOD_DIR_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +QSE_EXPORT int qse_awk_mod_dir (qse_awk_mod_t* mod, qse_awk_t* awk); + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/qse/lib/awk/mod-mpi.c b/qse/lib/awk/mod-mpi.c index 24c0bafc..189156a3 100644 --- a/qse/lib/awk/mod-mpi.c +++ b/qse/lib/awk/mod-mpi.c @@ -18,7 +18,7 @@ License along with QSE. If not, see . */ -#include +#include "mod-mpi.h" #include #include @@ -253,7 +253,7 @@ static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) /* TODO: anything */ } -QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) +int qse_awk_mod_mpi (qse_awk_mod_t* mod, qse_awk_t* awk) { mod->query = query; mod->unload = unload; @@ -276,7 +276,7 @@ QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) * and the module wasn't built. So you can't access mpi::xxx symbols either */ -QSE_EXPORT int mpi_init (int argc, qse_achar_t* argv[]) +QSE_EXPORT int qse_awk_mod_mpi_init (int argc, qse_achar_t* argv[]) { int rx; @@ -290,7 +290,7 @@ QSE_EXPORT int mpi_init (int argc, qse_achar_t* argv[]) return rx; } -QSE_EXPORT void mpi_fini (void) +QSE_EXPORT void qse_awk_mod_mpi_fini (void) { MPI_Finalize (); } diff --git a/qse/lib/awk/mod-mpi.h b/qse/lib/awk/mod-mpi.h new file mode 100644 index 00000000..475c7134 --- /dev/null +++ b/qse/lib/awk/mod-mpi.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#ifndef _QSE_LIB_AWK_MOD_MPI_H_ +#define _QSE_LIB_AWK_MOD_MPI_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +QSE_EXPORT int qse_awk_mod_mpi (qse_awk_mod_t* mod, qse_awk_t* awk); + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/qse/lib/awk/mod-str.c b/qse/lib/awk/mod-str.c index 9b917e8a..4fdd9f5e 100644 --- a/qse/lib/awk/mod-str.c +++ b/qse/lib/awk/mod-str.c @@ -18,11 +18,11 @@ License along with QSE. If not, see . */ -#include +#include "mod-str.h" #include #include "../cmn/mem.h" -static int fnc_normspc (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) +static int fnc_normspace (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) { /* normalize spaces * - trim leading and trailing spaces @@ -86,10 +86,10 @@ struct fnctab_t static fnctab_t fnctab[] = { /* keep this table sorted for binary search in query(). */ - { QSE_T("ltrim"), { { 1, 1, QSE_NULL }, fnc_ltrim, 0 } }, - { QSE_T("normspc"), { { 1, 1, QSE_NULL }, fnc_normspc, 0 } }, - { QSE_T("rtrim"), { { 1, 1, QSE_NULL }, fnc_rtrim, 0 } }, - { QSE_T("trim"), { { 1, 1, QSE_NULL }, fnc_trim, 0 } } + { QSE_T("ltrim"), { { 1, 1, QSE_NULL }, fnc_ltrim, 0 } }, + { QSE_T("normspace"), { { 1, 1, QSE_NULL }, fnc_normspace, 0 } }, + { QSE_T("rtrim"), { { 1, 1, QSE_NULL }, fnc_rtrim, 0 } }, + { QSE_T("trim"), { { 1, 1, QSE_NULL }, fnc_trim, 0 } } }; static int query (qse_awk_mod_t* mod, qse_awk_t* awk, const qse_char_t* name, qse_awk_mod_sym_t* sym) @@ -158,7 +158,7 @@ static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) /* TODO: anything */ } -QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) +int qse_awk_mod_str (qse_awk_mod_t* mod, qse_awk_t* awk) { mod->query = query; mod->unload = unload; @@ -172,7 +172,3 @@ QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) return 0; } -#if defined(__DOS__) -/* kind of DllMain() for Causeway DLL */ -int main (int eax) { return 0; } -#endif diff --git a/qse/lib/awk/mod-str.h b/qse/lib/awk/mod-str.h new file mode 100644 index 00000000..c4ca6719 --- /dev/null +++ b/qse/lib/awk/mod-str.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#ifndef _QSE_LIB_AWK_MOD_STR_H_ +#define _QSE_LIB_AWK_MOD_STR_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +QSE_EXPORT int qse_awk_mod_str (qse_awk_mod_t* mod, qse_awk_t* awk); + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/qse/lib/awk/mod-sys.c b/qse/lib/awk/mod-sys.c index 27e90457..7c33808c 100644 --- a/qse/lib/awk/mod-sys.c +++ b/qse/lib/awk/mod-sys.c @@ -18,7 +18,7 @@ License along with QSE. If not, see . */ -#include +#include "mod-sys.h" #include #include #include @@ -729,7 +729,7 @@ static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) /* TODO: anything */ } -QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) +int qse_awk_mod_sys (qse_awk_mod_t* mod, qse_awk_t* awk) { mod->query = query; mod->unload = unload; @@ -743,7 +743,3 @@ QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) return 0; } -#if defined(__DOS__) -/* kind of DllMain() for Causeway DLL */ -int main (int eax) { return 0; } -#endif diff --git a/qse/lib/awk/mod-sys.h b/qse/lib/awk/mod-sys.h new file mode 100644 index 00000000..d40ae4bc --- /dev/null +++ b/qse/lib/awk/mod-sys.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#ifndef _QSE_LIB_AWK_MOD_SYS_H_ +#define _QSE_LIB_AWK_MOD_SYS_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +QSE_EXPORT int qse_awk_mod_sys (qse_awk_mod_t* mod, qse_awk_t* awk); + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/qse/lib/awk/mod-uci.c b/qse/lib/awk/mod-uci.c index a2d4e354..520d2157 100644 --- a/qse/lib/awk/mod-uci.c +++ b/qse/lib/awk/mod-uci.c @@ -18,7 +18,7 @@ License along with QSE. If not, see . */ -#include +#include "mod-uci.h" #include #include #include @@ -1406,7 +1406,7 @@ static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) qse_rbt_close (rbt); } -QSE_EXPORT int load (qse_awk_mod_t* mod, qse_awk_t* awk) +int qse_awk_mod_uci (qse_awk_mod_t* mod, qse_awk_t* awk) { qse_rbt_t* rbt; diff --git a/qse/lib/awk/mod-uci.h b/qse/lib/awk/mod-uci.h new file mode 100644 index 00000000..e61da6c2 --- /dev/null +++ b/qse/lib/awk/mod-uci.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#ifndef _QSE_LIB_AWK_MOD_UCI_H_ +#define _QSE_LIB_AWK_MOD_UCI_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +QSE_EXPORT int qse_awk_mod_uci (qse_awk_mod_t* mod, qse_awk_t* awk); + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/qse/lib/awk/parse.c b/qse/lib/awk/parse.c index f5cbd621..564f2848 100644 --- a/qse/lib/awk/parse.c +++ b/qse/lib/awk/parse.c @@ -6480,10 +6480,42 @@ int qse_awk_putsrcstrn ( return 0; } +#if defined(QSE_ENABLE_STATIC_MODULE) + +/* let's hardcode module information */ +#include "mod-dir.h" +#include "mod-str.h" +#include "mod-sys.h" +#if defined(HAVE_MPI) +# include "mod-mpi.h" +#endif +#if defined(HAVE_UCI) +# include "mod-uci.h" +#endif + +static struct +{ + qse_char_t* modname; + int (*modload) (qse_awk_mod_t* mod, qse_awk_t* awk); +} static_modtab[] = +{ + { QSE_T("dir"), qse_awk_mod_dir }, +#if defined(HAVE_MPI) + { QSE_T("mpi"), qse_awk_mod_mpi }, +#endif + { QSE_T("str"), qse_awk_mod_str }, + { QSE_T("sys"), qse_awk_mod_sys }, +#if defined(HAVE_UCI) + { QSE_T("uci"), qse_awk_mod_uci } +#endif +}; +#endif + static qse_awk_mod_t* query_module ( qse_awk_t* awk, const qse_xstr_t segs[], int nsegs, qse_awk_mod_sym_t* sym) { + qse_rbt_pair_t* pair; qse_awk_mod_data_t* mdp; qse_cstr_t ea; @@ -6491,6 +6523,7 @@ static qse_awk_mod_t* query_module ( QSE_ASSERT (nsegs == 2); + pair = qse_rbt_search (awk->modtab, segs[0].ptr, segs[0].len); if (pair) { @@ -6498,9 +6531,59 @@ static qse_awk_mod_t* query_module ( } else { + qse_awk_mod_data_t md; qse_awk_mod_load_t load; qse_awk_mod_spec_t spec; - qse_awk_mod_data_t md; + qse_char_t buf[64 + 15] = QSE_T("_qse_awk_mod_"); + qse_size_t buflen; + + if (segs[0].len > QSE_COUNTOF(buf) - 15) + { + /* module name too long */ + ea.ptr = segs[0].ptr; + ea.len = segs[0].len; + qse_awk_seterror (awk, QSE_AWK_ESEGTL, &ea, QSE_NULL); + return QSE_NULL; + } + +#if defined(QSE_ENABLE_STATIC_MODULE) + /* TODO: binary search ... */ + for (n = 0; n < QSE_COUNTOF(static_modtab); n++) + { + if (qse_strcmp (static_modtab[n].modname, segs[0].ptr) == 0) + { + load = static_modtab[n].modload; + break; + } + } + + if (n >= QSE_COUNTOF(static_modtab)) + { + ea.ptr = segs[0].ptr; + ea.len = segs[0].len; + qse_awk_seterror (awk, QSE_AWK_ENOENT, &ea, QSE_NULL); + return QSE_NULL; + } + + QSE_MEMSET (&md, 0, QSE_SIZEOF(md)); + + /* i copy-insert 'md' into the table before calling 'load'. + * to pass the same address to load(), query(), etc */ + pair = qse_rbt_insert (awk->modtab, segs[0].ptr, segs[0].len, &md, QSE_SIZEOF(md)); + if (pair == QSE_NULL) + { + qse_awk_seterrnum (awk, QSE_AWK_ENOMEM, QSE_NULL); + return QSE_NULL; + } + + mdp = (qse_awk_mod_data_t*)QSE_RBT_VPTR(pair); + if (load (&mdp->mod, awk) <= -1) + { + qse_rbt_delete (awk->modtab, segs[0].ptr, segs[0].len); + return QSE_NULL; + } + +#else QSE_MEMSET (&spec, 0, QSE_SIZEOF(spec)); @@ -6520,7 +6603,7 @@ static qse_awk_mod_t* query_module ( } else md.handle = QSE_NULL; - if (!md.handle) + if (md.handle == QSE_NULL) { ea.ptr = segs[0].ptr; ea.len = segs[0].len; @@ -6528,17 +6611,23 @@ static qse_awk_mod_t* query_module ( return QSE_NULL; } - load = awk->prm.modsym (awk, md.handle, QSE_T("load")); + buflen = qse_strcpy (&buf[13], segs[0].ptr); + /* attempt qse_awk_mod_xxx */ + load = awk->prm.modsym (awk, md.handle, &buf[1]); if (!load) { - load = awk->prm.modsym (awk, md.handle, QSE_T("_load")); + /* attempt _qse_awk_mod_xxx */ + load = awk->prm.modsym (awk, md.handle, &buf[0]); if (!load) { - load = awk->prm.modsym (awk, md.handle, QSE_T("load_")); + /* attempt qse_awk_mod_xxx_ */ + buf[13 + buflen] = QSE_T('_'); + buf[13 + buflen + 1] = QSE_T('\0'); + load = awk->prm.modsym (awk, md.handle, &buf[1]); if (!load) { - ea.ptr = QSE_T("load"); - ea.len = 4; + ea.ptr = &buf[1]; + ea.len = 4 + buflen; qse_awk_seterror (awk, QSE_AWK_ENOENT, &ea, QSE_NULL); awk->prm.modclose (awk, md.handle); @@ -6564,6 +6653,7 @@ static qse_awk_mod_t* query_module ( awk->prm.modclose (awk, mdp->handle); return QSE_NULL; } +#endif } n = mdp->mod.query (&mdp->mod, awk, segs[1].ptr, sym);