@@ -109,6 +109,8 @@ if [ "$BUILD_TYPE" = fightwarn ]; then
109109 # Similarly for testing builds with and without "unmapped" values
110110 # (normally hidden by #ifdef blocks) in certain evolving drivers
111111 # [ -n "$NUT_UNMAPPED_VARIANTS" ] || NUT_UNMAPPED_VARIANTS=auto
112+
113+ # [ -n "$NUT_LIBNUTPRIVATE_VARIANTS" ] || NUT_LIBNUTPRIVATE_VARIANTS=auto
112114fi
113115
114116# configure default is "no"; an "auto" value is "yes unless CFLAGS say something"
@@ -1605,6 +1607,13 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
16051607 CONFIG_OPTS+=(" --without-unmapped-data-points" ) ;;
16061608 *) ;; # Keep built-in default
16071609 esac
1610+ case x" ${WITH_LIBNUTPRIVATE-} " in
1611+ [Tt][Rr][Uu][Ee]|[Yy][Ee][Ss])
1612+ CONFIG_OPTS+=(" --enable-shared-pivate-libs" ) ;;
1613+ [Ff][Aa][Ll][Ss][Ee]|[Nn][Oo])
1614+ CONFIG_OPTS+=(" --disable-shared-pivate-libs" ) ;;
1615+ *) ;; # Keep built-in default
1616+ esac
16081617 ;;
16091618 esac
16101619
@@ -2137,15 +2146,35 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
21372146 done
21382147 fi
21392148
2149+ if [ -z " $NUT_LIBNUTPRIVATE_VARIANTS " ] || [ " $NUT_LIBNUTPRIVATE_VARIANTS " = auto ] || [ " $NUT_LIBNUTPRIVATE_VARIANTS " = default ] ; then
2150+ # Handle similarly to NUT_UNMAPPED_VARIANTS
2151+ NUT_LIBNUTPRIVATE_VARIANTS=()
2152+ case x" ${WITH_LIBNUTPRIVATE-} " in
2153+ [Tt][Rr][Uu][Ee]|[Yy][Ee][Ss])
2154+ NUT_LIBNUTPRIVATE_VARIANTS+=(" yes" ) ;;
2155+ [Ff][Aa][Ll][Ss][Ee]|[Nn][Oo])
2156+ NUT_LIBNUTPRIVATE_VARIANTS+=(" no" ) ;;
2157+ * )
2158+ NUT_LIBNUTPRIVATE_VARIANTS+=(" yes" " no" ) ;;
2159+ esac
2160+ else
2161+ TMP=" $NUT_LIBNUTPRIVATE_VARIANTS "
2162+ NUT_LIBNUTPRIVATE_VARIANTS=()
2163+ for VAL in $TMP ; do
2164+ NUT_LIBNUTPRIVATE_VARIANTS+=(" $VAL " )
2165+ done
2166+ fi
2167+
21402168 # TODO: Similar loops for other variations like TESTING,
21412169 # MGE SHUT vs. other serial protocols...
21422170
21432171 BUILDSTODO_SSL=" ${# NUT_SSL_VARIANTS[@]} "
21442172 BUILDSTODO_USB=" ${# NUT_USB_VARIANTS[@]} "
21452173 BUILDSTODO_UNMAPPED=" ${# NUT_UNMAPPED_VARIANTS[@]} "
2174+ BUILDSTODO_LIBNUTPRIVATE=" ${# NUT_LIBNUTPRIVATE_VARIANTS[@]} "
21462175
2147- echo " === Found ${BUILDSTODO_SSL} SSL (${NUT_SSL_VARIANTS[*]} ) and ${BUILDSTODO_USB} USB (${NUT_USB_VARIANTS[*]} ) and ${BUILDSTODO_UNMAPPED} UNMAPPED (${NUT_UNMAPPED_VARIANTS[*]} ) variations..."
2148- if [ x" ${BUILDSTODO_SSL}${BUILDSTODO_USB}${BUILDSTODO_UNMAPPED} " = x" 000 " ] ; then
2176+ echo " === Found ${BUILDSTODO_SSL} SSL (${NUT_SSL_VARIANTS[*]} ) and ${BUILDSTODO_USB} USB (${NUT_USB_VARIANTS[*]} ) and ${BUILDSTODO_UNMAPPED} UNMAPPED (${NUT_UNMAPPED_VARIANTS[*]} ) and ${BUILDSTODO_LIBNUTPRIVATE} LIBNUTPRIVATE ( ${NUT_LIBNUTPRIVATE_VARIANTS[*]} ) variations..."
2177+ if [ x" ${BUILDSTODO_SSL}${BUILDSTODO_USB}${BUILDSTODO_UNMAPPED}${BUILDSTODO_LIBNUTPRIVATE} " = x" 0000 " ] ; then
21492178 echo " === ERROR: BUILD_TYPE='${BUILD_TYPE} ' got no builds to run!" >&2
21502179 exit 1
21512180 fi
@@ -2168,10 +2197,14 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
21682197 if [ " $BUILDSTODO_UNMAPPED " = 1 ]; then
21692198 BUILDSTODO_ALWAYS=" NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANTS[*]} ;${BUILDSTODO_ALWAYS} "
21702199 fi
2200+ if [ " $BUILDSTODO_LIBNUTPRIVATE " = 1 ]; then
2201+ BUILDSTODO_ALWAYS=" NUT_LIBNUTPRIVATE_VARIANT=${NUT_LIBNUTPRIVATE_VARIANTS[*]} ;${BUILDSTODO_ALWAYS} "
2202+ fi
21712203
21722204 if [ " $BUILDSTODO_SSL " -le 1 ] \
21732205 && [ " $BUILDSTODO_USB " -le 1 ] \
21742206 && [ " $BUILDSTODO_UNMAPPED " -le 1 ] \
2207+ && [ " $BUILDSTODO_LIBNUTPRIVATE " -le 1 ] \
21752208 ; then
21762209 echo " === NOTE: Considering at most one variant in each category, will do them all at once"
21772210 BUILDSTODO_LIST+=(" ${BUILDSTODO_ALWAYS} " )
@@ -2205,6 +2238,12 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22052238 BUILDSTODO_LIST+=(" NUT_UNMAPPED_VARIANT=${VAL} ;${BUILDSTODO_ALWAYS} " )
22062239 done
22072240 fi
2241+ if [ " $BUILDSTODO_LIBNUTPRIVATE " -gt 1 ]; then
2242+ for VAL in " ${NUT_LIBNUTPRIVATE_VARIANTS[@]} " ; do
2243+ if [ " $VAL " = no ] ; then continue ; fi # Default setting for other builds
2244+ BUILDSTODO_LIST+=(" NUT_LIBNUTPRIVATE_VARIANT=${VAL} ;${BUILDSTODO_ALWAYS} " )
2245+ done
2246+ fi
22082247 else
22092248 # Try to mix into the smallest amount of builds (randomize
22102249 # the mix so we can cover many scenarios as different CI
@@ -2221,6 +2260,9 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22212260 [ " $BUILDSTODO_MAX " -ge " $BUILDSTODO_UNMAPPED " ] \
22222261 || { BUILDSTODO_MAX=" $BUILDSTODO_UNMAPPED " ; BUILDSTODO_MAX_TYPE=" BUILDSTODO_UNMAPPED" ; }
22232262
2263+ [ " $BUILDSTODO_MAX " -ge " $BUILDSTODO_LIBNUTPRIVATE " ] \
2264+ || { BUILDSTODO_MAX=" $BUILDSTODO_LIBNUTPRIVATE " ; BUILDSTODO_MAX_TYPE=" BUILDSTODO_LIBNUTPRIVATE" ; }
2265+
22242266 # FIXME: Can this be eval'ed?
22252267 # First populate the longer set of variants:
22262268 case " ${BUILDSTODO_MAX_TYPE} " in
@@ -2239,6 +2281,11 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22392281 BUILDSTODO_LIST+=(" NUT_UNMAPPED_VARIANT=${VAL} ;${BUILDSTODO_ALWAYS} " )
22402282 done
22412283 ;;
2284+ BUILDSTODO_LIBNUTPRIVATE)
2285+ for VAL in " ${NUT_LIBNUTPRIVATE_VARIANTS[@]} " ; do
2286+ BUILDSTODO_LIST+=(" NUT_LIBNUTPRIVATE_VARIANT=${VAL} ;${BUILDSTODO_ALWAYS} " )
2287+ done
2288+ ;;
22422289 esac
22432290
22442291 case " ${BUILDSTODO_MAX_TYPE} " in
@@ -2256,6 +2303,13 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22562303 BUILDSTODO_LIST[$i ]=" NUT_UNMAPPED_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
22572304 i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
22582305 done
2306+
2307+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2308+ [ " $BUILDSTODO_LIBNUTPRIVATE " -le 1 ] || \
2309+ for VAL in " ${NUT_LIBNUTPRIVATE_VARIANTS[@]} " ; do
2310+ BUILDSTODO_LIST[$i ]=" NUT_LIBNUTPRIVATE_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2311+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2312+ done
22592313 ;;
22602314 BUILDSTODO_USB)
22612315 i=$(( $RANDOM % $BUILDSTODO_MAX ))
@@ -2271,6 +2325,13 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22712325 BUILDSTODO_LIST[$i ]=" NUT_UNMAPPED_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
22722326 i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
22732327 done
2328+
2329+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2330+ [ " $BUILDSTODO_LIBNUTPRIVATE " -le 1 ] || \
2331+ for VAL in " ${NUT_LIBNUTPRIVATE_VARIANTS[@]} " ; do
2332+ BUILDSTODO_LIST[$i ]=" NUT_LIBNUTPRIVATE_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2333+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2334+ done
22742335 ;;
22752336 BUILDSTODO_UNMAPPED)
22762337 i=$(( $RANDOM % $BUILDSTODO_MAX ))
@@ -2286,6 +2347,35 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
22862347 BUILDSTODO_LIST[$i ]=" NUT_USB_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
22872348 i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
22882349 done
2350+
2351+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2352+ [ " $BUILDSTODO_LIBNUTPRIVATE " -le 1 ] || \
2353+ for VAL in " ${NUT_LIBNUTPRIVATE_VARIANTS[@]} " ; do
2354+ BUILDSTODO_LIST[$i ]=" NUT_LIBNUTPRIVATE_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2355+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2356+ done
2357+ ;;
2358+ BUILDSTODO_LIBNUTPRIVATE)
2359+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2360+ [ " $BUILDSTODO_SSL " -le 1 ] || \
2361+ for VAL in " ${NUT_SSL_VARIANTS[@]} " ; do
2362+ BUILDSTODO_LIST[$i ]=" NUT_SSL_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2363+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2364+ done
2365+
2366+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2367+ [ " $BUILDSTODO_USB " -le 1 ] || \
2368+ for VAL in " ${NUT_USB_VARIANTS[@]} " ; do
2369+ BUILDSTODO_LIST[$i ]=" NUT_USB_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2370+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2371+ done
2372+
2373+ i=$(( $RANDOM % $BUILDSTODO_MAX ))
2374+ [ " $BUILDSTODO_UNMAPPED " -le 1 ] || \
2375+ for VAL in " ${NUT_UNMAPPED_VARIANTS[@]} " ; do
2376+ BUILDSTODO_LIST[$i ]=" NUT_UNMAPPED_VARIANT=${VAL} ;${BUILDSTODO_LIST[$i]} "
2377+ i=$(( $(($i + 1 )) % $BUILDSTODO_MAX ))
2378+ done
22892379 ;;
22902380 esac
22912381 fi
@@ -2306,6 +2396,7 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
23062396 NUT_SSL_VARIANT=" "
23072397 NUT_USB_VARIANT=" "
23082398 NUT_UNMAPPED_VARIANT=" "
2399+ NUT_LIBNUTPRIVATE_VARIANT=" "
23092400 eval $TESTCOMBO
23102401
23112402 echo " === Starting 'TESTCOMBO=${TESTCOMBO} ', ${BUILDSTODO} build variants remaining..."
@@ -2395,6 +2486,26 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
23952486 ;;
23962487 esac
23972488
2489+ case " ${NUT_LIBNUTPRIVATE_VARIANT} " in
2490+ " " ) ;;
2491+ yes|no) # Try this variant
2492+ echo " === Building with 'NUT_LIBNUTPRIVATE_VARIANT=${NUT_LIBNUTPRIVATE_VARIANT} ' ..."
2493+ if [ " ${NUT_SSL_VARIANTS[*]} " != " auto" ] && [ x" ${NUT_SSL_VARIANT} " = x ] ; then
2494+ CONFIG_OPTS+=(" --without-all" )
2495+ CONFIG_OPTS+=(" --without-ssl" )
2496+ fi
2497+ CONFIG_OPTS+=(" --with-serial=auto" )
2498+ if [ " ${NUT_USB_VARIANTS[*]} " != " no" ] && [ x" ${NUT_USB_VARIANT} " = x ] ; then
2499+ CONFIG_OPTS+=(" --with-usb=auto" )
2500+ fi
2501+ CONFIG_OPTS+=(" --enable-shared-private-libs=${NUT_LIBNUTPRIVATE_VARIANT} " )
2502+ ;;
2503+ * ) # Potentially something new? Unknown values can fail in the configure script.
2504+ echo " === Building with 'NUT_LIBNUTPRIVATE_VARIANT=${NUT_LIBNUTPRIVATE_VARIANT} ' (WARNING: may be not supported)..."
2505+ CONFIG_OPTS+=(" --enable-shared-private-libs=${NUT_LIBNUTPRIVATE_VARIANT} " )
2506+ ;;
2507+ esac
2508+
23982509 # Snippet from autogen.sh: restore files required by autoconf
23992510 # for non-"foreign" projects that a deep clean in other loops
24002511 # could have destroyed:
@@ -2727,6 +2838,21 @@ bindings)
27272838 CONFIG_OPTS+=(" --with-unmapped-data-points" )
27282839 fi
27292840
2841+ if [ -z " ${WITH_LIBNUTPRIVATE-} " ] ; then
2842+ if [ x" ${INPLACE_RUNTIME-} " = xtrue ]; then
2843+ WITH_LIBNUTPRIVATE=false
2844+ else
2845+ WITH_LIBNUTPRIVATE=true
2846+ fi
2847+ fi
2848+
2849+ if [ x" ${WITH_LIBNUTPRIVATE-} " = xtrue ] ; then
2850+ # This is assumed for non-production builds to avoid confusion
2851+ # for end-users (not dev/testers).
2852+ # See above for defaulting of this vs. inplace builds.
2853+ CONFIG_OPTS+=(" --enable-shared-private-libs" )
2854+ fi
2855+
27302856 if [ -n " ${BUILD_DEBUGINFO-} " ]; then
27312857 CONFIG_OPTS+=(" --with-debuginfo=${BUILD_DEBUGINFO} " )
27322858 else
@@ -2868,6 +2994,7 @@ cross-windows-mingw*)
28682994 SOURCEMODE=" out-of-tree" \
28692995 MAKEFLAGS=" $PARMAKE_FLAGS " \
28702996 KEEP_NUT_REPORT_FEATURE=" true" \
2997+ ENABLE_NUT_SHARED_PRIVATE_LIBS_FLAG=" true" \
28712998 ./build-mingw-nut.sh $cmd
28722999 ;;
28733000
0 commit comments