diff --git a/generate/generate.py b/generate/generate.py index ffc23f4261c374d438d102d6d470b73b7dabd691..f7a91005798231246ed1a7b8bcfc2740205a012f 100644 --- a/generate/generate.py +++ b/generate/generate.py @@ -98,45 +98,56 @@ def generate_cmake( print(f")", file=f) print(f"", file=f) - print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f) - print(f" target_sources({lib_name} PRIVATE", file=f) - print(f"", file=f) + def print_noarch_targets(avx_exists: bool): + intend_noarch_source_file = " " if avx_exists else "" + print(f"{intend_noarch_source_file}target_sources({lib_name} PRIVATE", file=f) + print(f"", file=f) - for source_file in kernel_implementations["avx"]: - print(f" avx/{source_file}", file=f) - for source_file in kernel_implementations["noarch"]: - if not source_file in kernel_implementations["avx"]: - print(f" noarch/{source_file}", file=f) + for source_file_inner in kernel_implementations["noarch"]: + print(f"{intend_noarch_source_file} noarch/{source_file_inner}", file=f) - print(f" )", file=f) - print(f"", file=f) + print(f"{intend_noarch_source_file})", file=f) - print(f" set_source_files_properties(", file=f) - print(f"", file=f) + if "avx" in kernel_implementations: - for source_file in kernel_implementations["avx"]: - print(f" avx/{source_file}", file=f) - print(f"", file=f) - print(" PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}", file=f) - - print(f" )", file=f) - print(f"else()", file=f) - print(f" if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f) - print( - f' message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")', - file=f, - ) - print(f" endif()", file=f) - print(f"", file=f) + print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f) + print(f" target_sources({lib_name} PRIVATE", file=f) + print(f"", file=f) - print(f" target_sources({lib_name} PRIVATE", file=f) - print(f"", file=f) + for source_file in kernel_implementations["avx"]: + print(f" avx/{source_file}", file=f) - for source_file in kernel_implementations["noarch"]: - print(f" noarch/{source_file}", file=f) + for source_file in kernel_implementations["noarch"]: + if not source_file in kernel_implementations["avx"]: + print(f" noarch/{source_file}", file=f) + + print(f" )", file=f) + print(f"", file=f) + + print(f" set_source_files_properties(", file=f) + print(f"", file=f) + + for source_file in kernel_implementations["avx"]: + print(f" avx/{source_file}", file=f) + print(f"", file=f) + print(" PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}", file=f) + + print(f" )", file=f) + print(f"else()", file=f) + print(f" if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f) + print( + f' message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")', + file=f, + ) + print(f" endif()", file=f) + print(f"", file=f) + + print_noarch_targets(avx_exists=True) + + print(f"endif()", file=f) + else: + print_noarch_targets(avx_exists=False) - print(f" )", file=f) - print(f"endif()", file=f) print(f"", file=f) print(f"if (HYTEG_BUILD_WITH_PETSC)", file=f) diff --git a/generate/requirements.txt b/generate/requirements.txt index 47881e160f4460387982f6f9fc6b63398783b007..91a26e4333c723f86b2ab9734dd7a063be855242 100644 --- a/generate/requirements.txt +++ b/generate/requirements.txt @@ -1,5 +1,5 @@ --extra-index-url https://test.pypi.org/simple/ -hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@2a830d525314b1ec1d718720534267c485b5a9a7 +hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@aeeb7d4c4f99e59d208a8d09a51522a7093fd7ff tomli >= 1.1.0 ; python_version < "3.11" clang-format