diff --git a/.github/workflows/ci_modular.yml b/.github/workflows/ci_modular.yml index 912734959..3e3969fe1 100644 --- a/.github/workflows/ci_modular.yml +++ b/.github/workflows/ci_modular.yml @@ -24,6 +24,7 @@ jobs: - {compiler: gcc, version: 14} build: [cmake] with_bitset: [On, Off] + with_stats: [On, Off] env: BUILD_DIR: ${{ matrix.build == 'cmake' && 'build' || '.' }} @@ -56,6 +57,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$PWD/_dist -DFIND_BLAS:STRING=FALSE -DSTDLIB_NO_BITSET:STRING=${{ matrix.with_bitset }} + -DSTDLIB_NO_STATS:STRING=${{ matrix.with_stats }} -S . -B ${{ env.BUILD_DIR }} - name: Build and compile diff --git a/CMakeLists.txt b/CMakeLists.txt index da7cc24e8..64a5f2ed2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,13 @@ if(STDLIB_NO_BITSET) add_compile_definitions(STDLIB_NO_BITSET) endif() +option(STDLIB_NO_STATS "Does not compile STDLIB STATS" OFF) + +if(STDLIB_NO_STATS) + message(STATUS "Disable stdlib stats module") + add_compile_definitions(STDLIB_NO_STATS) +endif() + option(FIND_BLAS "Find external BLAS and LAPACK" ON) # --- find external BLAS and LAPACK diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 64114892a..01a88512a 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -38,10 +38,12 @@ add_subdirectory(selection) add_subdirectory(sorting) add_subdirectory(specialfunctions_gamma) add_subdirectory(specialmatrices) -add_subdirectory(stats) -add_subdirectory(stats_distribution_exponential) -add_subdirectory(stats_distribution_normal) -add_subdirectory(stats_distribution_uniform) +if (NOT STDLIB_NO_STATS) + add_subdirectory(stats) + add_subdirectory(stats_distribution_exponential) + add_subdirectory(stats_distribution_normal) + add_subdirectory(stats_distribution_uniform) +endif() add_subdirectory(stringlist_type) add_subdirectory(strings) add_subdirectory(string_type) diff --git a/include/macros.inc b/include/macros.inc index 107d46d51..258e202d0 100644 --- a/include/macros.inc +++ b/include/macros.inc @@ -5,3 +5,10 @@ #else #define STDLIB_BITSET 1 #endif + +!Default: compile the stats module +#ifdef STDLIB_NO_STATS +#define STDLIB_STATS 0 +#else +#define STDLIB_STATS 1 +#endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8d181b115..9b29cf47d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,9 @@ if (NOT STDLIB_NO_BITSET) endif() add_subdirectory(blas) add_subdirectory(lapack) +if (NOT STDLIB_NO_STATS) + add_subdirectory(stats) +endif() set(fppFiles stdlib_ascii.fypp @@ -58,19 +61,6 @@ set(fppFiles stdlib_specialfunctions.fypp stdlib_specialmatrices.fypp stdlib_specialmatrices_tridiagonal.fypp - stdlib_stats.fypp - stdlib_stats_corr.fypp - stdlib_stats_cov.fypp - stdlib_stats_mean.fypp - stdlib_stats_median.fypp - stdlib_stats_moment.fypp - stdlib_stats_moment_all.fypp - stdlib_stats_moment_mask.fypp - stdlib_stats_moment_scalar.fypp - stdlib_stats_distribution_uniform.fypp - stdlib_stats_distribution_normal.fypp - stdlib_stats_distribution_exponential.fypp - stdlib_stats_var.fypp stdlib_quadrature.fypp stdlib_quadrature_trapz.fypp stdlib_quadrature_simps.fypp @@ -124,4 +114,5 @@ configure_stdlib_target(${PROJECT_NAME} f90Files fppFiles cppFiles) target_link_libraries(${PROJECT_NAME} PUBLIC $<$>:bitsets> + $<$>:stats> blas lapack) diff --git a/src/stats/CMakeLists.txt b/src/stats/CMakeLists.txt new file mode 100644 index 000000000..3e5727565 --- /dev/null +++ b/src/stats/CMakeLists.txt @@ -0,0 +1,32 @@ +set(stats_cppFiles + ../stdlib_linalg_constants.fypp + ) + +set(stats_fppFiles + ../stdlib_ascii.fypp + ../stdlib_io.fypp + ../stdlib_kinds.fypp + ../stdlib_optval.fypp + ../stdlib_error.fypp + ../stdlib_linalg.fypp + ../stdlib_linalg_diag.fypp + ../stdlib_linalg_state.fypp + ../stdlib_random.fypp + ../stdlib_selection.fypp + ../stdlib_string_type.fypp + stdlib_stats_corr.fypp + stdlib_stats_cov.fypp + stdlib_stats_distribution_exponential.fypp + stdlib_stats_distribution_normal.fypp + stdlib_stats_distribution_uniform.fypp + stdlib_stats.fypp + stdlib_stats_mean.fypp + stdlib_stats_median.fypp + stdlib_stats_moment_all.fypp + stdlib_stats_moment.fypp + stdlib_stats_moment_mask.fypp + stdlib_stats_moment_scalar.fypp + stdlib_stats_var.fypp +) + +configure_stdlib_target(stats "" stats_fppFiles stats_cppFiles) diff --git a/src/stdlib_stats.fypp b/src/stats/stdlib_stats.fypp similarity index 100% rename from src/stdlib_stats.fypp rename to src/stats/stdlib_stats.fypp diff --git a/src/stdlib_stats_corr.fypp b/src/stats/stdlib_stats_corr.fypp similarity index 100% rename from src/stdlib_stats_corr.fypp rename to src/stats/stdlib_stats_corr.fypp diff --git a/src/stdlib_stats_cov.fypp b/src/stats/stdlib_stats_cov.fypp similarity index 100% rename from src/stdlib_stats_cov.fypp rename to src/stats/stdlib_stats_cov.fypp diff --git a/src/stdlib_stats_distribution_exponential.fypp b/src/stats/stdlib_stats_distribution_exponential.fypp similarity index 100% rename from src/stdlib_stats_distribution_exponential.fypp rename to src/stats/stdlib_stats_distribution_exponential.fypp diff --git a/src/stdlib_stats_distribution_normal.fypp b/src/stats/stdlib_stats_distribution_normal.fypp similarity index 100% rename from src/stdlib_stats_distribution_normal.fypp rename to src/stats/stdlib_stats_distribution_normal.fypp diff --git a/src/stdlib_stats_distribution_uniform.fypp b/src/stats/stdlib_stats_distribution_uniform.fypp similarity index 100% rename from src/stdlib_stats_distribution_uniform.fypp rename to src/stats/stdlib_stats_distribution_uniform.fypp diff --git a/src/stdlib_stats_mean.fypp b/src/stats/stdlib_stats_mean.fypp similarity index 100% rename from src/stdlib_stats_mean.fypp rename to src/stats/stdlib_stats_mean.fypp diff --git a/src/stdlib_stats_median.fypp b/src/stats/stdlib_stats_median.fypp similarity index 100% rename from src/stdlib_stats_median.fypp rename to src/stats/stdlib_stats_median.fypp diff --git a/src/stdlib_stats_moment.fypp b/src/stats/stdlib_stats_moment.fypp similarity index 100% rename from src/stdlib_stats_moment.fypp rename to src/stats/stdlib_stats_moment.fypp diff --git a/src/stdlib_stats_moment_all.fypp b/src/stats/stdlib_stats_moment_all.fypp similarity index 100% rename from src/stdlib_stats_moment_all.fypp rename to src/stats/stdlib_stats_moment_all.fypp diff --git a/src/stdlib_stats_moment_mask.fypp b/src/stats/stdlib_stats_moment_mask.fypp similarity index 100% rename from src/stdlib_stats_moment_mask.fypp rename to src/stats/stdlib_stats_moment_mask.fypp diff --git a/src/stdlib_stats_moment_scalar.fypp b/src/stats/stdlib_stats_moment_scalar.fypp similarity index 100% rename from src/stdlib_stats_moment_scalar.fypp rename to src/stats/stdlib_stats_moment_scalar.fypp diff --git a/src/stdlib_stats_var.fypp b/src/stats/stdlib_stats_var.fypp similarity index 100% rename from src/stdlib_stats_var.fypp rename to src/stats/stdlib_stats_var.fypp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f22c0c30f..eed2a532e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -44,7 +44,9 @@ add_subdirectory(optval) add_subdirectory(selection) add_subdirectory(sorting) add_subdirectory(specialfunctions) -add_subdirectory(stats) +if (NOT STDLIB_NO_STATS) + add_subdirectory(stats) +endif() add_subdirectory(string) add_subdirectory(system) add_subdirectory(quadrature)